1/*
2 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved.
3 */
4import wantConstant from '@ohos.app.ability.wantConstant';
5import fileShare from '@ohos.fileshare';
6import { BusinessError } from '@ohos.base';
7
8import { Logger } from '../common/util/HiLogger'
9import { LocalAudioFile } from './localaudio/LocalAudioFile'
10import { LocalAudioManager } from './localaudio/LocalAudioManager'
11import { Constants } from '../constant/Constants';
12
13const logger: Logger = new Logger('LocalResourceManager')
14
15export class LocalResourceManager {
16
17  /**
18   * 本地歌曲资源管理类 todo 改全局注册
19   */
20  public localAudioManager: LocalAudioManager = new LocalAudioManager()
21
22  public getLocalAudioResource(offset: number, limit: number, context: Context): Promise<Array<LocalAudioFile>> {
23    return this.localAudioManager.getLocalAudio(offset, limit, context)
24  }
25
26  /**
27   * 用户选择文件后,返回结果URI列表并赋予临时权限
28   */
29  public terminateSelfWithResult(localAudioFile: Array<LocalAudioFile>): Promise<Array<string>> {
30    //赋予权限就放在audiopicker模块,直接调系统接口
31    return new Promise(async (resolve) => {
32      let uriList: string[] = []
33      for(let item of localAudioFile) {
34        try {
35          await fileShare.grantUriPermission(item.uri, Constants.AUDIO_PICKER_BUNDLE, wantConstant
36            .Flags.FLAG_AUTH_READ_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION)
37          uriList.push(item.uri)
38          logger.info('push uriList length: ' + uriList.length)
39        } catch (err) {
40          let error: BusinessError = err as BusinessError;
41          logger.error('grantUriPermission failed with error:' + JSON.stringify(error));
42          resolve([])
43          return
44        }
45      }
46      logger.info('Permission uriList length: ' + uriList.length)
47      resolve(uriList)
48    })
49  }
50}
51