PluginProbe
Extendify / 0.10.0
Extendify v0.10.0
3.2.1 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 All 127 releases
extendify / src / Onboarding / state / Pages.js

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

60 lines 1.7 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 const page = get().pageOrder()[get().currentPageIndex]
19 if (!page) {
20 get().setPage(0)
21 return get().pageOrder()[0]
22 }
23 return page
24 },
25 nextPageData() {
26 const nextIndex = get().currentPageIndex + 1
27 if (nextIndex > get().count() - 1) return {}
28 return get().pages.get(get().pageOrder()[nextIndex])
29 },
30 setPage(page) {
31 // If page is a string, get the index
32 if (typeof page === 'string') {
33 page = get().pageOrder().indexOf(page)
34 }
35 if (page > get().count() - 1) return
36 if (page < 0) return
37 set({ currentPageIndex: page })
38 },
39 nextPage() {
40 get().setPage(get().currentPageIndex + 1)
41 },
42 previousPage() {
43 get().setPage(get().currentPageIndex - 1)
44 },
45 })
46 const withDevtools = devtools(store, {
47 name: 'Extendify Launch Pages',
48 serialize: true,
49 })
50 const withPersist = persist(withDevtools, {
51 name: 'extendify-pages',
52 getStorage: () => localStorage,
53 partialize: (state) => ({
54 currentPageIndex: state?.currentPageIndex ?? 0,
55 }),
56 })
57 export const usePagesStore = window?.extOnbData?.devbuild
58 ? create(withDevtools)
59 : create(withPersist)
60