Skip to content
Snippets Groups Projects
Unverified Commit 23b252cd authored by Yash Rajpal's avatar Yash Rajpal Committed by GitHub
Browse files

[IMPROVE] Remove device-management banner and modal (#26729)

parent 4d340d9c
No related branches found
No related tags found
No related merge requests found
...@@ -5,9 +5,7 @@ import { Tracker } from 'meteor/tracker'; ...@@ -5,9 +5,7 @@ import { Tracker } from 'meteor/tracker';
import { Notifications } from '../../app/notifications/client'; import { Notifications } from '../../app/notifications/client';
import { APIClient } from '../../app/utils/client'; import { APIClient } from '../../app/utils/client';
import DeviceManagementFeatureModal from '../../ee/client/deviceManagement/components/featureModal/DeviceManagementFeatureModal';
import * as banners from '../lib/banners'; import * as banners from '../lib/banners';
import { imperativeModal } from '../lib/imperativeModal';
const fetchInitialBanners = async (): Promise<void> => { const fetchInitialBanners = async (): Promise<void> => {
const response = await APIClient.get('/v1/banners', { const response = await APIClient.get('/v1/banners', {
...@@ -15,27 +13,6 @@ const fetchInitialBanners = async (): Promise<void> => { ...@@ -15,27 +13,6 @@ const fetchInitialBanners = async (): Promise<void> => {
}); });
for (const banner of response.banners) { for (const banner of response.banners) {
if (banner._id === 'device-management') {
Tracker.autorun((computation) => {
const user = Meteor.user();
if (!user?.username) {
return;
}
process.env.TEST_MODE &&
setTimeout(() => {
imperativeModal.open({
component: DeviceManagementFeatureModal,
props: {
close: imperativeModal.close,
},
});
}, 2000);
computation.stop();
});
continue;
}
banners.open({ banners.open({
...banner.view, ...banner.view,
viewId: banner.view.viewId || banner._id, viewId: banner.view.viewId || banner._id,
......
import { Button, Modal, Icon } from '@rocket.chat/fuselage';
import { ExternalLink } from '@rocket.chat/ui-client';
import { useTranslation } from '@rocket.chat/ui-contexts';
import React, { ComponentProps, ReactElement, useMemo } from 'react';
import { useEndpointAction } from '../../../../../client/hooks/useEndpointAction';
import FeatureModalBullets from './FeatureModalBullets';
type bulletOptionType = {
title: string;
subtitle: string;
icon: ComponentProps<typeof Icon>['name'];
};
const documentationURL = 'https://go.rocket.chat/i/device-management';
const DeviceManagementFeatureModal = ({ close }: { close: () => void }): ReactElement => {
const t = useTranslation();
const bulletOptions: bulletOptionType[] = useMemo(
() => [
{
title: t('Receive_login_notifications'),
subtitle: t('Monitor_new_and_suspicious_logins'),
icon: 'bell',
},
{
title: t('Check_device_activity'),
subtitle: t('Review_devices'),
icon: 'computer',
},
{
title: t('Log_out_devices_remotely'),
subtitle: t('End_suspicious_sessions'),
icon: 'login',
},
],
[t],
);
const modalAcknowledgement = useEndpointAction('POST', '/v1/banners.dismiss', { bannerId: 'device-management' });
const handleGotit = (): void => {
modalAcknowledgement();
close();
};
return (
<Modal>
<Modal.Header>
<Modal.Title withTruncatedText={false}>{t('Workspace_now_using_device_management')}</Modal.Title>
<Modal.Close title={t('Close')} onClick={close} />
</Modal.Header>
<Modal.Content>
{bulletOptions.map(({ title, subtitle, icon }, index) => (
<FeatureModalBullets key={index} title={title} subtitle={subtitle} icon={icon} />
))}
</Modal.Content>
<Modal.Footer justifyContent='space-between'>
<ExternalLink to={documentationURL}>{t('Learn_more')}</ExternalLink>
<Modal.FooterControllers>
<Button onClick={handleGotit}>{t('Got_it')}</Button>
</Modal.FooterControllers>
</Modal.Footer>
</Modal>
);
};
export default DeviceManagementFeatureModal;
import { Box, Icon } from '@rocket.chat/fuselage';
import React, { ComponentProps, ReactElement } from 'react';
type FeatureModalBulletsProps = {
title: string;
subtitle: string;
icon: ComponentProps<typeof Icon>['name'];
};
const FeatureModalBullets = ({ title, subtitle, icon }: FeatureModalBulletsProps): ReactElement => (
<Box display='flex' mbe='x18'>
<Box size='x40' bg='primary-300-40' borderRadius='x40' mie='x16' display='flex' justifyContent='center' alignItems='center'>
<Icon name={icon} size='x25' color='primary' />
</Box>
<Box>
<Box mbe='x6'>
<strong>{title}</strong>
</Box>
<Box display='flex' justifyContent='stretch'>
{subtitle}
</Box>
</Box>
</Box>
);
export default FeatureModalBullets;
export { default } from './DeviceManagementFeatureModal';
import { BannerPlatform } from '@rocket.chat/core-typings'; import { Permissions } from '@rocket.chat/models';
import { Banners, Permissions } from '@rocket.chat/models';
import { settingsRegistry } from '../../../../app/settings/server/index'; import { settingsRegistry } from '../../../../app/settings/server/index';
...@@ -30,31 +29,3 @@ export const createEmailTemplates = async (): Promise<void> => { ...@@ -30,31 +29,3 @@ export const createEmailTemplates = async (): Promise<void> => {
}); });
}); });
}; };
export const createDeviceManagementModal = async (): Promise<void> => {
const banner = await Banners.findOneById('device-management', { projection: { _id: 1 } });
if (!banner) {
const today = new Date();
const expire = new Date();
expire.setMonth(expire.getMonth() + 6);
Banners.insertOne({
_id: 'device-management',
platform: [BannerPlatform.Web],
roles: ['admin', 'user'],
createdAt: today,
startAt: today,
expireAt: expire,
active: true,
createdBy: {
_id: 'rocket.cat',
},
view: {
viewId: 'mdm',
appId: 'mdm',
blocks: [],
},
});
}
};
...@@ -2,13 +2,11 @@ import { onToggledFeature } from '../../app/license/server/license'; ...@@ -2,13 +2,11 @@ import { onToggledFeature } from '../../app/license/server/license';
onToggledFeature('device-management', { onToggledFeature('device-management', {
up: async () => { up: async () => {
const { createPermissions, createEmailTemplates, createDeviceManagementModal } = await import('../lib/deviceManagement/startup'); const { createPermissions, createEmailTemplates } = await import('../lib/deviceManagement/startup');
const { listenSessionLogin } = await import('../lib/deviceManagement/session'); const { listenSessionLogin } = await import('../lib/deviceManagement/session');
await createPermissions(); await createPermissions();
await createEmailTemplates(); await createEmailTemplates();
await listenSessionLogin(); await listenSessionLogin();
await createDeviceManagementModal();
}, },
}); });
...@@ -39,4 +39,5 @@ import './v277'; ...@@ -39,4 +39,5 @@ import './v277';
import './v278'; import './v278';
import './v279'; import './v279';
import './v280'; import './v280';
import './v281';
import './xrun'; import './xrun';
import { Banners } from '@rocket.chat/models';
import { addMigration } from '../../lib/migrations';
addMigration({
version: 281,
async up() {
// TODO: remove device management records from banner_dismiss collection, incase we decide not to use it in future
await Banners.removeById('device-management');
},
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment