1df226684Sopenharmony_ci/*
2df226684Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3df226684Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4df226684Sopenharmony_ci * you may not use this file except in compliance with the License.
5df226684Sopenharmony_ci * You may obtain a copy of the License at
6df226684Sopenharmony_ci *
7df226684Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8df226684Sopenharmony_ci *
9df226684Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10df226684Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11df226684Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12df226684Sopenharmony_ci * See the License for the specific language governing permissions and
13df226684Sopenharmony_ci * limitations under the License.
14df226684Sopenharmony_ci */
15df226684Sopenharmony_ci
16df226684Sopenharmony_ciimport UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
17df226684Sopenharmony_ciimport { EditableLeftIconType } from '@ohos.arkui.advanced.EditableTitleBar';
18df226684Sopenharmony_ciimport { EditableTitleBar } from '@ohos.arkui.advanced.EditableTitleBar';
19df226684Sopenharmony_ciimport ConnectService from '../common/share/ConnectService';
20df226684Sopenharmony_ciimport { LengthMetrics } from '@ohos.arkui.node';
21df226684Sopenharmony_ciimport dlpPermission from '@ohos.dlpPermission';
22df226684Sopenharmony_ciimport promptAction from '@ohos.promptAction';
23df226684Sopenharmony_ciimport { BusinessError } from '@ohos.base';
24df226684Sopenharmony_ciimport Want from '@ohos.app.ability.Want';
25df226684Sopenharmony_ciimport fs from '@ohos.file.fs';
26df226684Sopenharmony_ciimport emitter from '@ohos.events.emitter';
27df226684Sopenharmony_ciimport { HiLog } from '../common/HiLog';
28df226684Sopenharmony_ciimport Constants from '../common/constant';
29df226684Sopenharmony_ciimport FileUtils, { FileMsg } from '../common/FileUtils';
30df226684Sopenharmony_ciimport {
31df226684Sopenharmony_ci  getFileUriByPath,
32df226684Sopenharmony_ci  getFileFd,
33df226684Sopenharmony_ci  sendDlpFileCreateProperties,
34df226684Sopenharmony_ci  getFileSizeByUri,
35df226684Sopenharmony_ci  sendDlpManagerAccountLogin,
36df226684Sopenharmony_ci  getAppId,
37df226684Sopenharmony_ci  getOsAccountInfo,
38df226684Sopenharmony_ci  checkNetworkStatus
39df226684Sopenharmony_ci} from '../common/utils';
40df226684Sopenharmony_ciimport { SystemUtils } from '../common/systemUtils';
41df226684Sopenharmony_ci
42df226684Sopenharmony_ciconst TAG = 'Share';
43df226684Sopenharmony_ci
44df226684Sopenharmony_ciclass Test {
45df226684Sopenharmony_ci  public '0': number = 0;
46df226684Sopenharmony_ci  public '1': number = 0;
47df226684Sopenharmony_ci  public '4': string = '';
48df226684Sopenharmony_ci}
49df226684Sopenharmony_ci
50df226684Sopenharmony_ciclass AuthUserList {
51df226684Sopenharmony_ci  public authAccount: string = '';
52df226684Sopenharmony_ci  public authAccountType: number = 0;
53df226684Sopenharmony_ci  public dlpFileAccess: number = 0;
54df226684Sopenharmony_ci  public permExpiryTime: number = 0;
55df226684Sopenharmony_ci}
56df226684Sopenharmony_ci
57df226684Sopenharmony_cilet defaultDlpProperty: dlpPermission.DLPProperty = {
58df226684Sopenharmony_ci  ownerAccount: '',
59df226684Sopenharmony_ci  ownerAccountType: dlpPermission.AccountType.CLOUD_ACCOUNT,
60df226684Sopenharmony_ci  authUserList: [],
61df226684Sopenharmony_ci  contactAccount: '',
62df226684Sopenharmony_ci  offlineAccess: true,
63df226684Sopenharmony_ci  ownerAccountID: '',
64df226684Sopenharmony_ci  everyoneAccessList: []
65df226684Sopenharmony_ci};
66df226684Sopenharmony_ci
67df226684Sopenharmony_cilet storage = LocalStorage.getShared();
68df226684Sopenharmony_ci
69df226684Sopenharmony_ci@Entry(storage)
70df226684Sopenharmony_ci@Component
71df226684Sopenharmony_cistruct encryptedSharing {
72df226684Sopenharmony_ci  private connectService: ConnectService = new ConnectService(getContext(this));
73df226684Sopenharmony_ci  @State titlebarMargin: LocalizedMargin = {
74df226684Sopenharmony_ci    start: LengthMetrics.vp(Constants.SHARE_TITLE_HEAD_MARGIN_RIGHT),
75df226684Sopenharmony_ci    end: LengthMetrics.vp(Constants.SHARE_TITLE_HEAD_MARGIN_RIGHT),
76df226684Sopenharmony_ci  };
77df226684Sopenharmony_ci  @LocalStorageLink('commandSearchUserInfo') @Watch('beginToGenerateDLPFile') isInputInvalid: string = '';
78df226684Sopenharmony_ci  @LocalStorageLink('commandGetAccountInfo') @Watch('changeAccountInfo') commandGetAccountInfo: string = '';
79df226684Sopenharmony_ci  @State commandGetAccountInfoFlag: boolean = false;
80df226684Sopenharmony_ci  @State dlpProperty: dlpPermission.DLPProperty = defaultDlpProperty;
81df226684Sopenharmony_ci  @State enabledFocus: boolean = true;
82df226684Sopenharmony_ci  @State isConfirmButtonEnabled: boolean = false;
83df226684Sopenharmony_ci  @State isShowSheet: boolean = false;
84df226684Sopenharmony_ci  @State showUIExtensionForAccountLogin: boolean = false;
85df226684Sopenharmony_ci  @State actionWant: Want | undefined = storage.get<Want>('actionWant');
86df226684Sopenharmony_ci  @State inputValue: string = '';
87df226684Sopenharmony_ci  @State phoneFormatTips: boolean = false;
88df226684Sopenharmony_ci  @State ownerAccount: string = '';
89df226684Sopenharmony_ci  @State ownerAccountID: string = '';
90df226684Sopenharmony_ci  @State contactExists: boolean = true;
91df226684Sopenharmony_ci  @State credentialCallBackMsg: string | Resource = '';
92df226684Sopenharmony_ci  @State session: UIExtensionContentSession | undefined =
93df226684Sopenharmony_ci    storage === undefined ? undefined : storage.get<UIExtensionContentSession>('session');
94df226684Sopenharmony_ci  @State placeHolderStr: ResourceStr = '';
95df226684Sopenharmony_ci  @State contactPerson: string = '';
96df226684Sopenharmony_ci  @State recordHashUid: string = '';
97df226684Sopenharmony_ci  @State osVersion: ResourceStr = '';
98df226684Sopenharmony_ci  @State isTextInputFocus: boolean = false;
99df226684Sopenharmony_ci  @State generalType: string = 'general.file';
100df226684Sopenharmony_ci
101df226684Sopenharmony_ci  @Builder
102df226684Sopenharmony_ci  contactsPicker() {
103df226684Sopenharmony_ci    Column() {
104df226684Sopenharmony_ci      UIExtensionComponent({
105df226684Sopenharmony_ci        bundleName: 'com.ohos.contacts',
106df226684Sopenharmony_ci        abilityName: 'ContactUiExtentionAbility',
107df226684Sopenharmony_ci        parameters: {
108df226684Sopenharmony_ci          'ability.want.params.uiExtensionType': 'sys/commonUI',
109df226684Sopenharmony_ci          'targetUrl': 'BatchSelectContactsPage',
110df226684Sopenharmony_ci          'isContactMultiSelect': false,
111df226684Sopenharmony_ci        }
112df226684Sopenharmony_ci      })
113df226684Sopenharmony_ci        .onRelease((code) => {
114df226684Sopenharmony_ci        })
115df226684Sopenharmony_ci        .onResult((data) => {
116df226684Sopenharmony_ci        })
117df226684Sopenharmony_ci        .onReceive((data) => {
118df226684Sopenharmony_ci          let params: [] = JSON.parse((data.want as Want)?.parameters?.contactObjects as string);
119df226684Sopenharmony_ci          for (let i = 0; i < params.length; i++) {
120df226684Sopenharmony_ci            this.inputValue = (params[i] as Record<string, string>)?.telephone;
121df226684Sopenharmony_ci          }
122df226684Sopenharmony_ci          this.isShowSheet = false;
123df226684Sopenharmony_ci        })
124df226684Sopenharmony_ci        .width(Constants.CONTACTS_PICKER_WIDTH)
125df226684Sopenharmony_ci        .height(Constants.CONTACTS_PICKER_HEIGHT)
126df226684Sopenharmony_ci        .hitTestBehavior(HitTestMode.Block)
127df226684Sopenharmony_ci    }
128df226684Sopenharmony_ci    .width(Constants.CONTACTS_PICKER_WIDTH)
129df226684Sopenharmony_ci    .height(Constants.CONTACTS_PICKER_HEIGHT)
130df226684Sopenharmony_ci  }
131df226684Sopenharmony_ci
132df226684Sopenharmony_ci  private async beginShareEncrypt() {
133df226684Sopenharmony_ci    HiLog.info(TAG, `begin Share Encrypt start`);
134df226684Sopenharmony_ci    if (this.checkCloudPhone(this.inputValue)) {
135df226684Sopenharmony_ci      this.enabledFocus = false;
136df226684Sopenharmony_ci      this.isConfirmButtonEnabled = false;
137df226684Sopenharmony_ci      this.getAccountInfo();
138df226684Sopenharmony_ci    }
139df226684Sopenharmony_ci  }
140df226684Sopenharmony_ci
141df226684Sopenharmony_ci  changeAccountInfo() {
142df226684Sopenharmony_ci    HiLog.info(TAG, `changeAccountInfo start`);
143df226684Sopenharmony_ci    if (!this.checkCloudPhone(this.inputValue)) {
144df226684Sopenharmony_ci      return;
145df226684Sopenharmony_ci    }
146df226684Sopenharmony_ci    if (!this.commandGetAccountInfo) {
147df226684Sopenharmony_ci      this.enabledFocus = true;
148df226684Sopenharmony_ci      this.isConfirmButtonEnabled = true;
149df226684Sopenharmony_ci      this.showToast($r('app.string.Share_File_Encrypted_Failed'));
150df226684Sopenharmony_ci    }
151df226684Sopenharmony_ci    let commandGetAccountInfoCallBack = JSON.parse(this.commandGetAccountInfo) as Record<string, object>;
152df226684Sopenharmony_ci    HiLog.info(TAG, `commandGetAccountInfo Call Back errorCode: ${commandGetAccountInfoCallBack.errorCode}`);
153df226684Sopenharmony_ci    let res = commandGetAccountInfoCallBack.result as Record<string, string>;
154df226684Sopenharmony_ci    if (Number(commandGetAccountInfoCallBack.errorCode) === Constants.ERR_CODE_SUCCESS && res?.uid) {
155df226684Sopenharmony_ci      this.ownerAccount = res?.uid;
156df226684Sopenharmony_ci      this.ownerAccountID = res?.uid;
157df226684Sopenharmony_ci      this.connectService.connectServiceShareAbility(Constants.COMMAND_SEARCH_USER_INFO);
158df226684Sopenharmony_ci    } else {
159df226684Sopenharmony_ci      this.enabledFocus = true;
160df226684Sopenharmony_ci      this.isConfirmButtonEnabled = true;
161df226684Sopenharmony_ci      this.recordHashUid = '';
162df226684Sopenharmony_ci      storage.setOrCreate('commandGetAccountInfo', '');
163df226684Sopenharmony_ci      if ([
164df226684Sopenharmony_ci        Constants.ERR_CODE_NETWORK_ERROR,
165df226684Sopenharmony_ci        Constants.ERR_CODE_CONNECTION_FAIL,
166df226684Sopenharmony_ci        Constants.ERR_CODE_CONNECTION_TIME_OUT
167df226684Sopenharmony_ci      ].includes(Number(commandGetAccountInfoCallBack.errorCode))) {
168df226684Sopenharmony_ci        this.showToast($r('app.string.network_invalid'));
169df226684Sopenharmony_ci        return;
170df226684Sopenharmony_ci      }
171df226684Sopenharmony_ci      this.showToast($r('app.string.Share_File_Encrypted_Failed'));
172df226684Sopenharmony_ci    }
173df226684Sopenharmony_ci  }
174df226684Sopenharmony_ci
175df226684Sopenharmony_ci  checkCloudPhone(phone: string): boolean {
176df226684Sopenharmony_ci    if (!phone) {
177df226684Sopenharmony_ci      return false;
178df226684Sopenharmony_ci    }
179df226684Sopenharmony_ci    let reg = /^(?:(?:\+|00)86)?1[3456789]\d{9}$/;
180df226684Sopenharmony_ci    if (!(reg.test(phone))) {
181df226684Sopenharmony_ci      HiLog.info(TAG, `Please enter the phone.`);
182df226684Sopenharmony_ci      this.phoneFormatTips = true;
183df226684Sopenharmony_ci      this.credentialCallBackMsg = $r('app.string.Share_Tips_Phone_Format');
184df226684Sopenharmony_ci      HiLog.info(TAG, `phoneFormatTips: ${this.phoneFormatTips}`);
185df226684Sopenharmony_ci      return false;
186df226684Sopenharmony_ci    }
187df226684Sopenharmony_ci    reg = /^(0086|\+86)/;
188df226684Sopenharmony_ci    let formatPhone = this.inputValue.replace(reg, '');
189df226684Sopenharmony_ci    let cloudPhone = `${Constants.INTERNATIONAL_DIALING_CODE}${formatPhone}`;
190df226684Sopenharmony_ci    AppStorage.setOrCreate('cloudPhone', cloudPhone);
191df226684Sopenharmony_ci    return true;
192df226684Sopenharmony_ci  }
193df226684Sopenharmony_ci
194df226684Sopenharmony_ci  async beginToGenerateDLPFile() {
195df226684Sopenharmony_ci    HiLog.info(TAG, `beginToGenerateDLPFile start`);
196df226684Sopenharmony_ci    if (!this.isInputValid()) {
197df226684Sopenharmony_ci      this.enabledFocus = true;
198df226684Sopenharmony_ci      this.isConfirmButtonEnabled = true;
199df226684Sopenharmony_ci      this.textInputGetFocus();
200df226684Sopenharmony_ci      return;
201df226684Sopenharmony_ci    }
202df226684Sopenharmony_ci    let parameters = this.actionWant?.parameters as Record<string, Array<string>>;
203df226684Sopenharmony_ci    let inputUri: string = parameters['ability.params.stream'][0];
204df226684Sopenharmony_ci    let inputFileName: string = this.getFileName(parameters, inputUri);
205df226684Sopenharmony_ci    let dlpFileName = decodeURIComponent(inputFileName) + '.dlp';
206df226684Sopenharmony_ci    let inFileFd = getFileFd(inputUri);
207df226684Sopenharmony_ci    let srcFileSize: number = await getFileSizeByUri(inputUri);
208df226684Sopenharmony_ci    AppStorage.setOrCreate('hiFileSize', srcFileSize);
209df226684Sopenharmony_ci    let filePath = getContext(this).filesDir + `/Share/${new Date().getTime()}/`;
210df226684Sopenharmony_ci    try {
211df226684Sopenharmony_ci      await fs.mkdir(filePath, true);
212df226684Sopenharmony_ci    } catch (error) {
213df226684Sopenharmony_ci      HiLog.error(TAG, `mkdir failed: ${JSON.stringify(error)}`);
214df226684Sopenharmony_ci    }
215df226684Sopenharmony_ci    let newFilePath = filePath + dlpFileName;
216df226684Sopenharmony_ci    let file: fs.File | undefined;
217df226684Sopenharmony_ci    let filePathUri = getFileUriByPath(newFilePath);
218df226684Sopenharmony_ci    try {
219df226684Sopenharmony_ci      file = fs.openSync(newFilePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
220df226684Sopenharmony_ci      await dlpPermission.generateDLPFile(inFileFd, file.fd, this.dlpProperty);
221df226684Sopenharmony_ci      this.showToast($r('app.string.Share_File_Encrypted_Success'));
222df226684Sopenharmony_ci      let dstFileSize: number = await getFileSizeByUri(filePathUri);
223df226684Sopenharmony_ci      AppStorage.setOrCreate('hiPolicySizeEnc', dstFileSize);
224df226684Sopenharmony_ci      AppStorage.setOrCreate('hiCode', 201);
225df226684Sopenharmony_ci      sendDlpFileCreateProperties(dlpPermission.AccountType.CLOUD_ACCOUNT); // 201: DLP_2C_FILE_CREATE_EVENT
226df226684Sopenharmony_ci      this.backToPages(filePathUri, dlpFileName);
227df226684Sopenharmony_ci      HiLog.info(TAG, `beginToGenerateDLPFile success`);
228df226684Sopenharmony_ci    } catch (err) {
229df226684Sopenharmony_ci      HiLog.error(TAG, `open temp failed: ${JSON.stringify(err)}`);
230df226684Sopenharmony_ci      HiLog.info(TAG, `generateDLPFile file failed: ${JSON.stringify(err)}`);
231df226684Sopenharmony_ci      storage.setOrCreate('commandSearchUserInfo', '');
232df226684Sopenharmony_ci      if (err.code === Constants.SHARE_FILE_NAME_TOO_LONG) {
233df226684Sopenharmony_ci        this.showToast($r('app.string.Share_File_Name_Too_Long'));
234df226684Sopenharmony_ci        return;
235df226684Sopenharmony_ci      }
236df226684Sopenharmony_ci      this.showToast($r('app.string.Share_File_Encrypted_Failed'));
237df226684Sopenharmony_ci      this.enabledFocus = true;
238df226684Sopenharmony_ci      this.isConfirmButtonEnabled = true;
239df226684Sopenharmony_ci    } finally {
240df226684Sopenharmony_ci      if (file) {
241df226684Sopenharmony_ci        fs.closeSync(file);
242df226684Sopenharmony_ci      }
243df226684Sopenharmony_ci    }
244df226684Sopenharmony_ci  }
245df226684Sopenharmony_ci
246df226684Sopenharmony_ci  getFileName(parameters: Record<string, Array<string>>, inputUri: string): string {
247df226684Sopenharmony_ci    let abilityPickerRecords = parameters['ability.picker.records'];
248df226684Sopenharmony_ci    let srcFileMsg: FileMsg = FileUtils.getSuffixFileMsgByUri(inputUri);
249df226684Sopenharmony_ci    AppStorage.setOrCreate('hiFileType', srcFileMsg.fileType);
250df226684Sopenharmony_ci    let res: string = '';
251df226684Sopenharmony_ci    Object.keys(abilityPickerRecords).forEach(key => {
252df226684Sopenharmony_ci      this.generalType = key;
253df226684Sopenharmony_ci      res = abilityPickerRecords[key][0]?.['4'];
254df226684Sopenharmony_ci    });
255df226684Sopenharmony_ci    if (res === undefined) {
256df226684Sopenharmony_ci      res = srcFileMsg.fileName + srcFileMsg.fileType;
257df226684Sopenharmony_ci    }
258df226684Sopenharmony_ci    return res;
259df226684Sopenharmony_ci  }
260df226684Sopenharmony_ci
261df226684Sopenharmony_ci  showToast(msg: Resource) {
262df226684Sopenharmony_ci    promptAction.showToast({
263df226684Sopenharmony_ci      message: msg,
264df226684Sopenharmony_ci      duration: Constants.SHARE_SET_TIMEOUT
265df226684Sopenharmony_ci    });
266df226684Sopenharmony_ci  }
267df226684Sopenharmony_ci
268df226684Sopenharmony_ci  backToPages(filePathUri: string, dlpFileName: string) {
269df226684Sopenharmony_ci    HiLog.info(TAG, `backToPages start: ${dlpFileName}`);
270df226684Sopenharmony_ci    if (this.actionWant && this.actionWant.parameters) {
271df226684Sopenharmony_ci      this.actionWant.parameters['ability.params.stream'] = [filePathUri];
272df226684Sopenharmony_ci      let arr: Test[] = [
273df226684Sopenharmony_ci        {
274df226684Sopenharmony_ci          '0': 0,
275df226684Sopenharmony_ci          '1': 0,
276df226684Sopenharmony_ci          '4': dlpFileName
277df226684Sopenharmony_ci        }
278df226684Sopenharmony_ci      ];
279df226684Sopenharmony_ci      let generalFile: Record<string, Test[]> = {};
280df226684Sopenharmony_ci      generalFile[this.generalType] = arr;
281df226684Sopenharmony_ci      this.actionWant.parameters['ability.picker.records'] = generalFile;
282df226684Sopenharmony_ci      setTimeout(() => {
283df226684Sopenharmony_ci        this.session!.terminateSelfWithResult({
284df226684Sopenharmony_ci          resultCode: 2,
285df226684Sopenharmony_ci          want: this.actionWant
286df226684Sopenharmony_ci        });
287df226684Sopenharmony_ci      }, Constants.SHARE_SET_TIMEOUT)
288df226684Sopenharmony_ci    }
289df226684Sopenharmony_ci  }
290df226684Sopenharmony_ci
291df226684Sopenharmony_ci  isInputValid(): boolean {
292df226684Sopenharmony_ci    if (!this.isInputInvalid) {
293df226684Sopenharmony_ci      return false;
294df226684Sopenharmony_ci    }
295df226684Sopenharmony_ci    let credentialCallBack = JSON.parse(this.isInputInvalid) as Record<string, string>;
296df226684Sopenharmony_ci    HiLog.info(TAG, `credential Call Back errorCode: ${credentialCallBack.errorCode}`);
297df226684Sopenharmony_ci    if (!credentialCallBack.status && Number(credentialCallBack.errorCode) === Constants.ERR_CODE_SUCCESS) {
298df226684Sopenharmony_ci      HiLog.info(TAG, `credentialCallBack msg`);
299df226684Sopenharmony_ci      let str = this.getExternalResourceString(Constants.DLP_CREDMGR_BUNDLE_NAME, 'entry', 'no_user');
300df226684Sopenharmony_ci      this.credentialCallBackMsg = str.length > 0 ? str : credentialCallBack.msg;
301df226684Sopenharmony_ci      this.phoneFormatTips = true;
302df226684Sopenharmony_ci      storage.setOrCreate('commandSearchUserInfo', '');
303df226684Sopenharmony_ci      return false;
304df226684Sopenharmony_ci    }
305df226684Sopenharmony_ci    if (!credentialCallBack.status && [
306df226684Sopenharmony_ci      Constants.ERR_CODE_NETWORK_ERROR,
307df226684Sopenharmony_ci      Constants.ERR_CODE_CONNECTION_FAIL,
308df226684Sopenharmony_ci      Constants.ERR_CODE_CONNECTION_TIME_OUT
309df226684Sopenharmony_ci    ].includes(Number(credentialCallBack.errorCode))) {
310df226684Sopenharmony_ci      this.showToast($r('app.string.network_invalid'));
311df226684Sopenharmony_ci      storage.setOrCreate('commandSearchUserInfo', '');
312df226684Sopenharmony_ci      return false;
313df226684Sopenharmony_ci    }
314df226684Sopenharmony_ci    if (!credentialCallBack.status && Number(credentialCallBack.errorCode) !== Constants.ERR_CODE_SUCCESS) {
315df226684Sopenharmony_ci      this.showToast($r('app.string.Share_File_Encrypted_Failed'));
316df226684Sopenharmony_ci      storage.setOrCreate('commandSearchUserInfo', '');
317df226684Sopenharmony_ci      return false;
318df226684Sopenharmony_ci    }
319df226684Sopenharmony_ci    let authUserList: AuthUserList[] = [
320df226684Sopenharmony_ci      {
321df226684Sopenharmony_ci        'authAccount': credentialCallBack.userIdCipher,
322df226684Sopenharmony_ci        'authAccountType': 1,
323df226684Sopenharmony_ci        'dlpFileAccess': 1,
324df226684Sopenharmony_ci        'permExpiryTime': Date.UTC(9999, 1, 1),
325df226684Sopenharmony_ci      }
326df226684Sopenharmony_ci    ];
327df226684Sopenharmony_ci    this.dlpProperty = {
328df226684Sopenharmony_ci      'ownerAccount': this.ownerAccount,
329df226684Sopenharmony_ci      'ownerAccountID': this.ownerAccountID,
330df226684Sopenharmony_ci      'ownerAccountType': 1,
331df226684Sopenharmony_ci      'authUserList': authUserList,
332df226684Sopenharmony_ci      'contactAccount': this.ownerAccount,
333df226684Sopenharmony_ci      'offlineAccess': true,
334df226684Sopenharmony_ci    }
335df226684Sopenharmony_ci    return true;
336df226684Sopenharmony_ci  }
337df226684Sopenharmony_ci
338df226684Sopenharmony_ci  async checkContacts() {
339df226684Sopenharmony_ci    let callerBundleName = 'com.ohos.contacts';
340df226684Sopenharmony_ci    try {
341df226684Sopenharmony_ci      await getAppId(callerBundleName);
342df226684Sopenharmony_ci      this.contactExists = true;
343df226684Sopenharmony_ci    } catch {
344df226684Sopenharmony_ci      this.contactExists = false;
345df226684Sopenharmony_ci    }
346df226684Sopenharmony_ci  }
347df226684Sopenharmony_ci
348df226684Sopenharmony_ci  async getLoginStatus() {
349df226684Sopenharmony_ci    HiLog.info(TAG, `get login status start.`);
350df226684Sopenharmony_ci    try {
351df226684Sopenharmony_ci      await checkNetworkStatus();
352df226684Sopenharmony_ci    } catch {
353df226684Sopenharmony_ci      this.showToast($r('app.string.network_invalid'));
354df226684Sopenharmony_ci      this.enabledFocus = true;
355df226684Sopenharmony_ci      this.isConfirmButtonEnabled = this.inputValue.length > 0;
356df226684Sopenharmony_ci      this.isTextInputFocus = true;
357df226684Sopenharmony_ci      this.textInputGetFocus();
358df226684Sopenharmony_ci      return
359df226684Sopenharmony_ci    }
360df226684Sopenharmony_ci    try {
361df226684Sopenharmony_ci      let accountInfo = await getOsAccountInfo();
362df226684Sopenharmony_ci      if (accountInfo.distributedInfo.name === 'ohosAnonymousName' &&
363df226684Sopenharmony_ci        accountInfo.distributedInfo.id === 'ohosAnonymousUid') {
364df226684Sopenharmony_ci        this.showUIExtensionForAccountLogin = true;
365df226684Sopenharmony_ci      } else {
366df226684Sopenharmony_ci        this.isTextInputFocus = true;
367df226684Sopenharmony_ci        this.textInputGetFocus();
368df226684Sopenharmony_ci      }
369df226684Sopenharmony_ci    } catch (err) {
370df226684Sopenharmony_ci      HiLog.error(TAG, `getOsAccountInfo failed: ${JSON.stringify(err)}`);
371df226684Sopenharmony_ci    }
372df226684Sopenharmony_ci  }
373df226684Sopenharmony_ci
374df226684Sopenharmony_ci  async getAccountInfo() {
375df226684Sopenharmony_ci    HiLog.info(TAG, `get Account Info start`);
376df226684Sopenharmony_ci    try {
377df226684Sopenharmony_ci      await checkNetworkStatus();
378df226684Sopenharmony_ci    } catch {
379df226684Sopenharmony_ci      this.showToast($r('app.string.network_invalid'));
380df226684Sopenharmony_ci      this.enabledFocus = true;
381df226684Sopenharmony_ci      this.isConfirmButtonEnabled = this.inputValue.length > 0;
382df226684Sopenharmony_ci      this.isTextInputFocus = true;
383df226684Sopenharmony_ci      this.textInputGetFocus();
384df226684Sopenharmony_ci      return;
385df226684Sopenharmony_ci    }
386df226684Sopenharmony_ci    try {
387df226684Sopenharmony_ci      let accountInfo = await getOsAccountInfo();
388df226684Sopenharmony_ci      if (accountInfo.distributedInfo.name === 'ohosAnonymousName' &&
389df226684Sopenharmony_ci        accountInfo.distributedInfo.id === 'ohosAnonymousUid') {
390df226684Sopenharmony_ci        this.showUIExtensionForAccountLogin = true;
391df226684Sopenharmony_ci        return;
392df226684Sopenharmony_ci      }
393df226684Sopenharmony_ci      if (accountInfo.distributedInfo.id !== this.recordHashUid) {
394df226684Sopenharmony_ci        HiLog.info(TAG, `COMMAND_GET_ACCOUNT_INFO start`);
395df226684Sopenharmony_ci        this.connectService.connectServiceShareAbility(Constants.COMMAND_GET_ACCOUNT_INFO);
396df226684Sopenharmony_ci        this.commandGetAccountInfoFlag = true;
397df226684Sopenharmony_ci        this.recordHashUid = accountInfo.distributedInfo.id;
398df226684Sopenharmony_ci        return;
399df226684Sopenharmony_ci      } else {
400df226684Sopenharmony_ci        this.changeAccountInfo();
401df226684Sopenharmony_ci      }
402df226684Sopenharmony_ci    } catch (err) {
403df226684Sopenharmony_ci      HiLog.error(TAG, `getOsAccountInfo failed: ${JSON.stringify(err)}`);
404df226684Sopenharmony_ci      this.showToast($r('app.string.Share_File_Encrypted_Failed'));
405df226684Sopenharmony_ci      this.enabledFocus = true;
406df226684Sopenharmony_ci      this.isConfirmButtonEnabled = this.inputValue.length > 0;
407df226684Sopenharmony_ci    }
408df226684Sopenharmony_ci  }
409df226684Sopenharmony_ci
410df226684Sopenharmony_ci  onLanguageChange() {
411df226684Sopenharmony_ci    let str = this.getExternalResourceString(Constants.DLP_CREDMGR_BUNDLE_NAME, 'entry', 'add_users_hint');
412df226684Sopenharmony_ci    if (str.length > 0) {
413df226684Sopenharmony_ci      this.placeHolderStr = str;
414df226684Sopenharmony_ci    }
415df226684Sopenharmony_ci    str = this.getExternalResourceString(Constants.DLP_CREDMGR_BUNDLE_NAME, 'entry', 'no_user');
416df226684Sopenharmony_ci    if (str.length > 0) {
417df226684Sopenharmony_ci      this.credentialCallBackMsg = str;
418df226684Sopenharmony_ci    }
419df226684Sopenharmony_ci    str = this.getExternalResourceString(Constants.DLP_CREDMGR_BUNDLE_NAME, 'entry', 'hmos_version_label');
420df226684Sopenharmony_ci    if (str.length > 0) {
421df226684Sopenharmony_ci      this.osVersion = str;
422df226684Sopenharmony_ci    }
423df226684Sopenharmony_ci    this.getContactPersonString();
424df226684Sopenharmony_ci  }
425df226684Sopenharmony_ci
426df226684Sopenharmony_ci  subscribeLanguageChange() {
427df226684Sopenharmony_ci    emitter.on('onConfigurationUpdate', () => {
428df226684Sopenharmony_ci      this.onLanguageChange();
429df226684Sopenharmony_ci    })
430df226684Sopenharmony_ci  }
431df226684Sopenharmony_ci
432df226684Sopenharmony_ci  getExternalResourceString(bundle: string, module: string, resourceName: string): string {
433df226684Sopenharmony_ci    try {
434df226684Sopenharmony_ci      let ctx = getContext().createModuleContext(bundle, module);
435df226684Sopenharmony_ci      HiLog.info(TAG, 'getExternalResourceString get context from: ' + ctx.applicationInfo.name);
436df226684Sopenharmony_ci      let str = ctx.resourceManager.getStringByNameSync(resourceName);
437df226684Sopenharmony_ci      return str;
438df226684Sopenharmony_ci    } catch (e) {
439df226684Sopenharmony_ci      let error = e as BusinessError;
440df226684Sopenharmony_ci      HiLog.error(TAG, 'getExternalResourceString error: ' + error.code + ' ' + error.message);
441df226684Sopenharmony_ci      return '';
442df226684Sopenharmony_ci    }
443df226684Sopenharmony_ci  }
444df226684Sopenharmony_ci
445df226684Sopenharmony_ci  getContactPersonString() {
446df226684Sopenharmony_ci    try {
447df226684Sopenharmony_ci      getContext().resourceManager.getStringValue($r('app.string.Share_Contact_Person').id,
448df226684Sopenharmony_ci        (error: BusinessError, value: string) => {
449df226684Sopenharmony_ci          if (error === undefined || error === null) {
450df226684Sopenharmony_ci            this.contactPerson = value;
451df226684Sopenharmony_ci          } else {
452df226684Sopenharmony_ci            HiLog.error(TAG, `error is ${JSON.stringify(error)}`);
453df226684Sopenharmony_ci          }
454df226684Sopenharmony_ci        });
455df226684Sopenharmony_ci    } catch (error) {
456df226684Sopenharmony_ci      HiLog.error(TAG, `callback getStringValue failed, error ${JSON.stringify(error)}`);
457df226684Sopenharmony_ci    }
458df226684Sopenharmony_ci  }
459df226684Sopenharmony_ci
460df226684Sopenharmony_ci  clearHistoryDLPFile() {
461df226684Sopenharmony_ci    let pathDir = getContext(this).filesDir + '/Share';
462df226684Sopenharmony_ci    fs.listFile(pathDir).then((filenames: Array<string>) => {
463df226684Sopenharmony_ci      HiLog.info(TAG, `listFile succeed`);
464df226684Sopenharmony_ci      let filenamesLists = filenames.sort((a, b) => Number(a) - Number(b));
465df226684Sopenharmony_ci      if (filenamesLists.length > Constants.SHARE_TEMP_SAVE_FILE_NUMBER) {
466df226684Sopenharmony_ci        let deleteArray = filenamesLists.slice(0, filenamesLists.length - Constants.SHARE_TEMP_SAVE_FILE_NUMBER);
467df226684Sopenharmony_ci        deleteArray.forEach((item) => {
468df226684Sopenharmony_ci          fs.rmdirSync(pathDir + `/${item}`);
469df226684Sopenharmony_ci        })
470df226684Sopenharmony_ci      }
471df226684Sopenharmony_ci    }).catch((err: BusinessError) => {
472df226684Sopenharmony_ci      HiLog.error(TAG, `list file failed with error message: ${JSON.stringify(err)}`);
473df226684Sopenharmony_ci    });
474df226684Sopenharmony_ci  }
475df226684Sopenharmony_ci
476df226684Sopenharmony_ci  textInputGetFocus() {
477df226684Sopenharmony_ci    setTimeout(() => {
478df226684Sopenharmony_ci      try {
479df226684Sopenharmony_ci        HiLog.info(TAG, `delay requestFocus start`);
480df226684Sopenharmony_ci        this.getUIContext().getFocusController().requestFocus('phoneInput');
481df226684Sopenharmony_ci      } catch (error) {
482df226684Sopenharmony_ci        HiLog.error(TAG, `requestFocus failed. Cause: ${JSON.stringify(error)}`);
483df226684Sopenharmony_ci      }
484df226684Sopenharmony_ci    }, Constants.ENCRYPTION_SET_TIMEOUT_TIME);
485df226684Sopenharmony_ci  }
486df226684Sopenharmony_ci
487df226684Sopenharmony_ci  aboutToAppear() {
488df226684Sopenharmony_ci    HiLog.info(TAG, `aboutToAppear enter: ${this.showUIExtensionForAccountLogin}`);
489df226684Sopenharmony_ci    this.getLoginStatus();
490df226684Sopenharmony_ci    AppStorage.setOrCreate('hiAccountType', dlpPermission.AccountType.CLOUD_ACCOUNT);
491df226684Sopenharmony_ci    sendDlpManagerAccountLogin(-1);
492df226684Sopenharmony_ci    this.checkContacts();
493df226684Sopenharmony_ci    this.clearHistoryDLPFile();
494df226684Sopenharmony_ci    this.subscribeLanguageChange();
495df226684Sopenharmony_ci    let str = this.getExternalResourceString(Constants.DLP_CREDMGR_BUNDLE_NAME, 'entry', 'add_users_hint');
496df226684Sopenharmony_ci    this.placeHolderStr = str.length > 0 ? str : '';
497df226684Sopenharmony_ci    str = this.getExternalResourceString(Constants.DLP_CREDMGR_BUNDLE_NAME, 'entry', 'hmos_version_label');
498df226684Sopenharmony_ci    this.osVersion = str.length > 0 ? str : '';
499df226684Sopenharmony_ci    this.getContactPersonString();
500df226684Sopenharmony_ci  }
501df226684Sopenharmony_ci
502df226684Sopenharmony_ci  build() {
503df226684Sopenharmony_ci    Stack() {
504df226684Sopenharmony_ci      Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Start }) {
505df226684Sopenharmony_ci        EditableTitleBar({
506df226684Sopenharmony_ci          leftIconStyle: EditableLeftIconType.Back,
507df226684Sopenharmony_ci          title: $r('app.string.Share_Add_Viewable_Users'),
508df226684Sopenharmony_ci          contentMargin: this.titlebarMargin,
509df226684Sopenharmony_ci          menuItems: [
510df226684Sopenharmony_ci            {
511df226684Sopenharmony_ci              value: $r('sys.media.ohos_ic_public_cancel'),
512df226684Sopenharmony_ci              isEnabled: true,
513df226684Sopenharmony_ci              label: $r('app.string.ban'),
514df226684Sopenharmony_ci              action: () => {
515df226684Sopenharmony_ci                if (this.session !== undefined) {
516df226684Sopenharmony_ci                  this.session.terminateSelfWithResult({
517df226684Sopenharmony_ci                    'resultCode': 1,
518df226684Sopenharmony_ci                  });
519df226684Sopenharmony_ci                }
520df226684Sopenharmony_ci              }
521df226684Sopenharmony_ci            }
522df226684Sopenharmony_ci          ],
523df226684Sopenharmony_ci          isSaveIconRequired: false,
524df226684Sopenharmony_ci          onCancel: () => {
525df226684Sopenharmony_ci            if (this.session !== undefined) {
526df226684Sopenharmony_ci              this.session.terminateSelfWithResult({
527df226684Sopenharmony_ci                'resultCode': 0,
528df226684Sopenharmony_ci              });
529df226684Sopenharmony_ci            }
530df226684Sopenharmony_ci          },
531df226684Sopenharmony_ci        })
532df226684Sopenharmony_ci          .constraintSize({ minHeight: Constants.SHARE_TITLE_HEAD_HEIGHT })
533df226684Sopenharmony_ci          .margin({
534df226684Sopenharmony_ci            top: Constants.SHARE_TITLE_HEAD_MARGIN_TOP,
535df226684Sopenharmony_ci          })
536df226684Sopenharmony_ci        Scroll() {
537df226684Sopenharmony_ci          Column() {
538df226684Sopenharmony_ci            Row() {
539df226684Sopenharmony_ci              TextInput({ placeholder: this.placeHolderStr, text: this.inputValue })
540df226684Sopenharmony_ci                .id('phoneInput')
541df226684Sopenharmony_ci                .padding({
542df226684Sopenharmony_ci                  left: SystemUtils.isRTL() ?
543df226684Sopenharmony_ci                  Constants.SHARE_TEXT_INPUT_CONTENT_PADDING_RIGHT : Constants.SHARE_TEXT_INPUT_CONTENT_PADDING_LEFT,
544df226684Sopenharmony_ci                  right: SystemUtils.isRTL() ?
545df226684Sopenharmony_ci                  Constants.SHARE_TEXT_INPUT_CONTENT_PADDING_LEFT : Constants.SHARE_TEXT_INPUT_CONTENT_PADDING_RIGHT
546df226684Sopenharmony_ci                })
547df226684Sopenharmony_ci                .enabled(this.enabledFocus)
548df226684Sopenharmony_ci                .constraintSize({ minHeight: Constants.SHARE_TEXT_INPUT_HEIGHT })
549df226684Sopenharmony_ci                .focusable(this.isTextInputFocus)
550df226684Sopenharmony_ci                .defaultFocus(false)
551df226684Sopenharmony_ci                .direction(SystemUtils.isRTL() ? Direction.Rtl : Direction.Ltr)
552df226684Sopenharmony_ci                .type(InputType.PhoneNumber)
553df226684Sopenharmony_ci                .contentType(ContentType.PHONE_COUNTRY_CODE)
554df226684Sopenharmony_ci                .enterKeyType(EnterKeyType.NEW_LINE)
555df226684Sopenharmony_ci                .border(this.phoneFormatTips ?
556df226684Sopenharmony_ci                  { width: Constants.DIALOG_MD_OFFSET, color: $r('sys.color.ohos_id_color_warning') } : { width: 0 })
557df226684Sopenharmony_ci                .onChange((value: string) => {
558df226684Sopenharmony_ci                  HiLog.info(TAG, `input length: ${value.length}`);
559df226684Sopenharmony_ci                  this.inputValue = value;
560df226684Sopenharmony_ci                  this.phoneFormatTips = false;
561df226684Sopenharmony_ci                  this.isConfirmButtonEnabled = value.length > 0;
562df226684Sopenharmony_ci                })
563df226684Sopenharmony_ci              if (this.contactExists) {
564df226684Sopenharmony_ci                Column() {
565df226684Sopenharmony_ci                  SymbolGlyph($r('sys.symbol.person_2'))
566df226684Sopenharmony_ci                    .fontSize(`${Constants.SYMBOL_GLYPH_FONT_SIZE}vp`)
567df226684Sopenharmony_ci                    .fontColor(this.enabledFocus ? [$r('sys.color.icon_primary')] : [$r('sys.color.icon_tertiary')])
568df226684Sopenharmony_ci                }
569df226684Sopenharmony_ci                .accessibilityText(this.contactPerson)
570df226684Sopenharmony_ci                .enabled(this.enabledFocus)
571df226684Sopenharmony_ci                .offset({
572df226684Sopenharmony_ci                  x: SystemUtils.isRTL()
573df226684Sopenharmony_ci                    ? Constants.SHARE_CONTACTS_GROUP_OFFSET_X_RTL : Constants.SHARE_CONTACTS_GROUP_OFFSET_X,
574df226684Sopenharmony_ci                  y: Constants.SHARE_CONTACTS_GROUP_OFFSET_Y
575df226684Sopenharmony_ci                })
576df226684Sopenharmony_ci                .onClick(() => {
577df226684Sopenharmony_ci                  this.isShowSheet = !this.isShowSheet;
578df226684Sopenharmony_ci                })
579df226684Sopenharmony_ci                .bindSheet(this.isShowSheet, this.contactsPicker(), {
580df226684Sopenharmony_ci                  height: SheetSize.LARGE,
581df226684Sopenharmony_ci                  dragBar: false,
582df226684Sopenharmony_ci                  showClose: true,
583df226684Sopenharmony_ci                  onWillDisappear: () => {
584df226684Sopenharmony_ci                    this.isShowSheet = false;
585df226684Sopenharmony_ci                  },
586df226684Sopenharmony_ci                  backgroundColor: Color.Transparent,
587df226684Sopenharmony_ci                  blurStyle: BlurStyle.COMPONENT_ULTRA_THICK
588df226684Sopenharmony_ci                })
589df226684Sopenharmony_ci              }
590df226684Sopenharmony_ci            }
591df226684Sopenharmony_ci
592df226684Sopenharmony_ci            Text(this.phoneFormatTips ?
593df226684Sopenharmony_ci            this.credentialCallBackMsg : $r('app.string.Share_Enter_Mobile_Number', this.osVersion))
594df226684Sopenharmony_ci              .fontColor(this.phoneFormatTips ?
595df226684Sopenharmony_ci              $r('sys.color.ohos_id_color_warning') : $r('sys.color.ohos_id_color_text_secondary'))
596df226684Sopenharmony_ci              .fontSize($r('sys.float.ohos_id_text_size_body3'))
597df226684Sopenharmony_ci              .fontWeight(FontWeight.Regular)
598df226684Sopenharmony_ci              .margin({ top: Constants.ENCRYPTION_ADD_STAFF_BORDER_MARGIN_TOP })
599df226684Sopenharmony_ci              .backgroundColor(Color.Transparent)
600df226684Sopenharmony_ci              .width(Constants.CONTACTS_PICKER_WIDTH)
601df226684Sopenharmony_ci              .padding({ left: Constants.SHARE_TITLE_HEAD_PADDING_LEFT })
602df226684Sopenharmony_ci          }
603df226684Sopenharmony_ci          .margin({ left: Constants.SHARE_TEXT_INPUT_MARGIN_LEFT, right: Constants.SHARE_TEXT_INPUT_MARGIN_RIGHT })
604df226684Sopenharmony_ci        }
605df226684Sopenharmony_ci        .align(Alignment.TopStart)
606df226684Sopenharmony_ci        .constraintSize({
607df226684Sopenharmony_ci          minHeight: `${Constants.SHARE_TEXTAREA_MAX_HEIGHT}vp`
608df226684Sopenharmony_ci        })
609df226684Sopenharmony_ci        .padding({
610df226684Sopenharmony_ci          top: Constants.SHARE_TITLE_HEAD_MARGIN_BOTTOM
611df226684Sopenharmony_ci        })
612df226684Sopenharmony_ci
613df226684Sopenharmony_ci        Column() {
614df226684Sopenharmony_ci          Button($r('app.string.Share_Confirms'), { type: ButtonType.Capsule, stateEffect: true })
615df226684Sopenharmony_ci            .enabled(this.isConfirmButtonEnabled)
616df226684Sopenharmony_ci            .backgroundColor($r('sys.color.ohos_id_color_text_primary_activated'))
617df226684Sopenharmony_ci            .width(Constants.SHARE_BUTTON_WIDTH)
618df226684Sopenharmony_ci            .controlSize(ControlSize.NORMAL)
619df226684Sopenharmony_ci            .onClick(async () => {
620df226684Sopenharmony_ci              this.beginShareEncrypt();
621df226684Sopenharmony_ci            })
622df226684Sopenharmony_ci        }
623df226684Sopenharmony_ci        .justifyContent(FlexAlign.Center)
624df226684Sopenharmony_ci        .margin({
625df226684Sopenharmony_ci          top: Constants.SHARE_BUTTON_MARGIN_TOP,
626df226684Sopenharmony_ci          left: Constants.SHARE_BUTTON_MARGIN_LEFT,
627df226684Sopenharmony_ci          right: Constants.SHARE_BUTTON_MARGIN_RIGHT,
628df226684Sopenharmony_ci          bottom: Constants.SHARE_BUTTON_PADDING_BOTTOM
629df226684Sopenharmony_ci        })
630df226684Sopenharmony_ci      }
631df226684Sopenharmony_ci      .width(Constants.SHARE_PAGES_COLUMN_WIDTH)
632df226684Sopenharmony_ci      .height(Constants.SHARE_PAGES_COLUMN_HEIGHT)
633df226684Sopenharmony_ci
634df226684Sopenharmony_ci      if (this.showUIExtensionForAccountLogin) {
635df226684Sopenharmony_ci        UIExtensionComponent({
636df226684Sopenharmony_ci          bundleName: 'com.huawei.hmos.dlpcredmgr',
637df226684Sopenharmony_ci          abilityName: 'DlpCredAccountAbility',
638df226684Sopenharmony_ci          parameters: {
639df226684Sopenharmony_ci            'ability.want.params.uiExtensionType': 'sys/commonUI'
640df226684Sopenharmony_ci          }
641df226684Sopenharmony_ci        })
642df226684Sopenharmony_ci          .id('cloudAccountLoginUI')
643df226684Sopenharmony_ci          .onRemoteReady(() => {
644df226684Sopenharmony_ci            try {
645df226684Sopenharmony_ci              HiLog.info(TAG, `cloudAccountLoginUI requestFocus start`);
646df226684Sopenharmony_ci              this.getUIContext().getFocusController().requestFocus('cloudAccountLoginUI');
647df226684Sopenharmony_ci            } catch (error) {
648df226684Sopenharmony_ci              HiLog.error(TAG, `requestFocus failed. Cause: ${JSON.stringify(error)}`)
649df226684Sopenharmony_ci            }
650df226684Sopenharmony_ci          })
651df226684Sopenharmony_ci          .onReceive((data) => {
652df226684Sopenharmony_ci            HiLog.info(TAG, `data.status: ${JSON.stringify(data.status)}`);
653df226684Sopenharmony_ci            let res = data.result as Record<string, string>;
654df226684Sopenharmony_ci            HiLog.info(TAG, `res.code: ${JSON.stringify(res.code)}`);
655df226684Sopenharmony_ci            if (data.status) {
656df226684Sopenharmony_ci              this.ownerAccount = res?.uid;
657df226684Sopenharmony_ci              this.ownerAccountID = res?.uid;
658df226684Sopenharmony_ci              let checkCloudPhone = this.checkCloudPhone(this.inputValue);
659df226684Sopenharmony_ci              HiLog.info(TAG, `checkCloudPhone: ${checkCloudPhone}`);
660df226684Sopenharmony_ci              if (checkCloudPhone) {
661df226684Sopenharmony_ci                this.enabledFocus = false;
662df226684Sopenharmony_ci                this.isConfirmButtonEnabled = false;
663df226684Sopenharmony_ci                this.connectService.connectServiceShareAbility(Constants.COMMAND_SEARCH_USER_INFO);
664df226684Sopenharmony_ci              }
665df226684Sopenharmony_ci            } else {
666df226684Sopenharmony_ci              this.enabledFocus = true;
667df226684Sopenharmony_ci              this.isConfirmButtonEnabled = this.inputValue.length > 0;
668df226684Sopenharmony_ci              if (['12300001', '1001502005', '1001502009'].includes(res.code.toString())) {
669df226684Sopenharmony_ci                this.showToast($r('app.string.network_invalid'));
670df226684Sopenharmony_ci              }
671df226684Sopenharmony_ci            }
672df226684Sopenharmony_ci            this.isTextInputFocus = true;
673df226684Sopenharmony_ci            this.textInputGetFocus();
674df226684Sopenharmony_ci            this.showUIExtensionForAccountLogin = false;
675df226684Sopenharmony_ci          })
676df226684Sopenharmony_ci          .size({
677df226684Sopenharmony_ci            width: Constants.SHARE_PAGES_COLUMN_WIDTH, height: Constants.SHARE_PAGES_COLUMN_HEIGHT
678df226684Sopenharmony_ci          })
679df226684Sopenharmony_ci      }
680df226684Sopenharmony_ci    }
681df226684Sopenharmony_ci  }
682df226684Sopenharmony_ci}