forked from Ivasoft/mattermost-mobile
MM-48836 - Calls: handle slash commands (#6980)
This commit is contained in:
committed by
GitHub
parent
e140a12b6c
commit
9a89259e96
@@ -3,15 +3,14 @@
|
||||
|
||||
import React, {useCallback, useEffect, useState} from 'react';
|
||||
import {useIntl} from 'react-intl';
|
||||
import {Alert, DeviceEventEmitter} from 'react-native';
|
||||
import {DeviceEventEmitter} from 'react-native';
|
||||
|
||||
import {getChannelTimezones} from '@actions/remote/channel';
|
||||
import {executeCommand, handleGotoLocation} from '@actions/remote/command';
|
||||
import {createPost} from '@actions/remote/post';
|
||||
import {handleReactionToLatestPost} from '@actions/remote/reactions';
|
||||
import {setStatus} from '@actions/remote/user';
|
||||
import {canEndCall, endCall, getEndCallMessage} from '@calls/actions/calls';
|
||||
import ClientError from '@client/rest/error';
|
||||
import {handleCallsSlashCommand} from '@calls/actions/calls';
|
||||
import {Events, Screens} from '@constants';
|
||||
import {PostPriorityType} from '@constants/post';
|
||||
import {NOTIFY_ALL_MEMBERS} from '@constants/post_draft';
|
||||
@@ -147,54 +146,19 @@ export default function SendHandler({
|
||||
DraftUtils.alertChannelWideMention(intl, notifyAllMessage, doSubmitMessage, cancel);
|
||||
}, [intl, isTimezoneEnabled, channelTimezoneCount, doSubmitMessage]);
|
||||
|
||||
const handleEndCall = useCallback(async () => {
|
||||
const hasPermissions = await canEndCall(serverUrl, channelId);
|
||||
|
||||
if (!hasPermissions) {
|
||||
Alert.alert(
|
||||
intl.formatMessage({
|
||||
id: 'mobile.calls_end_permission_title',
|
||||
defaultMessage: 'Error',
|
||||
}),
|
||||
intl.formatMessage({
|
||||
id: 'mobile.calls_end_permission_msg',
|
||||
defaultMessage: 'You don\'t have permission to end the call. Please ask the call owner to end the call.',
|
||||
}));
|
||||
return;
|
||||
}
|
||||
|
||||
const message = await getEndCallMessage(serverUrl, channelId, currentUserId, intl);
|
||||
const title = intl.formatMessage({id: 'mobile.calls_end_call_title', defaultMessage: 'End call'});
|
||||
|
||||
Alert.alert(
|
||||
title,
|
||||
message,
|
||||
[
|
||||
{
|
||||
text: intl.formatMessage({id: 'mobile.post.cancel', defaultMessage: 'Cancel'}),
|
||||
},
|
||||
{
|
||||
text: title,
|
||||
onPress: async () => {
|
||||
try {
|
||||
await endCall(serverUrl, channelId);
|
||||
} catch (e) {
|
||||
const err = (e as ClientError).message || 'unable to complete command, see server logs';
|
||||
Alert.alert('Error', `Error: ${err}`);
|
||||
}
|
||||
},
|
||||
style: 'cancel',
|
||||
},
|
||||
],
|
||||
);
|
||||
}, [serverUrl, channelId, currentUserId, intl]);
|
||||
|
||||
const sendCommand = useCallback(async () => {
|
||||
if (value.trim() === '/call end') {
|
||||
await handleEndCall();
|
||||
setSendingMessage(false);
|
||||
clearDraft();
|
||||
return;
|
||||
if (value.trim().startsWith('/call')) {
|
||||
const {handled, error} = await handleCallsSlashCommand(value.trim(), serverUrl, channelId, currentUserId, intl);
|
||||
if (handled) {
|
||||
setSendingMessage(false);
|
||||
clearDraft();
|
||||
return;
|
||||
}
|
||||
if (error) {
|
||||
setSendingMessage(false);
|
||||
DraftUtils.alertSlashCommandFailed(intl, error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const status = DraftUtils.getStatusFromSlashCommand(value);
|
||||
@@ -226,7 +190,7 @@ export default function SendHandler({
|
||||
if (data?.goto_location && !value.startsWith('/leave')) {
|
||||
handleGotoLocation(serverUrl, intl, data.goto_location);
|
||||
}
|
||||
}, [userIsOutOfOffice, currentUserId, intl, value, serverUrl, channelId, rootId, handleEndCall]);
|
||||
}, [userIsOutOfOffice, currentUserId, intl, value, serverUrl, channelId, rootId]);
|
||||
|
||||
const sendMessage = useCallback(() => {
|
||||
const notificationsToChannel = enableConfirmNotificationsToChannel && useChannelMentions;
|
||||
|
||||
Reference in New Issue
Block a user