mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-11 20:44:32 -05:00
86 lines
2.0 KiB
TypeScript
86 lines
2.0 KiB
TypeScript
import { send } from '../../platform/client/fetch';
|
|
import {
|
|
type GlobalPrefs,
|
|
type MetadataPrefs,
|
|
type SyncedPrefs,
|
|
} from '../../types/prefs';
|
|
import * as constants from '../constants';
|
|
|
|
import { closeModal } from './modals';
|
|
import type { Dispatch, GetState } from './types';
|
|
|
|
export function loadPrefs() {
|
|
return async (dispatch: Dispatch, getState: GetState) => {
|
|
const prefs = await send('load-prefs');
|
|
|
|
// Remove any modal state if switching between budgets
|
|
const currentPrefs = getState().prefs.local;
|
|
if (prefs && prefs.id && !currentPrefs) {
|
|
dispatch(closeModal());
|
|
}
|
|
|
|
dispatch({
|
|
type: constants.SET_PREFS,
|
|
prefs,
|
|
globalPrefs: await send('load-global-prefs'),
|
|
syncedPrefs: await send('preferences/get'),
|
|
});
|
|
|
|
return prefs;
|
|
};
|
|
}
|
|
|
|
export function savePrefs(prefs: MetadataPrefs) {
|
|
return async (dispatch: Dispatch) => {
|
|
await send('save-prefs', prefs);
|
|
dispatch({
|
|
type: constants.MERGE_LOCAL_PREFS,
|
|
prefs,
|
|
});
|
|
};
|
|
}
|
|
|
|
export function loadGlobalPrefs() {
|
|
return async (dispatch: Dispatch, getState: GetState) => {
|
|
const globalPrefs = await send('load-global-prefs');
|
|
dispatch({
|
|
type: constants.SET_PREFS,
|
|
prefs: getState().prefs.local,
|
|
globalPrefs,
|
|
syncedPrefs: getState().prefs.synced,
|
|
});
|
|
return globalPrefs;
|
|
};
|
|
}
|
|
|
|
export function saveGlobalPrefs(
|
|
prefs: GlobalPrefs,
|
|
onSaveGlobalPrefs?: () => void,
|
|
) {
|
|
return async (dispatch: Dispatch) => {
|
|
await send('save-global-prefs', prefs);
|
|
dispatch({
|
|
type: constants.MERGE_GLOBAL_PREFS,
|
|
globalPrefs: prefs,
|
|
});
|
|
onSaveGlobalPrefs?.();
|
|
};
|
|
}
|
|
|
|
export function saveSyncedPrefs(prefs: SyncedPrefs) {
|
|
return async (dispatch: Dispatch) => {
|
|
await Promise.all(
|
|
Object.entries(prefs).map(([prefName, value]) =>
|
|
send('preferences/save', {
|
|
id: prefName as keyof SyncedPrefs,
|
|
value,
|
|
}),
|
|
),
|
|
);
|
|
dispatch({
|
|
type: constants.MERGE_SYNCED_PREFS,
|
|
syncedPrefs: prefs,
|
|
});
|
|
};
|
|
}
|