forked from Ivasoft/mattermost-mobile
* Add AppsForm and Interactive Dialogs * Add the missing plumbing for Interactive Dialogs and minor fixes * Remove widgets subfolder * Fix paths * Address feedback * Address feedback * i18n extract * Only set the dialog if we are in the same server
63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
//
|
|
|
|
import DatabaseManager from '@database/manager';
|
|
import IntegrationsMananger from '@managers/integrations_manager';
|
|
import NetworkManager from '@managers/network_manager';
|
|
import {getCurrentChannelId, getCurrentTeamId} from '@queries/servers/system';
|
|
|
|
import {forceLogoutIfNecessary} from './session';
|
|
|
|
import type {Client} from '@client/rest';
|
|
|
|
export const submitInteractiveDialog = async (serverUrl: string, submission: DialogSubmission) => {
|
|
const database = DatabaseManager.serverDatabases[serverUrl]?.database;
|
|
if (!database) {
|
|
return {error: `${serverUrl} database not found`};
|
|
}
|
|
|
|
let client: Client;
|
|
try {
|
|
client = NetworkManager.getClient(serverUrl);
|
|
} catch (error) {
|
|
return {error};
|
|
}
|
|
|
|
submission.channel_id = await getCurrentChannelId(database);
|
|
submission.team_id = await getCurrentTeamId(database);
|
|
|
|
try {
|
|
const data = await client.submitInteractiveDialog(submission);
|
|
return {data};
|
|
} catch (error) {
|
|
forceLogoutIfNecessary(serverUrl, error as ClientErrorProps);
|
|
return {error};
|
|
}
|
|
};
|
|
|
|
export const postActionWithCookie = async (serverUrl: string, postId: string, actionId: string, actionCookie: string, selectedOption = '') => {
|
|
let client: Client;
|
|
try {
|
|
client = NetworkManager.getClient(serverUrl);
|
|
} catch (error) {
|
|
return {error};
|
|
}
|
|
|
|
try {
|
|
const data = await client.doPostActionWithCookie(postId, actionId, actionCookie, selectedOption);
|
|
if (data?.trigger_id) {
|
|
IntegrationsMananger.getManager(serverUrl)?.setTriggerId(data.trigger_id);
|
|
}
|
|
|
|
return {data};
|
|
} catch (error) {
|
|
forceLogoutIfNecessary(serverUrl, error as ClientErrorProps);
|
|
return {error};
|
|
}
|
|
};
|
|
|
|
export const selectAttachmentMenuAction = (serverUrl: string, postId: string, actionId: string, selectedOption: string) => {
|
|
return postActionWithCookie(serverUrl, postId, actionId, '', selectedOption);
|
|
};
|