1df226684Sopenharmony_ci/*
2df226684Sopenharmony_ci * Copyright (c) 2023 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 ability from '@ohos.ability.ability';
18df226684Sopenharmony_ciimport router from '@ohos.router';
19df226684Sopenharmony_ciimport dlpPermission from '@ohos.dlpPermission';
20df226684Sopenharmony_ciimport picker from '@ohos.file.picker';
21df226684Sopenharmony_ciimport fs from '@ohos.file.fs';
22df226684Sopenharmony_ciimport fileUri from '@ohos.file.fileuri';
23df226684Sopenharmony_ciimport { BusinessError } from '@ohos.base';
24df226684Sopenharmony_ciimport osAccount from '@ohos.account.osAccount';
25df226684Sopenharmony_ciimport common from '@ohos.app.ability.common';
26df226684Sopenharmony_ciimport { staffItem } from '../common/encryptionComponents/staff';
27df226684Sopenharmony_ciimport Constants from '../common/constant';
28df226684Sopenharmony_ciimport {
29df226684Sopenharmony_ci  AuthAccount,
30df226684Sopenharmony_ci  checkDomainAccountInfo,
31df226684Sopenharmony_ci  getOsAccountInfo,
32df226684Sopenharmony_ci  calculate,
33df226684Sopenharmony_ci  toggleShow,
34df226684Sopenharmony_ci  directionStatus,
35df226684Sopenharmony_ci  getTime,
36df226684Sopenharmony_ci  sendDlpManagerFileConfiguration
37df226684Sopenharmony_ci} from '../common/utils';
38df226684Sopenharmony_ciimport { DlpAlertDialog } from '../common/components/dlp_alert_dialog';
39df226684Sopenharmony_ciimport GlobalContext from '../common/GlobalContext';
40df226684Sopenharmony_ciimport HomeFeature from '../feature/HomeFeature';
41df226684Sopenharmony_ciimport { AccountTipsConfig } from '../common/AccountTipsConfig';
42df226684Sopenharmony_ciimport { EncryptingPanel } from '../common/encryptionComponents/encrypting';
43df226684Sopenharmony_ciimport { GetAlertMessage } from '../common/GetAlertMessage';
44df226684Sopenharmony_ciimport { HiLog } from '../common/HiLog';
45df226684Sopenharmony_ciimport { SystemUtils } from '../common/systemUtils';
46df226684Sopenharmony_ciimport FileUtils, { FileMsg } from '../common/FileUtils';
47df226684Sopenharmony_ciimport AccountManager from '../manager/AccountManager';
48df226684Sopenharmony_ciimport CommonUtil from '../common/CommonUtil';
49df226684Sopenharmony_ci
50df226684Sopenharmony_ciconst TAG = 'ModEnc';
51df226684Sopenharmony_ci
52df226684Sopenharmony_ciclass PermissionValue {
53df226684Sopenharmony_ci  public value: Resource | undefined
54df226684Sopenharmony_ci  public data: string = ''
55df226684Sopenharmony_ci  public index: number = 0
56df226684Sopenharmony_ci}
57df226684Sopenharmony_ci
58df226684Sopenharmony_cilet abilityResult: ability.AbilityResult = {
59df226684Sopenharmony_ci  'resultCode': 0,
60df226684Sopenharmony_ci  'want': {}
61df226684Sopenharmony_ci};
62df226684Sopenharmony_ci
63df226684Sopenharmony_ci@Extend(Text)
64df226684Sopenharmony_cifunction customizeText() {
65df226684Sopenharmony_ci  .fontColor($r('sys.color.ohos_id_color_text_primary_activated'))
66df226684Sopenharmony_ci  .fontSize($r('sys.float.ohos_id_text_size_button2'))
67df226684Sopenharmony_ci  .fontWeight(FontWeight.Medium)
68df226684Sopenharmony_ci}
69df226684Sopenharmony_ci
70df226684Sopenharmony_cilet storage = LocalStorage.getShared();
71df226684Sopenharmony_ci@Entry(storage)
72df226684Sopenharmony_ci@Component
73df226684Sopenharmony_cistruct changeEncryption {
74df226684Sopenharmony_ci  private homeFeature: HomeFeature = GlobalContext.load('homeFeature');
75df226684Sopenharmony_ci  @State session: UIExtensionContentSession | undefined =
76df226684Sopenharmony_ci    storage === undefined ? undefined : storage.get<UIExtensionContentSession>('session');
77df226684Sopenharmony_ci  dlpAlertDialog?: CustomDialogController;
78df226684Sopenharmony_ci  srcFileName: string = '';
79df226684Sopenharmony_ci  linkFileName: string = '';
80df226684Sopenharmony_ci  @State directionStatus: number = 0;
81df226684Sopenharmony_ci  @State handlePopup: boolean = false;
82df226684Sopenharmony_ci  @State handlePopupReadOnly: boolean = false;
83df226684Sopenharmony_ci  @State handlePopupEdit: boolean = false;
84df226684Sopenharmony_ci  @State authPerm: number = 2;
85df226684Sopenharmony_ci  @State routerFlag: boolean = false;
86df226684Sopenharmony_ci  @State editFlag: boolean = false;
87df226684Sopenharmony_ci  @State readOnlyFlag: boolean = false;
88df226684Sopenharmony_ci  @State rowNamesLenEdit: number = 0;
89df226684Sopenharmony_ci  @State rowNamesLenReadOnly: number = 0;
90df226684Sopenharmony_ci  @State hideNamesNumEdit: string = '0';
91df226684Sopenharmony_ci  @State hideNamesNumReadOnly: string = '0';
92df226684Sopenharmony_ci  @State prepareData: boolean = false;
93df226684Sopenharmony_ci  @State showNamesArrEdit: AuthAccount[] = [];
94df226684Sopenharmony_ci  @State showNamesArrReadOnly: AuthAccount[] = [];
95df226684Sopenharmony_ci  @State staffDataArrayReadOnly: AuthAccount[] = [];
96df226684Sopenharmony_ci  @State staffDataArrayEdit: AuthAccount[] = [];
97df226684Sopenharmony_ci  private routerData: Record<string, AuthAccount[]> = {};
98df226684Sopenharmony_ci  @State permissionDict: PermissionValue[] = [
99df226684Sopenharmony_ci    {
100df226684Sopenharmony_ci      value: $r('app.string.PERMISSION_TYPE_SELECT_TARGET') as Resource, data: 'target', index: 0
101df226684Sopenharmony_ci    },
102df226684Sopenharmony_ci    {
103df226684Sopenharmony_ci      value: $r('app.string.PERMISSION_TYPE_SELECT_ALL') as Resource, data: 'all', index: 1
104df226684Sopenharmony_ci    },
105df226684Sopenharmony_ci    {
106df226684Sopenharmony_ci      value: $r('app.string.PERMISSION_TYPE_SELECT_SELF') as Resource, data: 'self', index: 2
107df226684Sopenharmony_ci    }
108df226684Sopenharmony_ci  ];
109df226684Sopenharmony_ci  @State selectedPermissionTypeReadOnly: PermissionValue = {
110df226684Sopenharmony_ci    data: '',
111df226684Sopenharmony_ci    value: $r('app.string.PERMISSION_TYPE_SELECT_ALL'),
112df226684Sopenharmony_ci    index: 0
113df226684Sopenharmony_ci  }
114df226684Sopenharmony_ci  @State selectedPermissionTypeEdit: PermissionValue = {
115df226684Sopenharmony_ci    data: '',
116df226684Sopenharmony_ci    value: $r('app.string.PERMISSION_TYPE_SELECT_ALL'),
117df226684Sopenharmony_ci    index: 1
118df226684Sopenharmony_ci  }
119df226684Sopenharmony_ci
120df226684Sopenharmony_ci  @Builder popupBuilderReadOnly() {
121df226684Sopenharmony_ci    Row() {
122df226684Sopenharmony_ci      Text($r('app.string.header_title_readonly_tips'))
123df226684Sopenharmony_ci        .fontFamily('HarmonyHeiTi')
124df226684Sopenharmony_ci        .fontSize($r('sys.float.ohos_id_text_size_body2'))
125df226684Sopenharmony_ci        .fontColor($r('sys.color.ohos_id_color_text_primary'))
126df226684Sopenharmony_ci    }
127df226684Sopenharmony_ci    .width(Constants.HEADER_COLUMN_MESSAGE_TIPS)
128df226684Sopenharmony_ci    .padding({
129df226684Sopenharmony_ci      left: Constants.ROW_FONT_SIZE,
130df226684Sopenharmony_ci      right: Constants.ROW_FONT_SIZE,
131df226684Sopenharmony_ci      top: Constants.DA_MARGIN_TOP,
132df226684Sopenharmony_ci      bottom: Constants.DA_MARGIN_TOP
133df226684Sopenharmony_ci    })
134df226684Sopenharmony_ci  }
135df226684Sopenharmony_ci
136df226684Sopenharmony_ci  @Builder popupBuilderEdit() {
137df226684Sopenharmony_ci    Row() {
138df226684Sopenharmony_ci      Text($r('app.string.header_title_edit_tips'))
139df226684Sopenharmony_ci        .fontSize($r('sys.float.ohos_id_text_size_body2'))
140df226684Sopenharmony_ci        .fontColor($r('sys.color.ohos_id_color_text_primary'))
141df226684Sopenharmony_ci    }
142df226684Sopenharmony_ci    .width(Constants.HEADER_COLUMN_MESSAGE_TIPS)
143df226684Sopenharmony_ci    .padding({
144df226684Sopenharmony_ci      left: Constants.ROW_FONT_SIZE,
145df226684Sopenharmony_ci      right: Constants.ROW_FONT_SIZE,
146df226684Sopenharmony_ci      top: Constants.DA_MARGIN_TOP,
147df226684Sopenharmony_ci      bottom: Constants.DA_MARGIN_TOP
148df226684Sopenharmony_ci    })
149df226684Sopenharmony_ci  }
150df226684Sopenharmony_ci
151df226684Sopenharmony_ci  showErrorDialog(title: string | Resource, message: string | Resource) {
152df226684Sopenharmony_ci    this.dlpAlertDialog = new CustomDialogController({
153df226684Sopenharmony_ci      builder: DlpAlertDialog({
154df226684Sopenharmony_ci        title: title,
155df226684Sopenharmony_ci        message: message,
156df226684Sopenharmony_ci        action: () => {
157df226684Sopenharmony_ci        }
158df226684Sopenharmony_ci      }),
159df226684Sopenharmony_ci      autoCancel: false,
160df226684Sopenharmony_ci      customStyle: true,
161df226684Sopenharmony_ci      maskColor: Constants.TRANSPARENT_BACKGROUND_COLOR
162df226684Sopenharmony_ci    });
163df226684Sopenharmony_ci    this.dlpAlertDialog.open();
164df226684Sopenharmony_ci  }
165df226684Sopenharmony_ci
166df226684Sopenharmony_ci  async catchProcess() {
167df226684Sopenharmony_ci    if (GlobalContext.load('requestIsFromSandBox') as boolean) {
168df226684Sopenharmony_ci      HiLog.info(TAG, `resumeFuseLink: ${this.srcFileName}`);
169df226684Sopenharmony_ci      this.homeFeature.resumeFuseLinkHome(GlobalContext.load('uri'), (err: number) => {
170df226684Sopenharmony_ci        if (err !== 0) {
171df226684Sopenharmony_ci          HiLog.error(TAG, `resumeFuseLink failed: ${err}`);
172df226684Sopenharmony_ci        }
173df226684Sopenharmony_ci      });
174df226684Sopenharmony_ci    }
175df226684Sopenharmony_ci  }
176df226684Sopenharmony_ci
177df226684Sopenharmony_ci  stopFuseLinkHome() {
178df226684Sopenharmony_ci    return new Promise<void>((resolve, reject) => {
179df226684Sopenharmony_ci      this.homeFeature.stopFuseLinkHome(GlobalContext.load('uri'), (err: number) => {
180df226684Sopenharmony_ci        if (err !== 0) {
181df226684Sopenharmony_ci          HiLog.error(TAG, `stopFuseLink failed: ${err}`);
182df226684Sopenharmony_ci          this.showErrorDialog($r('app.string.TITLE_APP_ERROR') as Resource,
183df226684Sopenharmony_ci            $r('app.string.MESSAGE_SERVICE_INSIDE_ERROR') as Resource);
184df226684Sopenharmony_ci          reject();
185df226684Sopenharmony_ci        }
186df226684Sopenharmony_ci        resolve();
187df226684Sopenharmony_ci      });
188df226684Sopenharmony_ci    })
189df226684Sopenharmony_ci  }
190df226684Sopenharmony_ci
191df226684Sopenharmony_ci  recoverDLPFileHome(plainUri: string) {
192df226684Sopenharmony_ci    return new Promise<void>((resolve, reject) => {
193df226684Sopenharmony_ci      this.homeFeature.recoverDLPFileHome(GlobalContext.load('uri'), plainUri, async (err: number) => {
194df226684Sopenharmony_ci        if (err !== 0) {
195df226684Sopenharmony_ci          HiLog.error(TAG, `recoverDLPFile: ${this.srcFileName}, failed: ${err}`);
196df226684Sopenharmony_ci          let errorInfo =
197df226684Sopenharmony_ci            {'title': '', 'msg': $r('app.string.MESSAGE_RECOVER_DLP_ERROR') } as Record<string, string | Resource>;
198df226684Sopenharmony_ci          this.showErrorDialog(errorInfo.title, errorInfo.msg);
199df226684Sopenharmony_ci          await this.catchProcess();
200df226684Sopenharmony_ci          reject();
201df226684Sopenharmony_ci        }
202df226684Sopenharmony_ci        resolve();
203df226684Sopenharmony_ci      });
204df226684Sopenharmony_ci    })
205df226684Sopenharmony_ci  }
206df226684Sopenharmony_ci
207df226684Sopenharmony_ci  async unEncrypt() {
208df226684Sopenharmony_ci    let plaintextFile = FileUtils.getFileMsgByFileName(this.srcFileName);
209df226684Sopenharmony_ci    if (GlobalContext.load('requestIsFromSandBox') as boolean) {
210df226684Sopenharmony_ci      try {
211df226684Sopenharmony_ci        await this.stopFuseLinkHome();
212df226684Sopenharmony_ci      } catch {
213df226684Sopenharmony_ci        return;
214df226684Sopenharmony_ci      }
215df226684Sopenharmony_ci    }
216df226684Sopenharmony_ci    HiLog.info(TAG, `Decrypt DLP file: ${this.srcFileName}`);
217df226684Sopenharmony_ci    try {
218df226684Sopenharmony_ci      let srcFileUri: string = GlobalContext.load('uri');
219df226684Sopenharmony_ci      let srcFileMsg: FileMsg = FileUtils.getAllSuffixByUri(srcFileUri);
220df226684Sopenharmony_ci      let documentSaveOptions = new picker.DocumentSaveOptions();
221df226684Sopenharmony_ci      documentSaveOptions.newFileNames = [decodeURIComponent(plaintextFile)];
222df226684Sopenharmony_ci      documentSaveOptions.fileSuffixChoices = [`.${srcFileMsg.fileType}`];
223df226684Sopenharmony_ci      documentSaveOptions.defaultFilePathUri = srcFileUri.substring(0,
224df226684Sopenharmony_ci        srcFileUri.length - srcFileMsg.fileType.length - srcFileMsg.fileName.length - 5);
225df226684Sopenharmony_ci      let documentPicker = new picker.DocumentViewPicker();
226df226684Sopenharmony_ci      documentPicker.save(documentSaveOptions).then(async (saveRes) => {
227df226684Sopenharmony_ci        if (saveRes === undefined || saveRes.length === 0) {
228df226684Sopenharmony_ci          HiLog.error(TAG, `fail to get uri`);
229df226684Sopenharmony_ci          await this.catchProcess();
230df226684Sopenharmony_ci          return;
231df226684Sopenharmony_ci        }
232df226684Sopenharmony_ci        HiLog.info(TAG, `get uri success`);
233df226684Sopenharmony_ci        try {
234df226684Sopenharmony_ci          await this.fileDecryption(saveRes);
235df226684Sopenharmony_ci        } catch {
236df226684Sopenharmony_ci          HiLog.info(TAG, `file decryption fail`);
237df226684Sopenharmony_ci        }
238df226684Sopenharmony_ci      }).catch((err: number) => {
239df226684Sopenharmony_ci        HiLog.error(TAG, `DocumentViewPicker save failed: ${JSON.stringify(err)}`);
240df226684Sopenharmony_ci      });
241df226684Sopenharmony_ci    } catch (err) {
242df226684Sopenharmony_ci      HiLog.error(TAG, `Decrypt DLP file: ${this.srcFileName}, failed: ${JSON.stringify(err)}`);
243df226684Sopenharmony_ci    }
244df226684Sopenharmony_ci  }
245df226684Sopenharmony_ci
246df226684Sopenharmony_ci  async fileDecryption(saveRes: Array<string>): Promise<void> {
247df226684Sopenharmony_ci    let plainUri = saveRes[0];
248df226684Sopenharmony_ci    let uriInfo: fileUri.FileUri | undefined = undefined;
249df226684Sopenharmony_ci    let file: fs.File | undefined = undefined;
250df226684Sopenharmony_ci    try {
251df226684Sopenharmony_ci      uriInfo = new fileUri.FileUri(plainUri);
252df226684Sopenharmony_ci    } catch (err) {
253df226684Sopenharmony_ci      HiLog.info(TAG, `fileUri fail: ${JSON.stringify(err)}`);
254df226684Sopenharmony_ci    }
255df226684Sopenharmony_ci    try {
256df226684Sopenharmony_ci      file = await fs.open(plainUri, fs.OpenMode.READ_WRITE);
257df226684Sopenharmony_ci      await this.recoverDLPFileHome(plainUri);
258df226684Sopenharmony_ci    } catch (err) {
259df226684Sopenharmony_ci      HiLog.error(TAG, `recoverDLPFile: ${this.srcFileName}, failed: ${JSON.stringify(err)}`);
260df226684Sopenharmony_ci      try {
261df226684Sopenharmony_ci        await fs.unlink(uriInfo!.path);
262df226684Sopenharmony_ci      } catch (err) {
263df226684Sopenharmony_ci        HiLog.info(TAG, `unlink fail: ${JSON.stringify(err)}`);
264df226684Sopenharmony_ci      }
265df226684Sopenharmony_ci      let errorInfo =
266df226684Sopenharmony_ci        {'title': '', 'msg': $r('app.string.MESSAGE_RECOVER_DLP_ERROR') } as Record<string, string | Resource>;
267df226684Sopenharmony_ci      this.showErrorDialog(errorInfo.title as Resource, errorInfo.msg as Resource);
268df226684Sopenharmony_ci      await this.catchProcess();
269df226684Sopenharmony_ci      return;
270df226684Sopenharmony_ci    } finally {
271df226684Sopenharmony_ci      if (file) {
272df226684Sopenharmony_ci        fs.closeSync(file);
273df226684Sopenharmony_ci      }
274df226684Sopenharmony_ci    }
275df226684Sopenharmony_ci    await this.terminateSelfWithResult();
276df226684Sopenharmony_ci  }
277df226684Sopenharmony_ci
278df226684Sopenharmony_ci  async terminateSelfWithResult() {
279df226684Sopenharmony_ci    if (GlobalContext.load('requestIsFromSandBox') as boolean) { //no need close dlp file in sandbox
280df226684Sopenharmony_ci      HiLog.info(TAG, `resumeFuseLink: ${this.srcFileName}`);
281df226684Sopenharmony_ci      this.homeFeature.resumeFuseLinkHome(GlobalContext.load('uri'), (err: number) => {
282df226684Sopenharmony_ci        if (err !== 0) {
283df226684Sopenharmony_ci          HiLog.error(TAG, `resumeFuseLink failed: ${err}`);
284df226684Sopenharmony_ci        }
285df226684Sopenharmony_ci      });
286df226684Sopenharmony_ci    } else {
287df226684Sopenharmony_ci      HiLog.info(TAG, `closeDLPFile: ${this.srcFileName}`);
288df226684Sopenharmony_ci      this.homeFeature.closeDLPFileHome(GlobalContext.load('uri'), (err: number) => {
289df226684Sopenharmony_ci        if (err !== 0) {
290df226684Sopenharmony_ci          HiLog.error(TAG, `closeDLPFile failed: ${err}`);
291df226684Sopenharmony_ci        }
292df226684Sopenharmony_ci      });
293df226684Sopenharmony_ci    }
294df226684Sopenharmony_ci    if (this.session !== undefined) {
295df226684Sopenharmony_ci      this.session.terminateSelfWithResult({
296df226684Sopenharmony_ci        'resultCode': 0,
297df226684Sopenharmony_ci        'want': {
298df226684Sopenharmony_ci          'bundleName': Constants.DLP_MANAGER_BUNDLE_NAME,
299df226684Sopenharmony_ci        },
300df226684Sopenharmony_ci      });
301df226684Sopenharmony_ci    } else {
302df226684Sopenharmony_ci      if (GlobalContext.load('fileOpenHistoryFromMain')) {
303df226684Sopenharmony_ci        (GlobalContext.load('fileOpenHistoryFromMain') as Map<string, Object>)
304df226684Sopenharmony_ci          .delete(GlobalContext.load('uri') as string)
305df226684Sopenharmony_ci      }
306df226684Sopenharmony_ci      abilityResult.resultCode = 0;
307df226684Sopenharmony_ci      (getContext(this) as common.UIAbilityContext).terminateSelfWithResult(abilityResult);
308df226684Sopenharmony_ci    }
309df226684Sopenharmony_ci  }
310df226684Sopenharmony_ci
311df226684Sopenharmony_ci  async showData(defaultDlpProperty: dlpPermission.DLPProperty) {
312df226684Sopenharmony_ci    this.permissionDict.forEach(async (item, index) => {
313df226684Sopenharmony_ci      this.permissionDict[index].value = $r(getContext(this).resourceManager.getStringSync(item.value!.id))
314df226684Sopenharmony_ci    });
315df226684Sopenharmony_ci    let readOnlyData = (defaultDlpProperty.authUserList?.filter((item: dlpPermission.AuthUser) => {
316df226684Sopenharmony_ci      return item.dlpFileAccess === 1;
317df226684Sopenharmony_ci    })) ?? [];
318df226684Sopenharmony_ci    let editData = defaultDlpProperty.authUserList?.filter((item: dlpPermission.AuthUser) => {
319df226684Sopenharmony_ci      return item.dlpFileAccess === 2;
320df226684Sopenharmony_ci    }) ?? [];
321df226684Sopenharmony_ci    const filterEditFilter = () => {
322df226684Sopenharmony_ci      if (editData.length === 0) {
323df226684Sopenharmony_ci        this.selectedPermissionTypeEdit = this.permissionDict[2];
324df226684Sopenharmony_ci        AppStorage.setOrCreate('hiWriteScope', 'Onlyme');
325df226684Sopenharmony_ci      } else {
326df226684Sopenharmony_ci        this.staffDataArrayEdit = editData;
327df226684Sopenharmony_ci        this.selectedPermissionTypeEdit = this.permissionDict[0];
328df226684Sopenharmony_ci        AppStorage.setOrCreate('hiWriteScope', 'User');
329df226684Sopenharmony_ci      }
330df226684Sopenharmony_ci    };
331df226684Sopenharmony_ci    if ((defaultDlpProperty.everyoneAccessList !== undefined) && (defaultDlpProperty.everyoneAccessList.length > 0)) {
332df226684Sopenharmony_ci      let perm = Math.max(...defaultDlpProperty.everyoneAccessList);
333df226684Sopenharmony_ci      if (perm === dlpPermission.DLPFileAccess.CONTENT_EDIT) {
334df226684Sopenharmony_ci        this.selectedPermissionTypeReadOnly = this.permissionDict[1];
335df226684Sopenharmony_ci        AppStorage.setOrCreate('hiReadScope', 'Everyone');
336df226684Sopenharmony_ci        this.selectedPermissionTypeEdit = this.permissionDict[1];
337df226684Sopenharmony_ci        AppStorage.setOrCreate('hiWriteScope', 'Everyone');
338df226684Sopenharmony_ci        this.staffDataArrayReadOnly = readOnlyData;
339df226684Sopenharmony_ci      } else if (perm === dlpPermission.DLPFileAccess.READ_ONLY) {
340df226684Sopenharmony_ci        this.selectedPermissionTypeReadOnly = this.permissionDict[1];
341df226684Sopenharmony_ci        AppStorage.setOrCreate('hiReadScope', 'Everyone');
342df226684Sopenharmony_ci        this.staffDataArrayReadOnly = [];
343df226684Sopenharmony_ci        filterEditFilter();
344df226684Sopenharmony_ci      } else {
345df226684Sopenharmony_ci        AppStorage.setOrCreate('hiReadScope', 'User');
346df226684Sopenharmony_ci      }
347df226684Sopenharmony_ci    } else {
348df226684Sopenharmony_ci      AppStorage.setOrCreate('hiReadScope', 'User');
349df226684Sopenharmony_ci      this.staffDataArrayReadOnly = readOnlyData;
350df226684Sopenharmony_ci      filterEditFilter(); 
351df226684Sopenharmony_ci    }
352df226684Sopenharmony_ci    try {
353df226684Sopenharmony_ci      await this.getRouterParams();
354df226684Sopenharmony_ci    } catch (err) {
355df226684Sopenharmony_ci      HiLog.error(TAG, `fail to get routerParams`);
356df226684Sopenharmony_ci    }
357df226684Sopenharmony_ci  }
358df226684Sopenharmony_ci
359df226684Sopenharmony_ci  async getRouterParams() {
360df226684Sopenharmony_ci    let routerParams: Record<string, AuthAccount[]> = router.getParams() as Record<string, AuthAccount[]>;
361df226684Sopenharmony_ci    if (routerParams !== undefined) { // router
362df226684Sopenharmony_ci      this.staffDataArrayReadOnly = routerParams.staffDataArrayReadOnly as AuthAccount[];
363df226684Sopenharmony_ci      this.staffDataArrayEdit = routerParams.staffDataArrayEdit as AuthAccount[];
364df226684Sopenharmony_ci
365df226684Sopenharmony_ci      this.routerData = {
366df226684Sopenharmony_ci        'staffDataArrayReadOnly': this.staffDataArrayReadOnly,
367df226684Sopenharmony_ci        'staffDataArrayEdit': this.staffDataArrayEdit,
368df226684Sopenharmony_ci      } as Record<string, AuthAccount[]>;
369df226684Sopenharmony_ci    } else { // ability
370df226684Sopenharmony_ci      await AccountTipsConfig.getConfigTips();
371df226684Sopenharmony_ci      await this.getTextContent();
372df226684Sopenharmony_ci
373df226684Sopenharmony_ci      this.routerData = {
374df226684Sopenharmony_ci        'staffDataArrayReadOnly': this.staffDataArrayReadOnly,
375df226684Sopenharmony_ci        'staffDataArrayEdit': this.staffDataArrayEdit,
376df226684Sopenharmony_ci      } as Record<string, AuthAccount[]>;
377df226684Sopenharmony_ci    }
378df226684Sopenharmony_ci  }
379df226684Sopenharmony_ci
380df226684Sopenharmony_ci  async getTextContent(): Promise<void> {
381df226684Sopenharmony_ci    await this.dealStaffData(this.staffDataArrayReadOnly);
382df226684Sopenharmony_ci    await this.dealStaffData(this.staffDataArrayEdit);
383df226684Sopenharmony_ci  }
384df226684Sopenharmony_ci
385df226684Sopenharmony_ci  async dealStaffData(dataArray: AuthAccount[]): Promise<void> {
386df226684Sopenharmony_ci    let searchReq = dataArray.map(item =>{
387df226684Sopenharmony_ci      return item.authAccount;
388df226684Sopenharmony_ci    });
389df226684Sopenharmony_ci    if (searchReq.length < 1) {
390df226684Sopenharmony_ci      return;
391df226684Sopenharmony_ci    }
392df226684Sopenharmony_ci    let result = await AccountManager.getDomainAccountWithRetry(searchReq);
393df226684Sopenharmony_ci    if (!result || CommonUtil.isEmptyArray(result.getData())) {
394df226684Sopenharmony_ci      return;
395df226684Sopenharmony_ci    }
396df226684Sopenharmony_ci    dataArray.forEach(data =>{
397df226684Sopenharmony_ci      let accountName = data.authAccount;
398df226684Sopenharmony_ci      let match = result?.getData().find(item => accountName === item.accountName);
399df226684Sopenharmony_ci      if (match) {
400df226684Sopenharmony_ci        data.textContent = match[AccountTipsConfig.showContentKey];
401df226684Sopenharmony_ci      }
402df226684Sopenharmony_ci    });
403df226684Sopenharmony_ci  }
404df226684Sopenharmony_ci
405df226684Sopenharmony_ci  async aboutToAppear() {
406df226684Sopenharmony_ci    AccountManager.connectAbility(getContext(this) as common.UIAbilityContext);
407df226684Sopenharmony_ci
408df226684Sopenharmony_ci    this.prepareData = true;
409df226684Sopenharmony_ci    try {
410df226684Sopenharmony_ci      GlobalContext.store('accountInfo', await getOsAccountInfo());
411df226684Sopenharmony_ci    } catch (err) {
412df226684Sopenharmony_ci      HiLog.error(TAG, `getOsAccountInfo failed: ${JSON.stringify(err)}`);
413df226684Sopenharmony_ci      if (this.session !== undefined) {
414df226684Sopenharmony_ci        let errorInfo = GetAlertMessage.getAlertMessage({ code: Constants.ERR_JS_GET_ACCOUNT_ERROR } as BusinessError);
415df226684Sopenharmony_ci        this.showErrorDialog(errorInfo.title, errorInfo.msg);
416df226684Sopenharmony_ci      }
417df226684Sopenharmony_ci      return;
418df226684Sopenharmony_ci    }
419df226684Sopenharmony_ci    let codeMessage = checkDomainAccountInfo(GlobalContext.load('accountInfo') as osAccount.OsAccountInfo);
420df226684Sopenharmony_ci    if (codeMessage) {
421df226684Sopenharmony_ci      if (this.session !== undefined) {
422df226684Sopenharmony_ci        let errorInfo = GetAlertMessage.getAlertMessage(
423df226684Sopenharmony_ci          { code: codeMessage } as BusinessError);
424df226684Sopenharmony_ci        this.showErrorDialog(errorInfo.title, errorInfo.msg);
425df226684Sopenharmony_ci      }
426df226684Sopenharmony_ci      return;
427df226684Sopenharmony_ci    }
428df226684Sopenharmony_ci    if (GlobalContext.load('requestIsFromSandBox') as boolean) {
429df226684Sopenharmony_ci      HiLog.info(TAG, `request from sandbox`);
430df226684Sopenharmony_ci      this.linkFileName = GlobalContext.load('linkFileName') as string;
431df226684Sopenharmony_ci      this.srcFileName = GlobalContext.load('dlpFileName') as string;
432df226684Sopenharmony_ci    } else {
433df226684Sopenharmony_ci      HiLog.info(TAG, `request from normal`);
434df226684Sopenharmony_ci      this.srcFileName = GlobalContext.load('dlpFileName') as string;
435df226684Sopenharmony_ci    }
436df226684Sopenharmony_ci    await this.showData(GlobalContext.load('dlpProperty'));
437df226684Sopenharmony_ci    setTimeout(() => {
438df226684Sopenharmony_ci      this.prepareData = false;
439df226684Sopenharmony_ci    }, Constants.ENCRYPTION_SET_TIMEOUT_TIME)
440df226684Sopenharmony_ci
441df226684Sopenharmony_ci    this.directionStatus = (getContext(this) as common.UIExtensionContext).config.direction ?? -1;
442df226684Sopenharmony_ci    directionStatus((counter) => {
443df226684Sopenharmony_ci      this.directionStatus = counter;
444df226684Sopenharmony_ci    })
445df226684Sopenharmony_ci  }
446df226684Sopenharmony_ci
447df226684Sopenharmony_ci  build() {
448df226684Sopenharmony_ci    GridRow({
449df226684Sopenharmony_ci      columns: {
450df226684Sopenharmony_ci        xs: Constants.XS_COLUMNS,
451df226684Sopenharmony_ci        sm: Constants.SM_COLUMNS,
452df226684Sopenharmony_ci        md: Constants.MD_COLUMNS,
453df226684Sopenharmony_ci        lg: Constants.LG_COLUMNS
454df226684Sopenharmony_ci      },
455df226684Sopenharmony_ci      gutter: Constants.DIALOG_GUTTER
456df226684Sopenharmony_ci    }) {
457df226684Sopenharmony_ci      GridCol({
458df226684Sopenharmony_ci        span: {
459df226684Sopenharmony_ci          xs: Constants.XS_SPAN,
460df226684Sopenharmony_ci          sm: Constants.SM_SPAN,
461df226684Sopenharmony_ci          md: Constants.DIALOG_MD_SPAN,
462df226684Sopenharmony_ci          lg: Constants.DIALOG_LG_SPAN
463df226684Sopenharmony_ci        },
464df226684Sopenharmony_ci        offset: {
465df226684Sopenharmony_ci          xs: Constants.XS_OFFSET,
466df226684Sopenharmony_ci          sm: Constants.SM_OFFSET,
467df226684Sopenharmony_ci          md: Constants.DIALOG_MD_OFFSET,
468df226684Sopenharmony_ci          lg: Constants.DIALOG_LG_OFFSET
469df226684Sopenharmony_ci        }
470df226684Sopenharmony_ci      }) {
471df226684Sopenharmony_ci        Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center,
472df226684Sopenharmony_ci          direction: FlexDirection.Column }) {
473df226684Sopenharmony_ci          Flex({ alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
474df226684Sopenharmony_ci            EncryptingPanel({ processing: $prepareData, loadingType: Constants.LOAD_TYPE_CE })
475df226684Sopenharmony_ci            if (!this.prepareData) {
476df226684Sopenharmony_ci              Column() {
477df226684Sopenharmony_ci                Row() {
478df226684Sopenharmony_ci                  Text($r('app.string.header_title'))
479df226684Sopenharmony_ci                    .fontWeight(FontWeight.Bold)
480df226684Sopenharmony_ci                    .fontFamily($r('app.string.typeface'))
481df226684Sopenharmony_ci                    .fontColor($r('sys.color.ohos_id_color_text_primary'))
482df226684Sopenharmony_ci                    .fontSize($r('sys.float.ohos_id_text_size_dialog_tittle'))
483df226684Sopenharmony_ci                    .width(Constants.HEADER_TEXT_WIDTH)
484df226684Sopenharmony_ci                    .align(Alignment.Start)
485df226684Sopenharmony_ci                }
486df226684Sopenharmony_ci                .width(Constants.HEADER_COLUMN_WIDTH)
487df226684Sopenharmony_ci                .height(Constants.HEADER_COLUMN_HEIGHT)
488df226684Sopenharmony_ci                .padding({
489df226684Sopenharmony_ci                  left: Constants.HEADER_COLUMN_PADDING_LEFT,
490df226684Sopenharmony_ci                  right: Constants.HEADER_COLUMN_PADDING_RIGHT
491df226684Sopenharmony_ci                })
492df226684Sopenharmony_ci                .margin({ bottom: Constants.HEADER_COLUMN_MARGIN_BOTTOM });
493df226684Sopenharmony_ci
494df226684Sopenharmony_ci                Scroll() {
495df226684Sopenharmony_ci                  Column() {
496df226684Sopenharmony_ci                    Row() {
497df226684Sopenharmony_ci                      Text($r('app.string.permissions_are_restricted'))
498df226684Sopenharmony_ci                        .fontWeight(FontWeight.Regular)
499df226684Sopenharmony_ci                        .fontColor($r('sys.color.ohos_id_color_text_secondary'))
500df226684Sopenharmony_ci                        .fontSize($r('sys.float.ohos_id_text_size_body1'))
501df226684Sopenharmony_ci                        .width(Constants.HEADER_TEXT_WIDTH)
502df226684Sopenharmony_ci                        .align(Alignment.Start)
503df226684Sopenharmony_ci                    }
504df226684Sopenharmony_ci                    .width(Constants.HEADER_COLUMN_WIDTH)
505df226684Sopenharmony_ci                    .margin({ bottom: Constants.ENCRYPTION_CHANGE_TIPS_MARGIN_BOTTOM })
506df226684Sopenharmony_ci
507df226684Sopenharmony_ci                    Column() {
508df226684Sopenharmony_ci                      if (this.selectedPermissionTypeReadOnly.data === 'all') {
509df226684Sopenharmony_ci                        Row() {
510df226684Sopenharmony_ci                          Text($r('app.string.header_title_readonly'))
511df226684Sopenharmony_ci                            .fontWeight(FontWeight.Medium)
512df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
513df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
514df226684Sopenharmony_ci                          Text(' : ')
515df226684Sopenharmony_ci                            .fontFamily($r('app.string.typeface'))
516df226684Sopenharmony_ci                            .fontWeight(FontWeight.Regular)
517df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
518df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
519df226684Sopenharmony_ci                          Text($r('app.string.PERMISSION_TYPE_SELECT_ALL'))
520df226684Sopenharmony_ci                            .fontFamily($r('app.string.typeface'))
521df226684Sopenharmony_ci                            .fontWeight(FontWeight.Regular)
522df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
523df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
524df226684Sopenharmony_ci                          SymbolGlyph($r('sys.symbol.info_circle'))
525df226684Sopenharmony_ci                            .fontSize(`${Constants.FOOTER_ROW_PAD_RIGHT}vp`)
526df226684Sopenharmony_ci                            .fontColor([$r('sys.color.icon_secondary')])
527df226684Sopenharmony_ci                            .margin({
528df226684Sopenharmony_ci                              right: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_RIGHT : Constants.AP_TEXT_PAD_LEFT,
529df226684Sopenharmony_ci                              left: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_LEFT : Constants.AP_TEXT_PAD_RIGHT,
530df226684Sopenharmony_ci                            })
531df226684Sopenharmony_ci                            .onClick(() => {
532df226684Sopenharmony_ci                              this.handlePopupReadOnly = !this.handlePopupReadOnly
533df226684Sopenharmony_ci                            })
534df226684Sopenharmony_ci                            .draggable(false)
535df226684Sopenharmony_ci                            .bindPopup(this.handlePopupReadOnly, {
536df226684Sopenharmony_ci                              builder: this.popupBuilderReadOnly,
537df226684Sopenharmony_ci                              placement: SystemUtils.isRTL() ? Placement.BottomRight : Placement.BottomLeft,
538df226684Sopenharmony_ci                              offset: {
539df226684Sopenharmony_ci                                x: SystemUtils.isRTL() ? Constants.POPUP_OFFSET_RTL_X : Constants.POPUP_OFFSET_X
540df226684Sopenharmony_ci                              },
541df226684Sopenharmony_ci                              enableArrow: true,
542df226684Sopenharmony_ci                              showInSubWindow: false,
543df226684Sopenharmony_ci                              onStateChange: (e) => {
544df226684Sopenharmony_ci                                if (!e.isVisible) {
545df226684Sopenharmony_ci                                  this.handlePopupReadOnly = false
546df226684Sopenharmony_ci                                }
547df226684Sopenharmony_ci                              }
548df226684Sopenharmony_ci                            })
549df226684Sopenharmony_ci                        }
550df226684Sopenharmony_ci                        .width(Constants.FOOTER_ROW_WIDTH)
551df226684Sopenharmony_ci                        .margin({
552df226684Sopenharmony_ci                          top: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_TOP,
553df226684Sopenharmony_ci                          bottom: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_BOTTOM
554df226684Sopenharmony_ci                        })
555df226684Sopenharmony_ci                      } else {
556df226684Sopenharmony_ci                        if (this.staffDataArrayReadOnly['length']) {
557df226684Sopenharmony_ci                          Row() {
558df226684Sopenharmony_ci                            Text($r('app.string.header_title_readonly'))
559df226684Sopenharmony_ci                              .fontWeight(FontWeight.Medium)
560df226684Sopenharmony_ci                              .fontColor($r('sys.color.ohos_id_color_text_primary'))
561df226684Sopenharmony_ci                              .fontSize($r('sys.float.ohos_id_text_size_body2'))
562df226684Sopenharmony_ci                            Text(` (${this.staffDataArrayReadOnly['length']}):`)
563df226684Sopenharmony_ci                              .fontFamily($r('app.string.typeface'))
564df226684Sopenharmony_ci                              .fontWeight(FontWeight.Regular)
565df226684Sopenharmony_ci                              .fontColor($r('sys.color.ohos_id_color_text_primary'))
566df226684Sopenharmony_ci                              .fontSize($r('sys.float.ohos_id_text_size_body2'))
567df226684Sopenharmony_ci                            SymbolGlyph($r('sys.symbol.info_circle'))
568df226684Sopenharmony_ci                              .fontSize(`${Constants.FOOTER_ROW_PAD_RIGHT}vp`)
569df226684Sopenharmony_ci                              .fontColor([$r('sys.color.icon_secondary')])
570df226684Sopenharmony_ci                              .margin({
571df226684Sopenharmony_ci                                right: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_RIGHT : Constants.AP_TEXT_PAD_LEFT,
572df226684Sopenharmony_ci                                left: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_LEFT : Constants.AP_TEXT_PAD_RIGHT,
573df226684Sopenharmony_ci                              })
574df226684Sopenharmony_ci                              .onClick(() => {
575df226684Sopenharmony_ci                                this.handlePopupReadOnly = !this.handlePopupReadOnly
576df226684Sopenharmony_ci                              })
577df226684Sopenharmony_ci                              .draggable(false)
578df226684Sopenharmony_ci                              .bindPopup(this.handlePopupReadOnly, {
579df226684Sopenharmony_ci                                builder: this.popupBuilderReadOnly,
580df226684Sopenharmony_ci                                placement: SystemUtils.isRTL() ? Placement.BottomRight : Placement.BottomLeft,
581df226684Sopenharmony_ci                                offset: {
582df226684Sopenharmony_ci                                  x: SystemUtils.isRTL() ? Constants.POPUP_OFFSET_RTL_X : Constants.POPUP_OFFSET_X
583df226684Sopenharmony_ci                                },
584df226684Sopenharmony_ci                                enableArrow: true,
585df226684Sopenharmony_ci                                showInSubWindow: false,
586df226684Sopenharmony_ci                                onStateChange: (e) => {
587df226684Sopenharmony_ci                                  if (!e.isVisible) {
588df226684Sopenharmony_ci                                    this.handlePopupReadOnly = false
589df226684Sopenharmony_ci                                  }
590df226684Sopenharmony_ci                                }
591df226684Sopenharmony_ci                              })
592df226684Sopenharmony_ci                          }
593df226684Sopenharmony_ci                          .width(Constants.FOOTER_ROW_WIDTH)
594df226684Sopenharmony_ci                          .margin({ top: Constants.FOOTER_ROW_MARGIN })
595df226684Sopenharmony_ci
596df226684Sopenharmony_ci                          Flex({
597df226684Sopenharmony_ci                            direction: FlexDirection.Row,
598df226684Sopenharmony_ci                            wrap: FlexWrap.Wrap,
599df226684Sopenharmony_ci                          }) {
600df226684Sopenharmony_ci                            if (this.staffDataArrayReadOnly['length'] > 0) {
601df226684Sopenharmony_ci                              ForEach(
602df226684Sopenharmony_ci                                this.showNamesArrReadOnly,
603df226684Sopenharmony_ci                                (item: AuthAccount, index) => {
604df226684Sopenharmony_ci                                  staffItem({
605df226684Sopenharmony_ci                                    authAccount: item.authAccount,
606df226684Sopenharmony_ci                                    textContent: item.textContent,
607df226684Sopenharmony_ci                                    isActive: false,
608df226684Sopenharmony_ci                                    changeIndex: Number(index),
609df226684Sopenharmony_ci                                  })
610df226684Sopenharmony_ci                                },
611df226684Sopenharmony_ci                                (item: AuthAccount) => item.authAccount
612df226684Sopenharmony_ci                              )
613df226684Sopenharmony_ci                              if (Number(this.hideNamesNumReadOnly) > 0) {
614df226684Sopenharmony_ci                                Row() {
615df226684Sopenharmony_ci                                  if (this.showNamesArrReadOnly.length !== this.staffDataArrayReadOnly['length']) {
616df226684Sopenharmony_ci                                    Text() {
617df226684Sopenharmony_ci                                      Span('+')
618df226684Sopenharmony_ci                                      Span(this.hideNamesNumReadOnly)
619df226684Sopenharmony_ci                                    }
620df226684Sopenharmony_ci                                    .customizeText()
621df226684Sopenharmony_ci                                  }
622df226684Sopenharmony_ci                                  SymbolGlyph($r('sys.symbol.chevron_down'))
623df226684Sopenharmony_ci                                    .fontSize(`${Constants.PP_IMAGE_HEIGHT}vp`)
624df226684Sopenharmony_ci                                    .fontColor([$r('sys.color.ohos_id_color_secondary')])
625df226684Sopenharmony_ci                                    .rotate({
626df226684Sopenharmony_ci                                      angle: !this.readOnlyFlag ?
627df226684Sopenharmony_ci                                        Constants.PP_BUTTON_PAD : Constants.ENCRYPTION_SUCCESS_TRANSLATE
628df226684Sopenharmony_ci                                    })
629df226684Sopenharmony_ci                                    .transition({ type: TransitionType.All, opacity: Constants.PP_BUTTON_PAD })
630df226684Sopenharmony_ci                                }
631df226684Sopenharmony_ci                                .height(Constants.ENCRYPTION_SUCCESS_TOGGLE_HEIGHT)
632df226684Sopenharmony_ci                                .onClick(() => {
633df226684Sopenharmony_ci                                  let showValue = toggleShow(
634df226684Sopenharmony_ci                                    this.staffDataArrayReadOnly,
635df226684Sopenharmony_ci                                    this.showNamesArrReadOnly,
636df226684Sopenharmony_ci                                    this.readOnlyFlag,
637df226684Sopenharmony_ci                                    this.rowNamesLenReadOnly
638df226684Sopenharmony_ci                                  );
639df226684Sopenharmony_ci                                  this.showNamesArrReadOnly = showValue.showNamesArr as AuthAccount[];
640df226684Sopenharmony_ci                                  this.readOnlyFlag = showValue.showFlag as boolean;
641df226684Sopenharmony_ci                                })
642df226684Sopenharmony_ci                              }
643df226684Sopenharmony_ci                            }
644df226684Sopenharmony_ci                          }
645df226684Sopenharmony_ci                          .onAreaChange((oldValue: Area, newValue: Area) => {
646df226684Sopenharmony_ci                            if (oldValue.width ===
647df226684Sopenharmony_ci                              Constants.ENCRYPTION_ON_AREA_CHANGE_WIDTH || newValue.width !== oldValue.width) {
648df226684Sopenharmony_ci                              let nameValue = calculate(newValue, this.staffDataArrayReadOnly);
649df226684Sopenharmony_ci                              this.rowNamesLenReadOnly = nameValue.rowNamesLen as number;
650df226684Sopenharmony_ci                              this.showNamesArrReadOnly = nameValue.showNamesArr as AuthAccount[];
651df226684Sopenharmony_ci                              this.hideNamesNumReadOnly = nameValue.hideNamesNum as string;
652df226684Sopenharmony_ci                              this.readOnlyFlag = false;
653df226684Sopenharmony_ci                            }
654df226684Sopenharmony_ci                          })
655df226684Sopenharmony_ci                          .margin({
656df226684Sopenharmony_ci                            top: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_TOP,
657df226684Sopenharmony_ci                            bottom: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_BOTTOM
658df226684Sopenharmony_ci                          })
659df226684Sopenharmony_ci                        }
660df226684Sopenharmony_ci                      }
661df226684Sopenharmony_ci                      if (['all', 'self'].includes(this.selectedPermissionTypeEdit.data)) {
662df226684Sopenharmony_ci                        Row() {
663df226684Sopenharmony_ci                          Text($r('app.string.header_title_edit'))
664df226684Sopenharmony_ci                            .fontWeight(FontWeight.Medium)
665df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
666df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
667df226684Sopenharmony_ci                          Text(' : ')
668df226684Sopenharmony_ci                            .fontFamily($r('app.string.typeface'))
669df226684Sopenharmony_ci                            .fontWeight(FontWeight.Regular)
670df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
671df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
672df226684Sopenharmony_ci                          Text(this.selectedPermissionTypeEdit.data === 'all' ?
673df226684Sopenharmony_ci                            $r('app.string.PERMISSION_TYPE_SELECT_ALL') : $r('app.string.PERMISSION_TYPE_SELECT_SELF'))
674df226684Sopenharmony_ci                            .fontFamily($r('app.string.typeface'))
675df226684Sopenharmony_ci                            .fontWeight(FontWeight.Regular)
676df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
677df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
678df226684Sopenharmony_ci                          SymbolGlyph($r('sys.symbol.info_circle'))
679df226684Sopenharmony_ci                            .fontSize(`${Constants.FOOTER_ROW_PAD_RIGHT}vp`)
680df226684Sopenharmony_ci                            .fontColor([$r('sys.color.icon_secondary')])
681df226684Sopenharmony_ci                            .margin({
682df226684Sopenharmony_ci                              right: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_RIGHT : Constants.AP_TEXT_PAD_LEFT,
683df226684Sopenharmony_ci                              left: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_LEFT : Constants.AP_TEXT_PAD_RIGHT,
684df226684Sopenharmony_ci                            })
685df226684Sopenharmony_ci                            .onClick(() => {
686df226684Sopenharmony_ci                              this.handlePopupEdit = !this.handlePopupEdit
687df226684Sopenharmony_ci                            })
688df226684Sopenharmony_ci                            .draggable(false)
689df226684Sopenharmony_ci                            .bindPopup(this.handlePopupEdit, {
690df226684Sopenharmony_ci                              builder: this.popupBuilderEdit,
691df226684Sopenharmony_ci                              placement: SystemUtils.isRTL() ? Placement.BottomRight : Placement.BottomLeft,
692df226684Sopenharmony_ci                              offset: {
693df226684Sopenharmony_ci                                x: SystemUtils.isRTL() ? Constants.POPUP_OFFSET_RTL_X : Constants.POPUP_OFFSET_X
694df226684Sopenharmony_ci                              },
695df226684Sopenharmony_ci                              enableArrow: true,
696df226684Sopenharmony_ci                              showInSubWindow: false,
697df226684Sopenharmony_ci                              onStateChange: (e) => {
698df226684Sopenharmony_ci                                if (!e.isVisible) {
699df226684Sopenharmony_ci                                  this.handlePopupEdit = false
700df226684Sopenharmony_ci                                }
701df226684Sopenharmony_ci                              }
702df226684Sopenharmony_ci                            })
703df226684Sopenharmony_ci                        }
704df226684Sopenharmony_ci                        .justifyContent(FlexAlign.Start)
705df226684Sopenharmony_ci                        .width(Constants.FOOTER_ROW_WIDTH)
706df226684Sopenharmony_ci                        .margin({
707df226684Sopenharmony_ci                          top: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_TOP,
708df226684Sopenharmony_ci                          bottom: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_BOTTOM
709df226684Sopenharmony_ci                        })
710df226684Sopenharmony_ci                      } else {
711df226684Sopenharmony_ci                        if (this.staffDataArrayEdit['length']) {
712df226684Sopenharmony_ci                          Row() {
713df226684Sopenharmony_ci                            Text($r('app.string.header_title_edit'))
714df226684Sopenharmony_ci                              .fontWeight(FontWeight.Medium)
715df226684Sopenharmony_ci                              .fontColor($r('sys.color.ohos_id_color_text_primary'))
716df226684Sopenharmony_ci                              .fontSize($r('sys.float.ohos_id_text_size_body2'))
717df226684Sopenharmony_ci                            Text(` (${this.staffDataArrayEdit['length']}):`)
718df226684Sopenharmony_ci                              .fontFamily($r('app.string.typeface'))
719df226684Sopenharmony_ci                              .fontWeight(FontWeight.Regular)
720df226684Sopenharmony_ci                              .fontColor($r('sys.color.ohos_id_color_text_primary'))
721df226684Sopenharmony_ci                              .fontSize($r('sys.float.ohos_id_text_size_body2'))
722df226684Sopenharmony_ci                            SymbolGlyph($r('sys.symbol.info_circle'))
723df226684Sopenharmony_ci                              .fontSize(`${Constants.FOOTER_ROW_PAD_RIGHT}vp`)
724df226684Sopenharmony_ci                              .fontColor([$r('sys.color.icon_secondary')])
725df226684Sopenharmony_ci                              .margin({
726df226684Sopenharmony_ci                                right: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_RIGHT : Constants.AP_TEXT_PAD_LEFT,
727df226684Sopenharmony_ci                                left: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_LEFT : Constants.AP_TEXT_PAD_RIGHT,
728df226684Sopenharmony_ci                              })
729df226684Sopenharmony_ci                              .onClick(() => {
730df226684Sopenharmony_ci                                this.handlePopupEdit = !this.handlePopupEdit
731df226684Sopenharmony_ci                              })
732df226684Sopenharmony_ci                              .draggable(false)
733df226684Sopenharmony_ci                              .bindPopup(this.handlePopupEdit, {
734df226684Sopenharmony_ci                                builder: this.popupBuilderEdit,
735df226684Sopenharmony_ci                                placement: SystemUtils.isRTL() ? Placement.BottomRight : Placement.BottomLeft,
736df226684Sopenharmony_ci                                offset: {
737df226684Sopenharmony_ci                                  x: SystemUtils.isRTL() ? Constants.POPUP_OFFSET_RTL_X : Constants.POPUP_OFFSET_X
738df226684Sopenharmony_ci                                },
739df226684Sopenharmony_ci                                enableArrow: true,
740df226684Sopenharmony_ci                                showInSubWindow: false,
741df226684Sopenharmony_ci                                onStateChange: (e) => {
742df226684Sopenharmony_ci                                  if (!e.isVisible) {
743df226684Sopenharmony_ci                                    this.handlePopupEdit = false
744df226684Sopenharmony_ci                                  }
745df226684Sopenharmony_ci                                }
746df226684Sopenharmony_ci                              })
747df226684Sopenharmony_ci                          }
748df226684Sopenharmony_ci                          .justifyContent(FlexAlign.Start)
749df226684Sopenharmony_ci                          .width(Constants.FOOTER_ROW_WIDTH)
750df226684Sopenharmony_ci
751df226684Sopenharmony_ci                          Flex({
752df226684Sopenharmony_ci                            direction: FlexDirection.Row,
753df226684Sopenharmony_ci                            wrap: FlexWrap.Wrap,
754df226684Sopenharmony_ci                          }) {
755df226684Sopenharmony_ci                            if (this.staffDataArrayEdit['length'] > 0) {
756df226684Sopenharmony_ci                              ForEach(
757df226684Sopenharmony_ci                                this.showNamesArrEdit,
758df226684Sopenharmony_ci                                (item: AuthAccount, index) => {
759df226684Sopenharmony_ci                                  staffItem({
760df226684Sopenharmony_ci                                    authAccount: item.authAccount,
761df226684Sopenharmony_ci                                    textContent: item.textContent,
762df226684Sopenharmony_ci                                    isActive: false,
763df226684Sopenharmony_ci                                    changeIndex: Number(index),
764df226684Sopenharmony_ci                                  })
765df226684Sopenharmony_ci                                },
766df226684Sopenharmony_ci                                (item: AuthAccount) => item.authAccount
767df226684Sopenharmony_ci                              )
768df226684Sopenharmony_ci                              if (Number(this.hideNamesNumEdit) > 0) {
769df226684Sopenharmony_ci                                Row() {
770df226684Sopenharmony_ci                                  if (this.showNamesArrEdit.length !== this.staffDataArrayEdit['length']) {
771df226684Sopenharmony_ci                                    Text() {
772df226684Sopenharmony_ci                                      Span('+')
773df226684Sopenharmony_ci                                      Span(this.hideNamesNumEdit)
774df226684Sopenharmony_ci                                    }
775df226684Sopenharmony_ci                                    .customizeText()
776df226684Sopenharmony_ci                                  }
777df226684Sopenharmony_ci                                  SymbolGlyph($r('sys.symbol.chevron_down'))
778df226684Sopenharmony_ci                                    .fontSize(`${Constants.PP_IMAGE_HEIGHT}vp`)
779df226684Sopenharmony_ci                                    .fontColor([$r('sys.color.ohos_id_color_secondary')])
780df226684Sopenharmony_ci                                    .rotate({
781df226684Sopenharmony_ci                                      angle: !this.editFlag ?
782df226684Sopenharmony_ci                                        Constants.PP_BUTTON_PAD : Constants.ENCRYPTION_SUCCESS_TRANSLATE
783df226684Sopenharmony_ci                                    })
784df226684Sopenharmony_ci                                    .transition({ type: TransitionType.All, opacity: Constants.PP_BUTTON_PAD })
785df226684Sopenharmony_ci                                }
786df226684Sopenharmony_ci                                .height(Constants.ENCRYPTION_SUCCESS_TOGGLE_HEIGHT)
787df226684Sopenharmony_ci                                .onClick(() => {
788df226684Sopenharmony_ci                                  let showValue = toggleShow(
789df226684Sopenharmony_ci                                    this.staffDataArrayEdit,
790df226684Sopenharmony_ci                                    this.showNamesArrEdit,
791df226684Sopenharmony_ci                                    this.editFlag,
792df226684Sopenharmony_ci                                    this.rowNamesLenEdit
793df226684Sopenharmony_ci                                  );
794df226684Sopenharmony_ci                                  this.showNamesArrEdit = showValue.showNamesArr as AuthAccount[];
795df226684Sopenharmony_ci                                  this.editFlag = showValue.showFlag as boolean;
796df226684Sopenharmony_ci                                })
797df226684Sopenharmony_ci                              }
798df226684Sopenharmony_ci                            }
799df226684Sopenharmony_ci                          }
800df226684Sopenharmony_ci                          .onAreaChange((oldValue: Area, newValue: Area) => {
801df226684Sopenharmony_ci                            if (oldValue.width ===
802df226684Sopenharmony_ci                              Constants.ENCRYPTION_ON_AREA_CHANGE_WIDTH || newValue.width !== oldValue.width) {
803df226684Sopenharmony_ci                              let nameValue = calculate(newValue, this.staffDataArrayEdit);
804df226684Sopenharmony_ci                              this.rowNamesLenEdit = nameValue.rowNamesLen as number;
805df226684Sopenharmony_ci                              this.showNamesArrEdit = nameValue.showNamesArr as AuthAccount[];
806df226684Sopenharmony_ci                              this.hideNamesNumEdit = nameValue.hideNamesNum as string;
807df226684Sopenharmony_ci                              this.editFlag = false;
808df226684Sopenharmony_ci                            }
809df226684Sopenharmony_ci                          })
810df226684Sopenharmony_ci                          .margin({
811df226684Sopenharmony_ci                            top: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_TOP,
812df226684Sopenharmony_ci                            bottom: Constants.ENCRYPTION_SUCCESS_ADD_STAFF_MARGIN_BOTTOM
813df226684Sopenharmony_ci                          })
814df226684Sopenharmony_ci                        }
815df226684Sopenharmony_ci                      }
816df226684Sopenharmony_ci                      Column({ space: Constants.HEADER_ROW_FONT_SIZE }) {
817df226684Sopenharmony_ci                        Row() {
818df226684Sopenharmony_ci                          Text($r('app.string.Document_valid_until'))
819df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
820df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
821df226684Sopenharmony_ci                            .fontWeight(FontWeight.Medium)
822df226684Sopenharmony_ci                            .textAlign(TextAlign.Start)
823df226684Sopenharmony_ci                          Text(' :')
824df226684Sopenharmony_ci                            .fontFamily($r('app.string.typeface'))
825df226684Sopenharmony_ci                            .fontWeight(FontWeight.Regular)
826df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_primary'))
827df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
828df226684Sopenharmony_ci                            .margin({
829df226684Sopenharmony_ci                              right: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_LEFT : Constants.AP_TEXT_PAD_RIGHT,
830df226684Sopenharmony_ci                              left: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_RIGHT : Constants.AP_TEXT_PAD_LEFT,
831df226684Sopenharmony_ci                            })
832df226684Sopenharmony_ci                          Text(getTime())
833df226684Sopenharmony_ci                            .fontSize($r('sys.float.ohos_id_text_size_body2'))
834df226684Sopenharmony_ci                            .fontColor($r('sys.color.ohos_id_color_text_secondary'))
835df226684Sopenharmony_ci                            .fontWeight(FontWeight.Regular)
836df226684Sopenharmony_ci                            .width(Constants.HEADER_COLUMN_WIDTH)
837df226684Sopenharmony_ci                            .textAlign(TextAlign.Start)
838df226684Sopenharmony_ci                            .margin({
839df226684Sopenharmony_ci                              right: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_RIGHT : Constants.AP_TEXT_PAD_LEFT,
840df226684Sopenharmony_ci                              left: SystemUtils.isRTL() ? Constants.AP_TEXT_PAD_LEFT : Constants.AP_TEXT_PAD_RIGHT,
841df226684Sopenharmony_ci                            })
842df226684Sopenharmony_ci                        }
843df226684Sopenharmony_ci                        .width(Constants.HEADER_COLUMN_WIDTH)
844df226684Sopenharmony_ci                      }
845df226684Sopenharmony_ci                      .padding({
846df226684Sopenharmony_ci                        bottom: Constants.ENCRYPTION_CHANGE_VALID_UNTIL_MARGIN_BOTTOM
847df226684Sopenharmony_ci                      })
848df226684Sopenharmony_ci                    }
849df226684Sopenharmony_ci                  }
850df226684Sopenharmony_ci                }.constraintSize({
851df226684Sopenharmony_ci                  maxHeight: this.directionStatus ===
852df226684Sopenharmony_ci                    0 ? Constants.CHANGE_MAX_HEIGHT : Constants.ENCRYPTION_SUCCESS_MAX_HEIGHT
853df226684Sopenharmony_ci                })
854df226684Sopenharmony_ci                .padding({
855df226684Sopenharmony_ci                  left: Constants.HEADER_COLUMN_PADDING_LEFT,
856df226684Sopenharmony_ci                  right: Constants.HEADER_COLUMN_PADDING_RIGHT
857df226684Sopenharmony_ci                })
858df226684Sopenharmony_ci                Flex({ direction: FlexDirection.Row }) {
859df226684Sopenharmony_ci                  Button($r('app.string.unencrypted'), { type: ButtonType.Capsule, stateEffect: true })
860df226684Sopenharmony_ci                    .backgroundColor($r('sys.color.ohos_id_color_button_normal'))
861df226684Sopenharmony_ci                    .width(Constants.HEADER_TEXT_WIDTH)
862df226684Sopenharmony_ci                    .controlSize(ControlSize.NORMAL)
863df226684Sopenharmony_ci                    .fontColor($r('sys.color.ohos_id_color_text_primary_activated'))
864df226684Sopenharmony_ci                    .onClick(async (event) => {
865df226684Sopenharmony_ci                      AppStorage.setOrCreate('hiOperation', 'Delete_policy');
866df226684Sopenharmony_ci                      AppStorage.setOrCreate('hiAdvancedSettings', false);
867df226684Sopenharmony_ci                      AppStorage.setOrCreate('hiStorePath', false);
868df226684Sopenharmony_ci                      AppStorage.setOrCreate('hiValidDate', false);
869df226684Sopenharmony_ci                      AppStorage.setOrCreate('hiAccountVerifySucc', 0);
870df226684Sopenharmony_ci                      AppStorage.setOrCreate('hiAccountVerifyFail', 0);
871df226684Sopenharmony_ci                      this.unEncrypt();
872df226684Sopenharmony_ci                      sendDlpManagerFileConfiguration();
873df226684Sopenharmony_ci                    })
874df226684Sopenharmony_ci                    .margin({
875df226684Sopenharmony_ci                      right: SystemUtils.isRTL() ?
876df226684Sopenharmony_ci                        Constants.ADD_STAFF_ITEM_MARGIN_LEFT : Constants.ENCRYPTION_PROTECTION_BUTTON_MARGIN,
877df226684Sopenharmony_ci                      left: SystemUtils.isRTL() ?
878df226684Sopenharmony_ci                        Constants.ENCRYPTION_PROTECTION_BUTTON_MARGIN : Constants.ADD_STAFF_ITEM_MARGIN_LEFT,
879df226684Sopenharmony_ci                    })
880df226684Sopenharmony_ci                  Button($r('app.string.change_encryption'), { type: ButtonType.Capsule, stateEffect: true })
881df226684Sopenharmony_ci                    .backgroundColor($r('sys.color.ohos_id_color_button_normal'))
882df226684Sopenharmony_ci                    .width(Constants.HEADER_TEXT_WIDTH)
883df226684Sopenharmony_ci                    .fontColor($r('sys.color.ohos_id_color_text_primary_activated'))
884df226684Sopenharmony_ci                    .controlSize(ControlSize.NORMAL)
885df226684Sopenharmony_ci                    .onClick(async (event) => {
886df226684Sopenharmony_ci                      router.replaceUrl({
887df226684Sopenharmony_ci                        url: 'pages/encryptionProtection',
888df226684Sopenharmony_ci                        params: this.routerData
889df226684Sopenharmony_ci                      })
890df226684Sopenharmony_ci                    })
891df226684Sopenharmony_ci                    .margin({
892df226684Sopenharmony_ci                      right: SystemUtils.isRTL() ?
893df226684Sopenharmony_ci                        Constants.ENCRYPTION_PROTECTION_BUTTON_MARGIN : Constants.ADD_STAFF_ITEM_MARGIN_LEFT,
894df226684Sopenharmony_ci                      left: SystemUtils.isRTL() ?
895df226684Sopenharmony_ci                        Constants.ADD_STAFF_ITEM_MARGIN_LEFT : Constants.ENCRYPTION_PROTECTION_BUTTON_MARGIN,
896df226684Sopenharmony_ci                    })
897df226684Sopenharmony_ci                }
898df226684Sopenharmony_ci                .margin({
899df226684Sopenharmony_ci                  left: Constants.ENCRYPTION_BUTTON_TO_BUTTON_WIDTH,
900df226684Sopenharmony_ci                  right: Constants.ENCRYPTION_BUTTON_TO_BUTTON_WIDTH,
901df226684Sopenharmony_ci                  bottom: Constants.ENCRYPTION_BUTTON_MARGIN_BOTTOM,
902df226684Sopenharmony_ci                  top: Constants.ENCRYPTION_BUTTON_TO_BUTTON_WIDTH
903df226684Sopenharmony_ci                })
904df226684Sopenharmony_ci              }
905df226684Sopenharmony_ci              .visibility(this.prepareData ? Visibility.Hidden : Visibility.Visible)
906df226684Sopenharmony_ci              .width(Constants.ENCRYPTION_PC_FIXING_WIDTH)
907df226684Sopenharmony_ci              .backgroundColor($r('sys.color.ohos_id_color_dialog_bg'))
908df226684Sopenharmony_ci              .borderRadius($r('sys.float.ohos_id_corner_radius_dialog'))
909df226684Sopenharmony_ci              .constraintSize({
910df226684Sopenharmony_ci                minWidth: Constants.ENCRYPTION_PC_FIXING_WIDTH
911df226684Sopenharmony_ci              })
912df226684Sopenharmony_ci              .backgroundBlurStyle(BlurStyle.COMPONENT_ULTRA_THICK);
913df226684Sopenharmony_ci            }
914df226684Sopenharmony_ci          }
915df226684Sopenharmony_ci        }
916df226684Sopenharmony_ci      }
917df226684Sopenharmony_ci    }
918df226684Sopenharmony_ci    .backgroundColor($r('sys.color.mask_fourth'))
919df226684Sopenharmony_ci  }
920df226684Sopenharmony_ci}
921