diff --git a/apps/meteor/client/views/admin/info/DescriptionList.js b/apps/meteor/client/views/admin/info/DescriptionList.js deleted file mode 100644 index 382f31900bb..00000000000 --- a/apps/meteor/client/views/admin/info/DescriptionList.js +++ /dev/null @@ -1,21 +0,0 @@ -import { Box, Table } from '@rocket.chat/fuselage'; -import React, { memo } from 'react'; - -import DescriptionListEntry from './DescriptionListEntry'; - -const DescriptionList = ({ children, title, ...props }) => ( - <> - {title && ( - - {title} - - )} - - {children} -
- -); - -export default Object.assign(memo(DescriptionList), { - Entry: DescriptionListEntry, -}); diff --git a/apps/meteor/client/views/admin/info/DescriptionListEntry.js b/apps/meteor/client/views/admin/info/DescriptionListEntry.js deleted file mode 100644 index 540ffa658a7..00000000000 --- a/apps/meteor/client/views/admin/info/DescriptionListEntry.js +++ /dev/null @@ -1,17 +0,0 @@ -import { Table } from '@rocket.chat/fuselage'; -import React, { memo } from 'react'; - -const style = { wordBreak: 'break-word' }; - -const DescriptionListEntry = ({ children, label, ...props }) => ( - - - {label} - - - {children} - - -); - -export default memo(DescriptionListEntry); diff --git a/apps/meteor/client/views/admin/info/InstancesModal.js b/apps/meteor/client/views/admin/info/InstancesModal.js deleted file mode 100644 index 0f484bca5c8..00000000000 --- a/apps/meteor/client/views/admin/info/InstancesModal.js +++ /dev/null @@ -1,105 +0,0 @@ -import { Modal, Button, Accordion } from '@rocket.chat/fuselage'; -import { useTranslation } from '@rocket.chat/ui-contexts'; -import React from 'react'; - -import { useFormatDateAndTime } from '../../../hooks/useFormatDateAndTime'; -import DescriptionList from './DescriptionList'; - -const InstancesModal = ({ instances = [], onClose }) => { - const t = useTranslation(); - - const formatDateAndTime = useFormatDateAndTime(); - - return ( - - - {t('Instances')} - - - - - {instances.map(({ address, broadcastAuth, currentStatus, instanceRecord }) => ( - - - {address} - {broadcastAuth ? 'true' : 'false'} - - {t('Current_Status')} > {t('Connected')} - - } - > - {currentStatus.connected ? 'true' : 'false'} - - - {t('Current_Status')} > {t('Local')} - - } - > - {currentStatus.local ? 'true' : 'false'} - - - {t('Current_Status')} > {t('Last_Heartbeat_Time')} - - } - > - {currentStatus.lastHeartbeatTime} - - - {t('Instance_Record')} > {t('ID')} - - } - > - {instanceRecord._id} - - - {t('Instance_Record')} > {t('PID')} - - } - > - {instanceRecord.pid} - - - {t('Instance_Record')} > {t('Created_at')} - - } - > - {formatDateAndTime(instanceRecord._createdAt)} - - - {t('Instance_Record')} > {t('Updated_at')} - - } - > - {formatDateAndTime(instanceRecord._updatedAt)} - - - - ))} - - - - - - - - - ); -}; - -export default InstancesModal; diff --git a/apps/meteor/client/views/admin/info/DescriptionList.stories.tsx b/apps/meteor/client/views/admin/info/InstancesModal/DescriptionList.stories.tsx similarity index 68% rename from apps/meteor/client/views/admin/info/DescriptionList.stories.tsx rename to apps/meteor/client/views/admin/info/InstancesModal/DescriptionList.stories.tsx index 3cbf89db64b..7a0f70f2c0f 100644 --- a/apps/meteor/client/views/admin/info/DescriptionList.stories.tsx +++ b/apps/meteor/client/views/admin/info/InstancesModal/DescriptionList.stories.tsx @@ -2,6 +2,7 @@ import type { ComponentMeta, ComponentStory } from '@storybook/react'; import React from 'react'; import DescriptionList from './DescriptionList'; +import DescriptionListEntry from './DescriptionListEntry'; export default { title: 'Admin/Info/DescriptionList', @@ -14,9 +15,9 @@ export default { export const Default: ComponentStory = (args) => ( - Value - Value - Value + Value + Value + Value ); Default.storyName = 'DescriptionList'; diff --git a/apps/meteor/client/views/admin/info/InstancesModal/DescriptionList.tsx b/apps/meteor/client/views/admin/info/InstancesModal/DescriptionList.tsx new file mode 100644 index 00000000000..664b2752ce9 --- /dev/null +++ b/apps/meteor/client/views/admin/info/InstancesModal/DescriptionList.tsx @@ -0,0 +1,23 @@ +import { Box, Table, TableBody } from '@rocket.chat/fuselage'; +import type { ReactNode } from 'react'; +import React, { memo } from 'react'; + +type DescriptionListProps = { + children: ReactNode; + title?: string; +}; + +const DescriptionList = ({ children, title }: DescriptionListProps) => ( + <> + {title && ( + + {title} + + )} + + {children} +
+ +); + +export default memo(DescriptionList); diff --git a/apps/meteor/client/views/admin/info/InstancesModal/DescriptionListEntry.tsx b/apps/meteor/client/views/admin/info/InstancesModal/DescriptionListEntry.tsx new file mode 100644 index 00000000000..a8c815d6dce --- /dev/null +++ b/apps/meteor/client/views/admin/info/InstancesModal/DescriptionListEntry.tsx @@ -0,0 +1,21 @@ +import { TableRow, TableCell } from '@rocket.chat/fuselage'; +import type { ReactNode } from 'react'; +import React, { memo } from 'react'; + +type DescriptionListEntryProps = { + label: ReactNode; + children: ReactNode; +}; + +const DescriptionListEntry = ({ children, label }: DescriptionListEntryProps) => ( + + + {label} + + + {children} + + +); + +export default memo(DescriptionListEntry); diff --git a/apps/meteor/client/views/admin/info/InstancesModal.stories.tsx b/apps/meteor/client/views/admin/info/InstancesModal/InstancesModal.stories.tsx similarity index 74% rename from apps/meteor/client/views/admin/info/InstancesModal.stories.tsx rename to apps/meteor/client/views/admin/info/InstancesModal/InstancesModal.stories.tsx index 53c36fbc172..b8d66526bf7 100644 --- a/apps/meteor/client/views/admin/info/InstancesModal.stories.tsx +++ b/apps/meteor/client/views/admin/info/InstancesModal/InstancesModal.stories.tsx @@ -25,20 +25,29 @@ Default.args = { broadcastAuth: false, currentStatus: { connected: true, - retryCount: 0, - retryTime: 30000, - status: 'running', }, instanceRecord: { + _updatedAt: '00-00-00', + _createdAt: '00-00-00', _id: 'instance-id', name: 'instance-name', pid: 123, - _createdAt: new Date(), - _updatedAt: new Date(), extraInformation: { host: '127.0.0.1', nodeVersion: 'v14.18.2', - port: 3000, + port: '', + tcpPort: 123, + os: { + type: 'macOSX', + platform: '', + arch: 'x64', + release: '236', + uptime: 10, + loadavg: [123, 123], + totalmem: 123, + freemem: 123, + cpus: 8, + }, }, }, }, diff --git a/apps/meteor/client/views/admin/info/InstancesModal/InstancesModal.tsx b/apps/meteor/client/views/admin/info/InstancesModal/InstancesModal.tsx new file mode 100644 index 00000000000..44d9aacc321 --- /dev/null +++ b/apps/meteor/client/views/admin/info/InstancesModal/InstancesModal.tsx @@ -0,0 +1,92 @@ +import type { Serialized } from '@rocket.chat/core-typings'; +import { Accordion } from '@rocket.chat/fuselage'; +import type { IInstance } from '@rocket.chat/rest-typings'; +import { useTranslation } from '@rocket.chat/ui-contexts'; +import React from 'react'; + +import GenericModal from '../../../../components/GenericModal'; +import { useFormatDateAndTime } from '../../../../hooks/useFormatDateAndTime'; +import DescriptionList from './DescriptionList'; +import DescriptionListEntry from './DescriptionListEntry'; + +type InstancesModalProps = { + instances: Serialized[]; + onClose: () => void; +}; + +const InstancesModal = ({ instances = [], onClose }: InstancesModalProps) => { + const t = useTranslation(); + const formatDateAndTime = useFormatDateAndTime(); + + return ( + + + {instances.map(({ address, broadcastAuth, currentStatus, instanceRecord }) => ( + + + {address} + {broadcastAuth ? 'true' : 'false'} + + {t('Current_Status')} > {t('Connected')} + + } + > + {currentStatus.connected ? 'true' : 'false'} + + + {t('Current_Status')} > {t('Local')} + + } + > + {currentStatus.local ? 'true' : 'false'} + + + {t('Current_Status')} > {t('Last_Heartbeat_Time')} + + } + > + {currentStatus.lastHeartbeatTime} + + {t('Instance_Record')} > ID}>{instanceRecord?._id} + + {t('Instance_Record')} > {t('PID')} + + } + > + {instanceRecord?.pid} + + + {t('Instance_Record')} > {t('Created_at')} + + } + > + {formatDateAndTime(instanceRecord?._createdAt)} + + + {t('Instance_Record')} > {t('Updated_at')} + + } + > + {formatDateAndTime(instanceRecord?._updatedAt)} + + + + ))} + + + ); +}; + +export default InstancesModal; diff --git a/apps/meteor/client/views/admin/info/InstancesModal/index.ts b/apps/meteor/client/views/admin/info/InstancesModal/index.ts new file mode 100644 index 00000000000..ce2654adcd5 --- /dev/null +++ b/apps/meteor/client/views/admin/info/InstancesModal/index.ts @@ -0,0 +1 @@ +export { default } from './InstancesModal'; diff --git a/packages/rest-typings/src/v1/instances.ts b/packages/rest-typings/src/v1/instances.ts index c24c652996f..5e4779b0b34 100644 --- a/packages/rest-typings/src/v1/instances.ts +++ b/packages/rest-typings/src/v1/instances.ts @@ -8,7 +8,6 @@ export interface IInstance { lastHeartbeatTime?: number; }; instanceRecord?: IInstanceStatus; - broadcastAuth: boolean; }