use-switch-enable-new-editor-state.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { postJSON } from '@/infrastructure/fetch-json'
  2. import { useUserSettingsContext } from '@/shared/context/user-settings-context'
  3. import { useCallback, useState } from 'react'
  4. export const useSwitchEnableNewEditorState = () => {
  5. const [loading, setLoading] = useState(false)
  6. const [error, setError] = useState('')
  7. const { setUserSettings } = useUserSettingsContext()
  8. const setEditorRedesignStatus = useCallback(
  9. (status: boolean): Promise<void> => {
  10. setLoading(true)
  11. setError('')
  12. return new Promise((resolve, reject) => {
  13. postJSON('/user/settings', { body: { enableNewEditor: status } })
  14. .then(() => {
  15. setUserSettings(current => ({
  16. ...current,
  17. enableNewEditor: status,
  18. }))
  19. resolve()
  20. })
  21. .catch(e => {
  22. setError('Failed to update settings')
  23. reject(e)
  24. })
  25. .finally(() => {
  26. setLoading(false)
  27. })
  28. })
  29. },
  30. [setUserSettings]
  31. )
  32. return { loading, error, setEditorRedesignStatus }
  33. }