YANG QIA b71bcc1889
chore(versions): 😊 publish v1.0.0-alpha.1 (#4186)
* feat: rename plugin-collection-manager to plugin-data-source-main (#4136)

* feat: rename plugin

* feat: rename

* chore: rename classes of data-source-main

* chore: use name for migrating instead of packageName

* chore: rename china-region to field-china-region (#4167)

* chore: rename china-region to field-china-region

* chore: update yarn.lock

* chore: rename classes

* chore: use name instead of pkgName

* chore: rename export to action-export (#4169)

* chore: rename export to action-export

* chore: rename classes

* chore: use name

* chore: rename formula-field to field-formula (#4170)

* chore: rename formula-field to field-formula

* chore: use name

* chore: rename localization-management to localization (#4173)

* chore: rename localization-management to localization

* fix: test

* chore: rename sequence-field to field-sequence (#4174)

* chore: rename sequence-field to field-sequence

* chore: use name

* chore: rename custom-request to action-custom-request (#4168)

* chore: rename custom-request to action-custom-request

* chore: rename classes

* chore: use name

* fix: ns

* chore: rename iframe-block to block-iframe (#4171)

* chore: rename iframe-block to block-iframe

* chore: use name

* chore: rename sms-auth to auth-sms (#4175)

* chore: rename sms-auth to auth-sms

* chore: use name

* chore: rename import to action-import (#4172)

* chore: rename import to action-import

* chore: use name

* fix: ns

* fix: packages

* test: add rename test

* fix: move rename migrations to preset

* fix: version

* fix(localization): remove duplicate records (#4182)

* fix: locale ns

* fix(localization): remove duplicate records

* chore: merge

* fix: migration

* fix: test

* feat: improve pm add command (#4198)

* chore: remove sso auth plugins and add upgrade warning (#4192)

* chore: remove sso auth plugins and add upgrade warning

* chore: remove sso plugins dir

* chore: remove dependencies

* fix: names

* refactor: move to migration

* chore: adjust log

* feat: allows to remove plugins from sub apps

* fix: pm remove

* chore: add test

* chore: just for pro plugins

* refactor: optimize migration

* test: add test

* fix: auth-sms

* fix: add transaction

---------

Co-authored-by: chenos <chenlinxh@gmail.com>

* chore: make e2e more stable

* chore(license): update LICENSE to AGPL-3.0 (#4207)

* fix: improve pm (#4200)

* fix: improve pm

* feat: improve pm update

* fix: test error

* fix: rename plugin

* fix: remove only

* refactor(e2e): extract

* fix: await

* fix: nameOrPkg

* feat: remove multi-app-share-collection from local

---------

Co-authored-by: Zeke Zhang <958414905@qq.com>

* chore: add new line

* chore: rename migration

* fix: version

* fix: test

* feat: v1.0.0-alpha.1

* fix: multi-app-share-collection

---------

Co-authored-by: chenos <chenlinxh@gmail.com>
Co-authored-by: Chareice <chareice@live.com>
Co-authored-by: katherinehhh <katherine_15995@163.com>
Co-authored-by: Zeke Zhang <958414905@qq.com>
2024-04-29 00:46:21 +08:00

97 lines
3.2 KiB
TypeScript

import { useField, useFieldSchema, useForm } from '@formily/react';
import { useAPIClient, useActionContext, useCompile, useDataSourceKey, useRecord } from '@nocobase/client';
import { isURL } from '@nocobase/utils/client';
import { App } from 'antd';
import { saveAs } from 'file-saver';
import { useNavigate } from 'react-router-dom';
export const useCustomizeRequestActionProps = () => {
const apiClient = useAPIClient();
const navigate = useNavigate();
const actionSchema = useFieldSchema();
const compile = useCompile();
const form = useForm();
// const { getPrimaryKey } = useCollection_deprecated();
const record = useRecord();
const fieldSchema = useFieldSchema();
const actionField = useField();
const { setVisible } = useActionContext();
const { modal, message } = App.useApp();
const dataSourceKey = useDataSourceKey();
return {
async onClick(e?, callBack?) {
const { skipValidator, onSuccess } = actionSchema?.['x-action-settings'] ?? {};
const xAction = actionSchema?.['x-action'];
if (skipValidator !== true && xAction === 'customize:form:request') {
await form.submit();
}
let formValues = { ...record };
if (xAction === 'customize:form:request') {
formValues = form.values;
}
actionField.data ??= {};
actionField.data.loading = true;
try {
const res = await apiClient.request({
url: `/customRequests:send/${fieldSchema['x-uid']}`,
method: 'POST',
data: {
currentRecord: {
// id: record[getPrimaryKey()],
// appends: result.params[0]?.appends,
dataSourceKey,
data: formValues,
},
},
responseType: fieldSchema['x-response-type'] === 'stream' ? 'blob' : 'json',
});
if (res.headers['content-disposition']) {
const regex = /attachment;\s*filename="([^"]+)"/;
const match = res.headers['content-disposition'].match(regex);
if (match[1]) {
saveAs(res.data, match[1]);
}
}
actionField.data.loading = false;
// service?.refresh?.();
if (callBack) {
callBack?.();
}
if (xAction === 'customize:form:request') {
setVisible?.(false);
}
if (!onSuccess?.successMessage) {
return;
}
if (onSuccess?.manualClose) {
modal.success({
title: compile(onSuccess?.successMessage),
onOk: async () => {
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
if (isURL(onSuccess.redirectTo)) {
window.location.href = onSuccess.redirectTo;
} else {
navigate(onSuccess.redirectTo);
}
}
},
});
} else {
message.success(compile(onSuccess?.successMessage));
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
if (isURL(onSuccess.redirectTo)) {
window.location.href = onSuccess.redirectTo;
} else {
navigate(onSuccess.redirectTo);
}
}
}
} finally {
actionField.data.loading = false;
}
},
};
};