Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
196 lines
5.1 KiB
Plaintext
196 lines
5.1 KiB
Plaintext
import { jsx as _jsx } from "react/jsx-runtime";
|
|
import React, { createContext, useCallback } from 'react';
|
|
export const ServerFunctionsContext = /*#__PURE__*/createContext(undefined);
|
|
export const useServerFunctions = () => {
|
|
const context = React.use(ServerFunctionsContext);
|
|
if (context === undefined) {
|
|
throw new Error('useServerFunctions must be used within a ServerFunctionsProvider');
|
|
}
|
|
return context;
|
|
};
|
|
export const ServerFunctionsProvider = ({
|
|
children,
|
|
serverFunction
|
|
}) => {
|
|
if (!serverFunction) {
|
|
throw new Error('ServerFunctionsProvider requires a serverFunction prop');
|
|
}
|
|
const getDocumentSlots = useCallback(async args => await serverFunction({
|
|
name: 'render-document-slots',
|
|
args
|
|
}), [serverFunction]);
|
|
const schedulePublish = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args;
|
|
try {
|
|
if (!remoteSignal?.aborted) {
|
|
const result = await serverFunction({
|
|
name: 'schedule-publish',
|
|
args: {
|
|
...rest
|
|
}
|
|
});
|
|
if (!remoteSignal?.aborted) {
|
|
return result;
|
|
}
|
|
}
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
let error = `Error scheduling ${rest.type}`;
|
|
if (rest.doc) {
|
|
error += ` for document with ID ${rest.doc.value} in collection ${rest.doc.relationTo}`;
|
|
}
|
|
return {
|
|
error
|
|
};
|
|
}, [serverFunction]);
|
|
const getFormState = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args || {};
|
|
try {
|
|
if (!remoteSignal?.aborted) {
|
|
const result = await serverFunction({
|
|
name: 'form-state',
|
|
args: {
|
|
fallbackLocale: false,
|
|
...rest
|
|
}
|
|
});
|
|
// TODO: infer this type when `strictNullChecks` is enabled
|
|
if (!remoteSignal?.aborted) {
|
|
return result;
|
|
}
|
|
}
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
return {
|
|
state: null
|
|
};
|
|
}, [serverFunction]);
|
|
const getTableState = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args || {};
|
|
try {
|
|
if (!remoteSignal?.aborted) {
|
|
const result = await serverFunction({
|
|
name: 'table-state',
|
|
args: {
|
|
fallbackLocale: false,
|
|
...rest
|
|
}
|
|
});
|
|
// TODO: infer this type when `strictNullChecks` is enabled
|
|
if (!remoteSignal?.aborted) {
|
|
return result;
|
|
}
|
|
}
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
// return { state: args.formState }
|
|
}, [serverFunction]);
|
|
const renderDocument = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args || {};
|
|
try {
|
|
const result = await serverFunction({
|
|
name: 'render-document',
|
|
args: {
|
|
fallbackLocale: false,
|
|
...rest
|
|
}
|
|
});
|
|
// TODO: infer this type when `strictNullChecks` is enabled
|
|
return result;
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
}, [serverFunction]);
|
|
const copyDataFromLocale = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args || {};
|
|
const result = await serverFunction({
|
|
name: 'copy-data-from-locale',
|
|
args: rest
|
|
});
|
|
if (!remoteSignal?.aborted) {
|
|
return {
|
|
data: result
|
|
};
|
|
}
|
|
}, [serverFunction]);
|
|
const getFolderResultsComponentAndData = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args || {};
|
|
try {
|
|
const result = await serverFunction({
|
|
name: 'get-folder-results-component-and-data',
|
|
args: rest
|
|
});
|
|
if (!remoteSignal?.aborted) {
|
|
return result;
|
|
}
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
}, [serverFunction]);
|
|
const _internal_renderField = useCallback(async args => {
|
|
try {
|
|
const result = await serverFunction({
|
|
name: 'render-field',
|
|
args
|
|
});
|
|
return result;
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
}, [serverFunction]);
|
|
const slugify = useCallback(async args => {
|
|
const {
|
|
signal: remoteSignal,
|
|
...rest
|
|
} = args || {};
|
|
try {
|
|
const result = await serverFunction({
|
|
name: 'slugify',
|
|
args: {
|
|
...rest
|
|
}
|
|
});
|
|
// TODO: infer this type when `strictNullChecks` is enabled
|
|
return result;
|
|
} catch (_err) {
|
|
console.error(_err); // eslint-disable-line no-console
|
|
}
|
|
}, [serverFunction]);
|
|
return /*#__PURE__*/_jsx(ServerFunctionsContext, {
|
|
value: {
|
|
_internal_renderField,
|
|
copyDataFromLocale,
|
|
getDocumentSlots,
|
|
getFolderResultsComponentAndData,
|
|
getFormState,
|
|
getTableState,
|
|
renderDocument,
|
|
schedulePublish,
|
|
serverFunction,
|
|
slugify
|
|
},
|
|
children: children
|
|
});
|
|
};
|
|
//# sourceMappingURL=index.js.map |