From 4d8558facc42bdda8e7ed1423e0e640838b90c92 Mon Sep 17 00:00:00 2001 From: yangbo Date: Tue, 21 Feb 2023 09:10:54 +0000 Subject: [PATCH] fixed d80627e from https://gitee.com/yang-bo-e/filemanagement_user_file_service/pulls/358 fixed 77e5f4e from https://gitee.com/yang-bo-e/filemanagement_user_file_service/pulls/355 fix picker errCode Signed-off-by: yangbo --- interfaces/kits/napi/picker/picker.js | 89 ++++++++++++++++++++++----- 1 file changed, 75 insertions(+), 14 deletions(-) diff --git a/interfaces/kits/napi/picker/picker.js b/interfaces/kits/napi/picker/picker.js index c8440eeb..6b54876b 100644 --- a/interfaces/kits/napi/picker/picker.js +++ b/interfaces/kits/napi/picker/picker.js @@ -20,16 +20,57 @@ const PhotoViewMIMETypes = { INVALID_TYPE: "" } +const ErrCode = { + INVALID_ARGS: 13900020, + RESULT_ERROR: 13900042, +} + const PHOTO_VIEW_MIME_TYPE_MAP = new Map([ [PhotoViewMIMETypes.IMAGE_TYPE, "FILTER_MEDIA_TYPE_IMAGE"], [PhotoViewMIMETypes.VIDEO_TYPE, "FILTER_MEDIA_TYPE_VIDEO"], [PhotoViewMIMETypes.IMAGE_VIDEO_TYPE, "FILTER_MEDIA_TYPE_ALL"], ]); +const ERRCODE_MAP = new Map([ + [ErrCode.INVALID_ARGS, "Invalid argument"], + [ErrCode.RESULT_ERROR, "Unknown error"], +]); + +function checkArguments(args) { + if (args.length == 2 && typeof args[1] != "function") { + return false; + } + + if (args.length > 0 && typeof args[0] == 'object') { + let option = args[0]; + if (option.maxSelectNumber != undefined) { + if (option.maxSelectNumber.toString().indexOf(".") != -1) { + return false; + } + } + + if (option.newFileNames != undefined && option.newFileNames.length > 0) { + for (let i = 0; i < option.newFileNames.length; i++) { + let value = option.newFileNames[i]; + if ((value.indexOf(".") == -1) || (value.length > 256)) { + console.log("[picker] checkArguments Invalid name: " + value); + return false; + } + } + } + } + + return true; +} + +function getErr(errCode) { + return {code: errCode, message: ERRCODE_MAP.get(errCode)}; +} + async function photoPickerSelect() { - if (arguments.length == 2 && typeof arguments[1] != "function") { - console.log("[picker] photoPickerSelect callback invalid"); - throw Error("invalid callback"); + if (!checkArguments(arguments)) { + console.log("[picker] photoPickerSelect Invalid argument"); + throw Error(getErr(ErrCode.INVALID_ARGS)); } let config = { @@ -56,11 +97,16 @@ async function photoPickerSelect() { console.log("[picker] photoPickerSelect result: " + JSON.stringify(result)); let uris = result.want.parameters["select-item-list"]; let isOrigin = result.want.parameters["isOriginal"]; + if (result.resultCode == -1) { + result.resultCode == 0; + uris = [""]; + } + let err = (result.resultCode == 0) ? null : getErr(ErrCode.RESULT_ERROR); let selectResult = new PhotoSelectResult(uris, isOrigin); if (arguments.length == 2 && typeof arguments[1] == "function") { - return arguments[1]({code: result.resultCode}, selectResult); + return arguments[1](err, selectResult); } else if (arguments.length == 1 && typeof arguments[0] == "function") { - return arguments[0]({code: result.resultCode}, selectResult); + return arguments[0](err, selectResult); } return new Promise((resolve, reject) => { if (result.resultCode == 0) { @@ -93,10 +139,15 @@ async function documentPickerSelect() { let result = await globalThis.abilityContext.startAbilityForResult(config, {windowMode: 1}); console.log("[picker] documentPickerSelect result: " + JSON.stringify(result)); let uris = result.want.parameters.select_item_list; + if (result.resultCode == -1) { + result.resultCode == 0; + uris = [""]; + } + let err = (result.resultCode == 0) ? null : getErr(ErrCode.RESULT_ERROR); if (arguments.length == 2 && typeof arguments[1] == "function") { - return arguments[1]({code: result.resultCode}, uris); + return arguments[1](err, uris); } else if (arguments.length == 1 && typeof arguments[0] == "function") { - return arguments[0]({code: result.resultCode}, uris); + return arguments[0](err, uris); } return new Promise((resolve, reject) => { if (result.resultCode == 0) { @@ -112,9 +163,9 @@ async function documentPickerSelect() { } async function documentPickerSave() { - if (arguments.length == 2 && typeof arguments[1] != "function") { - console.log("[picker] documentPickerSave callback invalid"); - throw Error("invalid callback"); + if (!checkArguments(arguments)) { + console.log("[picker] documentPickerSave Invalid argument"); + throw Error({code: 13900020, message: "Invalid argument"}); } let config = { @@ -136,10 +187,15 @@ async function documentPickerSave() { let result = await globalThis.abilityContext.startAbilityForResult(config, {windowMode: 1}); console.log("[picker] documentPickerSave result: " + JSON.stringify(result)); let uris = result.want["parameters"].pick_path_return; + if (result.resultCode == -1) { + result.resultCode == 0; + uris = [""]; + } + let err = (result.resultCode == 0) ? null : getErr(ErrCode.RESULT_ERROR); if (arguments.length == 2 && typeof arguments[1] == "function") { - return arguments[1]({code: result.resultCode}, uris); + return arguments[1](err, uris); } else if (arguments.length == 1 && typeof arguments[0] == "function") { - return arguments[0]({code: result.resultCode}, uris); + return arguments[0](err, uris); } return new Promise((resolve, reject) => { if (result.resultCode == 0) { @@ -172,10 +228,15 @@ async function audioPickerSelect() { let result = await globalThis.abilityContext.startAbilityForResult(config, {windowMode: 1}); console.log("[picker] audioPickerSelect result: " + JSON.stringify(result)); let uris = result.want.parameters.select_item_list; + if (result.resultCode == -1) { + result.resultCode == 0; + uris = [""]; + } + let err = (result.resultCode == 0) ? null : getErr(ErrCode.RESULT_ERROR); if (arguments.length == 2 && typeof arguments[1] == "function") { - return arguments[1]({code: result.resultCode}, uris); + return arguments[1](err, uris); } else if (arguments.length == 1 && typeof arguments[0] == "function") { - return arguments[0]({code: result.resultCode}, uris); + return arguments[0](err, uris); } return new Promise((resolve, reject) => { if (result.resultCode == 0) { -- Gitee