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 / LibraryAccessModal.js

LibraryAccessModal.js in Extendify 0.9.2, at src/Library/components/LibraryAccessModal.js

112 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { Modal } from '@wordpress/components'
2 import { ToggleControl } from '@wordpress/components'
3 import { useSelect } from '@wordpress/data'
4 import { unmountComponentAtNode, useState, useEffect } from '@wordpress/element'
5 import { __ } from '@wordpress/i18n'
6 import { useSiteSettingsStore } from '@library/state/SiteSettings'
7 import { useUserStore } from '@library/state/User'
8
9 const LibraryAccessModal = () => {
10 const isAdmin = useSelect((select) =>
11 select('core').canUser('create', 'users'),
12 )
13
14 const [libraryforMyself, setLibraryforMyself] = useState(
15 useUserStore.getState().enabled,
16 )
17 const [libraryforEveryone, setLibraryforEveryone] = useState(
18 useSiteSettingsStore.getState().enabled,
19 )
20
21 const closeModal = () => {
22 const util = document.getElementById('extendify-util')
23 unmountComponentAtNode(util)
24 }
25
26 useEffect(() => {
27 hideButton(!libraryforMyself)
28 }, [libraryforMyself])
29
30 function hideButton(state = true) {
31 const button = document.getElementById(
32 'extendify-templates-inserter-btn',
33 )
34 if (!button) return
35 if (state) {
36 button.classList.add('hidden')
37 } else {
38 button.classList.remove('hidden')
39 }
40 }
41
42 async function saveUser(value) {
43 await useUserStore.setState({ enabled: value })
44 }
45
46 async function saveSetting(value) {
47 await useSiteSettingsStore.setState({ enabled: value })
48 }
49
50 async function saveToggle(state, type) {
51 if (type === 'global') {
52 await saveSetting(state)
53 } else {
54 await saveUser(state)
55 }
56 }
57
58 function handleToggle(type) {
59 if (type === 'global') {
60 setLibraryforEveryone((state) => {
61 saveToggle(!state, type)
62 return !state
63 })
64 } else {
65 setLibraryforMyself((state) => {
66 hideButton(!state)
67 saveToggle(!state, type)
68 return !state
69 })
70 }
71 }
72
73 return (
74 <Modal
75 title={__('Extendify Settings', 'extendify')}
76 onRequestClose={closeModal}>
77 <ToggleControl
78 label={
79 isAdmin
80 ? __('Enable the library for myself', 'extendify')
81 : __('Enable the library', 'extendify')
82 }
83 help={__(
84 'Publish with hundreds of patterns & page layouts',
85 'extendify',
86 )}
87 checked={libraryforMyself}
88 onChange={() => handleToggle('user')}
89 />
90
91 {isAdmin && (
92 <>
93 <br />
94 <ToggleControl
95 label={__(
96 'Allow all users to publish with the library',
97 )}
98 help={__(
99 'Everyone publishes with patterns & page layouts',
100 'extendify',
101 )}
102 checked={libraryforEveryone}
103 onChange={() => handleToggle('global')}
104 />
105 </>
106 )}
107 </Modal>
108 )
109 }
110
111 export default LibraryAccessModal
112