1048147e0Sopenharmony_ci/** 2048147e0Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3048147e0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4048147e0Sopenharmony_ci * you may not use this file except in compliance with the License. 5048147e0Sopenharmony_ci * You may obtain a copy of the License at 6048147e0Sopenharmony_ci * 7048147e0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8048147e0Sopenharmony_ci * 9048147e0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10048147e0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11048147e0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12048147e0Sopenharmony_ci * See the License for the specific language governing permissions and 13048147e0Sopenharmony_ci * limitations under the License. 14048147e0Sopenharmony_ci */ 15048147e0Sopenharmony_ci 16048147e0Sopenharmony_ciimport router from '@system.router'; 17048147e0Sopenharmony_ci 18048147e0Sopenharmony_ciimport ContactService from '../service/ContactsService'; 19048147e0Sopenharmony_ciimport ConversationListService from '../service/ConversationListService'; 20048147e0Sopenharmony_ciimport common from '../data/commonData'; 21048147e0Sopenharmony_ciimport HiLog from './HiLog'; 22048147e0Sopenharmony_ciimport LooseObject from '../data/LooseObject'; 23048147e0Sopenharmony_ci 24048147e0Sopenharmony_ciconst TAG = 'WantUtil'; 25048147e0Sopenharmony_ci 26048147e0Sopenharmony_ciexport default { 27048147e0Sopenharmony_ci getWant() { 28048147e0Sopenharmony_ci HiLog.i(TAG, 'getWant start'); 29048147e0Sopenharmony_ci if (globalThis.abilityWant == null) { 30048147e0Sopenharmony_ci return; 31048147e0Sopenharmony_ci } 32048147e0Sopenharmony_ci let abilityWant = globalThis.abilityWant; 33048147e0Sopenharmony_ci globalThis.abilityWant = null; 34048147e0Sopenharmony_ci 35048147e0Sopenharmony_ci if (abilityWant.hasOwnProperty('parameters')) { 36048147e0Sopenharmony_ci let parameters = abilityWant.parameters; 37048147e0Sopenharmony_ci let pageFlag = ''; 38048147e0Sopenharmony_ci if (parameters.hasOwnProperty('pageFlag')) { 39048147e0Sopenharmony_ci pageFlag = parameters.pageFlag; 40048147e0Sopenharmony_ci HiLog.i(TAG, 'pageFlag = ' + pageFlag); 41048147e0Sopenharmony_ci } 42048147e0Sopenharmony_ci let contactParams = {} 43048147e0Sopenharmony_ci if (parameters.hasOwnProperty('contactObjects')) { 44048147e0Sopenharmony_ci contactParams = ContactService.getInstance().dealContactParams(parameters.contactObjects); 45048147e0Sopenharmony_ci } 46048147e0Sopenharmony_ci this.jump(pageFlag, contactParams); 47048147e0Sopenharmony_ci } 48048147e0Sopenharmony_ci }, 49048147e0Sopenharmony_ci 50048147e0Sopenharmony_ci jump(pageFlag, contactParams) { 51048147e0Sopenharmony_ci let result = { 52048147e0Sopenharmony_ci uri: '', 53048147e0Sopenharmony_ci params: {} 54048147e0Sopenharmony_ci }; 55048147e0Sopenharmony_ci HiLog.i(TAG, 'want.pageFlag: ' + pageFlag); 56048147e0Sopenharmony_ci switch (pageFlag) { 57048147e0Sopenharmony_ci case 'conversation': 58048147e0Sopenharmony_ci result.uri = 'pages/conversation/conversation'; 59048147e0Sopenharmony_ci if (contactParams) { 60048147e0Sopenharmony_ci result.params = contactParams; 61048147e0Sopenharmony_ci this.jumpIsNewPage(result, contactParams); 62048147e0Sopenharmony_ci } else { 63048147e0Sopenharmony_ci router.push(result); 64048147e0Sopenharmony_ci } 65048147e0Sopenharmony_ci break; 66048147e0Sopenharmony_ci default: 67048147e0Sopenharmony_ci break; 68048147e0Sopenharmony_ci } 69048147e0Sopenharmony_ci }, 70048147e0Sopenharmony_ci 71048147e0Sopenharmony_ci async jumpIsNewPage(result, contactParams) { 72048147e0Sopenharmony_ci // Check whether a session has been created for the current phone number in the SMS message. 73048147e0Sopenharmony_ci ConversationListService.getInstance().querySessionByTelephone(contactParams.strContactsNumber, res => { 74048147e0Sopenharmony_ci if (res.code == common.int.SUCCESS && res.response.id > 0) { 75048147e0Sopenharmony_ci result.params.threadId = res.response.id; 76048147e0Sopenharmony_ci let actionData: LooseObject = {}; 77048147e0Sopenharmony_ci actionData.threadId = result.params.threadId; 78048147e0Sopenharmony_ci ConversationListService.getInstance().markAllToRead(actionData); 79048147e0Sopenharmony_ci if (res.response.hasDraft && res.response.messageCount == 0) { 80048147e0Sopenharmony_ci result.params.isNewMsg = true; 81048147e0Sopenharmony_ci } else { 82048147e0Sopenharmony_ci result.params.isNewMsg = false; 83048147e0Sopenharmony_ci } 84048147e0Sopenharmony_ci } else { 85048147e0Sopenharmony_ci result.params.isNewMsg = true; 86048147e0Sopenharmony_ci } 87048147e0Sopenharmony_ci router.push(result); 88048147e0Sopenharmony_ci }, null); 89048147e0Sopenharmony_ci }, 90048147e0Sopenharmony_ci}