From 82acc025044080c7293ff16e2537e8a41774aef8 Mon Sep 17 00:00:00 2001 From: DCloud_LXH <283700113@qq.com> Date: Thu, 21 Oct 2021 18:06:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(App):=20setClipboardData=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=85=8D=E7=BD=AE=20showToast?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- packages/uni-api/src/helpers/api/callback.ts | 2 +- .../uni-api/src/protocols/device/clipboard.ts | 37 ++++++++++++++++--- packages/uni-api/src/type.ts | 2 +- .../src/service/api/device/clipboard.ts | 6 ++- yarn.lock | 8 ++-- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index f341d8825..9064e0266 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 66bcfd434..12fc9a424 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 01d3088ae..9e44e4fe1 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 0f5345e1b..d3aaa07f3 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 ed84cacb9..29181c169 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 927144079..d409044ce 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" -- GitLab