forked from Ivasoft/mattermost-mobile
[Gekidou] Extract common observers to queries (#5984)
* Extract common observers to queries * Separate also queries and more agressive refactoring * Use query to avoid throws from findAndObserve * Fix minor error * Address feedback * Address feedback * Address feedback * Fix model types * Address feedback
This commit is contained in:
committed by
GitHub
parent
3e94958ab0
commit
7c642b1e80
@@ -1,19 +1,17 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {Q} from '@nozbe/watermelondb';
|
||||
import withObservables from '@nozbe/with-observables';
|
||||
import React, {ComponentType, createContext, useEffect} from 'react';
|
||||
import {Appearance, EventSubscription} from 'react-native';
|
||||
import {of as of$} from 'rxjs';
|
||||
import {catchError, switchMap} from 'rxjs/operators';
|
||||
|
||||
import {Preferences} from '@constants';
|
||||
import {MM_TABLES, SYSTEM_IDENTIFIERS} from '@constants/database';
|
||||
import {queryPreferencesByCategoryAndName} from '@queries/servers/preference';
|
||||
import {observeCurrentTeamId} from '@queries/servers/system';
|
||||
import EphemeralStore from '@store/ephemeral_store';
|
||||
import {setNavigationStackStyles, setThemeDefaults} from '@utils/theme';
|
||||
|
||||
import type {PreferenceModel, SystemModel} from '@database/models/server';
|
||||
import type {PreferenceModel} from '@database/models/server';
|
||||
import type Database from '@nozbe/watermelondb/Database';
|
||||
|
||||
type Props = {
|
||||
@@ -26,8 +24,6 @@ type WithThemeProps = {
|
||||
theme: Theme;
|
||||
}
|
||||
|
||||
const {SERVER: {PREFERENCE, SYSTEM}} = MM_TABLES;
|
||||
|
||||
export function getDefaultThemeByAppearance(): Theme {
|
||||
if (Appearance.getColorScheme() === 'dark') {
|
||||
return Preferences.THEMES.onyx;
|
||||
@@ -98,11 +94,8 @@ export function useTheme(): Theme {
|
||||
}
|
||||
|
||||
const enhancedThemeProvider = withObservables([], ({database}: {database: Database}) => ({
|
||||
currentTeamId: database.get<SystemModel>(SYSTEM).findAndObserve(SYSTEM_IDENTIFIERS.CURRENT_TEAM_ID).pipe(
|
||||
switchMap((row) => of$(row.value)),
|
||||
catchError(() => of$(undefined)),
|
||||
),
|
||||
themes: database.get(PREFERENCE).query(Q.where('category', Preferences.CATEGORY_THEME)).observeWithColumns(['value']),
|
||||
currentTeamId: observeCurrentTeamId(database),
|
||||
themes: queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_THEME).observeWithColumns(['value']),
|
||||
}));
|
||||
|
||||
export default enhancedThemeProvider(ThemeProvider);
|
||||
|
||||
Reference in New Issue
Block a user