1c36cf2e9Sopenharmony_ci/* 2c36cf2e9Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd. 3c36cf2e9Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4c36cf2e9Sopenharmony_ci * you may not use this file except in compliance with the License. 5c36cf2e9Sopenharmony_ci * You may obtain a copy of the License at 6c36cf2e9Sopenharmony_ci * 7c36cf2e9Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8c36cf2e9Sopenharmony_ci * 9c36cf2e9Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10c36cf2e9Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11c36cf2e9Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12c36cf2e9Sopenharmony_ci * See the License for the specific language governing permissions and 13c36cf2e9Sopenharmony_ci * limitations under the License. 14c36cf2e9Sopenharmony_ci */ 15c36cf2e9Sopenharmony_ci 16c36cf2e9Sopenharmony_ciimport router from '@ohos.router'; 17c36cf2e9Sopenharmony_ciimport CheckEmptyUtils, { Constants, Log } from '@ohos/common'; 18c36cf2e9Sopenharmony_ciimport common from '@ohos.app.ability.common'; 19c36cf2e9Sopenharmony_ciimport { GlobalThisHelper, GlobalThisStorageKey} from '@ohos/common'; 20c36cf2e9Sopenharmony_ciimport { PreferencesKey} from '@ohos/common'; 21c36cf2e9Sopenharmony_ciimport PreferencesAdapter from '../Common/Adapter/PreferencesAdapter'; 22c36cf2e9Sopenharmony_ciimport {PrivacyStatementDialog} from './PrivacyStatementDialog'; 23c36cf2e9Sopenharmony_ciimport {CancelButton} from './component/BaseComponent'; 24c36cf2e9Sopenharmony_ciimport UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession'; 25c36cf2e9Sopenharmony_ci 26c36cf2e9Sopenharmony_ciconst TAG = 'PrivacyStatementPage'; 27c36cf2e9Sopenharmony_ci 28c36cf2e9Sopenharmony_cilet storage = LocalStorage.getShared(); 29c36cf2e9Sopenharmony_ci@Entry(storage) 30c36cf2e9Sopenharmony_ci@Component 31c36cf2e9Sopenharmony_cistruct PrivacyStatementPage { 32c36cf2e9Sopenharmony_ci private readonly PRIVACY_STATEMENT_STORE: string = 'privacyStatementStore'; 33c36cf2e9Sopenharmony_ci private abilityContext: common.UIExtensionContext | undefined = undefined; 34c36cf2e9Sopenharmony_ci private session?: UIExtensionContentSession = undefined; 35c36cf2e9Sopenharmony_ci private dialogController: CustomDialogController = new CustomDialogController({ 36c36cf2e9Sopenharmony_ci builder: PrivacyStatementDialog(), 37c36cf2e9Sopenharmony_ci autoCancel: false, 38c36cf2e9Sopenharmony_ci customStyle: true, 39c36cf2e9Sopenharmony_ci }) 40c36cf2e9Sopenharmony_ci 41c36cf2e9Sopenharmony_ci aboutToAppear() { 42c36cf2e9Sopenharmony_ci this.abilityContext = GlobalThisHelper.getValue<common.UIExtensionContext>( 43c36cf2e9Sopenharmony_ci GlobalThisStorageKey.KEY_MAIN_ABILITY_CONTEXT); 44c36cf2e9Sopenharmony_ci this.session = storage.get<UIExtensionContentSession>(Constants.SESSION); 45c36cf2e9Sopenharmony_ci } 46c36cf2e9Sopenharmony_ci 47c36cf2e9Sopenharmony_ci build() { 48c36cf2e9Sopenharmony_ci Flex({ justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center }) { 49c36cf2e9Sopenharmony_ci Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.SpaceBetween, alignItems: ItemAlign.Center }) { 50c36cf2e9Sopenharmony_ci Column() { 51c36cf2e9Sopenharmony_ci Image($r('app.media.logo')) 52c36cf2e9Sopenharmony_ci .width($r('app.float.privacy_statement_print_log_width_height')) 53c36cf2e9Sopenharmony_ci .height($r("app.float.privacy_statement_print_log_width_height")) 54c36cf2e9Sopenharmony_ci .margin({top: $r('app.float.print_log_margin_top')}) 55c36cf2e9Sopenharmony_ci Text($r('app.string.welcome')) 56c36cf2e9Sopenharmony_ci .margin({ top: $r('app.float.privacy_statement_text_relative_img_margin_top')}) 57c36cf2e9Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_tertiary')) 58c36cf2e9Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_over_line')) 59c36cf2e9Sopenharmony_ci .fontWeight(FontWeight.Regular) 60c36cf2e9Sopenharmony_ci .height($r('app.float.privacy_statement_text_tertiary_height')) 61c36cf2e9Sopenharmony_ci Text($r('app.string.MainAbility_label')) 62c36cf2e9Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_headline7')) 63c36cf2e9Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_primary')) 64c36cf2e9Sopenharmony_ci .fontWeight(FontWeight.Bolder) 65c36cf2e9Sopenharmony_ci .height($r('app.float.privacy_statement_text_headline_height')) 66c36cf2e9Sopenharmony_ci .margin({top: $r('app.float.privacy_statement_text_relative_text_margin_top')}) 67c36cf2e9Sopenharmony_ci Text($r('app.string.print_slogan')) 68c36cf2e9Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_tertiary')) 69c36cf2e9Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_over_line')) 70c36cf2e9Sopenharmony_ci .fontWeight(FontWeight.Regular) 71c36cf2e9Sopenharmony_ci .margin({top: $r('app.float.privacy_statement_text_relative_text_margin_top')}) 72c36cf2e9Sopenharmony_ci .height($r('app.float.privacy_statement_text_tertiary_height')) 73c36cf2e9Sopenharmony_ci } 74c36cf2e9Sopenharmony_ci 75c36cf2e9Sopenharmony_ci Column() { 76c36cf2e9Sopenharmony_ci Image($r('app.media.ic_public_shield')) 77c36cf2e9Sopenharmony_ci .width($r('app.float.shield_width_height')) 78c36cf2e9Sopenharmony_ci .height($r('app.float.shield_width_height')) 79c36cf2e9Sopenharmony_ci Text() { 80c36cf2e9Sopenharmony_ci ForEach(this.getPrivacyStatementText(), (privacyStatementText: string) => { 81c36cf2e9Sopenharmony_ci if (privacyStatementText === this.abilityContext?.resourceManager.getStringByNameSync('location_information') || 82c36cf2e9Sopenharmony_ci privacyStatementText === this.abilityContext?.resourceManager.getStringByNameSync('print_permission_network')) { 83c36cf2e9Sopenharmony_ci Span(privacyStatementText).fontWeight(FontWeight.Bolder) 84c36cf2e9Sopenharmony_ci } else { 85c36cf2e9Sopenharmony_ci Span(privacyStatementText) 86c36cf2e9Sopenharmony_ci } 87c36cf2e9Sopenharmony_ci }) 88c36cf2e9Sopenharmony_ci Span($r('app.string.about_privacy_statement_text')) 89c36cf2e9Sopenharmony_ci .onClick(() => { 90c36cf2e9Sopenharmony_ci router.replaceUrl({ 91c36cf2e9Sopenharmony_ci url: 'pages/PrivacyStatementWebPage', 92c36cf2e9Sopenharmony_ci params: { 93c36cf2e9Sopenharmony_ci info: true 94c36cf2e9Sopenharmony_ci } 95c36cf2e9Sopenharmony_ci }); 96c36cf2e9Sopenharmony_ci }) 97c36cf2e9Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_hyperlink')) 98c36cf2e9Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body3')) 99c36cf2e9Sopenharmony_ci Span('、') 100c36cf2e9Sopenharmony_ci Span($r('app.string.permissions_notice')) 101c36cf2e9Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_hyperlink')) 102c36cf2e9Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body3')) 103c36cf2e9Sopenharmony_ci .onClick(() => { 104c36cf2e9Sopenharmony_ci this.dialogController.open(); 105c36cf2e9Sopenharmony_ci }) 106c36cf2e9Sopenharmony_ci Span('。') 107c36cf2e9Sopenharmony_ci } 108c36cf2e9Sopenharmony_ci .fontColor($r('sys.color.ohos_id_color_text_primary')) 109c36cf2e9Sopenharmony_ci .fontSize($r('sys.float.ohos_id_text_size_body3')) 110c36cf2e9Sopenharmony_ci .margin({ 111c36cf2e9Sopenharmony_ci top: $r('app.float.privacy_statement_text_relative_img_margin_top'), 112c36cf2e9Sopenharmony_ci left: $r('app.float.privacy_statement_text_margin_left_right'), 113c36cf2e9Sopenharmony_ci right: $r('app.float.privacy_statement_text_margin_left_right') 114c36cf2e9Sopenharmony_ci }) 115c36cf2e9Sopenharmony_ci Row() { 116c36cf2e9Sopenharmony_ci CancelButton({ 117c36cf2e9Sopenharmony_ci cancelLabel: $r('app.string.Cancel'), 118c36cf2e9Sopenharmony_ci cancelWidth: $r('app.float.privacy_statement_button_width'), 119c36cf2e9Sopenharmony_ci cancelHeight: $r('app.float.privacy_statement_button_height'), 120c36cf2e9Sopenharmony_ci cancelClick: () => { 121c36cf2e9Sopenharmony_ci this.session?.terminateSelf(); 122c36cf2e9Sopenharmony_ci } 123c36cf2e9Sopenharmony_ci }) 124c36cf2e9Sopenharmony_ci .margin({right: $r('app.float.privacy_statement_button_space')}) 125c36cf2e9Sopenharmony_ci Button($r('app.string.Agree')) 126c36cf2e9Sopenharmony_ci .onClick(() => { 127c36cf2e9Sopenharmony_ci this.agreePrivacyStatement(); 128c36cf2e9Sopenharmony_ci router.replaceUrl({url: 'pages/PrintPage', params: storage}); 129c36cf2e9Sopenharmony_ci }) 130c36cf2e9Sopenharmony_ci .width($r('app.float.privacy_statement_button_width')) 131c36cf2e9Sopenharmony_ci .height($r('app.float.privacy_statement_button_height')) 132c36cf2e9Sopenharmony_ci } 133c36cf2e9Sopenharmony_ci .margin({ 134c36cf2e9Sopenharmony_ci top: $r('app.float.privacy_statement_button_to_text_margin_top'), 135c36cf2e9Sopenharmony_ci bottom: $r('app.float.privacy_statement_button_margin_bottom'), 136c36cf2e9Sopenharmony_ci }) 137c36cf2e9Sopenharmony_ci } 138c36cf2e9Sopenharmony_ci } 139c36cf2e9Sopenharmony_ci } 140c36cf2e9Sopenharmony_ci .width('100%') 141c36cf2e9Sopenharmony_ci .height('100%') 142c36cf2e9Sopenharmony_ci } 143c36cf2e9Sopenharmony_ci 144c36cf2e9Sopenharmony_ci async agreePrivacyStatement() { 145c36cf2e9Sopenharmony_ci Log.info(TAG, "agreePrivacyStatement"); 146c36cf2e9Sopenharmony_ci PreferencesAdapter.getInstance().getOrCreatePreferencesSync(this.PRIVACY_STATEMENT_STORE).then((successGet) => { 147c36cf2e9Sopenharmony_ci Log.info(TAG, 'agreePrivacyStatement getOrCreatePreferencesSync successGet: ' + successGet); 148c36cf2e9Sopenharmony_ci if (successGet) { 149c36cf2e9Sopenharmony_ci PreferencesAdapter.getInstance().putValue(PreferencesKey.KEY_PRIVACY_STATEMENT_PREFERENCES, true).then((successPut) => { 150c36cf2e9Sopenharmony_ci Log.info(TAG, 'agreePrivacyStatement putValue successPut: ' + successPut); 151c36cf2e9Sopenharmony_ci if (successPut) { 152c36cf2e9Sopenharmony_ci PreferencesAdapter.getInstance().flush(); 153c36cf2e9Sopenharmony_ci } 154c36cf2e9Sopenharmony_ci }) 155c36cf2e9Sopenharmony_ci } 156c36cf2e9Sopenharmony_ci }); 157c36cf2e9Sopenharmony_ci } 158c36cf2e9Sopenharmony_ci 159c36cf2e9Sopenharmony_ci private getPrivacyStatementText() : Array<string> { 160c36cf2e9Sopenharmony_ci let privacyStatementTextList = new Array<string>(); 161c36cf2e9Sopenharmony_ci if (CheckEmptyUtils.isEmpty(this.abilityContext)) { 162c36cf2e9Sopenharmony_ci Log.warn(TAG, 'getPrivacyStatementText abilityContext is invalid.'); 163c36cf2e9Sopenharmony_ci return privacyStatementTextList; 164c36cf2e9Sopenharmony_ci } 165c36cf2e9Sopenharmony_ci let privacyStatementText = this.abilityContext!.resourceManager.getStringByNameSync('privacy_statement_text'); 166c36cf2e9Sopenharmony_ci let printPermissionNetwork = this.abilityContext!.resourceManager.getStringByNameSync('print_permission_network'); 167c36cf2e9Sopenharmony_ci let locationInformation = this.abilityContext!.resourceManager.getStringByNameSync('location_information'); 168c36cf2e9Sopenharmony_ci 169c36cf2e9Sopenharmony_ci let privacyStatementTexts = privacyStatementText.split(printPermissionNetwork); 170c36cf2e9Sopenharmony_ci privacyStatementTextList.push(privacyStatementTexts[0]); 171c36cf2e9Sopenharmony_ci privacyStatementTextList.push(printPermissionNetwork); 172c36cf2e9Sopenharmony_ci privacyStatementTexts = privacyStatementTexts[1].split(locationInformation); 173c36cf2e9Sopenharmony_ci privacyStatementTextList.push(privacyStatementTexts[0]); 174c36cf2e9Sopenharmony_ci privacyStatementTextList.push(locationInformation); 175c36cf2e9Sopenharmony_ci privacyStatementTextList.push(privacyStatementTexts[1]); 176c36cf2e9Sopenharmony_ci return privacyStatementTextList; 177c36cf2e9Sopenharmony_ci } 178c36cf2e9Sopenharmony_ci}