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 'updateFavorite', 41 'getAllFavorite', 42 'getAllUsually', 43 'getDisplayNamesFindUsually', 44 'moveSortFavorite', 45 'getSearchContact', 46 'getCallHistorySearch', 47 'getQueryT9PhoneNumbers' 48} 49 50export class DataWorkerTask extends WorkerTask { 51 private static sInstance: DataWorkerTask = undefined; 52 53 private constructor(workerPort: ThreadWorkerGlobalScope) { 54 super(workerPort) 55 } 56 57 static getInstance(workerPort: ThreadWorkerGlobalScope) { 58 HiLog.i(TAG, 'getInstance in.') 59 if (DataWorkerTask.sInstance == undefined || DataWorkerTask.sInstance.workerPort == undefined) { 60 DataWorkerTask.sInstance = new DataWorkerTask(workerPort); 61 } 62 return DataWorkerTask.sInstance; 63 } 64 65 runInWorker(request: string, callBack: (v?: any) => void, param?: any) { 66 HiLog.i(TAG, `runInWorker ${request}`) 67 switch (request) { 68 case DataWorkerConstant[DataWorkerConstant.getAllCalls]: 69 CallLog.getAllCalls(JSON.parse(param.favoriteForm), param.actionData, param.mergeRule, (data) => { 70 HiLog.i(TAG, `getAllCalls result: ${JSON.stringify(data).length}`) 71 callBack(data); 72 }, param.context); 73 break; 74 case DataWorkerConstant[DataWorkerConstant.findByNumberIn]: 75 CallLogRepository.getInstance().init(param.context); 76 CallLogRepository.getInstance().findByNumberIn(param.numbers, (resultList) => { 77 callBack(resultList); 78 }); 79 break 80 case DataWorkerConstant[DataWorkerConstant.deleteContactById]: 81 ContactRepository.getInstance().init(param.context); 82 ContactRepository.getInstance().deleteById(param.contactId, (result) => { 83 HiLog.i(TAG, `deleteContactById result ${result}`) 84 callBack(result); 85 }); 86 break; 87 case DataWorkerConstant[DataWorkerConstant.deleteCallLogsById]: 88 CallLogRepository.getInstance().init(param.context); 89 CallLogRepository.getInstance().deleteByIdIn(param.ids, (result) => { 90 callBack(result); 91 }) 92 break; 93 case DataWorkerConstant[DataWorkerConstant.addContact]: 94 const contactInfoAfter = JSON.parse(param.contactInfoAfter) 95 ContactAbilityModel.addContact(contactInfoAfter, (arg) => { 96 callBack(arg); 97 }, param.context) 98 break 99 case DataWorkerConstant[DataWorkerConstant.getAllContact]: 100 ContactAbilityModel.getAllContact(param.actionData, (result) => { 101 callBack(result); 102 }, param.context) 103 break 104 case DataWorkerConstant[DataWorkerConstant.getAllContactWithPhoneNumbers]: 105 ContactAbilityModel.getAllContactWithPhoneNumbers((resultList) => { 106 callBack(resultList); 107 }, JSON.parse(param.favoriteForm), param.context) 108 break 109 case DataWorkerConstant[DataWorkerConstant.getContactById]: 110 ContactAbilityModel.getContactById(param.contactId, result => { 111 callBack(result); 112 }, param.context) 113 break 114 case DataWorkerConstant[DataWorkerConstant.getIdByTelephone]: 115 ContactAbilityModel.getIdByTelephone(param.phoneNumber, (contactId) => { 116 callBack(contactId); 117 }, param.context) 118 break 119 case DataWorkerConstant[DataWorkerConstant.updateContact]: 120 ContactAbilityModel.updateContact(null, JSON.parse(param.contactInfoAfter), (arg) => { 121 callBack(arg); 122 }, param.context) 123 break 124 case DataWorkerConstant[DataWorkerConstant.updateFavorite]: 125 ContactAbilityModel.updateFavorite(null, JSON.parse(param.favoriteForm), (arg) => { 126 callBack(arg); 127 }, param.context) 128 break 129 case DataWorkerConstant[DataWorkerConstant.getAllFavorite]: 130 ContactAbilityModel.getAllFavorite(param.actionData, (result) => { 131 callBack(result); 132 }, param.context) 133 break 134 case DataWorkerConstant[DataWorkerConstant.getAllUsually]: 135 ContactAbilityModel.getAllUsually(param.actionData, (result) => { 136 callBack(result); 137 }, param.context) 138 break 139 case DataWorkerConstant[DataWorkerConstant.getDisplayNamesFindUsually]: 140 ContactAbilityModel.getDisplayNamesFindUsually(param.displayName, param.usuallyPhone, (result) => { 141 callBack(result); 142 }, param.context) 143 break 144 case DataWorkerConstant[DataWorkerConstant.moveSortFavorite]: 145 ContactAbilityModel.moveSortFavorite(null, JSON.parse(param.favoriteForm), (result) => { 146 callBack(result); 147 }, param.context) 148 break 149 case DataWorkerConstant[DataWorkerConstant.getSearchContact]: 150 ContactAbilityModel.getSearchContact(param.actionData, (result) => { 151 callBack(result); 152 }, param.context) 153 break 154 case DataWorkerConstant[DataWorkerConstant.getCallHistorySearch]: 155 CallLog.getCallHistorySearch(param.actionData, param.mergeRule, (data) => { 156 callBack(data); 157 }, param.context); 158 break 159 case DataWorkerConstant[DataWorkerConstant.getQueryT9PhoneNumbers]: 160 ContactAbilityModel.getQueryT9PhoneNumbers((resultList) => { 161 callBack(resultList); 162 }, JSON.parse(param.favoriteForm), param.context) 163 break 164 default: 165 HiLog.w(TAG, `${request} not allow!!!`) 166 break; 167 } 168 } 169}