Files
xsh-assistant-next/app/composables/useTourState.ts

40 lines
876 B
TypeScript

export const useTourState = defineStore(
'tour_state',
() => {
const tourState = ref<{ [key: string]: boolean }>({})
const isTourDone = (tourId: string) => tourState.value[tourId] || false
const setTourDone = (tourId: string) => {
tourState.value = {
...tourState.value,
[tourId]: true,
}
}
const autoDriveTour = (
tourId: string,
driver: ReturnType<typeof useDriver>
) => {
if (isTourDone(tourId)) return
driver.setConfig({
...driver.getConfig(),
onDestroyed: () => setTourDone(tourId),
})
driver.drive()
}
return {
tourState,
isTourDone,
setTourDone,
autoDriveTour,
}
},
{
persist: {
key: 'xsh_assistant_tour_state',
storage: piniaPluginPersistedstate.localStorage(),
pick: ['tourState'],
},
}
)