Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thibaut-decherit/d6e970ebbe315e141039c3526037d865 to your computer and use it in GitHub Desktop.
Save thibaut-decherit/d6e970ebbe315e141039c3526037d865 to your computer and use it in GitHub Desktop.
React Native - AsyncStorage custom service

React Native - AsyncStorage custom service

app/components/services/storageService/StorageService.js:

import {AsyncStorage} from 'react-native';

export default class StorageService {

    static getAsyncStorageItem(key) {
        return new Promise((resolve, reject) => {
            AsyncStorage
                .getItem(key)
                .then(item => {
                    resolve(JSON.parse(item));
                })
        })
    }

    static setAsyncStorageItem(key, data) {
        return new Promise((resolve, reject) => {
            AsyncStorage
                .setItem(key, JSON.stringify(data))
                .then(() => {
                    resolve();
                })
        })
    }

    // Sets an AsyncStorage item only if it doesn't exist yet
    static setAsyncStorageItemIfNull(item, value) {
        AsyncStorage
            .getItem(item)
            .then(currentValue => {
                if (currentValue === null) {
                    AsyncStorage
                        .setItem(item, JSON.stringify(value));
                }
            });
    }
}

example.js:

import StorageService from '../components/services/storageService/StorageService';

export default class Example {
    static async storageExample() {
        const value1 = 3;
        const value2 = 'test';

        await StorageService.setAsyncStorageItemIfNull('key1', value1);
        await StorageService.setAsyncStorageItem('key2', value2);

        const result = await StorageService.getAsyncStorageItem('key2');
    };
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment