From 0db115e61c268a4f27c0a1f005300b8c228a18ed Mon Sep 17 00:00:00 2001 From: Tasso Evangelista Date: Mon, 8 Jun 2020 19:20:36 -0300 Subject: [PATCH] Test --- app/2fa/server/code/EmailCheck.ts | 2 +- app/2fa/server/code/index.ts | 2 +- app/livechat/server/lib/stream/agentStatus.ts | 20 +---- client/contexts/ModalContext.js | 5 ++ client/contexts/ModalContext.ts | 7 -- ...gsContext.ts => PrivateSettingsContext.js} | 83 +++++-------------- client/fuselage-hooks.d.ts | 4 - ee/app/license/server/license.ts | 2 +- 8 files changed, 35 insertions(+), 90 deletions(-) create mode 100644 client/contexts/ModalContext.js delete mode 100644 client/contexts/ModalContext.ts rename client/contexts/{PrivateSettingsContext.ts => PrivateSettingsContext.js} (70%) delete mode 100644 client/fuselage-hooks.d.ts diff --git a/app/2fa/server/code/EmailCheck.ts b/app/2fa/server/code/EmailCheck.ts index 925520547e25..1199c22397b1 100644 --- a/app/2fa/server/code/EmailCheck.ts +++ b/app/2fa/server/code/EmailCheck.ts @@ -99,7 +99,7 @@ ${ t('If_you_didnt_try_to_login_in_your_account_please_ignore_this_email') } const random = Random._randomString(6, '0123456789'); const encryptedRandom = bcrypt.hashSync(random, Accounts._bcryptRounds()); const expire = new Date(); - const expirationInSeconds = parseInt(settings.get('Accounts_TwoFactorAuthentication_By_Email_Code_Expiration') as string, 10); + const expirationInSeconds = parseInt(settings.get('Accounts_TwoFactorAuthentication_By_Email_Code_Expiration')); expire.setSeconds(expire.getSeconds() + expirationInSeconds); diff --git a/app/2fa/server/code/index.ts b/app/2fa/server/code/index.ts index 7da600862962..cdc12e6520ab 100644 --- a/app/2fa/server/code/index.ts +++ b/app/2fa/server/code/index.ts @@ -95,7 +95,7 @@ export function isAuthorizedForToken(connection: IMethodConnection, user: IUser, export function rememberAuthorization(connection: IMethodConnection, user: IUser): void { const currentToken = Accounts._getLoginToken(connection.id); - const rememberFor = parseInt(settings.get('Accounts_TwoFactorAuthentication_RememberFor') as string, 10); + const rememberFor = parseInt(settings.get('Accounts_TwoFactorAuthentication_RememberFor')); if (rememberFor <= 0) { return; diff --git a/app/livechat/server/lib/stream/agentStatus.ts b/app/livechat/server/lib/stream/agentStatus.ts index 0634f78bc396..00ae13968d3b 100644 --- a/app/livechat/server/lib/stream/agentStatus.ts +++ b/app/livechat/server/lib/stream/agentStatus.ts @@ -9,31 +9,19 @@ let actionTimeout = 60000; let action = 'none'; let comment = ''; -settings.get('Livechat_agent_leave_action_timeout', (_key, value) => { - if (typeof value !== 'number') { - return; - } +settings.get('Livechat_agent_leave_action_timeout', function(_key: string, value: number) { actionTimeout = value * 1000; }); -settings.get('Livechat_agent_leave_action', (_key, value) => { - if (typeof value !== 'boolean') { - return; - } +settings.get('Livechat_agent_leave_action', function(_key: string, value: boolean) { monitorAgents = value; }); -settings.get('Livechat_agent_leave_action', (_key, value) => { - if (typeof value !== 'string') { - return; - } +settings.get('Livechat_agent_leave_action', function(_key: string, value: string) { action = value; }); -settings.get('Livechat_agent_leave_comment', (_key, value) => { - if (typeof value !== 'string') { - return; - } +settings.get('Livechat_agent_leave_comment', function(_key: string, value: string) { comment = value; }); diff --git a/client/contexts/ModalContext.js b/client/contexts/ModalContext.js new file mode 100644 index 000000000000..dc78eb67bfec --- /dev/null +++ b/client/contexts/ModalContext.js @@ -0,0 +1,5 @@ +import { createContext, useContext } from 'react'; + +export const ModalContext = createContext({}); + +export const useModal = () => useContext(ModalContext); diff --git a/client/contexts/ModalContext.ts b/client/contexts/ModalContext.ts deleted file mode 100644 index bb7534f5353f..000000000000 --- a/client/contexts/ModalContext.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createContext, useContext } from 'react'; - -type ModalContextValue = unknown; - -export const ModalContext = createContext({}); - -export const useModal = (): ModalContextValue => useContext(ModalContext); diff --git a/client/contexts/PrivateSettingsContext.ts b/client/contexts/PrivateSettingsContext.js similarity index 70% rename from client/contexts/PrivateSettingsContext.ts rename to client/contexts/PrivateSettingsContext.js index e900175f5424..2014bc48f01b 100644 --- a/client/contexts/PrivateSettingsContext.ts +++ b/client/contexts/PrivateSettingsContext.js @@ -1,6 +1,6 @@ import { useDebouncedCallback, useMutableCallback } from '@rocket.chat/fuselage-hooks'; import { Tracker } from 'meteor/tracker'; -import { createContext, useContext, RefObject, useState, useEffect, useLayoutEffect } from 'react'; +import { createContext, useContext, useState, useEffect, useLayoutEffect } from 'react'; import { useReactiveValue } from '../hooks/useReactiveValue'; import { useBatchSettingsDispatch } from './SettingsContext'; @@ -8,39 +8,8 @@ import { useToastMessageDispatch } from './ToastMessagesContext'; import { useTranslation, useLoadLanguage } from './TranslationContext'; import { useUser } from './UserContext'; -type Setting = object & { - _id: unknown; - type: string; - blocked: boolean; - enableQuery: unknown; - group: string; - section: string; - changed: boolean; - value: unknown; - packageValue: unknown; - packageEditor: unknown; - editor: unknown; - disabled?: boolean; - update?: () => void; - reset?: () => void; -}; - -type PrivateSettingsState = { - settings: Setting[]; - persistedSettings: Setting[]; -}; - -type EqualityFunction = (a: T, b: T) => boolean; - -type PrivateSettingsContextValue = { - subscribers: Set<(state: PrivateSettingsState) => void>; - stateRef: RefObject; - hydrate: (changes: any[]) => void; - isDisabled: (setting: Setting) => boolean; -}; - -export const PrivateSettingsContext = createContext({ - subscribers: new Set<(state: PrivateSettingsState) => void>(), +export const PrivateSettingsContext = createContext({ + subscribers: new Set(), stateRef: { current: { settings: [], @@ -51,14 +20,11 @@ export const PrivateSettingsContext = createContext isDisabled: () => false, }); -const useSelector = ( - selector: (state: PrivateSettingsState) => T, - equalityFunction: EqualityFunction = Object.is, -): T | null => { +const useSelector = (selector, equalityFunction = Object.is) => { const { subscribers, stateRef } = useContext(PrivateSettingsContext); - const [value, setValue] = useState(() => (stateRef.current ? selector(stateRef.current) : null)); + const [value, setValue] = useState(() => (stateRef.current ? selector(stateRef.current) : null)); - const handleUpdate = useMutableCallback((state: PrivateSettingsState) => { + const handleUpdate = useMutableCallback((state) => { const newValue = selector(state); if (!value || !equalityFunction(newValue, value)) { @@ -69,7 +35,7 @@ const useSelector = ( useEffect(() => { subscribers.add(handleUpdate); - return (): void => { + return () => { subscribers.delete(handleUpdate); }; }, [handleUpdate]); @@ -81,10 +47,10 @@ const useSelector = ( return value; }; -export const usePrivateSettingsGroup = (groupId: string): any => { +export const usePrivateSettingsGroup = (groupId) => { const group = useSelector((state) => state.settings.find(({ _id, type }) => _id === groupId && type === 'group')); - const filterSettings = (settings: any[]): any[] => settings.filter(({ group }) => group === groupId); + const filterSettings = (settings) => settings.filter(({ group }) => group === groupId); const changed = useSelector((state) => filterSettings(state.settings).some(({ changed }) => changed)); const sections = useSelector((state) => Array.from(new Set(filterSettings(state.settings).map(({ section }) => section || ''))), (a, b) => a.length === b.length && a.join() === b.join()); @@ -92,10 +58,10 @@ export const usePrivateSettingsGroup = (groupId: string): any => { const batchSetSettings = useBatchSettingsDispatch(); const { stateRef, hydrate } = useContext(PrivateSettingsContext); - const dispatchToastMessage = useToastMessageDispatch() as any; - const t = useTranslation() as (key: string, ...args: any[]) => string; - const loadLanguage = useLoadLanguage() as any; - const user = useUser() as any; + const dispatchToastMessage = useToastMessageDispatch(); + const t = useTranslation(); + const loadLanguage = useLoadLanguage(); + const user = useUser(); const save = useMutableCallback(async () => { const state = stateRef.current; @@ -148,10 +114,10 @@ export const usePrivateSettingsGroup = (groupId: string): any => { return group && { ...group, sections, changed, save, cancel }; }; -export const usePrivateSettingsSection = (groupId: string, sectionName?: string): any => { +export const usePrivateSettingsSection = (groupId, sectionName) => { sectionName = sectionName || ''; - const filterSettings = (settings: any[]): any[] => + const filterSettings = (settings) => settings.filter(({ group, section }) => group === groupId && ((!sectionName && !section) || (sectionName === section))); const canReset = useSelector((state) => filterSettings(state.settings).some(({ value, packageValue }) => JSON.stringify(value) !== JSON.stringify(packageValue))); @@ -186,10 +152,7 @@ export const usePrivateSettingsSection = (groupId: string, sectionName?: string) }; }; -export const usePrivateSettingActions = (persistedSetting: Setting | null | undefined): { - update: () => void; - reset: () => void; -} => { +export const usePrivateSettingActions = (persistedSetting) => { const { hydrate } = useContext(PrivateSettingsContext); const update = useDebouncedCallback(({ value, editor }) => { @@ -201,7 +164,7 @@ export const usePrivateSettingActions = (persistedSetting: Setting | null | unde }]; hydrate(changes); - }, 100, [hydrate, persistedSetting]) as () => void; + }, 100, [hydrate, persistedSetting]); const reset = useDebouncedCallback(() => { const changes = [{ @@ -212,23 +175,23 @@ export const usePrivateSettingActions = (persistedSetting: Setting | null | unde }]; hydrate(changes); - }, 100, [hydrate, persistedSetting]) as () => void; + }, 100, [hydrate, persistedSetting]); return { update, reset }; }; -export const usePrivateSettingDisabledState = (setting: Setting | null | undefined): boolean => { +export const usePrivateSettingDisabledState = (setting) => { const { isDisabled } = useContext(PrivateSettingsContext); - return useReactiveValue(() => (setting ? isDisabled(setting) : false), [setting?.blocked, setting?.enableQuery]) as unknown as boolean; + return useReactiveValue(() => (setting ? isDisabled(setting) : false), [setting?.blocked, setting?.enableQuery]); }; -export const usePrivateSettingsSectionChangedState = (groupId: string, sectionName: string): boolean => +export const usePrivateSettingsSectionChangedState = (groupId, sectionName): boolean => !!useSelector((state) => state.settings.some(({ group, section, changed }) => group === groupId && ((!sectionName && !section) || (sectionName === section)) && changed)); -export const usePrivateSetting = (_id: string): Setting | null | undefined => { - const selectSetting = (settings: Setting[]): Setting | undefined => settings.find((setting) => setting._id === _id); +export const usePrivateSetting = (_id) => { + const selectSetting = (settings) => settings.find((setting) => setting._id === _id); const setting = useSelector((state) => selectSetting(state.settings)); const persistedSetting = useSelector((state) => selectSetting(state.persistedSettings)); diff --git a/client/fuselage-hooks.d.ts b/client/fuselage-hooks.d.ts deleted file mode 100644 index 2bef8fec95ab..000000000000 --- a/client/fuselage-hooks.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '@rocket.chat/fuselage-hooks' { - export const useDebouncedCallback: (fn: (...args: any[]) => any, ms: number, deps: any[]) => (...args: any[]) => any; - export const useMutableCallback: (fn: (...args: any[]) => any) => (...args: any[]) => any; -} diff --git a/ee/app/license/server/license.ts b/ee/app/license/server/license.ts index 6edb121c440a..71ff33fbb70a 100644 --- a/ee/app/license/server/license.ts +++ b/ee/app/license/server/license.ts @@ -1,4 +1,4 @@ -import { EventEmitter } from 'events'; +import EventEmitter from 'events'; import { Users } from '../../../../app/models/server'; import { resetEnterprisePermissions } from '../../authorization/server/resetEnterprisePermissions';