From 65e076be6b4f5aa416ab8b5fc8f18670a14e48b8 Mon Sep 17 00:00:00 2001 From: Sathurshan Date: Fri, 1 Mar 2024 22:45:13 +0530 Subject: [PATCH] feat: show toast msg in members view if direct msg is not allowed (#5410) * feat: show toast on direct msg not allowed members view * fix: use permission msg * refactor some code --- .../helpers/emitErrorCreateDirectMessage.ts | 15 +++++++++++++++ app/lib/methods/helpers/goRoom.ts | 5 +++-- app/views/RoomInfoView/index.tsx | 13 +++++-------- app/views/RoomMembersView/helpers.ts | 5 +++-- 4 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 app/lib/methods/helpers/emitErrorCreateDirectMessage.ts diff --git a/app/lib/methods/helpers/emitErrorCreateDirectMessage.ts b/app/lib/methods/helpers/emitErrorCreateDirectMessage.ts new file mode 100644 index 000000000..a9779a95d --- /dev/null +++ b/app/lib/methods/helpers/emitErrorCreateDirectMessage.ts @@ -0,0 +1,15 @@ +import { LISTENER } from '../../../containers/Toast'; +import i18n from '../../../i18n'; +import EventEmitter from './events'; +import log from './log'; + +export const emitErrorCreateDirectMessage = (e: any): void => { + if (e?.errorType === 'error-not-allowed') { + if (e?.details?.method === 'createDirectMessage') + EventEmitter.emit(LISTENER, { + message: i18n.t('error-action-not-allowed', { action: i18n.t('Create_Direct_Messages') }) + }); + } else { + log(e); + } +}; diff --git a/app/lib/methods/helpers/goRoom.ts b/app/lib/methods/helpers/goRoom.ts index 006360ff7..a2550db41 100644 --- a/app/lib/methods/helpers/goRoom.ts +++ b/app/lib/methods/helpers/goRoom.ts @@ -4,6 +4,7 @@ import Navigation from '../../navigation/appNavigation'; import { IOmnichannelRoom, SubscriptionType, IVisitor, TSubscriptionModel, ISubscription } from '../../../definitions'; import { getRoomTitle, getUidDirectMessage } from './helpers'; import { Services } from '../../services'; +import { emitErrorCreateDirectMessage } from './emitErrorCreateDirectMessage'; interface IGoRoomItem { search?: boolean; // comes from spotlight @@ -111,8 +112,8 @@ export const goRoom = async ({ ...props }); } - } catch { - // Do nothing + } catch (e: any) { + emitErrorCreateDirectMessage(e?.data); } } diff --git a/app/views/RoomInfoView/index.tsx b/app/views/RoomInfoView/index.tsx index 907cc25f0..111c37224 100644 --- a/app/views/RoomInfoView/index.tsx +++ b/app/views/RoomInfoView/index.tsx @@ -10,13 +10,11 @@ import UAParser from 'ua-parser-js'; import * as HeaderButton from '../../containers/HeaderButton'; import SafeAreaView from '../../containers/SafeAreaView'; import StatusBar from '../../containers/StatusBar'; -import { LISTENER } from '../../containers/Toast'; import { ISubscription, IUser, SubscriptionType } from '../../definitions'; import I18n from '../../i18n'; import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription'; import { useAppSelector } from '../../lib/hooks'; import { getRoomTitle, getUidDirectMessage, hasPermission } from '../../lib/methods/helpers'; -import EventEmitter from '../../lib/methods/helpers/events'; import { goRoom } from '../../lib/methods/helpers/goRoom'; import { handleIgnore } from '../../lib/methods/helpers/handleIgnore'; import log, { events, logEvent } from '../../lib/methods/helpers/log'; @@ -29,6 +27,7 @@ import RoomInfoViewAvatar from './components/RoomInfoViewAvatar'; import RoomInfoViewBody from './components/RoomInfoViewBody'; import RoomInfoViewTitle from './components/RoomInfoViewTitle'; import styles from './styles'; +import { emitErrorCreateDirectMessage } from '../../lib/methods/helpers/emitErrorCreateDirectMessage'; type TRoomInfoViewNavigationProp = CompositeNavigationProp< StackNavigationProp, @@ -215,8 +214,8 @@ const RoomInfoView = (): React.ReactElement => { try { const result = await Services.createDirectMessage(roomUser.username); if (result.success) return resolve({ ...roomUser, rid: result.room.rid }); - } catch { - reject(); + } catch (e) { + reject(e); } }); @@ -251,10 +250,8 @@ const RoomInfoView = (): React.ReactElement => { if (direct) r = direct; } handleGoRoom(r); - } catch { - EventEmitter.emit(LISTENER, { - message: I18n.t('error-action-not-allowed', { action: I18n.t('Create_Direct_Messages') }) - }); + } catch (e: any) { + emitErrorCreateDirectMessage(e?.data); } }; diff --git a/app/views/RoomMembersView/helpers.ts b/app/views/RoomMembersView/helpers.ts index 973ef395f..9038bae7d 100644 --- a/app/views/RoomMembersView/helpers.ts +++ b/app/views/RoomMembersView/helpers.ts @@ -11,6 +11,7 @@ import appNavigation from '../../lib/navigation/appNavigation'; import { Services } from '../../lib/services'; import database from '../../lib/database'; import { RoomTypes } from '../../lib/methods'; +import { emitErrorCreateDirectMessage } from '../../lib/methods/helpers/emitErrorCreateDirectMessage'; export type TRoomType = SubscriptionType.CHANNEL | SubscriptionType.GROUP | SubscriptionType.OMNICHANNEL; @@ -89,8 +90,8 @@ export const navToDirectMessage = async (item: IUser, isMasterDetail: boolean): handleGoRoom({ rid: result.room?._id as string, name: item.username, t: SubscriptionType.DIRECT }, isMasterDetail); } } - } catch (e) { - log(e); + } catch (e: any) { + emitErrorCreateDirectMessage(e?.data); } };