@holusion/cache-control

3.5.2 • Public • Published

cache-control

a unified cache control module for content.holusion.com.

Uses specific dependencies for electron/react-native applications to manage filesystem interactions.

Install

platform-specific dependencies are not provided as npmjs doesn't provide a mechanism to do so. They are :

Electron / node :

    npm i firebase

in Electron, it's best to use it in the main thread, then dispatch state changes through ipcRenderer

If using node <18.x, node-fetch, abort-controller and formdata-node are also required when syncing with a product

when using node-fetch, define AbortController and FormData into the global scope :

global.fetch = require("node-fetch");
etc...

react-native :

    react-native-fs @react-native-firebase/app @react-native-firebase/storage @react-native-firebase/firestore react-native-background-upload

Usage

The caller is responsible to call firebase.initializeApp() and to set the module's base path using setBasePath() before use.

    import {setBasePath, sagaStore} from "@holusion/cache-control";

    setBasePath("/path/to/wherever");
    const [store, task] = sagaStore();
    #store is a redux store, which can be subscribed to.
    # use task.cancel() to abort operations on exit
    task.cancel();

The module also exports a lot of useful actions/reducers to modify its behaviour. See the features/ folder for reference.

The most basic configuration is to just override some store defaults like this :

    sagaStore({projectName: "My-project", autoClean: true});

See features/conf for all local-stored properties to configure

It can also be useful to dispatch some user-events, to trigger the eventLoop. See lib/features/index.js:rootSaga().

Tips

Readiness

readiness checks (ie. "can I display my pages") is left for the client to implement because it's context-dependant.

Typically something like :

    (state)=> {
    return getItemsIds(state).length !=0      //at least one page
        && getUncachedFiles(state).length == 0; //no uncached file
    }

Changelog

3.5.0

  • uses projectName instead of defaultProject to configure initial project name when calling sagaStore()
  • allow manual signIn retry with the trySignIn action
  • some bugfixes

Readme

Keywords

none

Package Sidebar

Install

npm i @holusion/cache-control

Weekly Downloads

3

Version

3.5.2

License

UNLICENSED

Unpacked Size

1 MB

Total Files

5

Last publish

Collaborators

  • yanndub
  • klepthys