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

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

91 lines 3.2 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 useUserStore.setState({
20 participatingTestsGroups: [],
21 })
22 await useUserStore.persist.rehydrate()
23 window.extendifyData._canRehydrate = false
24 setProcessing(false)
25 return
26 }
27 useUserStore.persist.clearStorage()
28 useGlobalStore.persist.clearStorage()
29 await new Promise((resolve) => setTimeout(resolve, 1000))
30 window.extendifyData._canRehydrate = true
31 setCanHydrate(true)
32 setProcessing(false)
33 }
34
35 const handleServerSwitch = async () => {
36 const params = new URLSearchParams(window.location.search)
37 params.delete('LOCALMODE', 1)
38 params[params.has('DEVMODE') || devMode ? 'delete' : 'append'](
39 'DEVMODE',
40 1,
41 )
42 window.history.replaceState(
43 null,
44 null,
45 window.location.pathname + '?' + params.toString(),
46 )
47 await new Promise((resolve) => setTimeout(resolve, 500))
48 window.dispatchEvent(new Event('popstate'))
49 useTemplatesStore.getState().resetTemplates()
50 useTemplatesStore.getState().updateSearchParams({})
51 useTaxonomyStore.persist.clearStorage()
52 useTaxonomyStore.persist.rehydrate()
53 useTemplatesStore.setState({
54 taxonomyDefaultState: {},
55 })
56 useTaxonomyStore
57 .getState()
58 .fetchTaxonomies()
59 .then(() => {
60 useTemplatesStore.getState().setupDefaultTaxonomies()
61 })
62 }
63
64 if (!window.extendifyData.devbuild) return null
65
66 return (
67 <section className="p-6 flex flex-col space-y-6 border-l-8 border-extendify-secondary">
68 <div>
69 <p className="text-base m-0 text-extendify-black">
70 Development Settings
71 </p>
72 <p className="text-sm italic m-0 text-gray-500">
73 Only available on dev builds
74 </p>
75 </div>
76 <div className="flex space-x-2">
77 <Button isSecondary onClick={handleServerSwitch}>
78 Switch to {devMode ? 'Live' : 'Dev'} Server
79 </Button>
80 <Button isSecondary onClick={handleReset}>
81 {processing
82 ? 'Processing...'
83 : canHydrate
84 ? 'OK! Press to rehydrate app'
85 : 'Reset User Data'}
86 </Button>
87 </div>
88 </section>
89 )
90 }
91