1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import type common from '@ohos.app.ability.common'; 17import update from '@ohos.update'; 18import type { Features, ChangelogType, CountDownDialogType } from '../const/update_const'; 19 20/** 21 * 升级控制接口 22 * 23 * @since 2022-12-01 24 */ 25export interface IUpgradeControl { 26 /** 27 * 升级UX 28 */ 29 page: IPage, 30 31 /** 32 * 升级提醒 33 */ 34 notify: INotify 35} 36 37/** 38 * 更新日志 39 * 40 * @since 2022-12-01 41 */ 42export interface ChangelogInfo { 43 /** 44 * 版本号 45 */ 46 version?: string; 47 48 /** 49 * 版本大小 50 */ 51 size?: string; 52 53 /** 54 * 更新日志 55 */ 56 content: string; 57 58 /** 59 * 更新日志类型 60 */ 61 displayType?: ChangelogType; 62 63 /** 64 * 更新日志--概述 65 */ 66 headFeatures?: Features; 67 68 /** 69 * 更新日志--更新注意事项 70 */ 71 endFeatures?: Features; 72 73 /** 74 * 更新日志--具体内容 75 */ 76 contentFeatures?: Array<Features>; 77} 78 79/** 80 * 倒计时弹框信息 81 * 82 * @since 2022-12-01 83 */ 84export interface CountDownDialogInfo { 85 /** 86 * 弹框消息体 87 */ 88 dialogText: Resource; 89 90 /** 91 * 弹框类型 92 */ 93 dialogType: CountDownDialogType; 94} 95 96/** 97 * 界面数据 98 * 99 * @since 2022-12-01 100 */ 101export interface VersionPageInfo { 102 /** 103 * 版本号 104 */ 105 version: string; 106 107 /** 108 * 版本大小 109 */ 110 size?: number; 111 112 /** 113 * 生效模式 114 */ 115 effectiveMode?: update.EffectiveMode; 116 117 /** 118 * 更新日志 119 */ 120 changelog: ChangelogInfo; 121 122 /** 123 * 倒计时弹框显示内容 124 */ 125 countDownDialogInfo?: CountDownDialogInfo; 126} 127 128/** 129 * ux页面显示内容 130 * 131 * @since 2022-12-01 132 */ 133export interface IPage { 134 /** 135 * 取新版本数据 136 * 137 * @param versionComponents 升级包 138 * @param componentDescriptions 更新日志 139 * @return Promise<VersionPageInfo> 具体的新版本数据 140 */ 141 getNewVersionPageInfo(versionComponents: Array<update.VersionComponent>, 142 componentDescriptions?: Array<update.ComponentDescription>): Promise<VersionPageInfo>; 143 144 /** 145 * 取当前版本数据 146 * 147 * @param versionComponents 升级包 148 * @param componentDescriptions 更新日志 149 * @return VersionPageInfo 具体的当前版本数据 150 */ 151 getCurrentVersionPageInfo(versionComponents: Array<update.VersionComponent>, 152 componentDescriptions: Array<update.ComponentDescription>): VersionPageInfo; 153} 154 155/** 156 * 提醒 157 * 158 * @since 2022-12-01 159 */ 160export interface INotify { 161 /** 162 * 下载进度通知 163 * 164 * @param version 版本号 165 * @param progress 进度 166 * @param context 上下文 167 */ 168 showDownloading(version: string, progress: number, context: common.Context): Promise<void>; 169 170 /** 171 * 升级失败通知 172 * 173 * @param versionName 版本号 174 * @param context 上下文 175 */ 176 showUpgradeFailed(versionName: string, context: common.Context): Promise<void>; 177 178 /** 179 * 升级成功通知 180 * 181 * @param versionName 版本号 182 * @param context 上下文 183 */ 184 showUpgradeSuccess(versionName: string, context: common.Context): Promise<void>; 185 186 /** 187 * 安装中通知 188 * 189 * @param version 版本号 190 * @param progress 进度 191 * @param context 上下文 192 */ 193 showInstalling(version: string, progress: number, context: common.Context): Promise<void> 194 195 /** 196 * 取消所有通知 197 */ 198 cancelAll(): Promise<void>; 199} 200 201