From 9b7803349e45f61c8d971d78b51f98485bb377e3 Mon Sep 17 00:00:00 2001
From: Hiveer <ljp.hiveer@gmail.com>
Date: Sat, 25 Jan 2025 10:27:51 +0800
Subject: [PATCH 1/3] fix show broadcast banner bug

---
 frontend/src/components/navbar/Broadcast.vue | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/frontend/src/components/navbar/Broadcast.vue b/frontend/src/components/navbar/Broadcast.vue
index aaf6f0ee8..b5d3a06ea 100644
--- a/frontend/src/components/navbar/Broadcast.vue
+++ b/frontend/src/components/navbar/Broadcast.vue
@@ -1,5 +1,5 @@
 <template>
-  <div v-if="showBanner" :class="bannerClass" class="min-h-[72px] w-full flex items-center py-4">
+  <div v-if="showBanner.show" :class="bannerClass" class="min-h-[72px] w-full flex items-center py-4">
     <div class="page-responsive-width flex justify-between md:gap-6 md:items-start">
       <div class="flex items-center gap-4 md:flex-col md:items-start max-w-[80%]">
         <div v-if="isLight" class="flex justify-center items-center rounded-[10px] p-3 bg-white border border-gray-200">
@@ -22,8 +22,10 @@
   import { ElMessage } from 'element-plus';
   import { computed, onMounted } from 'vue';
   import SvgIcon from '../shared/SvgIcon.vue';
+  import { useStorage } from '@vueuse/core'
 
-  const showBanner = ref(false)
+
+  const showBanner = useStorage('show_banner', {initialied: false, show: false}, sessionStorage)
 
   const activeBroadcast = ref({
     theme: '',
@@ -51,14 +53,19 @@
       activeBroadcast.value.status = data.value.data.status
       activeBroadcast.value.bc_type = data.value.data.bc_type
       activeBroadcast.value.content = data.value.data.content
-      showBanner.value = true
+      if (!showBanner.value.initialied) {
+        showBanner.value.initialied = true
+        showBanner.value.show = true
+      }
     } else {
+      showBanner.value.initialied = false
+      showBanner.value.show = false
       ElMessage.warning(error.value.msg)
     }
   }
 
   const closeBanner = () => {
-    showBanner.value = false
+    showBanner.value.show = false
   }
 
   onMounted(() => {

From f21f7bc1bdca3b66d79f7e72ddb65f26b2c2fec3 Mon Sep 17 00:00:00 2001
From: Hiveer <ljp.hiveer@gmail.com>
Date: Sat, 25 Jan 2025 10:32:59 +0800
Subject: [PATCH 2/3] Fix empty repos bug

---
 frontend/src/components/shared/RepoCards.vue | 21 +++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/frontend/src/components/shared/RepoCards.vue b/frontend/src/components/shared/RepoCards.vue
index 1e55f261d..6540f3bf7 100644
--- a/frontend/src/components/shared/RepoCards.vue
+++ b/frontend/src/components/shared/RepoCards.vue
@@ -86,7 +86,7 @@
           :repo="repo"
           :repo-type="repoType" />
       </div>
-      <div v-else-if="repoType === 'model' && totalRepos === 0 ">
+      <div v-else-if="repoType === 'model' && loading === false && totalRepos === 0">
         <EmptyModels />
       </div>
       <div
@@ -144,6 +144,7 @@
   const totalRepos = ref(0)
 
   const activeTags = ref({})
+  const loading = ref(true)
 
   const reposData = ref(Array)
   const sortOptions = [
@@ -224,12 +225,18 @@
   }
 
   async function loadRepos(url) {
-    const { error, data } = await useFetchApi(url).json()
-    if (data.value) {
-      reposData.value = data.value.data
-      totalRepos.value = data.value.total
-    } else {
-      ElMessage.warning(error.value.msg || t('all.fetchError'))
+    try {
+      const { error, data } = await useFetchApi(url).json()
+      if (data.value) {
+        reposData.value = data.value.data
+        totalRepos.value = data.value.total
+      } else {
+        ElMessage.warning(error.value.msg || t('all.fetchError'))
+      }
+    } catch(error) {
+      ElMessage.warning(error)
+    } finally {
+      loading.value = false
     }
   }
 

From cdccf0ec060b74136055433a59f5c939f7853ff8 Mon Sep 17 00:00:00 2001
From: Hiveer <ljp.hiveer@gmail.com>
Date: Wed, 5 Feb 2025 16:51:58 +0800
Subject: [PATCH 3/3] Fix typo

---
 frontend/src/components/navbar/Broadcast.vue | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/frontend/src/components/navbar/Broadcast.vue b/frontend/src/components/navbar/Broadcast.vue
index b5d3a06ea..9ca344f0e 100644
--- a/frontend/src/components/navbar/Broadcast.vue
+++ b/frontend/src/components/navbar/Broadcast.vue
@@ -25,7 +25,7 @@
   import { useStorage } from '@vueuse/core'
 
 
-  const showBanner = useStorage('show_banner', {initialied: false, show: false}, sessionStorage)
+  const showBanner = useStorage('show_banner', {initialized: false, show: false}, sessionStorage)
 
   const activeBroadcast = ref({
     theme: '',
@@ -53,12 +53,12 @@
       activeBroadcast.value.status = data.value.data.status
       activeBroadcast.value.bc_type = data.value.data.bc_type
       activeBroadcast.value.content = data.value.data.content
-      if (!showBanner.value.initialied) {
-        showBanner.value.initialied = true
+      if (!showBanner.value.initialized) {
+        showBanner.value.initialized = true
         showBanner.value.show = true
       }
     } else {
-      showBanner.value.initialied = false
+      showBanner.value.initialized = false
       showBanner.value.show = false
       ElMessage.warning(error.value.msg)
     }