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}