From 6b5f970da4dafb397dfb809923494af13f1d7d0c Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Fri, 4 Mar 2022 17:46:37 -0400 Subject: [PATCH 1/5] add: `teams.listRooms` types --- app/definitions/rest/v1/teams.ts | 8 ++++++++ app/lib/rocketchat/services/restApi.ts | 4 +--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/definitions/rest/v1/teams.ts b/app/definitions/rest/v1/teams.ts index e32c5252ac5..4c24f88ea22 100644 --- a/app/definitions/rest/v1/teams.ts +++ b/app/definitions/rest/v1/teams.ts @@ -33,4 +33,12 @@ export type TeamsEndpoints = { room: { readOnly: boolean; extraData: { broadcast: boolean; encrypted: boolean } }; }) => { team: ITeam }; }; + 'teams.listRooms': { + GET: (params: { teamId: string; count: number; offset: number; type: string; filter?: any }) => { + rooms: IServerRoomItem[]; + total: number; + count: number; + offset: number; + }; + }; }; diff --git a/app/lib/rocketchat/services/restApi.ts b/app/lib/rocketchat/services/restApi.ts index 40db3b020fe..50768b29177 100644 --- a/app/lib/rocketchat/services/restApi.ts +++ b/app/lib/rocketchat/services/restApi.ts @@ -342,7 +342,7 @@ export const getTeamListRoom = ({ offset: number; type: string; filter: any; -}): any => { +}) => { const params: any = { teamId, count, @@ -354,8 +354,6 @@ export const getTeamListRoom = ({ params.filter = filter; } // RC 3.13.0 - // TODO: missing definitions from server - // @ts-ignore return sdk.get('teams.listRooms', params); }; From badb49daef5afb8622afe51ccaf19fd24adf375e Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Mon, 7 Mar 2022 12:27:07 -0400 Subject: [PATCH 2/5] update: `teams.listRooms` return types --- app/definitions/rest/v1/teams.ts | 2 +- app/views/TeamChannelsView.tsx | 53 +++++++--------------- ios/Podfile.lock | 4 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 12 ++--- 4 files changed, 26 insertions(+), 45 deletions(-) diff --git a/app/definitions/rest/v1/teams.ts b/app/definitions/rest/v1/teams.ts index 4c24f88ea22..196bd13a2b7 100644 --- a/app/definitions/rest/v1/teams.ts +++ b/app/definitions/rest/v1/teams.ts @@ -35,7 +35,7 @@ export type TeamsEndpoints = { }; 'teams.listRooms': { GET: (params: { teamId: string; count: number; offset: number; type: string; filter?: any }) => { - rooms: IServerRoomItem[]; + rooms: IServerTeamUpdateRoom[]; total: number; count: number; offset: number; diff --git a/app/views/TeamChannelsView.tsx b/app/views/TeamChannelsView.tsx index a76c18ba8b1..736754d6990 100644 --- a/app/views/TeamChannelsView.tsx +++ b/app/views/TeamChannelsView.tsx @@ -6,6 +6,7 @@ import { EdgeInsets, withSafeAreaInsets } from 'react-native-safe-area-context'; import { connect } from 'react-redux'; import { Dispatch } from 'redux'; +import { IServerTeamUpdateRoom } from '../definitions/ITeam'; import { deleteRoom } from '../actions/room'; import { themes } from '../constants/colors'; import { withActionSheet } from '../containers/ActionSheet'; @@ -18,7 +19,6 @@ import SafeAreaView from '../containers/SafeAreaView'; import SearchHeader from '../containers/SearchHeader'; import StatusBar from '../containers/StatusBar'; import { IApplicationState, IBaseScreen } from '../definitions'; -import { ERoomType } from '../definitions/ERoomType'; import { withDimensions } from '../dimensions'; import I18n from '../i18n'; import database from '../lib/database'; @@ -41,41 +41,20 @@ const PERMISSION_EDIT_TEAM_CHANNEL = 'edit-team-channel'; const PERMISSION_REMOVE_TEAM_CHANNEL = 'remove-team-channel'; const PERMISSION_ADD_TEAM_CHANNEL = 'add-team-channel'; -const getItemLayout = (data: IItem[] | null | undefined, index: number) => ({ +const getItemLayout = (data: IServerTeamUpdateRoom[] | null | undefined, index: number) => ({ length: data?.length || 0, offset: ROW_HEIGHT * index, index }); -const keyExtractor = (item: IItem) => item._id; - -// This interface comes from request RocketChat.getTeamListRoom -interface IItem { - _id: ERoomType; - fname: string; - customFields: object; - broadcast: boolean; - encrypted: boolean; - name: string; - t: string; - msgs: number; - usersCount: number; - u: { _id: string; name: string }; - ts: string; - ro: boolean; - teamId: string; - default: boolean; - sysMes: boolean; - _updatedAt: string; - teamDefault: boolean; -} +const keyExtractor = (item: IServerTeamUpdateRoom) => item._id; interface ITeamChannelsViewState { loading: boolean; loadingMore: boolean; - data: IItem[]; + data: IServerTeamUpdateRoom[]; isSearching: boolean; searchText: string | null; - search: IItem[]; + search: IServerTeamUpdateRoom[]; end: boolean; showCreate: boolean; } @@ -187,8 +166,10 @@ class TeamChannelsView extends React.Component RocketChat.getRoomTitle(item); + getRoomTitle = (item: IServerTeamUpdateRoom) => RocketChat.getRoomTitle(item); - getRoomAvatar = (item: IItem) => RocketChat.getRoomAvatar(item); + getRoomAvatar = (item: IServerTeamUpdateRoom) => RocketChat.getRoomAvatar(item); onPressItem = debounce( - async (item: IItem) => { + async (item: IServerTeamUpdateRoom) => { logEvent(events.TC_GO_ROOM); const { navigation, isMasterDetail } = this.props; try { @@ -372,7 +353,7 @@ class TeamChannelsView extends React.Component { + toggleAutoJoin = async (item: IServerTeamUpdateRoom) => { logEvent(events.TC_TOGGLE_AUTOJOIN); try { const { data } = this.state; @@ -392,7 +373,7 @@ class TeamChannelsView extends React.Component { + remove = (item: IServerTeamUpdateRoom) => { Alert.alert( I18n.t('Confirmation'), I18n.t('Remove_Team_Room_Warning'), @@ -411,7 +392,7 @@ class TeamChannelsView extends React.Component { + removeRoom = async (item: IServerTeamUpdateRoom) => { logEvent(events.TC_DELETE_ROOM); try { const { data } = this.state; @@ -426,7 +407,7 @@ class TeamChannelsView extends React.Component { + delete = (item: IServerTeamUpdateRoom) => { logEvent(events.TC_DELETE_ROOM); const { dispatch } = this.props; @@ -441,7 +422,7 @@ class TeamChannelsView extends React.Component dispatch(deleteRoom(item._id, item)) } ], @@ -449,7 +430,7 @@ class TeamChannelsView extends React.Component { + showChannelActions = async (item: IServerTeamUpdateRoom) => { logEvent(events.ROOM_SHOW_BOX_ACTIONS); const { showActionSheet, @@ -511,7 +492,7 @@ class TeamChannelsView extends React.Component { + renderItem = ({ item }: { item: IServerTeamUpdateRoom }) => { const { StoreLastMessage, useRealName, theme, width, showAvatar, displayMode } = this.props; return ( Date: Mon, 7 Mar 2022 14:41:57 -0400 Subject: [PATCH 3/5] add: `PaginatedResult` to `teams.ts` --- app/definitions/rest/v1/teams.ts | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/app/definitions/rest/v1/teams.ts b/app/definitions/rest/v1/teams.ts index 196bd13a2b7..63c92f5108f 100644 --- a/app/definitions/rest/v1/teams.ts +++ b/app/definitions/rest/v1/teams.ts @@ -1,17 +1,13 @@ import { IRoom, IServerRoomItem } from '../../IRoom'; import { IServerTeamUpdateRoom, ITeam, TEAM_TYPE } from '../../ITeam'; +import { PaginatedResult } from '../helpers/PaginatedResult'; export type TeamsEndpoints = { 'teams.removeRoom': { POST: (params: { roomId: string; teamId: string }) => { room: IServerRoomItem }; }; 'teams.listRoomsOfUser': { - GET: (params: { teamId: string; userId: string }) => { - rooms: IServerRoomItem[]; - total: number; - count: number; - offset: number; - }; + GET: (params: { teamId: string; userId: string }) => PaginatedResult<{ rooms: IServerRoomItem[] }>; }; 'teams.updateRoom': { POST: (params: { roomId: string; isDefault: boolean }) => { room: IServerTeamUpdateRoom }; @@ -34,11 +30,12 @@ export type TeamsEndpoints = { }) => { team: ITeam }; }; 'teams.listRooms': { - GET: (params: { teamId: string; count: number; offset: number; type: string; filter?: any }) => { - rooms: IServerTeamUpdateRoom[]; - total: number; + GET: (params: { + teamId: string; count: number; offset: number; - }; + type: string; + filter?: any; + }) => PaginatedResult<{ rooms: IServerTeamUpdateRoom[] }>; }; }; From 7198f5f0b09ec22bb501dfdd771f81209709eb27 Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Tue, 8 Mar 2022 11:58:23 -0400 Subject: [PATCH 4/5] undo: changes on `Podfile.lock` and `project.pbxproj` --- ios/Podfile.lock | 4 ++-- ios/RocketChatRN.xcodeproj/project.pbxproj | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index e95da7fd549..08c8e3c0dec 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -950,7 +950,7 @@ SPEC CHECKSUMS: EXVideoThumbnails: 442c3abadb51a81551a3b53705b7560de390e6f7 EXWebBrowser: 76783ba5dcb8699237746ecf41a9643d428a4cc5 FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b - FBReactNativeSpec: 686ac17e193dcf7d5df4d772b224504dd2f3ad81 + FBReactNativeSpec: 8a1012a62d7a3d667376b413656d780b8e4680ce Firebase: 919186c8e119dd9372a45fd1dd17a8a942bc1892 FirebaseAnalytics: 5fa308e1b13f838d0f6dc74719ac2a72e8c5afc4 FirebaseCore: 8cd4f8ea22075e0ee582849b1cf79d8816506085 @@ -1055,4 +1055,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 9fd323641c96f6bf98b309066332c3ff95b9cf15 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.2 diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index f135845eb5e..ae9f0754d5e 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -958,8 +958,8 @@ "${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh", "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework/WebRTC", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -1179,8 +1179,8 @@ "${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh", "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/WebRTC/WebRTC.framework/WebRTC", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -1869,7 +1869,7 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 i386"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -1924,7 +1924,7 @@ COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 i386"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; From f1fbc4e6dde8c29664941c0aeb01534a0c5c722d Mon Sep 17 00:00:00 2001 From: Gerzon Z Date: Tue, 8 Mar 2022 12:03:54 -0400 Subject: [PATCH 5/5] undo: changes on `TeamChannelsView` --- app/views/TeamChannelsView.tsx | 51 ++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/app/views/TeamChannelsView.tsx b/app/views/TeamChannelsView.tsx index 736754d6990..5740f078d04 100644 --- a/app/views/TeamChannelsView.tsx +++ b/app/views/TeamChannelsView.tsx @@ -6,7 +6,6 @@ import { EdgeInsets, withSafeAreaInsets } from 'react-native-safe-area-context'; import { connect } from 'react-redux'; import { Dispatch } from 'redux'; -import { IServerTeamUpdateRoom } from '../definitions/ITeam'; import { deleteRoom } from '../actions/room'; import { themes } from '../constants/colors'; import { withActionSheet } from '../containers/ActionSheet'; @@ -19,6 +18,7 @@ import SafeAreaView from '../containers/SafeAreaView'; import SearchHeader from '../containers/SearchHeader'; import StatusBar from '../containers/StatusBar'; import { IApplicationState, IBaseScreen } from '../definitions'; +import { ERoomType } from '../definitions/ERoomType'; import { withDimensions } from '../dimensions'; import I18n from '../i18n'; import database from '../lib/database'; @@ -41,20 +41,41 @@ const PERMISSION_EDIT_TEAM_CHANNEL = 'edit-team-channel'; const PERMISSION_REMOVE_TEAM_CHANNEL = 'remove-team-channel'; const PERMISSION_ADD_TEAM_CHANNEL = 'add-team-channel'; -const getItemLayout = (data: IServerTeamUpdateRoom[] | null | undefined, index: number) => ({ +const getItemLayout = (data: IItem[] | null | undefined, index: number) => ({ length: data?.length || 0, offset: ROW_HEIGHT * index, index }); -const keyExtractor = (item: IServerTeamUpdateRoom) => item._id; +const keyExtractor = (item: IItem) => item._id; + +// This interface comes from request RocketChat.getTeamListRoom +interface IItem { + _id: ERoomType; + fname: string; + customFields: object; + broadcast: boolean; + encrypted: boolean; + name: string; + t: string; + msgs: number; + usersCount: number; + u: { _id: string; name: string }; + ts: string; + ro: boolean; + teamId: string; + default: boolean; + sysMes: boolean; + _updatedAt: string; + teamDefault: boolean; +} interface ITeamChannelsViewState { loading: boolean; loadingMore: boolean; - data: IServerTeamUpdateRoom[]; + data: IItem[]; isSearching: boolean; searchText: string | null; - search: IServerTeamUpdateRoom[]; + search: IItem[]; end: boolean; showCreate: boolean; } @@ -320,12 +341,12 @@ class TeamChannelsView extends React.Component RocketChat.getRoomTitle(item); + getRoomTitle = (item: IItem) => RocketChat.getRoomTitle(item); - getRoomAvatar = (item: IServerTeamUpdateRoom) => RocketChat.getRoomAvatar(item); + getRoomAvatar = (item: IItem) => RocketChat.getRoomAvatar(item); onPressItem = debounce( - async (item: IServerTeamUpdateRoom) => { + async (item: IItem) => { logEvent(events.TC_GO_ROOM); const { navigation, isMasterDetail } = this.props; try { @@ -353,7 +374,7 @@ class TeamChannelsView extends React.Component { + toggleAutoJoin = async (item: IItem) => { logEvent(events.TC_TOGGLE_AUTOJOIN); try { const { data } = this.state; @@ -373,7 +394,7 @@ class TeamChannelsView extends React.Component { + remove = (item: IItem) => { Alert.alert( I18n.t('Confirmation'), I18n.t('Remove_Team_Room_Warning'), @@ -392,7 +413,7 @@ class TeamChannelsView extends React.Component { + removeRoom = async (item: IItem) => { logEvent(events.TC_DELETE_ROOM); try { const { data } = this.state; @@ -407,7 +428,7 @@ class TeamChannelsView extends React.Component { + delete = (item: IItem) => { logEvent(events.TC_DELETE_ROOM); const { dispatch } = this.props; @@ -422,7 +443,7 @@ class TeamChannelsView extends React.Component dispatch(deleteRoom(item._id, item)) } ], @@ -430,7 +451,7 @@ class TeamChannelsView extends React.Component { + showChannelActions = async (item: IItem) => { logEvent(events.ROOM_SHOW_BOX_ACTIONS); const { showActionSheet, @@ -492,7 +513,7 @@ class TeamChannelsView extends React.Component { + renderItem = ({ item }: { item: IItem }) => { const { StoreLastMessage, useRealName, theme, width, showAvatar, displayMode } = this.props; return (