• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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