1.2.8 • Published 6 years ago

resub-persist v1.2.8

Weekly downloads
4
License
Apache-2.0
Repository
github
Last release
6 years ago

resub-persist Build Status Coverage Status dependencies npm

Greenkeeper badge

Dead simple peristence for Resub-Stores.

Getting Started

In order to make your store persistable simply implement the IPersistableStore -Interface. This means define a name and getPropKeys in your resub-store and you're good to go! getPropKeys defines which variables of your store should be persisted.

import { AutoSubscribeStore, autoSubscribeWithKey, StoreBase } from "resub"
import { IPersistableStore } from "resub-persist"

@AutoSubscribeStore
class TestStore extends StoreBase implements IPersistableStore {
  public name = "myTestStore"
  private myBool: boolean
  private myString: string
  public getPropKeys() { return ["myBool", "myString"] }
  ...
}

Persist and Rehydrate

Persistence and rehydration are simple one line calls thanks to the IPersistableStore-Interface! You only need a localstorage compatible API (e.g. web = localforage, rn = AsyncStorage) as first argument. They both return a promise to tell you when they are done.

  import { persist, rehydrate } from "resub-persist"
  import * as localforage from "localforage"

  const TestStore1 = new TestStore()
  const TestStore2 = new TestStore()
  const persistAndRehydrate = async () => {
    await persist(localforage, [TestStore1])
    await rehydrate(localforage, [TestStore2]) // TestStore2 now has persisted state of TestStore1
  }
  persistAndRehydrate()

Auto-Save on Changes

By using the autoSave function you can let the persist function get called automatically! Thanks to it using resub's classic subscription function under the hood you can, if needed, specify for which keys the automatic save should be executed. The function returns the subscription-id with which you can manually unsubscribe from the store itself, and hence stop the automatic saving.

  import { autoSave } from "resub-persist"
  import * as localforage from "localforage"

  const TestStore1 = new TestStore()
  // enable autosave
  const subId = autoSave(localforage, TestStore1, "mySubscriptionKey")
  // disable autosave
  TestStore1.unsubscribe(subId)

Motivation

I was missing an equivalent of redux-persist for resub so this is something that accomplishes the most basic part of redux-persist. Saving parts of a store to an asynchronous localStorage-compatible API and rehydrating from there to store.

Changelog

1.2.8

  • upgrade dependencies
  • move resub to peerDependencies

1.2.7

  • Upgrade dependencies

1.2.6

  • Improve code / typescript documentation

1.2.4 & 1.2.5

  • Update dependencies

1.2.3

  • Update dependencies (resub at 1.0.5 now)

1.2.2

  • Update resub to 0.1.0 and also other dev dependencies

1.2.1

  • Fix lowercase typo in filename import

1.2.0

  • Added the autoSave function
1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.8

6 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago