/home/vianto5/hidalgoresidences.mx/wp-content/plugins/code-snippets/js/hooks
NameSizeModeActions
useAxios.ts13680644editdlrm
useFileUploadAPI.ts20000644editdlrm
useHorizontalScrollOverflow.ts13990644editdlrm
useImportersAPI.ts14450644editdlrm
useRestAPI.tsx25250644editdlrm
useSelection.ts12400644editdlrm
useSnippetForm.tsx27600644editdlrm
useSnippetsAPI.tsx37510644editdlrm
useSnippetsList.tsx14670644editdlrm
useSnippetView.ts12410644editdlrm
useSubmitSnippet.ts48600644editdlrm
useSubmitSnippet.tsx54590644editdlrm
Edit: /home/vianto5/hidalgoresidences.mx/wp-content/plugins/code-snippets/js/hooks/useSubmitSnippet.tsx (5459B)
import { __ } from '@wordpress/i18n' import { isAxiosError } from 'axios' import React, { useCallback } from 'react' import { useSnippetForm } from '../components/EditMenu/SnippetForm/WithSnippetFormContext' import { createSnippetObject, isCondition } from '../utils/snippets/snippets' import { buildUrl } from '../utils/urls' import { useSnippetsAPI } from './useSnippetsAPI' import type { Snippet } from '../types/Snippet' import type { ScreenNotice } from '../types/ScreenNotice' const snippetMessages = { addNew: __('Create New Snippet', 'code-snippets'), edit: __('Edit Snippet', 'code-snippets'), created: __('Snippet created.', 'code-snippets'), updated: __('Snippet updated.', 'code-snippets'), createdActivated: __('Snippet created and activated.', 'code-snippets'), updatedActivated: __('Snippet updated and activated.', 'code-snippets'), updatedDeactivated: __('Snippet updated and deactivated'), updatedExecuted: __('Snippet updated and executed.', 'code-snippets'), failedCreate: __('Could not create snippet.', 'code-snippets'), failedUpdate: __('Could not update snippet.', 'code-snippets'), } as const const conditionCreated = __('Condition created.', 'code-snippets') const conditionUpdated = __('Condition updated.', 'code-snippets') const conditionMessages: typeof snippetMessages = { addNew: __('Create New Condition', 'code-snippets'), edit: __('Edit Condition', 'code-snippets'), created: conditionCreated, updated: conditionUpdated, createdActivated: conditionCreated, updatedActivated: conditionUpdated, updatedDeactivated: conditionUpdated, updatedExecuted: conditionUpdated, failedCreate: __('Could not create condition.', 'code-snippets'), failedUpdate: __('Could not update condition.', 'code-snippets') } export enum SubmitSnippetAction { SAVE = 'save_snippet', SAVE_AND_ACTIVATE = 'save_snippet_activate', SAVE_AND_EXECUTE = 'save_snippet_execute', SAVE_AND_DEACTIVATE = 'save_snippet_deactivate' } const getSuccessNotice = ( request: Partial, response: Snippet, action: SubmitSnippetAction = SubmitSnippetAction.SAVE ): string => { const messages = 'condition' === request.scope ? conditionMessages : snippetMessages const wasCreated = 0 === request.id switch (action) { case SubmitSnippetAction.SAVE: return wasCreated ? messages.created : messages.updated case SubmitSnippetAction.SAVE_AND_EXECUTE: return messages.updatedExecuted case SubmitSnippetAction.SAVE_AND_ACTIVATE: if ('single-use' === response.scope) { return messages.updatedExecuted } else { return wasCreated ? messages.createdActivated : messages.updatedActivated } case SubmitSnippetAction.SAVE_AND_DEACTIVATE: return messages.updatedDeactivated } } const getActivationErrorNotice = (snippet: Snippet): ScreenNotice => [ 'error', __('Snippet could not be activated.', 'code-snippets'), {__('The snippet was saved, but remains inactive due to this error:', 'code-snippets')} {' '} {snippet.code_error?.[0] ?? ''} , snippet.code_error_trace ?? undefined ] export interface UseSubmitSnippet { submitSnippet: (snippet: Partial & Pick, action?: SubmitSnippetAction) => Promise } export const useSubmitSnippet = (): UseSubmitSnippet => { const api = useSnippetsAPI() const { acceptSnippet, setIsWorking, setCurrentNotice } = useSnippetForm() const submitSnippet: UseSubmitSnippet['submitSnippet'] = useCallback(async (snippet, action) => { setCurrentNotice(undefined) setIsWorking(true) const request = { ...snippet } if (SubmitSnippetAction.SAVE_AND_ACTIVATE === action) { request.active = true } else if (SubmitSnippetAction.SAVE_AND_DEACTIVATE === action) { request.active = false } const result = await (async (): Promise => { try { const { id } = request const response = await (undefined === id || 0 === id ? api.create(request) : api.update({ ...request, id })) return response.id ? createSnippetObject(response) : undefined } catch (error) { return isAxiosError(error) ? error.message : undefined } finally { setIsWorking(false) } })() const messages = isCondition(snippet) ? conditionMessages : snippetMessages if (undefined === result || 'string' === typeof result) { const message = [ request.id ? messages.failedUpdate : messages.failedCreate, result ?? __('The server did not send a valid response.', 'code-snippets') ] setCurrentNotice(['error', message.filter(Boolean).join(' ')]) return undefined } acceptSnippet(result) if (result.code_error && SubmitSnippetAction.SAVE_AND_ACTIVATE === action) { setCurrentNotice(getActivationErrorNotice(result)) } else { setCurrentNotice(['updated', getSuccessNotice(snippet, result, action)]) } if (request.id && result.id) { window.document.title = window.document.title.replace(snippetMessages.addNew, messages.edit) window.history.replaceState({}, '', buildUrl(window.CODE_SNIPPETS?.urls.edit, { id: result.id })) } return result }, [acceptSnippet, api, setIsWorking, setCurrentNotice]) return { submitSnippet } }