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}