diff --git a/package.json b/package.json index f341d88251c70a3281eadf8d1826bd80ecddd211..9064e0266c9ed691790caf26555be8037aa1271b 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@babel/preset-env": "^7.14.7", - "@dcloudio/types": "2.5.11", + "@dcloudio/types": "2.5.12", "@jest/types": "^27.0.2", "@microsoft/api-extractor": "^7.13.2", "@rollup/plugin-alias": "^3.1.1", diff --git a/packages/uni-api/src/helpers/api/callback.ts b/packages/uni-api/src/helpers/api/callback.ts index 66bcfd43448bfdc06d75bfe65b0c86f71f4a8f21..12fc9a42462476fed1574f364ccba6f333a058cb 100644 --- a/packages/uni-api/src/helpers/api/callback.ts +++ b/packages/uni-api/src/helpers/api/callback.ts @@ -132,7 +132,7 @@ export function createAsyncApiCallback( res.errMsg = normalizeErrMsg(res.errMsg, name) isFunction(beforeAll) && beforeAll(res) if (res.errMsg === name + ':ok') { - isFunction(beforeSuccess) && beforeSuccess(res) + isFunction(beforeSuccess) && beforeSuccess(res, args) hasSuccess && success!(res) } else { hasFail && fail!(res) diff --git a/packages/uni-api/src/protocols/device/clipboard.ts b/packages/uni-api/src/protocols/device/clipboard.ts index 01d3088aeee5cb40078759d2b0d549cc585fd127..9e44e4fe1f840bb4545467f66c45aebb4fc7856a 100644 --- a/packages/uni-api/src/protocols/device/clipboard.ts +++ b/packages/uni-api/src/protocols/device/clipboard.ts @@ -1,14 +1,39 @@ +import { initI18nSetClipboardDataMsgsOnce, useI18n } from '@dcloudio/uni-core' + export const API_GET_CLIPBOARD_DATA = 'getClipboardData' export const API_SET_CLIPBOARD_DATA = 'setClipboardData' export type API_TYPE_GET_CLIPBOARD_DATA = typeof uni.getClipboardData export type API_TYPE_SET_CLIPBOARD_DATA = typeof uni.setClipboardData + export const SetClipboardDataOptions: ApiOptions = { - beforeSuccess() { - uni.showToast({ - title: '内容已复制', - icon: 'success', - mask: false, - }) + formatArgs: { + showToast: true, + }, + beforeInvoke() { + initI18nSetClipboardDataMsgsOnce() + }, + beforeSuccess(res, params) { + if (params.showToast) return + const { t } = useI18n() + const title = t('uni.setClipboardData.success') + if (title) { + uni.showToast({ + title: title, + icon: 'success', + mask: false, + }) + } + }, + } + +export const SetClipboardDataProtocol: ApiProtocol = + { + data: { + type: String, + required: true, + }, + showToast: { + type: Boolean, }, } diff --git a/packages/uni-api/src/type.ts b/packages/uni-api/src/type.ts index 0f5345e1b6849ce8f99961b1d6f2dc6b0f4fe36e..d3aaa07f38e7b97d079ba1c29a3d4f87ed30265f 100644 --- a/packages/uni-api/src/type.ts +++ b/packages/uni-api/src/type.ts @@ -20,7 +20,7 @@ type ApiProtocols = ApiProtocol | ProtocolOptions[] interface ApiOptions> { beforeInvoke?: (args: unknown) => boolean | void | string beforeAll?: (res: unknown) => void - beforeSuccess?: (res: unknown) => void + beforeSuccess?: (res: unknown, args: P) => void formatArgs?: { [K in keyof P]?: ApiArgsValidator | P[K] } diff --git a/packages/uni-app-plus/src/service/api/device/clipboard.ts b/packages/uni-app-plus/src/service/api/device/clipboard.ts index ed84cacb9a36c64e71000e60d45aa1c3163bed04..29181c169b3a5d8f6225c58221d6112ca9c6d5ae 100644 --- a/packages/uni-app-plus/src/service/api/device/clipboard.ts +++ b/packages/uni-app-plus/src/service/api/device/clipboard.ts @@ -3,6 +3,8 @@ import { API_SET_CLIPBOARD_DATA, API_TYPE_GET_CLIPBOARD_DATA, API_TYPE_SET_CLIPBOARD_DATA, + SetClipboardDataOptions, + SetClipboardDataProtocol, defineAsyncApi, } from '@dcloudio/uni-api' import { requireNativePlugin } from '../plugin/requireNativePlugin' @@ -29,5 +31,7 @@ export const setClipboardData = defineAsyncApi( const clipboard = requireNativePlugin('clipboard') clipboard.setString(options.data) resolve() - } + }, + SetClipboardDataProtocol, + SetClipboardDataOptions ) diff --git a/yarn.lock b/yarn.lock index 927144079dbd49c3371919fe855eedb076d8a63f..d409044ce689406c3df60cadd29a811645123711 100644 --- a/yarn.lock +++ b/yarn.lock @@ -922,10 +922,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@dcloudio/types@2.5.11": - version "2.5.11" - resolved "https://registry.yarnpkg.com/@dcloudio/types/-/types-2.5.11.tgz#12bacd800807965e3d0002022efebba38c243b71" - integrity sha512-dgAI1fNAhOhQumxO3P901VOYlfnXGJCDljFsZ3EqGGKitf5FB0HSZEutnam2O1zrHwqmHkSSJ+5jiYOED0B8kA== +"@dcloudio/types@2.5.12": + version "2.5.12" + resolved "https://registry.yarnpkg.com/@dcloudio/types/-/types-2.5.12.tgz#e731f45f92ded64f9823fef8699ffddf2b7998de" + integrity sha512-BIO2fZTW+L2MybVDsIIYuk3Z7EHB5bi7V4AQw8WzjkdDBzHZuiCCTrwPpVDhDWEKDvaWYMZNCJx9w7Z357x//w== "@eslint/eslintrc@^0.4.3": version "0.4.3"