diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 43fa04e5..0ef3489e 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} منشورات منذ {{currentTimeFilterName}}: <1>عرض {{moreCount}} منشورات إضافية من الشهر الماضي", "loading_feed": "تحميل الخلاصة", "loading_post": "جاري تحميل المنشور", - "node_stats": "إحصائيات العقدة" + "node_stats": "إحصائيات العقدة", + "loading_default_boards": "جار تحميل قائمة اللوحات الافتراضية", + "loading_subscriptions": "جارٍ تحميل الاشتراكات" } \ No newline at end of file diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 515493ad..4b89138b 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} পোস্ট {{currentTimeFilterName}} থেকে: <1>আরও {{moreCount}} পোস্ট দেখুন গত মাস থেকে", "loading_feed": "লোডিং ফিড", "loading_post": "পোস্ট লোড হচ্ছে", - "node_stats": "নোড পরিসংখ্যান" + "node_stats": "নোড পরিসংখ্যান", + "loading_default_boards": "ডিফল্ট বোর্ড তালিকা লোড হচ্ছে", + "loading_subscriptions": "সাবস্ক্রিপশন লোড হচ্ছে" } \ No newline at end of file diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index b4967194..d817159b 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} příspěvků od {{currentTimeFilterName}}: <1>zobrazit {{moreCount}} více příspěvků z minulého měsíce", "loading_feed": "Načítání kanálu", "loading_post": "Načítání příspěvku", - "node_stats": "Statistiky uzlu" + "node_stats": "Statistiky uzlu", + "loading_default_boards": "Načítání seznamu výchozích tabulí", + "loading_subscriptions": "Načítání odběrů" } \ No newline at end of file diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 4e3aadd0..55de13ce 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} indlæg siden {{currentTimeFilterName}}: <1>vis {{moreCount}} flere indlæg fra sidste måned", "loading_feed": "Indlæser feed", "loading_post": "Indlæser indlæg", - "node_stats": "Node-statistik" + "node_stats": "Node-statistik", + "loading_default_boards": "Indlæser standard tavleliste", + "loading_subscriptions": "Indlæser abonnementer" } \ No newline at end of file diff --git a/public/translations/de/default.json b/public/translations/de/default.json index e9a3d5f0..c2b6f0b6 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} Beiträge seit {{currentTimeFilterName}}: <1>mehr {{moreCount}} Beiträge aus dem letzten Monat anzeigen", "loading_feed": "Lädt Feed", "loading_post": "Beitrag wird geladen", - "node_stats": "Knotenstatistiken" + "node_stats": "Knotenstatistiken", + "loading_default_boards": "Laden der Standard-Boards-Liste", + "loading_subscriptions": "Lade Abonnements" } \ No newline at end of file diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 795bbf47..47797e91 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} δημοσιεύσεις από {{currentTimeFilterName}}: <1>δειξτε {{moreCount}} περισσότερες δημοσιεύσεις από τον προηγούμενο μήνα", "loading_feed": "Φόρτωση ροής", "loading_post": "Φόρτωση ανάρτησης", - "node_stats": "Στατιστικά κόμβου" + "node_stats": "Στατιστικά κόμβου", + "loading_default_boards": "Φόρτωση της λίστας προεπιλεγμένων πάνελ", + "loading_subscriptions": "Φορτώνει συνδρομές" } \ No newline at end of file diff --git a/public/translations/en/default.json b/public/translations/en/default.json index f7460556..67fac530 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} posts since {{currentTimeFilterName}}: <1>show {{moreCount}} more posts from last month", "loading_feed": "Loading feed", "loading_post": "Loading post", - "node_stats": "Node stats" + "node_stats": "Node stats", + "loading_default_boards": "Loading default boards list", + "loading_subscriptions": "Loading subscriptions" } \ No newline at end of file diff --git a/public/translations/es/default.json b/public/translations/es/default.json index f7dc3add..fb7f1c15 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} publicaciones desde {{currentTimeFilterName}}: <1>ver {{moreCount}} más publicaciones del mes pasado", "loading_feed": "Cargando feed", "loading_post": "Cargando publicación", - "node_stats": "Estadísticas del nodo" + "node_stats": "Estadísticas del nodo", + "loading_default_boards": "Cargando lista de tableros predeterminados", + "loading_subscriptions": "Cargando suscripciones" } \ No newline at end of file diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index e0e302dc..4aab2e4f 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} پست از {{currentTimeFilterName}}: <1>نمایش {{moreCount}} پست‌های بیشتر از ماه گذشته", "loading_feed": "در حال بارگذاری فید", "loading_post": "در حال بارگذاری پست", - "node_stats": "آمار گره" + "node_stats": "آمار گره", + "loading_default_boards": "در حال بارگذاری فهرست تخته‌های پیش‌فرض", + "loading_subscriptions": "در حال بارگذاری اشترا‌ک‌ها" } \ No newline at end of file diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index e74891d8..19a25679 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} julkaisua {{currentTimeFilterName}} jälkeen: <1>näytä {{moreCount}} lisää julkaisuja viime kuukaudesta", "loading_feed": "Ladataan syöte", "loading_post": "Ladataan viestiä", - "node_stats": "Solmun tilastot" + "node_stats": "Solmun tilastot", + "loading_default_boards": "Ladataan oletuslautalistaa", + "loading_subscriptions": "Ladataan tilauksia" } \ No newline at end of file diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 71079d93..60a6c011 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} mga post mula {{currentTimeFilterName}}: <1>ipakita ang {{moreCount}} higit pang mga post mula noong nakaraang buwan", "loading_feed": "Naglo-load ng feed", "loading_post": "Naglo-load na post", - "node_stats": "Istatistika ng node" + "node_stats": "Istatistika ng node", + "loading_default_boards": "Naglo-load ng default na listahan ng mga board", + "loading_subscriptions": "Naglo-load ng mga subscription" } \ No newline at end of file diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 9e213f3a..00d155e3 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} publications depuis {{currentTimeFilterName}}: <1>afficher {{moreCount}} publications de plus du mois dernier", "loading_feed": "Chargement du flux", "loading_post": "Chargement du message", - "node_stats": "Statistiques du nœud" + "node_stats": "Statistiques du nœud", + "loading_default_boards": "Chargement de la liste des panneaux par défaut", + "loading_subscriptions": "Chargement des abonnements" } \ No newline at end of file diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 52b2bdeb..5074420c 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} פוסטים מאז {{currentTimeFilterName}}: <1>הצג {{moreCount}} פוסטים נוספים מהחודש שעבר", "loading_feed": "טוען פיד", "loading_post": "טוען פוסט", - "node_stats": "סטטיסטיקות צומת" + "node_stats": "סטטיסטיקות צומת", + "loading_default_boards": "טוען את רשימת הלוחות ברירת המחדל", + "loading_subscriptions": "טוען מנויים" } \ No newline at end of file diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index a6b1da06..aff9fcd5 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} पोस्ट {{currentTimeFilterName}} से: <1>अधिक {{moreCount}} पोस्ट दिखाएं पिछले महीने से", "loading_feed": "लोडिंग फीड", "loading_post": "पोस्ट लोड हो रहा है", - "node_stats": "नोड आँकड़े" + "node_stats": "नोड आँकड़े", + "loading_default_boards": "डिफ़ॉल्ट बोर्ड सूची लोड हो रही है", + "loading_subscriptions": "सब्सक्रिप्शन लोड हो रहे हैं" } \ No newline at end of file diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 34713b70..6d658380 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} bejegyzés {{currentTimeFilterName}} óta: <1>több {{moreCount}} bejegyzés megjelenítése a múlt hónapból", "loading_feed": "Betöltés a hírcsatornára", "loading_post": "Bejegyzés betöltése", - "node_stats": "Csomópont statisztikák" + "node_stats": "Csomópont statisztikák", + "loading_default_boards": "Alapértelmezett táblák listájának betöltése", + "loading_subscriptions": "Előfizetések betöltése" } \ No newline at end of file diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 32e8ced1..8a397e6e 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} pos dari {{currentTimeFilterName}}: <1>tampilkan {{moreCount}} lebih banyak pos dari bulan lalu", "loading_feed": "Memuat feed", "loading_post": "Memuat pos", - "node_stats": "Statistik node" + "node_stats": "Statistik node", + "loading_default_boards": "Memuat daftar papan default", + "loading_subscriptions": "Memuat langganan" } \ No newline at end of file diff --git a/public/translations/it/default.json b/public/translations/it/default.json index ba5154ff..53a3bcf0 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} post da {{currentTimeFilterName}}: <1>mostra {{moreCount}} più post dal mese scorso", "loading_feed": "Caricamento feed", "loading_post": "Caricamento del post", - "node_stats": "Statistiche del nodo" + "node_stats": "Statistiche del nodo", + "loading_default_boards": "Caricamento della lista delle board predefinite", + "loading_subscriptions": "Caricamento abbonamenti" } \ No newline at end of file diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index f64e32cb..ec12a3d0 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} 件の投稿 {{currentTimeFilterName}} 以降: <1>先月の投稿を{{moreCount}}件もっと見る", "loading_feed": "フィードを読み込んでいます", "loading_post": "投稿を読み込み中", - "node_stats": "ノード統計" + "node_stats": "ノード統計", + "loading_default_boards": "デフォルトのボードリストを読み込み中", + "loading_subscriptions": "購読を読み込み中" } \ No newline at end of file diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 64749bbd..5eaebe8a 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} 게시물 {{currentTimeFilterName}} 이후: <1>지난 달 게시물 {{moreCount}}개 더 보기", "loading_feed": "피드를 로딩 중", "loading_post": "게시물 로딩 중", - "node_stats": "노드 통계" + "node_stats": "노드 통계", + "loading_default_boards": "기본 보드 목록을 로드 중", + "loading_subscriptions": "구독 로딩 중" } \ No newline at end of file diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index c22af18b..d76a10c4 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} पोस्ट {{currentTimeFilterName}} पासून: <1>पार्श्ववर्ती पोस्ट आणखी {{moreCount}} पहा गेल्या महिन्यातून", "loading_feed": "फीड लोड करत आहे", "loading_post": "पोस्ट लोड होत आहे", - "node_stats": "नोड आकडेवारी" + "node_stats": "नोड आकडेवारी", + "loading_default_boards": "डीफॉल्ट बोर्ड यादी लोड करत आहे", + "loading_subscriptions": "सदस्यता लोड होत आहे" } \ No newline at end of file diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 48d19a8a..b4e5c06e 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} berichten sinds {{currentTimeFilterName}}: <1>meer {{moreCount}} berichten van vorige maand tonen", "loading_feed": "Laad feed", "loading_post": "Bericht wordt geladen", - "node_stats": "Node-statistieken" + "node_stats": "Node-statistieken", + "loading_default_boards": "Laden van de standaard boardlijst", + "loading_subscriptions": "Abonnementen laden" } \ No newline at end of file diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 0a52ab03..21af1157 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} innlegg siden {{currentTimeFilterName}}: <1>vis {{moreCount}} flere innlegg fra forrige måned", "loading_feed": "Laster feed", "loading_post": "Laster innlegg", - "node_stats": "Node-statistikk" + "node_stats": "Node-statistikk", + "loading_default_boards": "Laster standard tavleliste", + "loading_subscriptions": "Laster abonnementer" } \ No newline at end of file diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 4bc6f3ad..085643ea 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} postów od {{currentTimeFilterName}}: <1>pokaż {{moreCount}} więcej postów z ubiegłego miesiąca", "loading_feed": "Ładowanie kanału", "loading_post": "Ładowanie posta", - "node_stats": "Statystyki węzła" + "node_stats": "Statystyki węzła", + "loading_default_boards": "Ładowanie domyślnej listy tablic", + "loading_subscriptions": "Ładowanie subskrypcji" } \ No newline at end of file diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index ad2f9d1b..86cb1747 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} postagens desde {{currentTimeFilterName}}: <1>mostrar {{moreCount}} mais postagens do mês passado", "loading_feed": "Carregando feed", "loading_post": "Carregando post", - "node_stats": "Estatísticas do nó" + "node_stats": "Estatísticas do nó", + "loading_default_boards": "Carregando lista de quadros padrão", + "loading_subscriptions": "Carregando assinaturas" } \ No newline at end of file diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 9e938f6d..75aa7758 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} postări din {{currentTimeFilterName}}: <1>afișați {{moreCount}} mai multe postări din luna trecută", "loading_feed": "Încărcare feed", "loading_post": "Se încarcă postarea", - "node_stats": "Statistici nod" + "node_stats": "Statistici nod", + "loading_default_boards": "Se încarcă lista de panouri implicite", + "loading_subscriptions": "Încărcarea abonamentelor" } \ No newline at end of file diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index f5edc9f5..a8b84b55 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} постов с {{currentTimeFilterName}}: <1>показать {{moreCount}} больше постов с прошлого месяца", "loading_feed": "Загрузка ленты", "loading_post": "Загрузка сообщения", - "node_stats": "Статистика узла" + "node_stats": "Статистика узла", + "loading_default_boards": "Загрузка списка стандартных досок", + "loading_subscriptions": "Загрузка подписок" } \ No newline at end of file diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 8249d840..55edeec0 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} postime nga {{currentTimeFilterName}}: <1>shfaq {{moreCount}} më shumë postime nga muaji i kaluar", "loading_feed": "Po ngarkoni feed-in", "loading_post": "Po ngarkohet postimi", - "node_stats": "Statistikat e nyjës" + "node_stats": "Statistikat e nyjës", + "loading_default_boards": "Po ngarkohen listat e bordit të parazgjedhur", + "loading_subscriptions": "Po ngarkohen abonimet" } \ No newline at end of file diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 594a2658..f404f15d 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} inlägg sedan {{currentTimeFilterName}}: <1>visa {{moreCount}} fler inlägg från förra månaden", "loading_feed": "Laddar flöde", "loading_post": "Laddar inlägg", - "node_stats": "Node-statistik" + "node_stats": "Node-statistik", + "loading_default_boards": "Laddar standardlistan för tavlor", + "loading_subscriptions": "Laddar prenumerationer" } \ No newline at end of file diff --git a/public/translations/te/default.json b/public/translations/te/default.json index f5950bde..07d148bb 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} పోస్టులు {{currentTimeFilterName}} నుండి: <1>గత నెల నుండి {{moreCount}} మరిన్ని పోస్టులను చూపించు", "loading_feed": "లోడింగ్ ఫీడ్", "loading_post": "పోస్ట్ లోడవుతోంది", - "node_stats": "నోడ్ గణాంకాలు" + "node_stats": "నోడ్ గణాంకాలు", + "loading_default_boards": "డిఫాల్ట్ బోర్డుల జాబితా లోడవుతోంది", + "loading_subscriptions": "సబ్‌స్క్రిప్షన్‌లు లోడ్ అవుతున్నాయి" } \ No newline at end of file diff --git a/public/translations/th/default.json b/public/translations/th/default.json index bd33b1bf..7fd306a0 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} โพสต์ตั้งแต่ {{currentTimeFilterName}}: <1>แสดง {{moreCount}} โพสต์เพิ่มเติมจากเดือนที่แล้ว", "loading_feed": "กำลังโหลดฟีด", "loading_post": "กำลังโหลดโพสต์", - "node_stats": "สถิติโหนด" + "node_stats": "สถิติโหนด", + "loading_default_boards": "กำลังโหลดรายการกระดานเริ่มต้น", + "loading_subscriptions": "กำลังโหลดการสมัครสมาชิก" } \ No newline at end of file diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 18d3f590..db0e40cc 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} gönderi {{currentTimeFilterName}}'dan itibaren: <1>geçen aydan {{moreCount}} daha fazla gönderi göster", "loading_feed": "Yükleniyor besleme", "loading_post": "Gönderi yükleniyor", - "node_stats": "Düğüm istatistikleri" + "node_stats": "Düğüm istatistikleri", + "loading_default_boards": "Varsayılan panolar listesi yükleniyor", + "loading_subscriptions": "Abonelikler yükleniyor" } \ No newline at end of file diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 258db52b..75153df5 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} дописів з {{currentTimeFilterName}}: <1>показати {{moreCount}} більше дописів з минулого місяця", "loading_feed": "Завантаження потоку", "loading_post": "Завантаження поста", - "node_stats": "Статистика вузла" + "node_stats": "Статистика вузла", + "loading_default_boards": "Завантаження списку стандартних дошок", + "loading_subscriptions": "Завантаження підписок" } \ No newline at end of file diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index df20ece5..de09da1e 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} پوسٹس {{currentTimeFilterName}} سے: <1>پچھلے مہینے کی مزید {{moreCount}} پوسٹس دکھائیں", "loading_feed": "لوڈ ہو رہا ہے فیڈ", "loading_post": "پوسٹ لوڈ ہو رہی ہے", - "node_stats": "نوڈ کے اعدادوشمار" + "node_stats": "نوڈ کے اعدادوشمار", + "loading_default_boards": "ڈिफالٹ بورڈ کی فہرست لوڈ ہو رہی ہے", + "loading_subscriptions": "سبسکرپشن لوڈ ہو رہی ہے" } \ No newline at end of file diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index ae1eb12b..a0f76bfc 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} bài đăng kể từ {{currentTimeFilterName}}: <1>hiển thị thêm {{moreCount}} bài đăng từ tháng trước", "loading_feed": "Đang tải feed", "loading_post": "Đang tải bài viết", - "node_stats": "Thống kê nút" + "node_stats": "Thống kê nút", + "loading_default_boards": "Đang tải danh sách bảng mặc định", + "loading_subscriptions": "Đang tải đăng ký" } \ No newline at end of file diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 5e8419ca..d9bae15b 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -279,5 +279,7 @@ "more_posts_last_month": "{{count}} 帖子自 {{currentTimeFilterName}} 起: <1>显示更多{{moreCount}}来自上个月的帖子", "loading_feed": "加载中...", "loading_post": "正在加载帖子", - "node_stats": "节点统计" + "node_stats": "节点统计", + "loading_default_boards": "正在加载默认板块列表", + "loading_subscriptions": "加载订阅" } \ No newline at end of file diff --git a/src/components/topbar/topbar.module.css b/src/components/topbar/topbar.module.css index 9a8ed07c..7e8fa9d2 100644 --- a/src/components/topbar/topbar.module.css +++ b/src/components/topbar/topbar.module.css @@ -5,6 +5,12 @@ position: relative; } +.checkingSubscriptions { + font-size: var(--topbar-font-size); + color: var(--topbar-desktop-link-text-color); + text-transform: lowercase; +} + .boardNavDesktop a, .navTopRight span { color: var(--topbar-desktop-link-text-color); text-decoration: var(--topbar-desktop-link-text-decoration); diff --git a/src/components/topbar/topbar.tsx b/src/components/topbar/topbar.tsx index 6ac598db..2826b63d 100644 --- a/src/components/topbar/topbar.tsx +++ b/src/components/topbar/topbar.tsx @@ -8,6 +8,7 @@ import styles from './topbar.module.css'; import { useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbits'; import _, { debounce } from 'lodash'; import { TimeFilter } from '../board-buttons'; +import { useAutoSubscribe } from '../../hooks/use-auto-subscribe'; const SearchBar = ({ setShowSearchBar }: { setShowSearchBar: (show: boolean) => void }) => { const navigate = useNavigate(); @@ -197,12 +198,15 @@ const TopBarMobile = ({ subplebbitAddress }: { subplebbitAddress: string }) => { }; const TopBar = () => { + const { t } = useTranslation(); const params = useParams(); + const { isCheckingSubscriptions } = useAutoSubscribe(); const accountComment = useAccountComment({ commentIndex: params?.accountCommentIndex as any }); const subplebbitAddress = params?.subplebbitAddress || accountComment?.subplebbitAddress; return ( <> + {isCheckingSubscriptions &&
{t('loading_subscriptions')}
} diff --git a/src/hooks/use-default-subplebbits.ts b/src/hooks/use-default-subplebbits.ts index d604862e..083ca119 100644 --- a/src/hooks/use-default-subplebbits.ts +++ b/src/hooks/use-default-subplebbits.ts @@ -15,23 +15,42 @@ export interface MultisubSubplebbit { plebchanAutoSubscribe?: boolean; } +export interface DefaultSubplebbitsState { + subplebbits: MultisubSubplebbit[]; + loading: boolean; + error: Error | null; +} + let cacheSubplebbits: MultisubSubplebbit[] | null = null; let cacheMetadata: MultisubMetadata | null = null; let cacheAutoSubscribeAddresses: string[] | null = null; export const useDefaultSubplebbits = () => { - const [subplebbits, setSubplebbits] = useState([]); + const [state, setState] = useState({ + subplebbits: [], + loading: true, + error: null, + }); useEffect(() => { if (cacheSubplebbits) { + setState({ + subplebbits: cacheSubplebbits, + loading: false, + error: null, + }); return; } + (async () => { try { - const multisub = await fetch( - 'https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json', - // { cache: 'no-cache' } - ).then((res) => res.json()); + const multisub = await fetch('https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json').then((res) => { + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + return res.json(); + }); + cacheSubplebbits = multisub.subplebbits; // Cache auto-subscribe addresses when we fetch subplebbits @@ -39,14 +58,69 @@ export const useDefaultSubplebbits = () => { .filter((sub: MultisubSubplebbit) => sub.plebchanAutoSubscribe && sub.address) .map((sub: MultisubSubplebbit) => sub.address); - setSubplebbits(multisub.subplebbits); + setState({ + subplebbits: multisub.subplebbits, + loading: false, + error: null, + }); } catch (e) { console.warn(e); + setState((prev) => ({ + ...prev, + loading: false, + error: e instanceof Error ? e : new Error('Failed to fetch subplebbits'), + })); } })(); }, []); - return cacheSubplebbits || subplebbits; + // To maintain backward compatibility, return the subplebbits array directly + return cacheSubplebbits || state.subplebbits; +}; + +export const useDefaultSubplebbitsState = () => { + const [state, setState] = useState({ + subplebbits: cacheSubplebbits || [], + loading: !cacheSubplebbits, + error: null, + }); + + useEffect(() => { + if (cacheSubplebbits) { + setState({ + subplebbits: cacheSubplebbits, + loading: false, + error: null, + }); + return; + } + + (async () => { + try { + const multisub = await fetch('https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json').then((res) => { + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + return res.json(); + }); + + setState({ + subplebbits: multisub.subplebbits, + loading: false, + error: null, + }); + } catch (e) { + console.warn(e); + setState((prev) => ({ + ...prev, + loading: false, + error: e instanceof Error ? e : new Error('Failed to fetch subplebbits'), + })); + } + })(); + }, []); + + return state; }; export const useDefaultSubplebbitAddresses = () => { diff --git a/src/views/board/board.tsx b/src/views/board/board.tsx index 58099238..590cd12c 100644 --- a/src/views/board/board.tsx +++ b/src/views/board/board.tsx @@ -7,7 +7,6 @@ import styles from './board.module.css'; import { shouldShowSnow } from '../../lib/snow'; import { getCommentMediaInfo, getHasThumbnail } from '../../lib/utils/media-utils'; import { isAllView, isSubscriptionsView } from '../../lib/utils/view-utils'; -import { useAutoSubscribe } from '../../hooks/use-auto-subscribe'; import { useDefaultSubplebbitAddresses } from '../../hooks/use-default-subplebbits'; import useFeedStateString from '../../hooks/use-feed-state-string'; import useReplyModal from '../../hooks/use-reply-modal'; @@ -32,7 +31,6 @@ const threadsWithoutImagesFilter = (comment: Comment) => { }; const Board = () => { - const { isCheckingSubscriptions } = useAutoSubscribe(); const { t } = useTranslation(); const location = useLocation(); const { subplebbitAddress } = useParams<{ subplebbitAddress: string }>(); @@ -298,26 +296,18 @@ const Board = () => { /> )} {rules && !description && rules.length > 0 && } - {isCheckingSubscriptions ? ( -
-
- -
-
- ) : ( - } - useWindowScroll={true} - components={{ Footer }} - endReached={loadMore} - ref={virtuosoRef} - restoreStateFrom={lastVirtuosoState} - initialScrollTop={lastVirtuosoState?.scrollTop} - /> - )} + } + useWindowScroll={true} + components={{ Footer }} + endReached={loadMore} + ref={virtuosoRef} + restoreStateFrom={lastVirtuosoState} + initialScrollTop={lastVirtuosoState?.scrollTop} + /> ); diff --git a/src/views/home/boards-list/boards-list.tsx b/src/views/home/boards-list/boards-list.tsx index b52372ab..411ea84e 100644 --- a/src/views/home/boards-list/boards-list.tsx +++ b/src/views/home/boards-list/boards-list.tsx @@ -4,10 +4,12 @@ import { useTranslation } from 'react-i18next'; import Plebbit from '@plebbit/plebbit-js/dist/browser/index.js'; import { Subplebbit, useSubplebbit, useSubplebbitStats } from '@plebbit/plebbit-react-hooks'; import { useDefaultSubplebbitTags } from '../../../hooks/use-default-subplebbits-tags'; +import { useDefaultSubplebbitsState } from '../../../hooks/use-default-subplebbits'; import useIsMobile from '../../../hooks/use-is-mobile'; import useIsSubplebbitOffline from '../../../hooks/use-is-subplebbit-offline'; import styles from '../home.module.css'; import { nsfwTags } from '../home'; +import LoadingEllipsis from '../../../components/loading-ellipsis'; const Board = ({ subplebbit, isMobile }: { subplebbit: Subplebbit; isMobile: boolean }) => { const { t } = useTranslation(); @@ -60,6 +62,7 @@ const BoardsList = ({ multisub }: { multisub: Subplebbit[] }) => { const location = useLocation(); const [displayCount, setDisplayCount] = useState(15); const isMobile = useIsMobile(); + const { loading, error } = useDefaultSubplebbitsState(); const currentTag = location.pathname.split('/').filter(Boolean)[0]; const tags = useDefaultSubplebbitTags(multisub); @@ -68,6 +71,24 @@ const BoardsList = ({ multisub }: { multisub: Subplebbit[] }) => { setDisplayCount(15); }, [currentTag]); + if (loading) { + return ( +
+ + + +
+ ); + } + + if (error) { + return ( +
+
{error.message}
+
+ ); + } + const filteredBoards = (currentTag && tags.includes(currentTag) ? multisub.filter((sub) => sub?.tags?.includes(currentTag)) : multisub).slice(0, displayCount); const totalBoardCount = currentTag && tags.includes(currentTag) ? multisub.filter((sub) => sub?.tags?.includes(currentTag)).length : multisub.length; diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index 0fff8da7..2d54f7a2 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -34,6 +34,13 @@ min-height: 150px; } +.loading { + display: flex; + justify-content: center; + align-items: center; + margin-top: 10px; +} + .offlineIcon { display: inline-block; vertical-align: text-top;