* 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
58 lines
2 KiB
TypeScript
58 lines
2 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {Database, Q} from '@nozbe/watermelondb';
|
|
|
|
import {MM_TABLES} from '@constants/database';
|
|
|
|
import type ServerModel from '@typings/database/models/app/servers';
|
|
|
|
const {APP: {SERVERS}} = MM_TABLES;
|
|
|
|
export const queryServer = async (appDatabase: Database, serverUrl: string) => {
|
|
const servers = (await appDatabase.get<ServerModel>(SERVERS).query(Q.where('url', serverUrl)).fetch());
|
|
return servers?.[0];
|
|
};
|
|
|
|
export const queryAllServers = async (appDatabase: Database) => {
|
|
return appDatabase.get<ServerModel>(MM_TABLES.APP.SERVERS).query().fetch();
|
|
};
|
|
|
|
export const queryActiveServer = async (appDatabase: Database) => {
|
|
try {
|
|
const servers = await queryAllServers(appDatabase);
|
|
const server = servers?.filter((s) => s.identifier)?.reduce((a, b) => (b.lastActiveAt > a.lastActiveAt ? b : a));
|
|
return server;
|
|
} catch {
|
|
return undefined;
|
|
}
|
|
};
|
|
|
|
export const getActiveServerUrl = async (appDatabase: Database) => {
|
|
const server = await queryActiveServer(appDatabase);
|
|
return server?.url || '';
|
|
};
|
|
|
|
export const queryServerByIdentifier = async (appDatabase: Database, identifier: string) => {
|
|
try {
|
|
const servers = (await appDatabase.get<ServerModel>(SERVERS).query(Q.where('identifier', identifier)).fetch());
|
|
return servers?.[0];
|
|
} catch {
|
|
return undefined;
|
|
}
|
|
};
|
|
|
|
export const queryServerByDisplayName = async (appDatabase: Database, displayName: string) => {
|
|
const servers = await queryAllServers(appDatabase);
|
|
const server = servers.find((s) => s.displayName.toLowerCase() === displayName.toLowerCase());
|
|
return server;
|
|
};
|
|
|
|
export const queryServerName = async (appDatabase: Database, serverUrl: string) => {
|
|
try {
|
|
const servers = (await appDatabase.get<ServerModel>(SERVERS).query(Q.where('url', serverUrl)).fetch());
|
|
return servers?.[0].displayName;
|
|
} catch {
|
|
return serverUrl;
|
|
}
|
|
};
|