PluginProbe
Extendify / 0.9.3
Extendify v0.9.3
3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 All 126 releases
extendify / src / Onboarding / state / Pages.js

Pages.js in Extendify 0.9.3, at src/Onboarding/state/Pages.js

55 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import create from 'zustand'
2 import { persist, devtools } from 'zustand/middleware'
3 import { pages } from '@onboarding/lib/pages'
4
5 const store = (set, get) => ({
6 pages: new Map(pages),
7 currentPageIndex: 0,
8 count() {
9 return get().pages.size
10 },
11 pageOrder() {
12 return Array.from(get().pages.keys())
13 },
14 currentPageData() {
15 return get().pages.get(get().currentPageSlug())
16 },
17 currentPageSlug() {
18 return get().pageOrder()[get().currentPageIndex]
19 },
20 nextPageData() {
21 const nextIndex = get().currentPageIndex + 1
22 if (nextIndex > get().count() - 1) return {}
23 return get().pages.get(get().pageOrder()[nextIndex])
24 },
25 setPage(page) {
26 // If page is a string, get the index
27 if (typeof page === 'string') {
28 page = get().pageOrder().indexOf(page)
29 }
30 if (page > get().count() - 1) return
31 if (page < 0) return
32 set({ currentPageIndex: page })
33 },
34 nextPage() {
35 get().setPage(get().currentPageIndex + 1)
36 },
37 previousPage() {
38 get().setPage(get().currentPageIndex - 1)
39 },
40 })
41 const withDevtools = devtools(store, {
42 name: 'Extendify Launch Pages',
43 serialize: true,
44 })
45 const withPersist = persist(withDevtools, {
46 name: 'extendify-pages',
47 getStorage: () => localStorage,
48 partialize: (state) => ({
49 currentPageIndex: state?.currentPageIndex ?? 0,
50 }),
51 })
52 export const usePagesStore = window?.extOnbData?.devbuild
53 ? create(withDevtools)
54 : create(withPersist)
55