Regression: Fix hasLicense failing due call stack limit reasons (#28304)

pull/27970/head^2
Guilherme Gazzo 3 years ago committed by GitHub
parent b236a5cd4b
commit fb1ab86137
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      apps/meteor/client/lib/createRouteGroup.tsx
  2. 19
      apps/meteor/ee/app/license/client/index.ts
  3. 20
      apps/meteor/ee/client/hooks/useHasLicenseModule.ts

@ -48,6 +48,11 @@ const registerLazyComponentRoute = (
const handleExit = (context: Context): void => {
computation?.stop();
if (!context.oldRoute) {
return;
}
if (context.route.group?.name === context.oldRoute?.group?.name) {
return;
}

@ -1,22 +1,15 @@
import { fetchFeatures } from '../../../client/lib/fetchFeatures';
import { queryClient } from '../../../../client/lib/queryClient';
const allModules = queryClient
.fetchQuery({
queryKey: ['ee.features'],
queryFn: fetchFeatures,
})
.then((features) => new Set<string>(features))
.catch((e) => {
console.error('Error getting modules', e);
return Promise.reject(e);
});
export async function hasLicense(feature: string): Promise<boolean> {
try {
const features = await allModules;
return features.has(feature);
const features = await queryClient.fetchQuery({
queryKey: ['ee.features'],
queryFn: fetchFeatures,
});
return features.includes(feature);
} catch (e) {
console.error('Error getting modules', e);
return false;
}
}

@ -1,19 +1,15 @@
import { useState, useEffect } from 'react';
import { useMethod, useUserId } from '@rocket.chat/ui-contexts';
import { useQuery } from '@tanstack/react-query';
import { hasLicense } from '../../app/license/client';
import type { BundleFeature } from '../../app/license/server/bundles';
export const useHasLicenseModule = (licenseName: BundleFeature): 'loading' | boolean => {
const [license, setLicense] = useState<'loading' | boolean>('loading');
const method = useMethod('license:getModules');
const uid = useUserId();
useEffect(() => {
hasLicense(licenseName).then((enabled) => {
if (enabled) {
return setLicense(true);
}
setLicense(false);
});
}, [licenseName]);
const features = useQuery(['ee.features'], method, {
enabled: !!uid,
});
return license;
return features.data?.includes(licenseName) ?? 'loading';
};

Loading…
Cancel
Save