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:
plebeius
2026-02-23 19:46:30 +08:00
parent 609436a0fb
commit 0ea7356523
39 changed files with 10 additions and 111 deletions
-1
View File
@@ -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": "إنشاء",
-1
View File
@@ -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": "তৈরি করুন",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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": "Δημιουργία",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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": "ایجاد",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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": "צור",
-1
View File
@@ -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": "बनाएं",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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": "作成",
-1
View File
@@ -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": "생성",
-1
View File
@@ -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": "तयार करा",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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ă",
-1
View File
@@ -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": "Создать",
-1
View File
@@ -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",
-1
View File
@@ -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",
-1
View File
@@ -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": "సృష్టించండి",
-1
View File
@@ -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": "สร้าง",
-1
View File
@@ -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",
-1
View File
@@ -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": "Створити",
-1
View File
@@ -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": "تخلیق کریں",
-1
View File
@@ -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",
-1
View File
@@ -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": "创建",
+2 -7
View File
@@ -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 -31
View File
@@ -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,
+2 -2
View File
@@ -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);
}
+3 -36
View File
@@ -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';