* Started with Channel Post List * Added markdown hashtag * Added TouchableWithFeedback component * Added utils/bottom_sheet * Removed BottomSheet in favor of future SlideUpPanel * Added markdown_block_quote * Added markdown_list_item * Added markdown_list * Added MarkDownTableCell component * Markdown_table - in progress - need to verify TS * Added markdown_table * Update Podfile.lock * Added deep_linking constant * Added utils/draft * Update config to include ExperimentalNormalizeMarkdownLinks * Added markdown_link * Added markdown_table_row * Added ProgressiveImage and RetriableImage components and images utils * Converted Retriable component to functional component * Added type definition for commonmark * Continuing with markdown TS * Markdown - Typing props [ in progress ] * Fix boolean flag with mardown block quote * Adding observable config to markdown_link * TS Fixes [ in progress ] * TS fixes * TS fixes - TextStyles * Update markdown.tsx * TS fixes on markdown * TS Fixes - AtMention component * AtMention [ IN PROGRESS ] * Add markdown support * Fix emoji and jumboEmoji on iOS * Fix handleMyTeam operator * Fix navigation style based on theme * Fix iOS MattermostManaged deleteDatabse return error type * wrap setNavigationStackStyles under a requestAnimationFrame * Add preventDoubleTap to channel mention * Increase double tap to 750ms * Fix handleReceivedPostsInChannel chunk query * Set initial navigation theme * Swizzle FastImage on iOS * fix preventDoubleTap test Co-authored-by: Avinash Lingaloo <> Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
82 lines
2.5 KiB
TypeScript
82 lines
2.5 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {Keyboard} from 'react-native';
|
|
|
|
import type {IntlShape} from 'react-intl';
|
|
|
|
import {fetchMyChannelsForTeam} from '@actions/remote/channel';
|
|
import DatabaseManager from '@database/manager';
|
|
import {queryCommonSystemValues} from '@queries/servers/system';
|
|
import {queryTeamById, queryTeamByName} from '@queries/servers/team';
|
|
import {dismissAllModals, showModalOverCurrentContext} from '@screens/navigation';
|
|
import {permalinkBadTeam} from '@utils/draft';
|
|
import {changeOpacity} from '@utils/theme';
|
|
import {PERMALINK_GENERIC_TEAM_NAME_REDIRECT} from '@utils/url';
|
|
|
|
import type TeamModel from '@typings/database/models/servers/team';
|
|
|
|
let showingPermalink = false;
|
|
|
|
export const showPermalink = async (serverUrl: string, teamName: string, postId: string, intl: IntlShape, openAsPermalink = true) => {
|
|
const database = DatabaseManager.serverDatabases[serverUrl]?.database;
|
|
if (!database) {
|
|
return {error: `${serverUrl} database not found`};
|
|
}
|
|
|
|
try {
|
|
let name = teamName;
|
|
let team: TeamModel | undefined;
|
|
const system = await queryCommonSystemValues(database);
|
|
if (!name || name === PERMALINK_GENERIC_TEAM_NAME_REDIRECT) {
|
|
team = await queryTeamById(database, system.currentTeamId);
|
|
if (team) {
|
|
name = team.name;
|
|
}
|
|
}
|
|
|
|
if (!team) {
|
|
team = await queryTeamByName(database, name);
|
|
if (!team) {
|
|
permalinkBadTeam(intl);
|
|
return {error: 'Bad Permalink team'};
|
|
}
|
|
}
|
|
|
|
if (team.id !== system.currentTeamId) {
|
|
const result = await fetchMyChannelsForTeam(serverUrl, team.id, true, 0, false, true);
|
|
if (result.error) {
|
|
return {error: result.error};
|
|
}
|
|
}
|
|
|
|
Keyboard.dismiss();
|
|
if (showingPermalink) {
|
|
await dismissAllModals();
|
|
}
|
|
|
|
const screen = 'Permalink';
|
|
const passProps = {
|
|
isPermalink: openAsPermalink,
|
|
teamName,
|
|
postId,
|
|
};
|
|
|
|
const options = {
|
|
layout: {
|
|
componentBackgroundColor: changeOpacity('#000', 0.2),
|
|
},
|
|
};
|
|
|
|
showingPermalink = true;
|
|
showModalOverCurrentContext(screen, passProps, options);
|
|
|
|
return {error: undefined};
|
|
} catch (error) {
|
|
return {error};
|
|
}
|
|
};
|
|
|
|
export const closePermalink = () => {
|
|
showingPermalink = false;
|
|
};
|