mattermost-mobile/app/queries/app/servers.ts
Elias Nahum 9372bb7c04
[Gekidou] Unique servers (#5798)
* Disallow the same server from being added the twice

* Add Default Server name config & EMM managed config

* Update android/app/src/main/res/values/strings.xml

Co-authored-by: Jason Frerich <jason.frerich@mattermost.com>

Co-authored-by: Jason Frerich <jason.frerich@mattermost.com>
2021-11-03 11:12:52 -03:00

53 lines
1.8 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 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;
}
};