PluginProbe
Extendify / 0.10.1
Extendify v0.10.1
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 / Library / components / modals / settings / DevSettings.js

DevSettings.js in Extendify 0.10.1, at src/Library/components/modals/settings/DevSettings.js

88 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { Button } from '@wordpress/components'
2 import { useState } from '@wordpress/element'
3 import { useIsDevMode } from '@library/hooks/helpers'
4 import { useGlobalStore } from '@library/state/GlobalState'
5 import { useTaxonomyStore } from '@library/state/Taxonomies'
6 import { useTemplatesStore } from '@library/state/Templates'
7 import { useUserStore } from '@library/state/User'
8
9 export const DevSettings = () => {
10 const [processing, setProcessing] = useState(false)
11 const [canHydrate, setCanHydrate] = useState(false)
12 const devMode = useIsDevMode()
13
14 const handleReset = async () => {
15 if (processing) return
16 setProcessing(true)
17 if (canHydrate) {
18 setCanHydrate(false)
19 await useUserStore.persist.rehydrate()
20 window.extendifyData._canRehydrate = false
21 setProcessing(false)
22 return
23 }
24 useUserStore.persist.clearStorage()
25 useGlobalStore.persist.clearStorage()
26 await new Promise((resolve) => setTimeout(resolve, 1000))
27 window.extendifyData._canRehydrate = true
28 setCanHydrate(true)
29 setProcessing(false)
30 }
31
32 const handleServerSwitch = async () => {
33 const params = new URLSearchParams(window.location.search)
34 params.delete('LOCALMODE', 1)
35 params[params.has('DEVMODE') || devMode ? 'delete' : 'append'](
36 'DEVMODE',
37 1,
38 )
39 window.history.replaceState(
40 null,
41 null,
42 window.location.pathname + '?' + params.toString(),
43 )
44 await new Promise((resolve) => setTimeout(resolve, 500))
45 window.dispatchEvent(new Event('popstate'))
46 useTemplatesStore.getState().resetTemplates()
47 useTemplatesStore.getState().updateSearchParams({})
48 useTaxonomyStore.persist.clearStorage()
49 useTaxonomyStore.persist.rehydrate()
50 useTemplatesStore.setState({
51 taxonomyDefaultState: {},
52 })
53 useTaxonomyStore
54 .getState()
55 .fetchTaxonomies()
56 .then(() => {
57 useTemplatesStore.getState().setupDefaultTaxonomies()
58 })
59 }
60
61 if (!window.extendifyData.devbuild) return null
62
63 return (
64 <section className="p-6 flex flex-col space-y-6 border-l-8 border-extendify-secondary">
65 <div>
66 <p className="text-base m-0 text-extendify-black">
67 Development Settings
68 </p>
69 <p className="text-sm italic m-0 text-gray-500">
70 Only available on dev builds
71 </p>
72 </div>
73 <div className="flex space-x-2">
74 <Button isSecondary onClick={handleServerSwitch}>
75 Switch to {devMode ? 'Live' : 'Dev'} Server
76 </Button>
77 <Button isSecondary onClick={handleReset}>
78 {processing
79 ? 'Processing...'
80 : canHydrate
81 ? 'OK! Press to rehydrate app'
82 : 'Reset User Data'}
83 </Button>
84 </div>
85 </section>
86 )
87 }
88