feat: server_url and theme context (#5540)

This commit is contained in:
Elias Nahum
2021-07-14 08:12:49 -04:00
committed by GitHub
parent 0d18eb966a
commit 2dc37f1c92
9 changed files with 174 additions and 29 deletions

View File

@@ -6,8 +6,15 @@ import {Database} from '@nozbe/watermelondb';
import DatabaseProvider from '@nozbe/watermelondb/DatabaseProvider';
import {MM_TABLES} from '@constants/database';
import ServerUrlProvider from '@context/server_url';
import ThemeProvider from '@context/theme';
import DatabaseManager from '@database/manager';
import Servers from '@app/database/models/app/servers';
import Servers from '@database/models/app/servers';
type State = {
database: Database;
serverUrl: string;
}
const {SERVERS} = MM_TABLES.APP;
@@ -15,14 +22,18 @@ export function withServerDatabase<T>(
Component: ComponentType<T>,
): ComponentType<T> {
return function ServerDatabaseComponent(props) {
const [database, setDatabase] = useState<Database|undefined>();
const [state, setState] = useState<State|undefined>();
const db = DatabaseManager.appDatabase?.database;
const observer = async (servers: Servers[]) => {
const server = servers.reduce((a, b) => (b.lastActiveAt > a.lastActiveAt ? b : a));
const serverDatabase = DatabaseManager.serverDatabases[server.url]?.database;
setDatabase(serverDatabase);
const serverDatabase = DatabaseManager.serverDatabases[server?.url]?.database;
setState({
database: serverDatabase,
serverUrl: server?.url,
});
};
useEffect(() => {
@@ -37,15 +48,19 @@ export function withServerDatabase<T>(
};
}, []);
if (!database) {
if (!state?.database) {
return null;
}
return (
<DatabaseProvider
database={(database as Database)}
database={(state.database)}
>
<Component {...props}/>
<ServerUrlProvider url={state.serverUrl}>
<ThemeProvider database={state.database}>
<Component {...props}/>
</ThemeProvider>
</ServerUrlProvider>
</DatabaseProvider>
);
};

View File

@@ -17,8 +17,8 @@ import {schema as appSchema} from '@app/database/schema/app';
import ServerDatabaseMigrations from '@database/migration/server';
import {Channel, ChannelInfo, ChannelMembership, CustomEmoji, Draft, File,
Group, GroupMembership, GroupsInChannel, GroupsInTeam, MyChannel, MyChannelSettings, MyTeam,
Post, PostMetadata, PostsInChannel, PostsInThread, Preference, Reaction, Role,
SlashCommand, System, Team, TeamChannelHistory, TeamMembership, TeamSearchHistory,
Post, PostMetadata, PostsInChannel, PostsInThread, PreferenceModel, Reaction, Role,
SlashCommand, SystemModel, Team, TeamChannelHistory, TeamMembership, TeamSearchHistory,
TermsOfService, User,
} from '@database/models/server';
import {serverSchema} from '@database/schema/server';
@@ -69,11 +69,11 @@ class DatabaseManager {
PostMetadata,
PostsInChannel,
PostsInThread,
Preference,
PreferenceModel,
Reaction,
Role,
SlashCommand,
System,
SystemModel,
Team,
TeamChannelHistory,
TeamMembership,

View File

@@ -17,8 +17,8 @@ import {schema as appSchema} from '@app/database/schema/app';
import ServerDatabaseMigrations from '@database/migration/server';
import {Channel, ChannelInfo, ChannelMembership, CustomEmoji, Draft, File,
Group, GroupMembership, GroupsInChannel, GroupsInTeam, MyChannel, MyChannelSettings, MyTeam,
Post, PostMetadata, PostsInChannel, PostsInThread, Preference, Reaction, Role,
SlashCommand, System, Team, TeamChannelHistory, TeamMembership, TeamSearchHistory,
Post, PostMetadata, PostsInChannel, PostsInThread, PreferenceModel, Reaction, Role,
SlashCommand, SystemModel, Team, TeamChannelHistory, TeamMembership, TeamSearchHistory,
TermsOfService, User,
} from '@database/models/server';
import {serverSchema} from '@database/schema/server';
@@ -47,8 +47,8 @@ class DatabaseManager {
this.serverModels = [
Channel, ChannelInfo, ChannelMembership, CustomEmoji, Draft, File,
Group, GroupMembership, GroupsInChannel, GroupsInTeam, MyChannel, MyChannelSettings, MyTeam,
Post, PostMetadata, PostsInChannel, PostsInThread, Preference, Reaction, Role,
SlashCommand, System, Team, TeamChannelHistory, TeamMembership, TeamSearchHistory,
Post, PostMetadata, PostsInChannel, PostsInThread, PreferenceModel, Reaction, Role,
SlashCommand, SystemModel, Team, TeamChannelHistory, TeamMembership, TeamSearchHistory,
TermsOfService, User,
];

View File

@@ -18,11 +18,11 @@ export {default as PostMetadata} from './post_metadata';
export {default as PostsInChannel} from './posts_in_channel';
export {default as PostsInThread} from './posts_in_thread';
export {default as Post} from './post';
export {default as Preference} from './preference';
export {default as PreferenceModel} from './preference';
export {default as Reaction} from './reaction';
export {default as Role} from './role';
export {default as SlashCommand} from './slash_command';
export {default as System} from './system';
export {default as SystemModel} from './system';
export {default as TeamChannelHistory} from './team_channel_history';
export {default as TeamMembership} from './team_membership';
export {default as TeamSearchHistory} from './team_search_history';