19b19030aSopenharmony_ci/* 29b19030aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 39b19030aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 49b19030aSopenharmony_ci * you may not use this file except in compliance with the License. 59b19030aSopenharmony_ci * You may obtain a copy of the License at 69b19030aSopenharmony_ci * 79b19030aSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 89b19030aSopenharmony_ci * 99b19030aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 109b19030aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 119b19030aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 129b19030aSopenharmony_ci * See the License for the specific language governing permissions and 139b19030aSopenharmony_ci * limitations under the License. 149b19030aSopenharmony_ci */ 159b19030aSopenharmony_ci 169b19030aSopenharmony_ciimport update from '@ohos.update'; 179b19030aSopenharmony_ciimport { ChangelogType, CountDownDialogType } from '@ohos/common/src/main/ets/const/update_const'; 189b19030aSopenharmony_ciimport { IPage, VersionPageInfo } from '@ohos/common/src/main/ets/manager/UpgradeInterface'; 199b19030aSopenharmony_ciimport { UpdateUtils } from '@ohos/common/src/main/ets/util/UpdateUtils'; 209b19030aSopenharmony_ciimport { FormatUtils } from '@ohos/common/src/main/ets/util/FormatUtils'; 219b19030aSopenharmony_ciimport VersionUtils from './util/VersionUtils'; 229b19030aSopenharmony_ci 239b19030aSopenharmony_ci/** 249b19030aSopenharmony_ci * ota的ux显示数据 259b19030aSopenharmony_ci * 269b19030aSopenharmony_ci * @since 2022-12-01 279b19030aSopenharmony_ci */ 289b19030aSopenharmony_ciexport class OtaPage implements IPage { 299b19030aSopenharmony_ci /** 309b19030aSopenharmony_ci * 取新版本数据 319b19030aSopenharmony_ci * 329b19030aSopenharmony_ci * @param versionComponents 升级包 339b19030aSopenharmony_ci * @param componentDescriptions 更新日志 349b19030aSopenharmony_ci * @return Promise<VersionPageInfo> 具体的新版本数据 359b19030aSopenharmony_ci */ 369b19030aSopenharmony_ci public async getNewVersionPageInfo(versionComponents: Array<update.VersionComponent>, 379b19030aSopenharmony_ci componentDescriptions?: Array<update.ComponentDescription>): Promise<VersionPageInfo> { 389b19030aSopenharmony_ci let component: update.VersionComponent = versionComponents.filter((component: update.VersionComponent) => { 399b19030aSopenharmony_ci return component.componentType == update.ComponentType.OTA; 409b19030aSopenharmony_ci })?.[0]; 419b19030aSopenharmony_ci let componentId: string = component?.componentId; 429b19030aSopenharmony_ci let description: string = ''; 439b19030aSopenharmony_ci if (componentDescriptions) { 449b19030aSopenharmony_ci description = UpdateUtils.obtainDescription(componentDescriptions, componentId); 459b19030aSopenharmony_ci } 469b19030aSopenharmony_ci let isABInstall = await VersionUtils.isABInstall(); 479b19030aSopenharmony_ci const countDownTimes = 20; 489b19030aSopenharmony_ci 499b19030aSopenharmony_ci return { 509b19030aSopenharmony_ci version: component.displayVersion, 519b19030aSopenharmony_ci size: component.size, 529b19030aSopenharmony_ci effectiveMode: component.effectiveMode, 539b19030aSopenharmony_ci changelog: { 549b19030aSopenharmony_ci version: component.displayVersion, 559b19030aSopenharmony_ci size: FormatUtils.formatFileSize(component.size), 569b19030aSopenharmony_ci displayType: ChangelogType.PICTURE_AND_TEXT, 579b19030aSopenharmony_ci content: description 589b19030aSopenharmony_ci }, 599b19030aSopenharmony_ci countDownDialogInfo: { 609b19030aSopenharmony_ci dialogText: isABInstall ? 619b19030aSopenharmony_ci $r('app.string.count_down_message_ab', component.displayVersion, countDownTimes) : 629b19030aSopenharmony_ci $r('app.string.count_down_message_recovery', component.displayVersion, countDownTimes), 639b19030aSopenharmony_ci dialogType: isABInstall ? CountDownDialogType.OTA_AB : CountDownDialogType.OTA 649b19030aSopenharmony_ci } 659b19030aSopenharmony_ci }; 669b19030aSopenharmony_ci } 679b19030aSopenharmony_ci 689b19030aSopenharmony_ci /** 699b19030aSopenharmony_ci * 取当前版本数据 709b19030aSopenharmony_ci * 719b19030aSopenharmony_ci * @param versionComponents 升级包 729b19030aSopenharmony_ci * @param componentDescriptions 更新日志 739b19030aSopenharmony_ci * @return VersionPageInfo 具体的当前版本数据 749b19030aSopenharmony_ci */ 759b19030aSopenharmony_ci public getCurrentVersionPageInfo(versionComponents: Array<update.VersionComponent>, 769b19030aSopenharmony_ci componentDescriptions: Array<update.ComponentDescription>): VersionPageInfo { 779b19030aSopenharmony_ci let component: update.VersionComponent = versionComponents.filter((component: update.VersionComponent) => { 789b19030aSopenharmony_ci return component.componentType == update.ComponentType.OTA; 799b19030aSopenharmony_ci })?.[0]; 809b19030aSopenharmony_ci let componentId: string = component?.componentId; 819b19030aSopenharmony_ci let description: string = ''; 829b19030aSopenharmony_ci if (componentDescriptions) { 839b19030aSopenharmony_ci description = UpdateUtils.obtainDescription(componentDescriptions, componentId); 849b19030aSopenharmony_ci } 859b19030aSopenharmony_ci return { 869b19030aSopenharmony_ci version: VersionUtils.getCurrentDisplayVersion(), 879b19030aSopenharmony_ci changelog: { 889b19030aSopenharmony_ci version: VersionUtils.getCurrentDisplayVersion(), 899b19030aSopenharmony_ci content: description 909b19030aSopenharmony_ci } 919b19030aSopenharmony_ci }; 929b19030aSopenharmony_ci } 939b19030aSopenharmony_ci}