* Add linter rules for import order and type member delimiters * Remove unneeded group * Group all app/* imports before the internal imports * Move app/ imports before parent imports * Separate @node_modules imports into a different group * Substitute app paths by aliases * Fix @node_modules import order and add test related modules * Add aliases for types and test, and group import types
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import AsyncStorage from '@react-native-community/async-storage';
|
|
|
|
import {combineReducers} from 'redux';
|
|
|
|
import {enableBatching, Reducer} from '@mm-redux/types/actions';
|
|
|
|
const KEY_PREFIX = 'reduxPersist:';
|
|
|
|
/* eslint-disable no-console */
|
|
|
|
export function createReducer(...reducers: Reducer[]) {
|
|
const reducerRegistry = Object.assign({}, ...reducers);
|
|
const baseReducer = combineReducers(reducerRegistry);
|
|
|
|
return enableBatching(baseReducer);
|
|
}
|
|
|
|
export async function getStoredState() {
|
|
const restoredState: Record<string, any> = {};
|
|
let storeKeys: Array<string> = [];
|
|
|
|
try {
|
|
const allKeys: Array<string> = await AsyncStorage.getAllKeys();
|
|
storeKeys = allKeys.filter((key) => key.includes(KEY_PREFIX));
|
|
|
|
const values = await AsyncStorage.multiGet(storeKeys);
|
|
|
|
values.forEach(([key, data]: [string, string]) => {
|
|
restoredState[key.slice(KEY_PREFIX.length)] = JSON.parse(data);
|
|
});
|
|
} catch (error) {
|
|
console.log('ERROR GETTING FROM AsyncStorage', error);
|
|
}
|
|
|
|
return {storeKeys, restoredState};
|
|
}
|