mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
refactor(feed): remove "Newer threads available" banner
Removed the newer threads banner and refresh button from catalog and board footers. Deleted newer_threads_available translation key from all languages.
This commit is contained in:
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "يرجى تحديد لوحة قبل النشر.",
|
||||
"invalid_url_alert": "الرابط المقدم ليس عنوان URL صالحًا.",
|
||||
"empty_comment_alert": "لا يمكن نشر تعليق فارغ.",
|
||||
"newer_threads_available": "مواضيع أحدث متاحة — [<1>تحديث</1>]",
|
||||
"stored_locally": "مُخزّن محليًا (في بيانات {{location}})، غير مُزامَن بين الأجهزة",
|
||||
"choose_one": "اختر واحدة:",
|
||||
"create": "إنشاء",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "পোস্ট করার আগে একটি বোর্ড নির্বাচন করুন।",
|
||||
"invalid_url_alert": "দেওয়া লিঙ্কটি একটি বৈধ URL নয়।",
|
||||
"empty_comment_alert": "খালি মন্তব্য পোস্ট করা যাবে না।",
|
||||
"newer_threads_available": "নতুন থ্রেড উপলব্ধ — [<1>রিফ্রেশ করুন</1>]",
|
||||
"stored_locally": "স্থানীয়ভাবে সংরক্ষিত ({{location}} ডেটাতে), ডিভাইস জুড়ে সিঙ্ক হয় না",
|
||||
"choose_one": "একটি নির্বাচন করুন:",
|
||||
"create": "তৈরি করুন",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Vyberte desku před odesláním.",
|
||||
"invalid_url_alert": "Poskytnutý odkaz není platná adresa URL.",
|
||||
"empty_comment_alert": "Nelze publikovat prázdný komentář.",
|
||||
"newer_threads_available": "Novější vlákna k dispozici — [<1>Obnovit</1>]",
|
||||
"stored_locally": "Ukládáno lokálně (v datech {{location}}), nesynchronizováno mezi zařízeními",
|
||||
"choose_one": "Vyberte jednu:",
|
||||
"create": "Vytvořit",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Vælg en tavle, før du poster.",
|
||||
"invalid_url_alert": "Det angivne link er ikke en gyldig URL.",
|
||||
"empty_comment_alert": "Kan ikke poste en tom kommentar.",
|
||||
"newer_threads_available": "Nyere tråde tilgængelige — [<1>Opdater</1>]",
|
||||
"stored_locally": "Lagres lokalt (i {{location}} data), ikke synkroniseret på tværs af enheder",
|
||||
"choose_one": "Vælg en:",
|
||||
"create": "Opret",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Bitte wählen Sie ein Board, bevor Sie posten.",
|
||||
"invalid_url_alert": "Der bereitgestellte Link ist keine gültige URL.",
|
||||
"empty_comment_alert": "Kann keinen leeren Kommentar posten.",
|
||||
"newer_threads_available": "Neuere Threads verfügbar — [<1>Aktualisieren</1>]",
|
||||
"stored_locally": "Lokal gespeichert (in {{location}}-Daten), nicht zwischen Geräten synchronisiert",
|
||||
"choose_one": "Wählen Sie eine:",
|
||||
"create": "Erstellen",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Παρακαλώ επιλέξτε μια κατηγορία πριν δημοσιεύσετε.",
|
||||
"invalid_url_alert": "Ο παρεχόμενος σύνδεσμος δεν είναι έγκυρη διεύθυνση URL.",
|
||||
"empty_comment_alert": "Δεν μπορεί να δημοσιευτεί κενό σχόλιο.",
|
||||
"newer_threads_available": "Διαθέσιμα νεότερα θέματα — [<1>Ανανέωση</1>]",
|
||||
"stored_locally": "Αποθηκεύεται τοπικά (στα δεδομένα {{location}}), δεν συγχρονίζεται μεταξύ συσκευών",
|
||||
"choose_one": "Επιλέξτε μία:",
|
||||
"create": "Δημιουργία",
|
||||
|
||||
@@ -182,7 +182,6 @@
|
||||
"no_board_selected_warning": "Please select a board before posting.",
|
||||
"invalid_url_alert": "The provided link is not a valid URL.",
|
||||
"empty_comment_alert": "Cannot post empty comment.",
|
||||
"newer_threads_available": "Newer threads available — [<1>Refresh</1>]",
|
||||
"stored_locally": "Stored locally (in {{location}} data), not synced across devices",
|
||||
"choose_one": "Choose one:",
|
||||
"create": "Create",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Por favor, selecciona una tabla antes de publicar.",
|
||||
"invalid_url_alert": "El enlace proporcionado no es una URL válida.",
|
||||
"empty_comment_alert": "No se puede publicar un comentario vacío.",
|
||||
"newer_threads_available": "Nuevos hilos disponibles — [<1>Actualizar</1>]",
|
||||
"stored_locally": "Almacenado localmente (en datos de {{location}}), no sincronizado entre dispositivos",
|
||||
"choose_one": "Elige uno:",
|
||||
"create": "Crear",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "لطفاً قبل از ارسال یک تابلو انتخاب کنید.",
|
||||
"invalid_url_alert": "لینک ارائه شده یک URL معتبر نیست.",
|
||||
"empty_comment_alert": "نمیتوان نظر خالی ارسال کرد.",
|
||||
"newer_threads_available": "موضوعات جدیدتر در دسترس است — [<1>بروزرسانی</1>]",
|
||||
"stored_locally": "ذخیرهٔ محلی (در دادهٔ {{location}})، همگامسازی نشده در دستگاهها",
|
||||
"choose_one": "یکی را انتخاب کنید:",
|
||||
"create": "ایجاد",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Valitse taulu ennen julkaisemista.",
|
||||
"invalid_url_alert": "Annettu linkki ei ole voimassa oleva URL.",
|
||||
"empty_comment_alert": "Ei voi julkaista tyhjää kommenttia.",
|
||||
"newer_threads_available": "Uudemmat ketjut saatavilla — [<1>Virkistää</1>]",
|
||||
"stored_locally": "Tallennettu paikallisesti ({{location}}-datassa), ei synkronoidu laitteiden välillä",
|
||||
"choose_one": "Valitse yksi:",
|
||||
"create": "Luo",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Mangyaring pumili ng board bago mag-post.",
|
||||
"invalid_url_alert": "Ang ibinigay na link ay hindi isang wastong URL.",
|
||||
"empty_comment_alert": "Hindi makapag-post ng walang laman na komento.",
|
||||
"newer_threads_available": "Bagong mga thread na magagamit — [<1>I-refresh</1>]",
|
||||
"stored_locally": "Naka-imbak nang lokal (sa datos ng {{location}}), hindi naka-sync sa mga device",
|
||||
"choose_one": "Pumili ng isa:",
|
||||
"create": "Lumikha",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Veuillez sélectionner un tableau avant de publier.",
|
||||
"invalid_url_alert": "Le lien fourni n'est pas une URL valide.",
|
||||
"empty_comment_alert": "Impossible de publier un commentaire vide.",
|
||||
"newer_threads_available": "Nouveaux fils disponibles — [<1>Rafraîchir</1>]",
|
||||
"stored_locally": "Stocké localement (dans les données {{location}}), non synchronisé entre les appareils",
|
||||
"choose_one": "Choisissez-en un :",
|
||||
"create": "Créer",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "אנא בחר לוח לפני פרסום.",
|
||||
"invalid_url_alert": "הלינק שסופק אינו כתובת URL חוקית.",
|
||||
"empty_comment_alert": "לא ניתן לפרסם תגובה ריקה.",
|
||||
"newer_threads_available": "נושאים חדשים זמינים — [<1>רענן</1>]",
|
||||
"stored_locally": "נשמר מקומית (בנתוני {{location}}), לא מסונכרן בין מכשירים",
|
||||
"choose_one": "בחר אחת:",
|
||||
"create": "צור",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "पोस्ट करने से पहले कृपया एक बोर्ड चुनें।",
|
||||
"invalid_url_alert": "प्रदत्त लिंक एक वैध URL नहीं है।",
|
||||
"empty_comment_alert": "खाली टिप्पणी पोस्ट नहीं कर सकते।",
|
||||
"newer_threads_available": "नए थ्रेड्स उपलब्ध हैं — [<1>रिफ्रेश करें</1>]",
|
||||
"stored_locally": "स्थानीय रूप से संग्रहीत ({{location}} डेटा में), डिवाइस पर सिंक नहीं",
|
||||
"choose_one": "एक चुनें:",
|
||||
"create": "बनाएं",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Kérlek, válassz egy táblát a közzététel előtt.",
|
||||
"invalid_url_alert": "A megadott hivatkozás nem érvényes URL.",
|
||||
"empty_comment_alert": "Üres hozzászólást nem lehet közzétenni.",
|
||||
"newer_threads_available": "Újabb szálak elérhetők — [<1>Frissíteni</1>]",
|
||||
"stored_locally": "Helyileg tárolva (a {{location}} adatában), nem szinkronizálva az eszközök között",
|
||||
"choose_one": "Válasszon egyet:",
|
||||
"create": "Létrehozás",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Silakan pilih papan sebelum memposting.",
|
||||
"invalid_url_alert": "Tautan yang diberikan bukan URL yang valid.",
|
||||
"empty_comment_alert": "Tidak dapat memposting komentar kosong.",
|
||||
"newer_threads_available": "Thread terbaru tersedia — [<1>Segarkan</1>]",
|
||||
"stored_locally": "Disimpan secara lokal (dalam data {{location}}), tidak disinkronkan antar perangkat",
|
||||
"choose_one": "Pilih satu:",
|
||||
"create": "Buat",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Per favore, seleziona una board prima di pubblicare.",
|
||||
"invalid_url_alert": "Il link fornito non è un URL valido.",
|
||||
"empty_comment_alert": "Impossibile pubblicare un commento vuoto.",
|
||||
"newer_threads_available": "Nuovi thread disponibili — [<1>Aggiorna</1>]",
|
||||
"stored_locally": "Archiviato localmente (nei dati di {{location}}), non sincronizzato tra dispositivi",
|
||||
"choose_one": "Scegline una:",
|
||||
"create": "Crea",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "投稿する前にボードを選択してください。",
|
||||
"invalid_url_alert": "提供されたリンクは有効なURLではありません。",
|
||||
"empty_comment_alert": "空のコメントは投稿できません。",
|
||||
"newer_threads_available": "新しいスレッドが利用可能 — [<1>更新</1>]",
|
||||
"stored_locally": "ローカルに保存({{location}}のデータ内)、デバイス間で同期されません",
|
||||
"choose_one": "いずれかを選択してください:",
|
||||
"create": "作成",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "게시하기 전에 보드를 선택하십시오.",
|
||||
"invalid_url_alert": "제공된 링크는 유효한 URL이 아닙니다.",
|
||||
"empty_comment_alert": "빈 댓글을 게시할 수 없습니다.",
|
||||
"newer_threads_available": "새로운 스레드 사용 가능 — [<1>새로 고침</1>]",
|
||||
"stored_locally": "로컬에 저장됨 ({{location}} 데이터 내), 기기 간 동기화되지 않음",
|
||||
"choose_one": "하나를 선택하세요:",
|
||||
"create": "생성",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "पोस्ट करण्यापूर्वी कृपया एक बोर्ड निवडा.",
|
||||
"invalid_url_alert": "दिलेला लिंक वैध URL नाही.",
|
||||
"empty_comment_alert": "रिक्त टिप्पणी पोस्ट करू शकत नाही.",
|
||||
"newer_threads_available": "नवीन थ्रेड्स उपलब्ध आहेत — [<1>रिफ्रेश करा</1>]",
|
||||
"stored_locally": "स्थानिकरित्या संग्रहित ({{location}} डेटामध्ये), उपकरणांमध्ये समक्रमित नाही",
|
||||
"choose_one": "एक निवडा:",
|
||||
"create": "तयार करा",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Selecteer een bord voordat je plaatst.",
|
||||
"invalid_url_alert": "De opgegeven link is geen geldige URL.",
|
||||
"empty_comment_alert": "Kan geen lege opmerking plaatsen.",
|
||||
"newer_threads_available": "Nieuwere threads beschikbaar — [<1>Vernieuwen</1>]",
|
||||
"stored_locally": "Lokaal opgeslagen (in {{location}} gegevens), niet gesynchroniseerd tussen apparaten",
|
||||
"choose_one": "Kies er een:",
|
||||
"create": "Maak aan",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Vennligst velg et brett før du poster.",
|
||||
"invalid_url_alert": "Den angitte lenken er ikke en gyldig URL.",
|
||||
"empty_comment_alert": "Kan ikke poste tom kommentar.",
|
||||
"newer_threads_available": "Nyere tråder tilgjengelig — [<1>Oppdater</1>]",
|
||||
"stored_locally": "Lagres lokalt (i {{location}} data), ikke synkronisert på tvers av enheter",
|
||||
"choose_one": "Velg en:",
|
||||
"create": "Opprett",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Proszę wybrać tablicę przed opublikowaniem.",
|
||||
"invalid_url_alert": "Podany link nie jest poprawnym adresem URL.",
|
||||
"empty_comment_alert": "Nie można opublikować pustego komentarza.",
|
||||
"newer_threads_available": "Nowsze wątki dostępne — [<1>Odśwież</1>]",
|
||||
"stored_locally": "Przechowywane lokalnie (w danych {{location}}), nie synchronizowane między urządzeniami",
|
||||
"choose_one": "Wybierz jeden:",
|
||||
"create": "Utwórz",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Por favor, selecione um quadro antes de postar.",
|
||||
"invalid_url_alert": "O link fornecido não é uma URL válida.",
|
||||
"empty_comment_alert": "Não é possível postar um comentário vazio.",
|
||||
"newer_threads_available": "Novos tópicos disponíveis — [<1>Atualizar</1>]",
|
||||
"stored_locally": "Armazenado localmente (nos dados de {{location}}), não sincronizado entre dispositivos",
|
||||
"choose_one": "Escolha um:",
|
||||
"create": "Criar",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Vă rugăm să selectați un tablou înainte de a publica.",
|
||||
"invalid_url_alert": "Linkul furnizat nu este un URL valid.",
|
||||
"empty_comment_alert": "Nu se poate publica un comentariu gol.",
|
||||
"newer_threads_available": "Subiecte mai noi disponibile — [<1>Actualizaţi</1>]",
|
||||
"stored_locally": "Stocat local (în datele {{location}}), nesincronizat între dispozitive",
|
||||
"choose_one": "Alege una:",
|
||||
"create": "Creează",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Пожалуйста, выберите доску перед публикацией.",
|
||||
"invalid_url_alert": "Предоставленная ссылка не является действительным URL.",
|
||||
"empty_comment_alert": "Невозможно опубликовать пустой комментарий.",
|
||||
"newer_threads_available": "Доступны новые темы — [<1>Обновить</1>]",
|
||||
"stored_locally": "Сохранено локально (в данных {{location}}), не синхронизируется между устройствами",
|
||||
"choose_one": "Выберите один:",
|
||||
"create": "Создать",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Ju lutemi zgjidhni një bord para se të postoni.",
|
||||
"invalid_url_alert": "Lidhja e ofruar nuk është një URL e vlefshme.",
|
||||
"empty_comment_alert": "Nuk mund të postoni një koment bosh.",
|
||||
"newer_threads_available": "Temat më të reja të disponueshme — [<1>Rifresko</1>]",
|
||||
"stored_locally": "Ruhet lokalisht (në të dhënat {{location}}), nuk sinkronizohet ndër pajisjet",
|
||||
"choose_one": "Zgjidhni një:",
|
||||
"create": "Krijo",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Vänligen välj en tavla innan du postar.",
|
||||
"invalid_url_alert": "Den angivna länken är inte en giltig URL.",
|
||||
"empty_comment_alert": "Kan inte posta tom kommentar.",
|
||||
"newer_threads_available": "Nyare trådar tillgängliga — [<1>Uppdatera</1>]",
|
||||
"stored_locally": "Lagrat lokalt (i {{location}} data), inte synkroniserat mellan enheter",
|
||||
"choose_one": "Välj en:",
|
||||
"create": "Skapa",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "పోస్ట్ చేయడానికి ముందు దయచేసి ఒక బోర్డు ఎంచుకోండి.",
|
||||
"invalid_url_alert": "నివేదిక ఇవ్వబడిన లింక్ చెల్లుబాటులో లేని URL.",
|
||||
"empty_comment_alert": "ఖాళీ వ్యాఖ్యను పోస్ట్ చేయలేరు.",
|
||||
"newer_threads_available": "కొత్త థ్రెడ్లు అందుబాటులో ఉన్నాయి — [<1>రిఫ్రెష్</1>]",
|
||||
"stored_locally": "స్థానికంగా నిల్వ చేయబడింది ({{location}} డేటాలో), ఉపకరణాల మధ్య సింక్ చేయబడలేదు",
|
||||
"choose_one": "ఒకటి ఎంపిక చేసుకోండి:",
|
||||
"create": "సృష్టించండి",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "กรุณาเลือกกระดานก่อนที่จะโพสต์.",
|
||||
"invalid_url_alert": "ลิงก์ที่ให้ไม่ใช่ URL ที่ถูกต้อง",
|
||||
"empty_comment_alert": "ไม่สามารถโพสต์ความคิดเห็นว่างเปล่าได้",
|
||||
"newer_threads_available": "มีกระทู้ใหม่ที่พร้อมใช้งาน — [<1>รีเฟรช</1>]",
|
||||
"stored_locally": "เก็บไว้ในเครื่อง (ในข้อมูล {{location}}), ไม่ซิงค์ระหว่างอุปกรณ์",
|
||||
"choose_one": "เลือกหนึ่ง:",
|
||||
"create": "สร้าง",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Lütfen gönderimden önce bir pano seçin.",
|
||||
"invalid_url_alert": "Verilen bağlantı geçerli bir URL değildir.",
|
||||
"empty_comment_alert": "Boş yorum gönderilemez.",
|
||||
"newer_threads_available": "Yeni gönderiler mevcut — [<1>Yenile</1>]",
|
||||
"stored_locally": "Yerel olarak depolandı ({{location}} verisinde), cihazlar arasında senkronize değil",
|
||||
"choose_one": "Birini seç:",
|
||||
"create": "Oluştur",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Будь ласка, виберіть дошку перед публікацією.",
|
||||
"invalid_url_alert": "Надане посилання не є дійсною URL-адресою.",
|
||||
"empty_comment_alert": "Не можна опублікувати порожній коментар.",
|
||||
"newer_threads_available": "Доступні нові теми — [<1>Оновити</1>]",
|
||||
"stored_locally": "Збережено локально (у даних {{location}}), не синхронізується між пристроями",
|
||||
"choose_one": "Виберіть один:",
|
||||
"create": "Створити",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "براہ کرم پوسٹ کرنے سے پہلے ایک بورڈ منتخب کریں۔",
|
||||
"invalid_url_alert": "فراہم کردہ لنک درست URL نہیں ہے۔",
|
||||
"empty_comment_alert": "خالی تبصرہ پوسٹ نہیں کیا جا سکتا۔",
|
||||
"newer_threads_available": "نئے تھریڈ دستیاب ہیں — [<1>ریف्रش کریں</1>]",
|
||||
"stored_locally": "مقامی طور پر محفوظ ({{location}} ڈیٹا میں)، آلات میں مطابقت پذیری نہیں",
|
||||
"choose_one": "ایک کا انتخاب کریں:",
|
||||
"create": "تخلیق کریں",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "Vui lòng chọn một bảng trước khi đăng.",
|
||||
"invalid_url_alert": "Liên kết được cung cấp không phải là một URL hợp lệ.",
|
||||
"empty_comment_alert": "Không thể đăng bình luận trống.",
|
||||
"newer_threads_available": "Có các chủ đề mới — [<1>Làm mới</1>]",
|
||||
"stored_locally": "Lưu cục bộ (trong dữ liệu {{location}}), không đồng bộ giữa thiết bị",
|
||||
"choose_one": "Chọn một:",
|
||||
"create": "Tạo",
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
"no_board_selected_warning": "请在发布之前选择一个板块。",
|
||||
"invalid_url_alert": "提供的链接不是有效的 URL。",
|
||||
"empty_comment_alert": "无法发布空评论。",
|
||||
"newer_threads_available": "有新的帖子可用 — [<1>刷新</1>]",
|
||||
"stored_locally": "本地存储(位于 {{location}} 数据中),不会在设备间同步",
|
||||
"choose_one": "选择一个:",
|
||||
"create": "创建",
|
||||
|
||||
@@ -12,18 +12,13 @@
|
||||
padding: 15px 0 20px 5px;
|
||||
}
|
||||
|
||||
.morePostsSuggestion {
|
||||
color: var(--body-font-color);
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
.footer a, .newerPostsButton {
|
||||
.footer a {
|
||||
cursor: pointer;
|
||||
text-decoration: var(--button-text-decoration);
|
||||
color: var(--button-desktop-text-color);
|
||||
}
|
||||
|
||||
.footer a:hover, .newerPostsButton:hover {
|
||||
.footer a:hover {
|
||||
color: var(--button-desktop-text-color-hover);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useLocation, useNavigate, useNavigationType, useParams } from 'react-ro
|
||||
import { Comment, useAccount, useAccountComments, useAccountSubplebbits, useFeed, useSubplebbit } from '@plebbit/plebbit-react-hooks';
|
||||
import { useSubplebbitField } from '../../hooks/use-stable-subplebbit';
|
||||
import { Virtuoso, VirtuosoHandle, StateSnapshot } from 'react-virtuoso';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import styles from './board.module.css';
|
||||
import { shouldShowSnow } from '../../lib/snow';
|
||||
import { useDirectoryAddresses, useDirectories, useDirectoryByAddress } from '../../hooks/use-directories';
|
||||
@@ -30,8 +30,6 @@ interface BoardFooterProps {
|
||||
subplebbitAddresses: string[];
|
||||
hasMore: boolean;
|
||||
combinedFeedLength: number;
|
||||
subplebbitAddressesWithNewerPosts: string[];
|
||||
onNewerPostsClick: () => void;
|
||||
isInAllView: boolean;
|
||||
isInSubscriptionsView: boolean;
|
||||
isInModView: boolean;
|
||||
@@ -49,8 +47,6 @@ const BoardFooter = ({
|
||||
subplebbitAddresses,
|
||||
hasMore,
|
||||
combinedFeedLength,
|
||||
subplebbitAddressesWithNewerPosts,
|
||||
onNewerPostsClick,
|
||||
isInAllView,
|
||||
isInSubscriptionsView,
|
||||
isInModView,
|
||||
@@ -68,20 +64,7 @@ const BoardFooter = ({
|
||||
footerContent = t('no_threads');
|
||||
}
|
||||
if (hasMore || (subplebbitAddresses && subplebbitAddresses.length === 0)) {
|
||||
footerContent = (
|
||||
<>
|
||||
{subplebbitAddressesWithNewerPosts.length > 0 && (
|
||||
<div className={styles.morePostsSuggestion}>
|
||||
<Trans
|
||||
i18nKey='newer_threads_available'
|
||||
components={{
|
||||
1: <span className={styles.newerPostsButton} onClick={onNewerPostsClick} />,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
footerContent = null;
|
||||
}
|
||||
return (
|
||||
<div className={styles.footer}>
|
||||
@@ -162,7 +145,7 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, i
|
||||
[subplebbitAddresses, effectiveInfiniteScroll, infiniteFeedPostsPerPage, paginationFeedPostsPerPage],
|
||||
);
|
||||
|
||||
const { feed, hasMore, loadMore, reset, subplebbitAddressesWithNewerPosts } = useFeed(feedOptions);
|
||||
const { feed, hasMore, loadMore, reset } = useFeed(feedOptions);
|
||||
const { accountComments } = useAccountComments();
|
||||
|
||||
const feedContextKey = `${isInAllView ? 'all' : isInSubscriptionsView ? 'subs' : isInModView ? 'mod' : (subplebbitAddress ?? 'board')}-${BOARD_SORT_TYPE}-${viewType ?? 'board'}-${effectiveInfiniteScroll}`;
|
||||
@@ -260,13 +243,6 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, i
|
||||
const { error: subplebbitError, state: subplebbitState } = subplebbit || {};
|
||||
const title = isInAllView ? t('all') : isInSubscriptionsView ? t('subscriptions') : isInModView ? t('mod') : subplebbitTitle;
|
||||
|
||||
const handleNewerPostsButtonClick = () => {
|
||||
window.scrollTo({ top: 0, left: 0 });
|
||||
setTimeout(() => {
|
||||
reset();
|
||||
}, 300);
|
||||
};
|
||||
|
||||
// Memoize footer component to preserve identity across renders (Virtuoso optimization)
|
||||
// Note: useFeedStateString is called inside BoardFooter to isolate re-renders from backend state changes
|
||||
const footerComponents = useMemo(
|
||||
@@ -277,8 +253,6 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, i
|
||||
subplebbitAddresses={subplebbitAddresses}
|
||||
hasMore={hasMore}
|
||||
combinedFeedLength={combinedFeed.length}
|
||||
subplebbitAddressesWithNewerPosts={subplebbitAddressesWithNewerPosts}
|
||||
onNewerPostsClick={handleNewerPostsButtonClick}
|
||||
isInAllView={isInAllView}
|
||||
isInSubscriptionsView={isInSubscriptionsView}
|
||||
isInModView={isInModView}
|
||||
@@ -295,8 +269,6 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, i
|
||||
subplebbitAddresses,
|
||||
hasMore,
|
||||
combinedFeed.length,
|
||||
subplebbitAddressesWithNewerPosts,
|
||||
handleNewerPostsButtonClick,
|
||||
isInAllView,
|
||||
isInSubscriptionsView,
|
||||
isInModView,
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
color: var(--post-mobile-abbr-text-color);
|
||||
}
|
||||
|
||||
.footer a, .newerPostsButton {
|
||||
.footer a {
|
||||
text-decoration: var(--button-text-decoration);
|
||||
color: var(--button-desktop-text-color);
|
||||
}
|
||||
|
||||
.footer a:hover, .newerPostsButton:hover {
|
||||
.footer a:hover {
|
||||
color: var(--button-desktop-text-color-hover);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
|
||||
import { useLocation, useNavigate, useNavigationType, useParams } from 'react-router-dom';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Comment, useAccount, useFeed, useSubplebbit, useAccountComments } from '@plebbit/plebbit-react-hooks';
|
||||
import { Virtuoso, VirtuosoHandle, StateSnapshot } from 'react-virtuoso';
|
||||
import useCatalogFeedRows from '../../hooks/use-catalog-feed-rows';
|
||||
@@ -31,8 +31,6 @@ interface CatalogFooterProps {
|
||||
subplebbitAddresses: string[];
|
||||
hasMore: boolean;
|
||||
combinedFeedLength: number;
|
||||
subplebbitAddressesWithNewerPosts: string[];
|
||||
onNewerPostsClick: () => void;
|
||||
isInAllView: boolean;
|
||||
isInSubscriptionsView: boolean;
|
||||
isInModView: boolean;
|
||||
@@ -47,8 +45,6 @@ const CatalogFooter = ({
|
||||
subplebbitAddresses,
|
||||
hasMore,
|
||||
combinedFeedLength,
|
||||
subplebbitAddressesWithNewerPosts,
|
||||
onNewerPostsClick,
|
||||
isInAllView,
|
||||
isInSubscriptionsView,
|
||||
isInModView,
|
||||
@@ -65,16 +61,6 @@ const CatalogFooter = ({
|
||||
if (hasMore || (subplebbitAddresses && subplebbitAddresses.length === 0)) {
|
||||
footerContent = (
|
||||
<>
|
||||
{subplebbitAddressesWithNewerPosts.length > 0 && (
|
||||
<div className={styles.stateString}>
|
||||
<Trans
|
||||
i18nKey='newer_threads_available'
|
||||
components={{
|
||||
1: <span className={styles.newerPostsButton} onClick={onNewerPostsClick} />,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
{showLoadingEllipsis && (
|
||||
<div className={styles.stateString}>
|
||||
<LoadingEllipsis string={loadingStateString} />
|
||||
@@ -314,7 +300,7 @@ const Catalog = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp,
|
||||
handleFilterMatch,
|
||||
]);
|
||||
|
||||
const { feed, hasMore, loadMore, reset, subplebbitAddressesWithNewerPosts } = useFeed(feedOptions);
|
||||
const { feed, hasMore, loadMore, reset } = useFeed(feedOptions);
|
||||
const { accountComments } = useAccountComments();
|
||||
|
||||
const resetTriggeredRef = useRef(false);
|
||||
@@ -375,13 +361,6 @@ const Catalog = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp,
|
||||
}
|
||||
}, [filteredComments, reset]);
|
||||
|
||||
const handleNewerPostsButtonClick = useCallback(() => {
|
||||
window.scrollTo({ top: 0, left: 0 });
|
||||
setTimeout(() => {
|
||||
reset();
|
||||
}, 300);
|
||||
}, [reset]);
|
||||
|
||||
// suggest the user to change time filter if there aren't enough posts
|
||||
const setResetFunction = useFeedResetStore((state) => state.setResetFunction);
|
||||
useEffect(() => {
|
||||
@@ -403,8 +382,6 @@ const Catalog = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp,
|
||||
subplebbitAddresses={subplebbitAddresses}
|
||||
hasMore={hasMore}
|
||||
combinedFeedLength={cappedFeed.length}
|
||||
subplebbitAddressesWithNewerPosts={subplebbitAddressesWithNewerPosts}
|
||||
onNewerPostsClick={handleNewerPostsButtonClick}
|
||||
isInAllView={isInAllView}
|
||||
isInSubscriptionsView={isInSubscriptionsView}
|
||||
isInModView={isInModView}
|
||||
@@ -414,17 +391,7 @@ const Catalog = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp,
|
||||
</>
|
||||
),
|
||||
}),
|
||||
[
|
||||
subplebbitAddresses,
|
||||
hasMore,
|
||||
cappedFeed.length,
|
||||
subplebbitAddressesWithNewerPosts,
|
||||
handleNewerPostsButtonClick,
|
||||
isInAllView,
|
||||
isInSubscriptionsView,
|
||||
isInModView,
|
||||
effectiveInfiniteScroll,
|
||||
],
|
||||
[subplebbitAddresses, hasMore, cappedFeed.length, isInAllView, isInSubscriptionsView, isInModView, effectiveInfiniteScroll],
|
||||
);
|
||||
|
||||
const isFeedLoaded = feed.length > 0 || state === 'failed';
|
||||
|
||||
Reference in New Issue
Block a user