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