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