[RN] Simplify initialization of AsyncStorage

pull/2383/merge jitsi-meet_2756
Saúl Ibarra Corretgé 7 years ago committed by Paweł Domas
parent b04661b40b
commit 98ff20a026
  1. 15
      react/features/app/components/AbstractApp.js
  2. 12
      react/features/base/lib-jitsi-meet/native/Storage.js

@ -105,14 +105,11 @@ export class AbstractApp extends Component {
* properly initializes. On web it does actually nothing, see
* {@link #_initStorage}.
*/
this.init = new Promise(resolve => {
this._initStorage().then(() => {
this.init = this._initStorage().then(() => {
this.setState({
route: undefined,
store: this._maybeCreateStore(props)
});
resolve();
});
});
}
@ -249,13 +246,11 @@ export class AbstractApp extends Component {
* @returns {ReactElement}
*/
_initStorage() {
return new Promise(resolve => {
if (window.localStorage._initializing) {
window.localStorage._inited.then(resolve);
} else {
resolve();
if (typeof window.localStorage._initialized !== 'undefined') {
return window.localStorage._initialized;
}
});
return Promise.resolve();
}
/**

@ -34,16 +34,7 @@ export default class Storage {
// Load all previously persisted data items from React Native's
// AsyncStorage.
/**
* A flag to indicate that the async {@code AsyncStorage} is not
* initialized yet. This is native specific but it will work
* fine on web as well, as it will have no value (== false) there.
* This is required to be available as we need a sync way to check
* if the storage is inited or not.
*/
this._initializing = true;
this._inited = new Promise(resolve => {
this._initialized = new Promise(resolve => {
AsyncStorage.getAllKeys().then((...getAllKeysCallbackArgs) => {
// XXX The keys argument of getAllKeys' callback may
// or may not be preceded by an error argument.
@ -77,7 +68,6 @@ export default class Storage {
}
}
this._initializing = false;
resolve();
});
});

Loading…
Cancel
Save