Skip to content

A wrapper around React Native's AsyncStorage with a listener. Could be used where redux.js is inaccessible

License

Notifications You must be signed in to change notification settings

jayampathiadhikari/react-native-async-storage-listener

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-async-storage-listener

A wrapper around React Native's AsyncStorage with a listener. Multiple Channels are supported. Can be used where redux is not available.

Usage

import StorageListener from react-native-async-storage-listener

//Demo classes for subscribe demonstration
class DemoOne {
    callback = (text:string)=> {
        console.log('CALLBACK CALLED FOR INSTANCE OF DemoOne:', text)
    }
    callbackSecond = (text:string)=> {
        console.log('SECOND CALLBACK CALLED FOR INSTANCE OF DemoOne:', text)
    }
}

class DemoTwo {
    callback = (text:string)=> {
        console.log('CALLBACK CALLED FOR INSTANCE OF DemoTwo:', text)
    }
}


const demoOne = new DemoOne();
const demoTwo = new DemoTwo();

//initiating channels by setting values
StorageListener.setItem("test value 1", "CHANNEL 1");
StorageListener.setItem("test value 2", "CHANNEL 2");

//get available channels for subscription
const channels = StorageListener.getChannels();


const response = StorageListener.addSubscriber(demoOne.callback, channels[0]);
// console.log(response)
// {  success: true, message: 'subscribed to channel', subscriber_id: 'a13151d6-1336-4096-933c-eb8e12cd0b10'}
// subscriber_id is required to remove the subscription 
 
StorageListener.addSubscriber(demoTwo.callback, channels[0]);
StorageListener.addSubscriber(demoOne.callbackSecond, channels[1]);
StorageListener.setItem("test value A", "CHANNEL 1");
StorageListener.setItem("test value A", "CHANNEL 2");
//callbacks will be called for any update

const remove = StorageListener.removeSubscriber(subscriber_id);
// console.log(remove)
// returns true if subscriber_id is a valid id

StorageListener.removeAllSubscribers();
// removes all subscribers

API Reference

setItem

Creates new channel or updates the value of an existing channel

parameters

value:string - The value to update with

channelKey:string - new channel key or a existing channel key

returns: void

getItem

Get value of an existing channel

parameters

channelKey:string - existing channel key

returns: string

clearItem

Delete an existing channel. This will also remove all the subscribers subscribed to the item/channel without providing any notification to the subscribers.

parameters

channelKey:string - existing channel key

returns: void

getChannels

Get all available existing channels

parameters: none

returns: Array<string>

addSubscriber

Add a new subscriber

parameters

callback: (state:string)=>void - callback function with void return

channelKey:string - existing channel key that wish to subscribe

returns: {success: true, message: "subscribed to channel", subscriber_id: key} | {success:false , message: "channel not found. use an existing channel key"}

removeSubscriber

Remove a subscriber

parameters

key:string - subscriber_id returned from addSubscriber response

returns: boolean

removeAllSubscribers

Remove all subscribers

parameters: none

returns: void

About

A wrapper around React Native's AsyncStorage with a listener. Could be used where redux.js is inaccessible

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published