• 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 = "DataWorkerWrapper"
27
28export default class DataWorkerWrapper extends WorkerWrapper {
29  private static sInstance: DataWorkerWrapper = undefined;
30
31  private constructor() {
32    super()
33  }
34
35  static getInstance() {
36    HiLog.i(TAG, "getInstance in.")
37    if (DataWorkerWrapper.sInstance == undefined || DataWorkerWrapper.sInstance.mWorker == undefined) {
38      HiLog.i(TAG, "make DataWorkerWrapper.")
39      DataWorkerWrapper.sInstance = new DataWorkerWrapper();
40    }
41    return DataWorkerWrapper.sInstance;
42  }
43
44  getWorkerType(): WorkerType {
45    return WorkerType.DataWorker;
46  }
47}
48
49export enum DataWorkerConstant {
50  "deleteCallLogsById",
51  "getAllCalls",
52  "findByNumberIn",
53  "deleteContactById",
54  "addContact",
55  "getAllContact",
56  "getAllContactWithPhoneNumbers",
57  "getContactById",
58  "updateContact",
59  "getIdByTelephone",
60}
61
62export class DataWorkerTask extends WorkerTask {
63  private static sInstance: DataWorkerTask = undefined;
64
65  private constructor(workerPort: ThreadWorkerGlobalScope) {
66    super(workerPort)
67  }
68
69  static getInstance(workerPort: ThreadWorkerGlobalScope) {
70    HiLog.i(TAG, "getInstance in.")
71    if (DataWorkerTask.sInstance == undefined || DataWorkerTask.sInstance.workerPort == undefined) {
72      DataWorkerTask.sInstance = new DataWorkerTask(workerPort);
73    }
74    return DataWorkerTask.sInstance;
75  }
76
77  runInWorker(request: string, callBack: (v?: any) => void, param?: any) {
78    HiLog.i(TAG, `runInWorker ${request}`)
79    switch (request) {
80      case DataWorkerConstant[DataWorkerConstant.getAllCalls]:
81        CallLog.getAllCalls(param.actionData, param.mergeRule, (data) => {
82          HiLog.i(TAG, `getAllCalls result: ${JSON.stringify(data).length}`)
83          callBack(data);
84        }, param.context);
85        break;
86      case DataWorkerConstant[DataWorkerConstant.findByNumberIn]:
87        CallLogRepository.getInstance().init(param.context);
88        CallLogRepository.getInstance().findByNumberIn(param.numbers, (resultList) => {
89          callBack(resultList);
90        });
91        break
92      case DataWorkerConstant[DataWorkerConstant.deleteContactById]:
93        ContactRepository.getInstance().init(param.context);
94        ContactRepository.getInstance().deleteById(param.contactId, (result) => {
95          HiLog.i(TAG, `deleteContactById result ${result}`)
96          callBack(result);
97        });
98        break;
99      case DataWorkerConstant[DataWorkerConstant.deleteCallLogsById]:
100        CallLogRepository.getInstance().init(param.context);
101        CallLogRepository.getInstance().deleteByIdIn(param.ids, (result) => {
102          callBack(result);
103        })
104        break;
105      case DataWorkerConstant[DataWorkerConstant.addContact]:
106        const contactInfoAfter = JSON.parse(param.contactInfoAfter)
107        ContactAbilityModel.addContact(contactInfoAfter, (arg) => {
108          callBack(arg);
109        }, param.context)
110        break
111      case DataWorkerConstant[DataWorkerConstant.getAllContact]:
112        ContactAbilityModel.getAllContact(param.actionData, (result) => {
113          callBack(result);
114        }, param.context)
115        break
116      case DataWorkerConstant[DataWorkerConstant.getAllContactWithPhoneNumbers]:
117        ContactAbilityModel.getAllContactWithPhoneNumbers((resultList) => {
118          callBack(resultList);
119        }, param.context)
120        break
121      case DataWorkerConstant[DataWorkerConstant.getContactById]:
122        ContactAbilityModel.getContactById(param.contactId, result => {
123          callBack(result);
124        }, param.context)
125        break
126      case DataWorkerConstant[DataWorkerConstant.getIdByTelephone]:
127        ContactAbilityModel.getIdByTelephone(param.phoneNumber, (contactId) => {
128          callBack(contactId);
129        }, param.context)
130        break
131      case DataWorkerConstant[DataWorkerConstant.updateContact]:
132        ContactAbilityModel.updateContact(null, JSON.parse(param.contactInfoAfter), (arg) => {
133          callBack(arg);
134        }, param.context)
135        break
136      default:
137        HiLog.w(TAG, `${request} not allow!!!`)
138        break;
139    }
140  }
141}