REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 4.57 KB
Close
/home/byroehnu/easepay.easetack.com/node_modules/adminjs/src/frontend/hooks/use-record/use-record.tsx
Text
Base64
import { useState, useCallback, Dispatch, SetStateAction } from 'react' import { AxiosResponse } from 'axios' import ApiClient, { RecordActionAPIParams } from '../../utils/api-client.js' import { RecordJSON } from '../../interfaces/index.js' import { paramsToFormData } from './params-to-form-data.js' import useNotice from '../use-notice.js' import { RecordActionResponse } from '../../../backend/actions/action.interface.js' import mergeRecordResponse from './merge-record-response.js' import updateRecord from './update-record.js' import { UseRecordOptions, UseRecordResult, UseRecordSubmitFunction } from './use-record.type.js' import isEntireRecordGiven from './is-entire-record-given.js' import { filterRecordParams, isPropertyPermitted } from './filter-record.js' import { flat } from '../../../utils/flat/index.js' import { useQueryParams } from '../use-query-params.js' const api = new ApiClient() /** * @load ./use-record.doc.md * @subcategory Hooks * @class * @hideconstructor * @bundle * @param {RecordJSON} [initialRecord], * @param {string} resourceId * @param {UseRecordOptions} [options] * @return {UseRecordResult} */ export const useRecord = ( initialRecord: RecordJSON | undefined, resourceId: string, options?: UseRecordOptions, ): UseRecordResult => { // setting up state const [loading, setLoading] = useState(false) const [isSynced, setIsSynced] = useState(true) const [progress, setProgress] = useState(0) const { parsedQuery } = useQueryParams() const filteredRecord = initialRecord ? filterRecordParams(initialRecord, options) : null const [record, setRecord] = useState<RecordJSON>({ ...filteredRecord, params: filteredRecord?.params ?? {}, errors: initialRecord?.errors ?? {}, populated: initialRecord?.populated ?? {}, } as RecordJSON) // it keeps the same format as useState function which can take either value or function const setFilteredRecord: Dispatch<SetStateAction<RecordJSON>> = useCallback((value) => { const newRecord = value instanceof Function ? value(record) : value setRecord(filterRecordParams(newRecord, options)) }, [options, record]) const onNotice = useNotice() const handleChange = useCallback(( propertyOrRecord: RecordJSON | string, value?: any, incomingRecord?: RecordJSON, ): void => { if (isEntireRecordGiven(propertyOrRecord, value)) { setFilteredRecord(propertyOrRecord as RecordJSON) } else if (isPropertyPermitted(propertyOrRecord as string, options)) { setRecord(updateRecord(propertyOrRecord as string, value, incomingRecord)) } else if (process.env.NODE_ENV === 'development') { // eslint-disable-next-line no-console console.warn([ `You are trying to set property: "${propertyOrRecord as string}" which`, 'is not permitted. Take a look at `useRecord(..., { includeParams: [...]})`', ].join('\n')) } setIsSynced(false) }, [setRecord, options]) const handleSubmit: UseRecordSubmitFunction = useCallback(( customParams = {}, submitOptions, ): Promise<AxiosResponse<RecordActionResponse>> => { setLoading(true) const mergedParams = flat.merge(record.params, customParams) const formData = paramsToFormData(mergedParams) const actionParams: Omit<RecordActionAPIParams, 'actionName' | 'recordId'> = { resourceId, onUploadProgress: (e): void => setProgress(Math.round((e.loaded * 100) / (e.total ?? 1))), data: formData, params: parsedQuery, headers: { 'Content-Type': 'multipart/form-data' }, } const promise = initialRecord?.id ? api.recordAction({ ...actionParams, actionName: 'edit', recordId: record.id, }) : api.resourceAction({ ...actionParams, actionName: 'new', }) as Promise<AxiosResponse<RecordActionResponse>> promise.then((response) => { if (response.data.notice) { onNotice(response.data.notice) } if (submitOptions?.updateOnSave !== false) { setFilteredRecord((prev) => mergeRecordResponse(prev, response.data)) } setProgress(0) setLoading(false) setIsSynced(true) }).catch(() => { onNotice({ message: 'There was an error updating record, Check out console to see more information.', type: 'error', }) setProgress(0) setLoading(false) }) return promise }, [record, resourceId, setLoading, setProgress, setRecord]) return { record, handleChange, submit: handleSubmit, loading, progress, setRecord: setFilteredRecord, isSynced, } } export default useRecord
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 13
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
.htaccess
127 B
lr--r--r--
2026-03-14 01:49:20
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
filter-record.spec.ts
1.17 KB
lrw-r--r--
2026-02-28 00:32:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
filter-record.ts
776 B
lrw-r--r--
2026-02-28 00:32:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
index.ts
232 B
lrw-r--r--
2026-02-28 00:32:28
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
is-entire-record-given.ts
550 B
lrw-r--r--
2026-02-28 00:32:28
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
merge-record-response.ts
1008 B
lrw-r--r--
2026-02-28 00:32:34
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
params-to-form-data.spec.ts
1.45 KB
lrw-r--r--
2026-02-28 00:32:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
params-to-form-data.ts
1.78 KB
lrw-r--r--
2026-02-28 00:32:40
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
update-record.spec.ts
4.17 KB
lrw-r--r--
2026-02-28 00:32:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
update-record.ts
2.08 KB
lrw-r--r--
2026-02-28 00:32:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
use-record.doc.md
3.08 KB
lrw-r--r--
2026-02-28 00:31:56
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
use-record.tsx
4.57 KB
lrw-r--r--
2026-02-28 00:32:50
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
use-record.type.ts
3.07 KB
lrw-r--r--
2026-02-28 00:32:46
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).