Skip to content

Commit

Permalink
feat: created use-settings and inserted into relevant locations (#274)
Browse files Browse the repository at this point in the history
  • Loading branch information
mvdicarlo authored Mar 12, 2024
1 parent 8763516 commit 2706f1f
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 22 deletions.
13 changes: 6 additions & 7 deletions apps/postybirb-ui/src/app/app-i18n-provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { i18n } from '@lingui/core';
import { I18nProvider as LinguiI18nProvider } from '@lingui/react';
import { Locale as UppyLocale } from '@uppy/core';
import { useCallback, useEffect, useState } from 'react';
import { SettingsStore } from '../stores/settings.store';
import { useSettings } from '../stores/use-settings';
import { uppyLocales } from './languages';

declare module '@lingui/core' {
Expand All @@ -18,6 +18,7 @@ type AppI18nProviderProps = {

export function AppI18nProvider(props: AppI18nProviderProps) {
const [loaded, setLoaded] = useState(false);
const { settings } = useSettings();

const setLocale = useCallback(
async (locale: string) => {
Expand Down Expand Up @@ -52,12 +53,10 @@ export function AppI18nProvider(props: AppI18nProviderProps) {
);

useEffect(() => {
const { unsubscribe } = SettingsStore.updates.subscribe((e) => {
setLocale(e[0].settings.language);
});

return unsubscribe;
}, [setLocale]);
if (settings) {
setLocale(settings.language);
}
}, [settings, setLocale]);

const [tooLongLoading, setTooLongLoading] = useState(false);
useEffect(() => {
Expand Down
19 changes: 7 additions & 12 deletions apps/postybirb-ui/src/app/app-settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,19 @@ import {
EuiSwitch,
EuiTitle,
} from '@elastic/eui';
import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { useContext, useEffect, useState } from 'react';
import { useQuery } from 'react-query';
import { useLingui } from '@lingui/react';
import { Trans, msg } from '@lingui/macro';
import settingsApi from '../api/settings.api';
import Keybinding, {
KeybindingProps,
} from '../components/app/keybinding/keybinding';
import Loading from '../components/shared/loading/loading';
import { useFlyoutToggle } from '../hooks/use-flyout-toggle';
import { SettingsKeybinding } from '../shared/app-keybindings';
import { useSettings } from '../stores/use-settings';
import { AppThemeContext } from './app-theme-provider';
import { useStore } from '../stores/use-store';
import { SettingsStore } from '../stores/settings.store';
import { languages } from './languages';

function StartupSettings() {
Expand Down Expand Up @@ -133,11 +132,7 @@ function StartupSettings() {
}

function LanguageSettings() {
const {
state: [settings],
reload: reloadSettings,
isLoading,
} = useStore(SettingsStore);
const { settingsId, settings, reloadSettings, isLoading } = useSettings();
const { _ } = useLingui();
const [options, setOptions] = useState<EuiSelectableOption[]>([]);

Expand All @@ -148,7 +143,7 @@ function LanguageSettings() {
languages.map(([label, content]) => ({
label: _(label),
content,
checked: content === settings.settings.language ? 'on' : undefined,
checked: content === settings.language ? 'on' : undefined,
}))
);

Expand All @@ -164,9 +159,9 @@ function LanguageSettings() {
// Because src/i18n.tsx is subscribed to settings changes we
// dont need to call setLocale or anything like this here
settingsApi
.update(settings.id, {
.update(settingsId, {
settings: {
...settings.settings,
...settings,
language: selected.content,
},
})
Expand Down
6 changes: 3 additions & 3 deletions apps/postybirb-ui/src/hooks/account/use-websites.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { IWebsiteInfoDto } from '@postybirb/types';
import { useMemo } from 'react';
import { AccountFilterState } from '../../models/app-states/account-filter-state';
import { DisplayableWebsiteLoginInfo } from '../../models/displayable-website-login-info';
import { SettingsStore } from '../../stores/settings.store';
import { useSettings } from '../../stores/use-settings';
import { useStore } from '../../stores/use-store';
import { WebsiteStore } from '../../stores/website.store';
import { useAccountFilters } from './use-accounts-filters';
Expand Down Expand Up @@ -32,8 +32,8 @@ export function filterWebsites(
export function useWebsites() {
const { filterState, setFilterState } = useAccountFilters();
const { state: websites, isLoading } = useStore(WebsiteStore);
const { state: settings } = useStore(SettingsStore);
const currentSettings = settings[0].settings;
const { settings } = useSettings();
const currentSettings = settings;
const filteredAccounts = useMemo(
() => filterWebsites(websites, currentSettings.hiddenWebsites, filterState),
[currentSettings.hiddenWebsites, filterState, websites]
Expand Down
12 changes: 12 additions & 0 deletions apps/postybirb-ui/src/stores/use-settings.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { SettingsStore } from './settings.store';
import { useStore } from './use-store';

export function useSettings() {
const settings = useStore(SettingsStore);
return {
settingsId: settings.state[0]?.id,
reloadSettings: settings.reload,
isLoading: settings.isLoading,
settings: settings.state[0]?.settings,
};
}

0 comments on commit 2706f1f

Please sign in to comment.