Browse Source

修复订阅webdavManager循环查询queryWebDavAccountsFromDB的bug

onecold 9 months ago
parent
commit
f7b880538d

+ 10 - 14
entry/src/main/ets/common/util/WebdavManager.ets

@@ -110,10 +110,10 @@ export class WebdavManager {
 
   public notifyObservers(event: string): void {
     Logger.info(TAG, '通知观察者:', event);
-    Logger.debug(TAG, '观察者数量:', this.observers.length.toString());
+    Logger.info(TAG, '观察者数量:', this.observers.length.toString());
     for (let i = 0; i < this.observers.length; i++) {
       const observer = this.observers[i];
-      Logger.debug(TAG, '调用观察者', i.toString(), ',事件:', event);
+      Logger.info(TAG, '调用观察者', i.toString(), ',事件:', event);
       observer(event);
     }
   }
@@ -150,12 +150,12 @@ export class WebdavManager {
   }
 
   // 从数据库查询所有账户
-  public async queryWebDavAccountsFromDB(notify: boolean = true): Promise<void> {
+  public async queryWebDavAccountsFromDB(): Promise<void> {
     try {
       const predicates = new relationalStore.RdbPredicates(this.webDavTable);
       const columns = ['id', 'name', 'isActivate', 'host', 'localHost', 'isUseLocalHost',
-                      'port', 'filepath', 'imageFilePath', 'lyricFilePath', 'uploadFilePath',
-                      'account', 'password', 'enableHttps'];
+        'port', 'filepath', 'imageFilePath', 'lyricFilePath', 'uploadFilePath',
+        'account', 'password', 'enableHttps'];
 
       const resultSet = await this.dataBaseUtil.queryData(this.webDavTable, columns, predicates);
 
@@ -182,15 +182,11 @@ export class WebdavManager {
       resultSet.close();
 
       Logger.info(TAG, '从数据库加载了', this.webDavAccounts.length.toString(), '个WebDAV账户');
-      if (notify) {
-        this.notifyObservers(WebdavManagerStates.QueryAccountsSucceed);
-      }
+      this.notifyObservers(WebdavManagerStates.QueryAccountsSucceed);
     } catch (err) {
       const error = err as Error;
       Logger.error(TAG, '查询WebDAV账户失败:', error.message);
-      if (notify) {
-        this.notifyObservers(WebdavManagerStates.QueryAccountsFailed);
-      }
+      this.notifyObservers(WebdavManagerStates.QueryAccountsFailed);
       throw error;
     }
   }
@@ -230,7 +226,7 @@ export class WebdavManager {
       await this.dataBaseUtil.insertData(this.webDavTable, values);
       Logger.info(TAG, '插入WebDAV账户成功:', name);
 
-      await this.queryWebDavAccountsFromDB(false); // 不通知观察者,避免循环
+      await this.queryWebDavAccountsFromDB();
       this.notifyObservers(WebdavManagerStates.InsertAccountSucceed);
     } catch (err) {
       const error = err as Error;
@@ -265,7 +261,7 @@ export class WebdavManager {
       await this.dataBaseUtil.updateData(this.webDavTable, values, predicates);
       Logger.info(TAG, '更新WebDAV账户成功:', account.name);
 
-      await this.queryWebDavAccountsFromDB(false); // 不通知观察者,避免循环
+      await this.queryWebDavAccountsFromDB();
       this.notifyObservers(WebdavManagerStates.EditAccountSucceed);
     } catch (err) {
       const error = err as Error;
@@ -284,7 +280,7 @@ export class WebdavManager {
       await this.dataBaseUtil.deleteData(predicates);
       Logger.info(TAG, '删除WebDAV账户成功:', account.name);
 
-      await this.queryWebDavAccountsFromDB(false); // 不通知观察者,避免循环
+      await this.queryWebDavAccountsFromDB();
       this.notifyObservers(WebdavManagerStates.RemoveAccountSucceed);
     } catch (err) {
       const error = err as Error;

+ 4 - 10
entry/src/main/ets/pages/NewIndex.ets

@@ -1487,9 +1487,6 @@ struct NewIndex {
         // 强制触发UI更新
         this.playlistList = playlists.slice()
         LogUtil.info('heanup NewIndex', `成功加载 ${playlists.length} 个歌单`)
-        playlists.forEach((playlist, index) => {
-          LogUtil.info('heanup NewIndex', `歌单${index + 1}: ${playlist.name}, 歌曲数: ${playlist.songCount}`)
-        })
       } else {
         LogUtil.warn('heanup NewIndex', '歌单表未初始化')
       }
@@ -1510,15 +1507,15 @@ struct NewIndex {
       await this.webdavManager.createWebDavTableInDB()
 
       // 订阅WebDAV管理器事件
-      this.webdavManager.subscribe((event: string) => {
+      this.webdavManager.webdavManager((event: string) => {
         LogUtil.info('heanup NewIndex', '收到WebDAV事件:', event)
         if (event === 'QueryAccountsSucceed') {
-          this.loadWebDavAccounts()
+          this.webDavAccounts = this.webdavManager.getAllWebDavAccounts().slice()
         }
       })
 
-      // 加载WebDAV账户
-      await this.loadWebDavAccounts()
+      // 首页EntryAblility去加载WebDAV账户了。所以这边不加载
+      // await this.loadWebDavAccounts()
 
       LogUtil.info('heanup NewIndex', 'WebDAV管理器初始化成功')
     } catch (error) {
@@ -1536,9 +1533,6 @@ struct NewIndex {
       // 强制触发UI更新
       this.webDavAccounts = this.webdavManager.getAllWebDavAccounts().slice()
       LogUtil.info('heanup NewIndex', `成功加载 ${this.webDavAccounts.length} 个WebDAV账户`)
-      this.webDavAccounts.forEach((account, index) => {
-        LogUtil.info('heanup NewIndex', `WebDAV账户${index + 1}: ${account.name}, 激活状态: ${account.isActivate}`)
-      })
     } catch (error) {
       LogUtil.error('heanup NewIndex', `加载WebDAV账户列表失败: ${(error as Error).message}`)
     }

+ 0 - 4
entry/src/main/ets/pages/PlaylistDetailPage.ets

@@ -1478,10 +1478,6 @@ export function emptyView(themeColor: string, isDarkMode: boolean = false) {
       // 背景圆圈
       Circle({ width: 160, height: 160 })
         .fill(themeColorWithAlpha(themeColor, 0.08, isDarkMode))
-        .border({
-          width: 2,
-          color: themeColorWithAlpha(themeColor, 0.1, isDarkMode)
-        })
 
       // 中间圆圈
       Circle({ width: 120, height: 120 })

+ 2 - 3
entry/src/main/ets/view/LocalMusic.ets

@@ -1727,9 +1727,8 @@ export struct LocalMusic {
     }
     DialogHelper.showActionSheetDialog({
       title: "请选择添加方式(建议歌词文件一起导入)",
-      // sheets: ["新建歌单", "手动导入", "自动导入"],
       sheets: [
-        { value: "新建歌单", fontColor: $r('app.color.text_color') },
+        { value: "新建文件夹", fontColor: $r('app.color.text_color') },
         { value: "手动导入", fontColor: $r('app.color.text_color') },
         { value: "自动导入", fontColor: $r('app.color.text_color') },
         { value: "全选导入", fontColor: $r('app.color.text_color') },
@@ -1743,7 +1742,7 @@ export struct LocalMusic {
             if (this.modeType === 0) {
               this.showMkDialog()
             } else {
-              ToastUtil.showToast('请切换到首页才能新建歌单!')
+              ToastUtil.showToast('请切换到首页才能新建文件夹!')
             }
 
             break;