Co-authored-by: tobi <tobi.smethurst@protonmail.com> Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/88 Co-authored-by: Zoë Bijl <moiety@noreply.codeberg.org> Co-committed-by: Zoë Bijl <moiety@noreply.codeberg.org>
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
import { Iterable, fromJS } from "immutable";
|
|
|
|
import { hydrateCompose } from "./compose";
|
|
import { importFetchedAccounts } from "./importer";
|
|
import { hydrateSearch } from "./search";
|
|
import { saveSettings } from "./settings";
|
|
|
|
export const STORE_HYDRATE = "STORE_HYDRATE";
|
|
export const STORE_HYDRATE_LAZY = "STORE_HYDRATE_LAZY";
|
|
|
|
const convertState = rawState =>
|
|
fromJS(rawState, (k, v) =>
|
|
Iterable.isIndexed(v) ? v.toList() : v.toMap());
|
|
|
|
const applyMigrations = (state) => {
|
|
return state.withMutations(state => {
|
|
// Migrate glitch-soc local-only “Show unread marker” setting to Mastodon's setting
|
|
if (state.getIn(["local_settings", "notifications", "show_unread"]) !== undefined) {
|
|
// Only change if the Mastodon setting does not deviate from default
|
|
if (state.getIn(["settings", "notifications", "showUnread"]) !== false) {
|
|
state.setIn(["settings", "notifications", "showUnread"], state.getIn(["local_settings", "notifications", "show_unread"]));
|
|
}
|
|
state.removeIn(["local_settings", "notifications", "show_unread"]);
|
|
}
|
|
});
|
|
};
|
|
|
|
export function hydrateStore(rawState) {
|
|
return dispatch => {
|
|
const state = applyMigrations(convertState(rawState));
|
|
|
|
dispatch({
|
|
type: STORE_HYDRATE,
|
|
state,
|
|
});
|
|
|
|
dispatch(hydrateCompose());
|
|
dispatch(hydrateSearch());
|
|
dispatch(importFetchedAccounts(Object.values(rawState.accounts)));
|
|
dispatch(saveSettings());
|
|
};
|
|
}
|