New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More

pinia-plugin-capacitor-persist

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pinia-plugin-capacitor-persist

A Vue 3 Pinia plugin which persists store content using the CapacitorJS Preferences store.

1.5.0
latest
Version published
Weekly downloads
197
8.24%
Maintainers
0
Weekly downloads
 
Created

Pinia Persist Plugin for Capacitor

Pinia plugin that syncs with Capacitor's Preferences plugin's storage.

Installation

npm i pinia-plugin-capacitor-persist

Usage

First, install the plugin as part of your Pinia initialisation

import { createApp } from 'vue';
import { createPinia } from 'pinia';
import { piniaCapacitorPersist } from 'pinia-plugin-capacitor-persist';
import App from './App.vue';

const pinia = createPinia();
pinia.use(piniaCapacitorPersist);

createApp(App)
    .use(pinia)
    .mount('#app');

Then you can enable persist as part of your store declarations:

import { defineStore } from 'pinia';

export const useUserStore = defineStore('user', {
	state() {
		return {
			name: '',
			address: '',
			address_2: '',
			city: '',
			country: '',
		};
	},
	persist: {
		enabled: true,
        // See below for additional options that go here
	},
});

Persist options

OptionTypeExampleDescription
includeArray['address']Only persist these properties
excludeArray['name']Don't persist these properties
onRestoredFunction(store) => { // do stuff }Callback function for after restoration

Async Restoration

Because CapacitorJS uses async functions to read/write its storage, there may be times when you need to await your store being hydrated from local storage before doing an action.

Fortunately, there's a property, restored, that's added to each of your persist enabled stores that can be awaited.

import { createRouter, createWebHashHistory } from "vue-router";
import routes from "@/router/routes";
import { useUserStore } from "@/stores/user";
import { axiosInstance } from "@/plugins/axios";

const router = createRouter({
  history: createWebHashHistory(),
  routes,
});

router.beforeEach(async () => {
    const userStore = useUserStore();
    await userStore.restored;

    axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${userStore.token}`;
})

export default router;

FAQs

Package last updated on 21 Feb 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts