1c5c2eed7Sopenharmony_ci/* 2c5c2eed7Sopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3c5c2eed7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c5c2eed7Sopenharmony_ci * you may not use this file except in compliance with the License. 5c5c2eed7Sopenharmony_ci * You may obtain a copy of the License at 6c5c2eed7Sopenharmony_ci * 7c5c2eed7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c5c2eed7Sopenharmony_ci * 9c5c2eed7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c5c2eed7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c5c2eed7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c5c2eed7Sopenharmony_ci * See the License for the specific language governing permissions and 13c5c2eed7Sopenharmony_ci * limitations under the License. 14c5c2eed7Sopenharmony_ci */ 15c5c2eed7Sopenharmony_ci 16c5c2eed7Sopenharmony_ciimport { backBar } from '../common/components/backBar'; 17c5c2eed7Sopenharmony_ciimport router from '@ohos.router'; 18c5c2eed7Sopenharmony_ciimport Constants from '../common/utils/constant'; 19c5c2eed7Sopenharmony_ciimport { permissionGroups } from '../common/model/permissionGroup'; 20c5c2eed7Sopenharmony_ciimport { verifyAccessToken } from '../common/utils/utils'; 21c5c2eed7Sopenharmony_ciimport { OtherPermission, RouterParams3 } from '../common/model/typedef'; 22c5c2eed7Sopenharmony_ciimport { Permissions } from '@ohos.abilityAccessCtrl'; 23c5c2eed7Sopenharmony_ci 24c5c2eed7Sopenharmony_cilet status: number = (router.getParams() as RouterParams3).status; // Status: Allowed, Forbidden 25c5c2eed7Sopenharmony_cilet permissions: Permissions[] = (router.getParams() as RouterParams3).permission; // permissions name 26c5c2eed7Sopenharmony_cilet otherPermissionList: OtherPermission[] = []; // otherPermission List 27c5c2eed7Sopenharmony_cifor (let i = 0; i < permissions.length; i++) { 28c5c2eed7Sopenharmony_ci otherPermissionList.push( 29c5c2eed7Sopenharmony_ci new OtherPermission(permissionGroups.filter(item => item.permissionName == permissions[i])[0].label, permissions[i]) 30c5c2eed7Sopenharmony_ci ); 31c5c2eed7Sopenharmony_ci} 32c5c2eed7Sopenharmony_ci 33c5c2eed7Sopenharmony_ci@Entry 34c5c2eed7Sopenharmony_ci@Component 35c5c2eed7Sopenharmony_cistruct appNamePage { 36c5c2eed7Sopenharmony_ci private backTitle: ResourceStr = (router.getParams() as RouterParams3).backTitle; 37c5c2eed7Sopenharmony_ci private tokenId: number = (router.getParams() as RouterParams3).tokenId; 38c5c2eed7Sopenharmony_ci 39c5c2eed7Sopenharmony_ci build() { 40c5c2eed7Sopenharmony_ci GridRow({ gutter: Constants.GUTTER, columns: { 41c5c2eed7Sopenharmony_ci xs: Constants.XS_COLUMNS, sm: Constants.SM_COLUMNS, md: Constants.MD_COLUMNS, lg: Constants.LG_COLUMNS } }) { 42c5c2eed7Sopenharmony_ci GridCol({ 43c5c2eed7Sopenharmony_ci span: { xs: Constants.XS_SPAN, sm: Constants.SM_SPAN, md: Constants.MD_SPAN, lg: Constants.LG_SPAN }, 44c5c2eed7Sopenharmony_ci offset: { xs: Constants.XS_OFFSET, sm: Constants.SM_OFFSET, md: Constants.MD_OFFSET, lg: Constants.LG_OFFSET } 45c5c2eed7Sopenharmony_ci }) { 46c5c2eed7Sopenharmony_ci Row() { 47c5c2eed7Sopenharmony_ci Column() { 48c5c2eed7Sopenharmony_ci Row() { 49c5c2eed7Sopenharmony_ci backBar({ title: JSON.stringify(this.backTitle), recordable: false }) 50c5c2eed7Sopenharmony_ci } 51c5c2eed7Sopenharmony_ci Row() { 52c5c2eed7Sopenharmony_ci Column() { 53c5c2eed7Sopenharmony_ci Scroll() { 54c5c2eed7Sopenharmony_ci appNameItem() 55c5c2eed7Sopenharmony_ci } 56c5c2eed7Sopenharmony_ci } 57c5c2eed7Sopenharmony_ci }.layoutWeight(Constants.LAYOUT_WEIGHT) 58c5c2eed7Sopenharmony_ci } 59c5c2eed7Sopenharmony_ci } 60c5c2eed7Sopenharmony_ci .height(Constants.FULL_HEIGHT) 61c5c2eed7Sopenharmony_ci .width(Constants.FULL_WIDTH) 62c5c2eed7Sopenharmony_ci .backgroundColor($r('sys.color.background_secondary')) 63c5c2eed7Sopenharmony_ci } 64c5c2eed7Sopenharmony_ci }.backgroundColor($r('sys.color.background_secondary')) 65c5c2eed7Sopenharmony_ci } 66c5c2eed7Sopenharmony_ci 67c5c2eed7Sopenharmony_ci/** 68c5c2eed7Sopenharmony_ci * Lifecycle function, triggered once when this page is displayed 69c5c2eed7Sopenharmony_ci */ 70c5c2eed7Sopenharmony_ci onPageShow() { 71c5c2eed7Sopenharmony_ci permissions.forEach(permission => { 72c5c2eed7Sopenharmony_ci verifyAccessToken(this.tokenId, permission).then((data): void => { 73c5c2eed7Sopenharmony_ci status = data; 74c5c2eed7Sopenharmony_ci }); 75c5c2eed7Sopenharmony_ci }) 76c5c2eed7Sopenharmony_ci } 77c5c2eed7Sopenharmony_ci} 78c5c2eed7Sopenharmony_ci 79c5c2eed7Sopenharmony_ci@Component 80c5c2eed7Sopenharmony_cistruct appNameItem { 81c5c2eed7Sopenharmony_ci private bundleName: string = (router.getParams() as RouterParams3).bundleName; 82c5c2eed7Sopenharmony_ci private tokenId: number = (router.getParams() as RouterParams3).tokenId; 83c5c2eed7Sopenharmony_ci @State otherPermissionListItem: OtherPermission[] = otherPermissionList; // Other permission interface data array 84c5c2eed7Sopenharmony_ci @State isTouch: string = ''; 85c5c2eed7Sopenharmony_ci 86c5c2eed7Sopenharmony_ci @Builder ListItemLayout(item: OtherPermission) { 87c5c2eed7Sopenharmony_ci ListItem() { 88c5c2eed7Sopenharmony_ci Row() { 89c5c2eed7Sopenharmony_ci Column() { 90c5c2eed7Sopenharmony_ci Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) { 91c5c2eed7Sopenharmony_ci Row() { 92c5c2eed7Sopenharmony_ci Text(item.permissionLabel) 93c5c2eed7Sopenharmony_ci .fontSize(Constants.TEXT_MIDDLE_FONT_SIZE) 94c5c2eed7Sopenharmony_ci .fontColor($r('sys.color.font_primary')) 95c5c2eed7Sopenharmony_ci .flexGrow(Constants.FLEX_GROW) 96c5c2eed7Sopenharmony_ci SymbolGlyph($r('sys.symbol.chevron_forward')) 97c5c2eed7Sopenharmony_ci .width(Constants.IMAGE_WIDTH) 98c5c2eed7Sopenharmony_ci .height(Constants.IMAGE_HEIGHT) 99c5c2eed7Sopenharmony_ci .fontSize(Constants.FONT_SIZE_18_vp) 100c5c2eed7Sopenharmony_ci .fontColor([$r('sys.color.icon_tertiary')]) 101c5c2eed7Sopenharmony_ci .fontWeight(FontWeight.Medium) 102c5c2eed7Sopenharmony_ci } 103c5c2eed7Sopenharmony_ci .width(Constants.FULL_WIDTH) 104c5c2eed7Sopenharmony_ci .height(Constants.LISTITEM_ROW_HEIGHT) 105c5c2eed7Sopenharmony_ci } 106c5c2eed7Sopenharmony_ci }.onClick(() => { 107c5c2eed7Sopenharmony_ci router.pushUrl({ 108c5c2eed7Sopenharmony_ci url: 'pages/application-tertiary', 109c5c2eed7Sopenharmony_ci params: { 110c5c2eed7Sopenharmony_ci bundleName: this.bundleName, 111c5c2eed7Sopenharmony_ci backTitle: item.permissionLabel, 112c5c2eed7Sopenharmony_ci permission: [item.permission], 113c5c2eed7Sopenharmony_ci status, 114c5c2eed7Sopenharmony_ci tokenId: this.tokenId 115c5c2eed7Sopenharmony_ci } 116c5c2eed7Sopenharmony_ci }); 117c5c2eed7Sopenharmony_ci }) 118c5c2eed7Sopenharmony_ci } 119c5c2eed7Sopenharmony_ci }.padding({ left: $r('sys.float.ohos_id_card_margin_start'), right: $r('sys.float.ohos_id_card_margin_end') }) 120c5c2eed7Sopenharmony_ci .borderRadius($r('sys.float.ohos_id_corner_radius_default_l')) 121c5c2eed7Sopenharmony_ci .linearGradient((this.isTouch === item.permission) ? { 122c5c2eed7Sopenharmony_ci angle: 90, 123c5c2eed7Sopenharmony_ci direction: GradientDirection.Right, 124c5c2eed7Sopenharmony_ci colors: [['#DCEAF9', 0.0], ['#FAFAFA', 1.0]] 125c5c2eed7Sopenharmony_ci } : { 126c5c2eed7Sopenharmony_ci angle: 90, 127c5c2eed7Sopenharmony_ci direction: GradientDirection.Right, 128c5c2eed7Sopenharmony_ci colors: [[$r('sys.color.comp_background_list_card'), 1], [$r('sys.color.comp_background_list_card'), 1]] 129c5c2eed7Sopenharmony_ci }) 130c5c2eed7Sopenharmony_ci .onTouch(event => { 131c5c2eed7Sopenharmony_ci if (event === undefined) { 132c5c2eed7Sopenharmony_ci return; 133c5c2eed7Sopenharmony_ci } 134c5c2eed7Sopenharmony_ci if (event.type === TouchType.Down) { 135c5c2eed7Sopenharmony_ci this.isTouch = item.permission; 136c5c2eed7Sopenharmony_ci } 137c5c2eed7Sopenharmony_ci if (event.type === TouchType.Up) { 138c5c2eed7Sopenharmony_ci this.isTouch = ''; 139c5c2eed7Sopenharmony_ci } 140c5c2eed7Sopenharmony_ci }) 141c5c2eed7Sopenharmony_ci } 142c5c2eed7Sopenharmony_ci 143c5c2eed7Sopenharmony_ci build() { 144c5c2eed7Sopenharmony_ci Row() { 145c5c2eed7Sopenharmony_ci Column() { 146c5c2eed7Sopenharmony_ci Row() { 147c5c2eed7Sopenharmony_ci List() { 148c5c2eed7Sopenharmony_ci ForEach(this.otherPermissionListItem, (item: OtherPermission) => { 149c5c2eed7Sopenharmony_ci this.ListItemLayout(item) 150c5c2eed7Sopenharmony_ci }, (item: OtherPermission) => JSON.stringify(item)) 151c5c2eed7Sopenharmony_ci }.backgroundColor($r('sys.color.comp_background_list_card')) 152c5c2eed7Sopenharmony_ci .borderRadius($r('sys.float.ohos_id_corner_radius_card')) 153c5c2eed7Sopenharmony_ci .padding(Constants.LIST_PADDING_TOP) 154c5c2eed7Sopenharmony_ci .divider({ 155c5c2eed7Sopenharmony_ci strokeWidth: Constants.DIVIDER, 156c5c2eed7Sopenharmony_ci color: $r('sys.color.comp_divider'), 157c5c2eed7Sopenharmony_ci startMargin: Constants.DEFAULT_MARGIN_START, 158c5c2eed7Sopenharmony_ci endMargin: Constants.DEFAULT_MARGIN_END 159c5c2eed7Sopenharmony_ci }) 160c5c2eed7Sopenharmony_ci }.margin({ top: Constants.ROW_MARGIN_TOP }) 161c5c2eed7Sopenharmony_ci .padding({ left: Constants.LIST_PADDING_LEFT, right: Constants.LISTITEM_PADDING_RIGHT }) 162c5c2eed7Sopenharmony_ci } 163c5c2eed7Sopenharmony_ci .width(Constants.FULL_WIDTH) 164c5c2eed7Sopenharmony_ci .height(Constants.FULL_HEIGHT) 165c5c2eed7Sopenharmony_ci } 166c5c2eed7Sopenharmony_ci } 167c5c2eed7Sopenharmony_ci} 168