• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2022 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
16import { HiLog } from "../../../../../common"
17import { WorkerType } from "./WorkFactory"
18import WorkerWrapper from "./base/WorkerWrapper"
19import WorkerTask from "./base/WorkerTask"
20import { ThreadWorkerGlobalScope } from '@ohos.worker';
21import CallLog from '../model/calllog/CalllogModel';
22import { CallLogRepository } from '../../../../../feature/call';
23import { ContactRepository } from '../../../../../feature/contact';
24import ContactAbilityModel from '../model/ContactAbilityModel';
25
26const TAG = "DataWorkerTask"
27
28
29export enum DataWorkerConstant {
30  "deleteCallLogsById",
31  "getAllCalls",
32  "findByNumberIn",
33  "deleteContactById",
34  "addContact",
35  "getAllContact",
36  "getAllContactWithPhoneNumbers",
37  "getContactById",
38  "updateContact",
39  "getIdByTelephone",
40}
41
42export class DataWorkerTask extends WorkerTask {
43  private static sInstance: DataWorkerTask = undefined;
44
45  private constructor(workerPort: ThreadWorkerGlobalScope) {
46    super(workerPort)
47  }
48
49  static getInstance(workerPort: ThreadWorkerGlobalScope) {
50    HiLog.i(TAG, "getInstance in.")
51    if (DataWorkerTask.sInstance == undefined || DataWorkerTask.sInstance.workerPort == undefined) {
52      DataWorkerTask.sInstance = new DataWorkerTask(workerPort);
53    }
54    return DataWorkerTask.sInstance;
55  }
56
57  runInWorker(request: string, callBack: (v?: any) => void, param?: any) {
58    HiLog.i(TAG, `runInWorker ${request}`)
59    switch (request) {
60      case DataWorkerConstant[DataWorkerConstant.getAllCalls]:
61        CallLog.getAllCalls(param.actionData, param.mergeRule, (data) => {
62          HiLog.i(TAG, `getAllCalls result: ${JSON.stringify(data).length}`)
63          callBack(data);
64        }, param.context);
65        break;
66      case DataWorkerConstant[DataWorkerConstant.findByNumberIn]:
67        CallLogRepository.getInstance().init(param.context);
68        CallLogRepository.getInstance().findByNumberIn(param.numbers, (resultList) => {
69          callBack(resultList);
70        });
71        break
72      case DataWorkerConstant[DataWorkerConstant.deleteContactById]:
73        ContactRepository.getInstance().init(param.context);
74        ContactRepository.getInstance().deleteById(param.contactId, (result) => {
75          HiLog.i(TAG, `deleteContactById result ${result}`)
76          callBack(result);
77        });
78        break;
79      case DataWorkerConstant[DataWorkerConstant.deleteCallLogsById]:
80        CallLogRepository.getInstance().init(param.context);
81        CallLogRepository.getInstance().deleteByIdIn(param.ids, (result) => {
82          callBack(result);
83        })
84        break;
85      case DataWorkerConstant[DataWorkerConstant.addContact]:
86        const contactInfoAfter = JSON.parse(param.contactInfoAfter)
87        ContactAbilityModel.addContact(contactInfoAfter, (arg) => {
88          callBack(arg);
89        }, param.context)
90        break
91      case DataWorkerConstant[DataWorkerConstant.getAllContact]:
92        ContactAbilityModel.getAllContact(param.actionData, (result) => {
93          callBack(result);
94        }, param.context)
95        break
96      case DataWorkerConstant[DataWorkerConstant.getAllContactWithPhoneNumbers]:
97        ContactAbilityModel.getAllContactWithPhoneNumbers((resultList) => {
98          callBack(resultList);
99        }, param.context)
100        break
101      case DataWorkerConstant[DataWorkerConstant.getContactById]:
102        ContactAbilityModel.getContactById(param.contactId, result => {
103          callBack(result);
104        }, param.context)
105        break
106      case DataWorkerConstant[DataWorkerConstant.getIdByTelephone]:
107        ContactAbilityModel.getIdByTelephone(param.phoneNumber, (contactId) => {
108          callBack(contactId);
109        }, param.context)
110        break
111      case DataWorkerConstant[DataWorkerConstant.updateContact]:
112        ContactAbilityModel.updateContact(null, JSON.parse(param.contactInfoAfter), (arg) => {
113          callBack(arg);
114        }, param.context)
115        break
116      default:
117        HiLog.w(TAG, `${request} not allow!!!`)
118        break;
119    }
120  }
121}