diff --git a/app/database/subscription/servers.ts b/app/database/subscription/servers.ts index e152f37d8b..c95cbbdb4d 100644 --- a/app/database/subscription/servers.ts +++ b/app/database/subscription/servers.ts @@ -23,7 +23,7 @@ export const subscribeAllServers = (observer: (servers: ServersModel[]) => void) const db = DatabaseManager.appDatabase?.database; return db?. get(SERVERS). - query(Q.sortBy('display_name', Q.asc)). + query(). observeWithColumns(['last_active_at']). subscribe(observer); }; diff --git a/app/screens/home/channel_list/servers/index.tsx b/app/screens/home/channel_list/servers/index.tsx index 062e665a40..722cb623f0 100644 --- a/app/screens/home/channel_list/servers/index.tsx +++ b/app/screens/home/channel_list/servers/index.tsx @@ -2,7 +2,7 @@ // See LICENSE.txt for license information. import React, {useCallback, useEffect, useRef, useState} from 'react'; -import {useIntl} from 'react-intl'; +import {IntlShape, useIntl} from 'react-intl'; import {StyleSheet} from 'react-native'; import ServerIcon from '@components/server_icon'; @@ -34,6 +34,20 @@ const styles = StyleSheet.create({ }, }); +const sortServers = (servers: ServersModel[], intl: IntlShape) => { + function serverName(s: ServersModel) { + if (s.displayName === s.url) { + return intl.formatMessage({id: 'servers.default', defaultMessage: 'Default Server'}); + } + + return s.displayName; + } + + return servers.sort((a, b) => { + return serverName(a).localeCompare(serverName(b)); + }); +}; + export default function Servers() { const intl = useIntl(); const [total, setTotal] = useState({mentions: 0, unread: false}); @@ -70,7 +84,7 @@ export default function Servers() { }; const serversObserver = async (servers: ServersModel[]) => { - registeredServers.current = servers; + registeredServers.current = sortServers(servers, intl); // unsubscribe mentions from servers that were removed const allUrls = servers.map((s) => s.url);