From fe1b8b75bd39a5fe300c58bc35f75ea5945b3b2c Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Mon, 2 May 2022 21:30:20 -0300 Subject: [PATCH] Chore: Evaluate CannedResponsesListView - TypeScript (#4149) --- app/definitions/ICannedResponse.ts | 20 ------------------- app/definitions/ILivechatDepartment.ts | 5 +++++ .../Dropdown/DropdownItemFilter.tsx | 8 ++++---- .../Dropdown/DropdownItemHeader.tsx | 6 +++--- .../Dropdown/index.tsx | 8 ++++---- app/views/CannedResponsesListView/index.tsx | 20 ++++++++++--------- 6 files changed, 27 insertions(+), 40 deletions(-) diff --git a/app/definitions/ICannedResponse.ts b/app/definitions/ICannedResponse.ts index fcf531c0c..d7d9fd347 100644 --- a/app/definitions/ICannedResponse.ts +++ b/app/definitions/ICannedResponse.ts @@ -1,23 +1,3 @@ -export interface IDepartment { - _id: string; - enabled: boolean; - name: string; - description: string; - showOnRegistration: boolean; - showOnOfflineForm: boolean; - requestTagBeforeClosingChat: boolean; - email: string; - chatClosingTags: string[]; - offlineMessageChannelName: string; - maxNumberSimultaneousChat: number; - abandonedRoomsCloseCustomMessage: string; - waitingQueueMessage: string; - departmentsAllowedToForward: string; - _updatedAt: Date; - numAgents: number; - ancestors: string[]; -} - export interface ICannedResponse { _id: string; shortcut: string; diff --git a/app/definitions/ILivechatDepartment.ts b/app/definitions/ILivechatDepartment.ts index a3e67e9f2..beb54bfb0 100644 --- a/app/definitions/ILivechatDepartment.ts +++ b/app/definitions/ILivechatDepartment.ts @@ -13,6 +13,11 @@ export interface ILivechatDepartment { _updatedAt?: Date; businessHourId?: string; fallbackForwardDepartment?: string; + maxNumberSimultaneousChat: number; + abandonedRoomsCloseCustomMessage: string; + waitingQueueMessage: string; + departmentsAllowedToForward: string; + ancestors: string[]; // extra optional fields [k: string]: any; } diff --git a/app/views/CannedResponsesListView/Dropdown/DropdownItemFilter.tsx b/app/views/CannedResponsesListView/Dropdown/DropdownItemFilter.tsx index a2d68c528..fa165c67c 100644 --- a/app/views/CannedResponsesListView/Dropdown/DropdownItemFilter.tsx +++ b/app/views/CannedResponsesListView/Dropdown/DropdownItemFilter.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import { IDepartment } from '../../../definitions/ICannedResponse'; +import { ILivechatDepartment } from '../../../definitions/ILivechatDepartment'; import DropdownItem from './DropdownItem'; interface IDropdownItemFilter { - currentDepartment: IDepartment; - value: IDepartment; - onPress: (value: IDepartment) => void; + currentDepartment: ILivechatDepartment; + value: ILivechatDepartment; + onPress: (value: ILivechatDepartment) => void; } const DropdownItemFilter = ({ currentDepartment, value, onPress }: IDropdownItemFilter): JSX.Element => ( diff --git a/app/views/CannedResponsesListView/Dropdown/DropdownItemHeader.tsx b/app/views/CannedResponsesListView/Dropdown/DropdownItemHeader.tsx index ecfa95e8a..5ebcaf860 100644 --- a/app/views/CannedResponsesListView/Dropdown/DropdownItemHeader.tsx +++ b/app/views/CannedResponsesListView/Dropdown/DropdownItemHeader.tsx @@ -1,14 +1,14 @@ import React from 'react'; -import { IDepartment } from '../../../definitions/ICannedResponse'; +import { ILivechatDepartment } from '../../../definitions/ILivechatDepartment'; import DropdownItem from './DropdownItem'; interface IDropdownItemHeader { - department: IDepartment; + department: ILivechatDepartment; onPress: () => void; } -const DropdownItemHeader = ({ department, onPress }: IDropdownItemHeader): JSX.Element => ( +const DropdownItemHeader = ({ department, onPress }: IDropdownItemHeader): React.ReactElement => ( ); diff --git a/app/views/CannedResponsesListView/Dropdown/index.tsx b/app/views/CannedResponsesListView/Dropdown/index.tsx index 8ef425676..58dc52dd3 100644 --- a/app/views/CannedResponsesListView/Dropdown/index.tsx +++ b/app/views/CannedResponsesListView/Dropdown/index.tsx @@ -6,19 +6,19 @@ import styles from '../styles'; import { themes } from '../../../lib/constants'; import { TSupportedThemes, withTheme } from '../../../theme'; import * as List from '../../../containers/List'; -import { IDepartment } from '../../../definitions/ICannedResponse'; import DropdownItemFilter from './DropdownItemFilter'; import DropdownItemHeader from './DropdownItemHeader'; import { ROW_HEIGHT } from './DropdownItem'; +import { ILivechatDepartment } from '../../../definitions/ILivechatDepartment'; const ANIMATION_DURATION = 200; interface IDropdownProps { theme?: TSupportedThemes; - currentDepartment: IDepartment; + currentDepartment: ILivechatDepartment; onClose: () => void; - onDepartmentSelected: (value: IDepartment) => void; - departments: IDepartment[]; + onDepartmentSelected: (value: ILivechatDepartment) => void; + departments: ILivechatDepartment[]; } class Dropdown extends React.Component { diff --git a/app/views/CannedResponsesListView/index.tsx b/app/views/CannedResponsesListView/index.tsx index fc8184551..33ae96d09 100644 --- a/app/views/CannedResponsesListView/index.tsx +++ b/app/views/CannedResponsesListView/index.tsx @@ -25,11 +25,13 @@ import CannedResponseItem from './CannedResponseItem'; import Dropdown from './Dropdown'; import DropdownItemHeader from './Dropdown/DropdownItemHeader'; import styles from './styles'; -import { ICannedResponse, IDepartment } from '../../definitions/ICannedResponse'; +import { ICannedResponse } from '../../definitions/ICannedResponse'; import { ChatsStackParamList } from '../../stacks/types'; import { ISubscription } from '../../definitions/ISubscription'; import { getRoomTitle, getUidDirectMessage } from '../../lib/methods'; import { Services } from '../../lib/services'; +import { IApplicationState } from '../../definitions'; +import { ILivechatDepartment } from '../../definitions/ILivechatDepartment'; const COUNT = 25; @@ -46,7 +48,7 @@ const fixedScopes = [ _id: 'user', name: I18n.t('Private') } -] as IDepartment[]; +] as ILivechatDepartment[]; interface ICannedResponsesListViewProps { navigation: StackNavigationProp; @@ -58,7 +60,7 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView const [cannedResponses, setCannedResponses] = useState([]); const [cannedResponsesScopeName, setCannedResponsesScopeName] = useState([]); - const [departments, setDepartments] = useState([]); + const [departments, setDepartments] = useState([]); // states used by the filter in Header and Dropdown const [isSearching, setIsSearching] = useState(false); @@ -74,8 +76,8 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView const insets = useSafeAreaInsets(); const { theme } = useTheme(); - const { isMasterDetail } = useSelector((state: any) => state.app); - const { rooms } = useSelector((state: any) => state.room); + const isMasterDetail = useSelector((state: IApplicationState) => state.app.isMasterDetail); + const rooms = useSelector((state: IApplicationState) => state.room.rooms); const getRoomFromDb = async () => { const { rid } = route.params; @@ -92,9 +94,9 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView const getDepartments = debounce(async () => { try { - const res: any = await Services.getDepartments(); + const res = await Services.getDepartments(); if (res.success) { - setDepartments([...fixedScopes, ...res.departments]); + setDepartments([...fixedScopes, ...(res.departments as ILivechatDepartment[])]); } } catch (e) { setDepartments(fixedScopes); @@ -119,7 +121,7 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView t: room.t, fname: name }), - t: room.t as any, + t: room.t, roomUserId: getUidDirectMessage(room), usedCannedResponse: item.text }; @@ -214,7 +216,7 @@ const CannedResponsesListView = ({ navigation, route }: ICannedResponsesListView searchCallback(text, scope, departmentId); }; - const onDepartmentSelect = (value: IDepartment) => { + const onDepartmentSelect = (value: ILivechatDepartment) => { let department = ''; let depId = '';