• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16const medialibrary = requireInternal('multimedia.mediaLibrary');
17const featureAbility = requireNapi('ability.featureAbility');
18
19async function startMediaSelect(option, asyncCallback)
20{
21    console.log("MediaLibrary startMediaSelectInner param num " + arguments.length);
22    console.log("MediaLibrary startMediaSelectInner param " + JSON.stringify(option));
23    let select = "singleselect"
24    let parameter = {
25        want:
26        {
27            action: "ohos.want.action.photoPicker",
28            type: select,
29            parameters: {
30                uri : select,
31                filterMediaType: "FILTER_MEDIA_TYPE_ALL",
32                maxSelectCount: 1,
33            }
34        },
35        action: "ohos.want.action.photoPicker",
36        type: select,
37        parameters: {
38            uri : select,
39            filterMediaType: "FILTER_MEDIA_TYPE_ALL",
40            maxSelectCount: 1,
41        }
42    }
43    if (option != undefined && typeof option == 'object') {
44        if (option.count != undefined && option.count > 1) {
45            parameter.want.type = "multipleselect";
46            parameter.want.parameters.uri = "multipleselect";
47            parameter.want.parameters.maxSelectCount = option.count;
48            parameter.type = "multipleselect";
49            parameter.parameters.uri = "multipleselect";
50            parameter.parameters.maxSelectCount = option.count;
51        }
52        if (option.type != undefined) {
53            parameter.want.parameters.filterMediaType = option.type;
54            parameter.parameters.filterMediaType = option.type;
55        }
56    }
57    if (arguments.length == 2 && typeof asyncCallback != "function") {
58        console.log("MediaLibrary startMediaSelectInner callback invalid");
59        throw Error("invalid callback")
60    }
61    console.log("MediaLibrary startMediaSelectInner parameter " + JSON.stringify(parameter));
62    let result = await featureAbility.startAbilityForResult(parameter)
63    console.log("MediaLibrary startMediaSelectInner result " +JSON.stringify(result));
64    let uri = result.want.parameters["select-item-list"]
65    if (arguments.length == 2 && typeof asyncCallback == "function") {
66        console.log("MediaLibrary startMediaSelectInner callback " + uri);
67        return asyncCallback(result.resultCode, uri)
68    }
69    return new Promise((resolve, reject) => {
70        if (result.resultCode == 0) {
71            console.log("MediaLibrary startMediaSelectInner promise " + uri);
72            resolve(uri)
73        } else {
74            console.log("MediaLibrary startMediaSelectInner err " + result.resultCode);
75            reject(result.resultCode)
76        }
77    })
78}
79
80function getMediaLibrary(context)
81{
82    let media = medialibrary.getMediaLibrary(context)
83    console.log("MediaLibrary getMediaLibrary inner ");
84    if (media != undefined) {
85        console.log("MediaLibrary getMediaLibrary inner add startMediaSelect");
86        media.startMediaSelect = startMediaSelect;
87    }
88    return media;
89}
90
91function getScannerInstance(context)
92{
93    console.log("MediaLibrary getScannerInstance js caller ");
94    let instance = medialibrary.getScannerInstance(context)
95    return instance;
96}
97
98export default {
99    getMediaLibrary: getMediaLibrary,
100    getScannerInstance: getScannerInstance,
101    MediaType: medialibrary.MediaType,
102    FileKey: medialibrary.FileKey,
103    DirectoryType: medialibrary.DirectoryType,
104    PrivateAlbumType: medialibrary.PrivateAlbumType,
105}