@holusion/cache-control v3.5.2
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 firebasein 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-controllerandformdata-nodeare 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-uploadUsage
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
projectNameinstead ofdefaultProjectto configure initial project name when callingsagaStore() - allow manual
signInretry with thetrySignInaction - some bugfixes
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago