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
This commit is contained in:
Sathurshan 2024-03-01 22:45:13 +05:30 committed by GitHub
parent 54f2cea4e9
commit 65e076be6b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 26 additions and 12 deletions

View File

@ -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);
}
};

View File

@ -4,6 +4,7 @@ import Navigation from '../../navigation/appNavigation';
import { IOmnichannelRoom, SubscriptionType, IVisitor, TSubscriptionModel, ISubscription } from '../../../definitions'; import { IOmnichannelRoom, SubscriptionType, IVisitor, TSubscriptionModel, ISubscription } from '../../../definitions';
import { getRoomTitle, getUidDirectMessage } from './helpers'; import { getRoomTitle, getUidDirectMessage } from './helpers';
import { Services } from '../../services'; import { Services } from '../../services';
import { emitErrorCreateDirectMessage } from './emitErrorCreateDirectMessage';
interface IGoRoomItem { interface IGoRoomItem {
search?: boolean; // comes from spotlight search?: boolean; // comes from spotlight
@ -111,8 +112,8 @@ export const goRoom = async ({
...props ...props
}); });
} }
} catch { } catch (e: any) {
// Do nothing emitErrorCreateDirectMessage(e?.data);
} }
} }

View File

@ -10,13 +10,11 @@ import UAParser from 'ua-parser-js';
import * as HeaderButton from '../../containers/HeaderButton'; import * as HeaderButton from '../../containers/HeaderButton';
import SafeAreaView from '../../containers/SafeAreaView'; import SafeAreaView from '../../containers/SafeAreaView';
import StatusBar from '../../containers/StatusBar'; import StatusBar from '../../containers/StatusBar';
import { LISTENER } from '../../containers/Toast';
import { ISubscription, IUser, SubscriptionType } from '../../definitions'; import { ISubscription, IUser, SubscriptionType } from '../../definitions';
import I18n from '../../i18n'; import I18n from '../../i18n';
import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription'; import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription';
import { useAppSelector } from '../../lib/hooks'; import { useAppSelector } from '../../lib/hooks';
import { getRoomTitle, getUidDirectMessage, hasPermission } from '../../lib/methods/helpers'; import { getRoomTitle, getUidDirectMessage, hasPermission } from '../../lib/methods/helpers';
import EventEmitter from '../../lib/methods/helpers/events';
import { goRoom } from '../../lib/methods/helpers/goRoom'; import { goRoom } from '../../lib/methods/helpers/goRoom';
import { handleIgnore } from '../../lib/methods/helpers/handleIgnore'; import { handleIgnore } from '../../lib/methods/helpers/handleIgnore';
import log, { events, logEvent } from '../../lib/methods/helpers/log'; import log, { events, logEvent } from '../../lib/methods/helpers/log';
@ -29,6 +27,7 @@ import RoomInfoViewAvatar from './components/RoomInfoViewAvatar';
import RoomInfoViewBody from './components/RoomInfoViewBody'; import RoomInfoViewBody from './components/RoomInfoViewBody';
import RoomInfoViewTitle from './components/RoomInfoViewTitle'; import RoomInfoViewTitle from './components/RoomInfoViewTitle';
import styles from './styles'; import styles from './styles';
import { emitErrorCreateDirectMessage } from '../../lib/methods/helpers/emitErrorCreateDirectMessage';
type TRoomInfoViewNavigationProp = CompositeNavigationProp< type TRoomInfoViewNavigationProp = CompositeNavigationProp<
StackNavigationProp<ChatsStackParamList, 'RoomInfoView'>, StackNavigationProp<ChatsStackParamList, 'RoomInfoView'>,
@ -215,8 +214,8 @@ const RoomInfoView = (): React.ReactElement => {
try { try {
const result = await Services.createDirectMessage(roomUser.username); const result = await Services.createDirectMessage(roomUser.username);
if (result.success) return resolve({ ...roomUser, rid: result.room.rid }); if (result.success) return resolve({ ...roomUser, rid: result.room.rid });
} catch { } catch (e) {
reject(); reject(e);
} }
}); });
@ -251,10 +250,8 @@ const RoomInfoView = (): React.ReactElement => {
if (direct) r = direct; if (direct) r = direct;
} }
handleGoRoom(r); handleGoRoom(r);
} catch { } catch (e: any) {
EventEmitter.emit(LISTENER, { emitErrorCreateDirectMessage(e?.data);
message: I18n.t('error-action-not-allowed', { action: I18n.t('Create_Direct_Messages') })
});
} }
}; };

View File

@ -11,6 +11,7 @@ import appNavigation from '../../lib/navigation/appNavigation';
import { Services } from '../../lib/services'; import { Services } from '../../lib/services';
import database from '../../lib/database'; import database from '../../lib/database';
import { RoomTypes } from '../../lib/methods'; import { RoomTypes } from '../../lib/methods';
import { emitErrorCreateDirectMessage } from '../../lib/methods/helpers/emitErrorCreateDirectMessage';
export type TRoomType = SubscriptionType.CHANNEL | SubscriptionType.GROUP | SubscriptionType.OMNICHANNEL; 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); handleGoRoom({ rid: result.room?._id as string, name: item.username, t: SubscriptionType.DIRECT }, isMasterDetail);
} }
} }
} catch (e) { } catch (e: any) {
log(e); emitErrorCreateDirectMessage(e?.data);
} }
}; };