| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**
- * 更新日志管理器
- * 负责管理更新日志的显示逻辑、版本检查等功能
- */
- import { AppUtil, PreferencesUtil } from '@pura/harmony-utils';
- import { UpdateConstants } from '../constants/UpdateConstants';
- import Logger from './Logger';
- export class UpdateLogManager {
- private static readonly TAG = 'UpdateLogManager';
- /**
- * 检查并显示更新日志
- * @returns Promise<boolean> 是否显示了更新日志
- */
- public static async checkAndShowUpdateLog(): Promise<boolean> {
- try {
- if (!UpdateConstants.ENABLE_UPDATE_LOG) {
- Logger.info(UpdateLogManager.TAG, '更新日志功能已禁用');
- return false;
- }
- const shouldShow = UpdateLogManager.shouldShowUpdateLog();
- if (!shouldShow) {
- Logger.info(UpdateLogManager.TAG, '无需显示更新日志');
- return false;
- }
- Logger.info(UpdateLogManager.TAG, '准备显示更新日志弹窗');
- return true;
- } catch (error) {
- Logger.error(UpdateLogManager.TAG, '检查更新日志失败:' + error);
- return false;
- }
- }
- /**
- * 检查是否需要显示更新日志
- */
- private static shouldShowUpdateLog(): boolean {
- try {
- const currentVersion = UpdateLogManager.getCurrentVersion();
- const lastShownVersion = PreferencesUtil.getStringSync('last_shown_update_version', '');
- // 如果配置为每次启动都检查
- if (UpdateConstants.CHECK_ON_EVERY_LAUNCH) {
- Logger.info(UpdateLogManager.TAG, '配置为每次启动都显示更新日志');
- return true;
- }
- // 检查版本是否更新
- const isVersionUpdated = lastShownVersion !== currentVersion;
- if (isVersionUpdated) {
- Logger.info(UpdateLogManager.TAG, `检测到版本更新:${lastShownVersion} -> ${currentVersion}`);
- }
- return isVersionUpdated;
- } catch (error) {
- Logger.error(UpdateLogManager.TAG, '检查更新日志显示条件失败:' + error);
- return false;
- }
- }
- /**
- * 获取当前应用版本号
- */
- private static getCurrentVersion(): string {
- try {
- return AppUtil.getVersionName();
- } catch (error) {
- Logger.error(UpdateLogManager.TAG, '获取应用版本号失败:' + error);
- return '1.0.0';
- }
- }
- /**
- * 标记当前版本的更新日志已显示
- */
- public static markCurrentVersionShown(): void {
- try {
- const currentVersion = UpdateLogManager.getCurrentVersion();
- PreferencesUtil.putSync('last_shown_update_version', currentVersion);
- Logger.info(UpdateLogManager.TAG, `已标记版本 ${currentVersion} 的更新日志为已显示`);
- } catch (error) {
- Logger.error(UpdateLogManager.TAG, '标记更新日志已显示失败:' + error);
- }
- }
- /**
- * 重置更新日志显示状态(用于测试)
- */
- public static resetUpdateLogStatus(): void {
- try {
- PreferencesUtil.deleteSync('last_shown_update_version');
- Logger.info(UpdateLogManager.TAG, '已重置更新日志显示状态');
- } catch (error) {
- Logger.error(UpdateLogManager.TAG, '重置更新日志显示状态失败:' + error);
- }
- }
- }
|