mirror of
https://github.com/plebbit/seedit.git
synced 2026-02-08 04:50:57 -05:00
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "إخفاء الإعدادات",
|
||||
"wallet": "محفظة",
|
||||
"undelete": "إلغاء الحذف",
|
||||
"loading_comments": "تحميل التعليقات",
|
||||
"loading_comments": "جاري تحميل التعليقات",
|
||||
"you_blocked_community": "لقد حظرت هذه المجتمعة",
|
||||
"show": "اظهر",
|
||||
"plebbit_options": "خيارات plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "أنت مشرف في هذه المجتمع",
|
||||
"you_are_owner": "أنت مالك هذا المجتمع",
|
||||
"looking_for_more_posts": "البحث عن المزيد من المشاركات",
|
||||
"loading_feed": "تحميل الخلاصة"
|
||||
"loading_feed": "تحميل الخلاصة",
|
||||
"loading_posts": "جاري تحميل المشاركات"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "আপনি এই কমিউনিটির একজন প্রশাসক",
|
||||
"you_are_owner": "আপনি এই কমিউনিটির মালিক",
|
||||
"looking_for_more_posts": "আরও পোস্ট খুঁজছি",
|
||||
"loading_feed": "লোডিং ফিড"
|
||||
"loading_feed": "লোডিং ফিড",
|
||||
"loading_posts": "পোস্ট লোড হচ্ছে"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Jste administrátorem této komunity",
|
||||
"you_are_owner": "Jste vlastníkem této komunity",
|
||||
"looking_for_more_posts": "Hledání dalších příspěvků",
|
||||
"loading_feed": "Načítání kanálu"
|
||||
"loading_feed": "Načítání kanálu",
|
||||
"loading_posts": "Načítání příspěvků"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Du er administrator af dette fællesskab",
|
||||
"you_are_owner": "Du er ejer af dette fællesskab",
|
||||
"looking_for_more_posts": "Leder efter flere indlæg",
|
||||
"loading_feed": "Indlæser feed"
|
||||
"loading_feed": "Indlæser feed",
|
||||
"loading_posts": "Indlæser indlæg"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Einstellungen ausblenden",
|
||||
"wallet": "Wallet",
|
||||
"undelete": "Wiederherstellen",
|
||||
"loading_comments": "Lade Kommentare",
|
||||
"loading_comments": "Lädt Kommentare",
|
||||
"you_blocked_community": "Du hast diese Gemeinschaft blockiert",
|
||||
"show": "zeigen",
|
||||
"plebbit_options": "plebbit optionen",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Du bist ein Administrator dieser Community",
|
||||
"you_are_owner": "Du bist der Eigentümer dieser Community",
|
||||
"looking_for_more_posts": "Suche nach weiteren Beiträgen",
|
||||
"loading_feed": "Lädt Feed"
|
||||
"loading_feed": "Lädt Feed",
|
||||
"loading_posts": "Lade Beiträge"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Απόκρυψη ρυθμίσεων",
|
||||
"wallet": "Πορτοφόλι",
|
||||
"undelete": "Ανάκτηση διαγραφής",
|
||||
"loading_comments": "Φόρτωση σχολίων",
|
||||
"loading_comments": "Φορτώνει σχόλια",
|
||||
"you_blocked_community": "Έχετε αποκλείσει αυτή την κοινότητα",
|
||||
"show": "εμφάνιση",
|
||||
"plebbit_options": "επιλογές plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Είσαι διαχειριστής αυτής της κοινότητας",
|
||||
"you_are_owner": "Είσαι ο ιδιοκτήτης αυτής της κοινότητας",
|
||||
"looking_for_more_posts": "Ψάχνει για περισσότερες αναρτήσεις",
|
||||
"loading_feed": "Φόρτωση ροής"
|
||||
"loading_feed": "Φόρτωση ροής",
|
||||
"loading_posts": "Φόρτωση δημοσιεύσεων"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "You are an admin of this community.",
|
||||
"you_are_owner": "You are the owner of this community.",
|
||||
"looking_for_more_posts": "Looking for more posts",
|
||||
"loading_feed": "Loading feed"
|
||||
"loading_feed": "Loading feed",
|
||||
"loading_posts": "Loading posts"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Eres un administrador de esta comunidad",
|
||||
"you_are_owner": "Eres el dueño de esta comunidad",
|
||||
"looking_for_more_posts": "Buscando más publicaciones",
|
||||
"loading_feed": "Cargando feed"
|
||||
"loading_feed": "Cargando feed",
|
||||
"loading_posts": "Cargando publicaciones"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "مخفی کردن تنظیمات",
|
||||
"wallet": "کیف پول",
|
||||
"undelete": "بازیابی",
|
||||
"loading_comments": "بارگذاری نظرات",
|
||||
"loading_comments": "در حال بارگذاری نظرات",
|
||||
"you_blocked_community": "شما این انجمن را مسدود کردهاید",
|
||||
"show": "نمایش",
|
||||
"plebbit_options": "گزینه های plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "شما مدیر این جامعه هستید",
|
||||
"you_are_owner": "شما مالک این جامعه هستید",
|
||||
"looking_for_more_posts": "در جستجوی پستهای بیشتر",
|
||||
"loading_feed": "در حال بارگذاری فید"
|
||||
"loading_feed": "در حال بارگذاری فید",
|
||||
"loading_posts": "در حال بارگذاری پستها"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Olet tämän yhteisön ylläpitäjä",
|
||||
"you_are_owner": "Olet tämän yhteisön omistaja",
|
||||
"looking_for_more_posts": "Etsii lisää viestejä",
|
||||
"loading_feed": "Ladataan syöte"
|
||||
"loading_feed": "Ladataan syöte",
|
||||
"loading_posts": "Ladataan viestejä"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Ikaw ay isang admin ng komunidad na ito",
|
||||
"you_are_owner": "Ikaw ang may-ari ng komunidad na ito",
|
||||
"looking_for_more_posts": "Naghahanap ng higit pang mga post",
|
||||
"loading_feed": "Naglo-load ng feed"
|
||||
"loading_feed": "Naglo-load ng feed",
|
||||
"loading_posts": "Naglo-load ng mga post"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Vous êtes un administrateur de cette communauté",
|
||||
"you_are_owner": "Vous êtes le propriétaire de cette communauté",
|
||||
"looking_for_more_posts": "Recherche de plus de publications",
|
||||
"loading_feed": "Chargement du flux"
|
||||
"loading_feed": "Chargement du flux",
|
||||
"loading_posts": "Chargement des publications"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "הסתר הגדרות",
|
||||
"wallet": "ארנק",
|
||||
"undelete": "שחזור מחיקה",
|
||||
"loading_comments": "טוען תגובות",
|
||||
"loading_comments": "טעינת תגובות",
|
||||
"you_blocked_community": "חסמת את הקהילה הזו",
|
||||
"show": "תצוגה",
|
||||
"plebbit_options": "אפשרויות plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "אתה מנהל מערכת של קהילה זו",
|
||||
"you_are_owner": "אתה הבעלים של קהילה זו",
|
||||
"looking_for_more_posts": "מחפש פוסטים נוספים",
|
||||
"loading_feed": "טוען פיד"
|
||||
"loading_feed": "טוען פיד",
|
||||
"loading_posts": "טעינת פוסטים"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "आप इस समुदाय के व्यवस्थापक हैं",
|
||||
"you_are_owner": "आप इस समुदाय के मालिक हैं",
|
||||
"looking_for_more_posts": "अधिक पोस्ट ढूंढ रहे हैं",
|
||||
"loading_feed": "लोडिंग फीड"
|
||||
"loading_feed": "लोडिंग फीड",
|
||||
"loading_posts": "पोस्ट लोड हो रही हैं"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Beállítások elrejtése",
|
||||
"wallet": "Pénztárca",
|
||||
"undelete": "Visszaállítás",
|
||||
"loading_comments": "Megjegyzések betöltése",
|
||||
"loading_comments": "Kommentárok betöltése",
|
||||
"you_blocked_community": "Blokkoltad ezt a közösséget",
|
||||
"show": "mutat",
|
||||
"plebbit_options": "plebbit lehetőségek",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Adminisztrátor vagy ennek a közösségnek",
|
||||
"you_are_owner": "Te vagy a közösség tulajdonosa",
|
||||
"looking_for_more_posts": "Több bejegyzés keresése",
|
||||
"loading_feed": "Betöltés a hírcsatornára"
|
||||
"loading_feed": "Betöltés a hírcsatornára",
|
||||
"loading_posts": "Bejegyzések betöltése"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Anda adalah admin komunitas ini",
|
||||
"you_are_owner": "Anda adalah pemilik komunitas ini",
|
||||
"looking_for_more_posts": "Mencari lebih banyak pos",
|
||||
"loading_feed": "Memuat feed"
|
||||
"loading_feed": "Memuat feed",
|
||||
"loading_posts": "Memuat pos"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Nascondi impostazioni",
|
||||
"wallet": "Wallet",
|
||||
"undelete": "Annulla eliminazione",
|
||||
"loading_comments": "Caricamento commenti",
|
||||
"loading_comments": "Caricamento dei commenti",
|
||||
"you_blocked_community": "Hai bloccato questa comunità",
|
||||
"show": "mostra",
|
||||
"plebbit_options": "opzioni plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Sei un admin di questa comunità",
|
||||
"you_are_owner": "Sei il proprietario di questa comunità",
|
||||
"looking_for_more_posts": "Cercando più post",
|
||||
"loading_feed": "Caricamento feed"
|
||||
"loading_feed": "Caricamento feed",
|
||||
"loading_posts": "Caricamento dei post"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "設定を非表示",
|
||||
"wallet": "ウォレット",
|
||||
"undelete": "削除を取り消す",
|
||||
"loading_comments": "コメントを読み込み中",
|
||||
"loading_comments": "コメントを読み込んでいます",
|
||||
"you_blocked_community": "このコミュニティをブロックしました",
|
||||
"show": "表示",
|
||||
"plebbit_options": "plebbitのオプション",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "あなたはこのコミュニティの管理者です",
|
||||
"you_are_owner": "あなたはこのコミュニティのオーナーです",
|
||||
"looking_for_more_posts": "さらに投稿を探しています",
|
||||
"loading_feed": "フィードを読み込んでいます"
|
||||
"loading_feed": "フィードを読み込んでいます",
|
||||
"loading_posts": "投稿を読み込んでいます"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "설정 숨기기",
|
||||
"wallet": "지갑",
|
||||
"undelete": "삭제 취소",
|
||||
"loading_comments": "댓글 로드 중",
|
||||
"loading_comments": "댓글을 로드 중",
|
||||
"you_blocked_community": "이 커뮤니티를 차단했습니다",
|
||||
"show": "보여주다",
|
||||
"plebbit_options": "plebbit 옵션",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "당신은 이 커뮤니티의 관리자입니다",
|
||||
"you_are_owner": "당신은 이 커뮤니티의 소유자입니다",
|
||||
"looking_for_more_posts": "더 많은 게시물을 찾고 있습니다",
|
||||
"loading_feed": "피드를 로딩 중"
|
||||
"loading_feed": "피드를 로딩 중",
|
||||
"loading_posts": "게시물 로딩 중"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "सेटिंग्ज लपवा",
|
||||
"wallet": "बटवा",
|
||||
"undelete": "डिलीट करा",
|
||||
"loading_comments": "टिप्पणी लोड होत आहे",
|
||||
"loading_comments": "टिप्पण्या लोड होत आहेत",
|
||||
"you_blocked_community": "तुम्ही ह्या समुदायाला ब्लॉक केलं आहे",
|
||||
"show": "दाखवा",
|
||||
"plebbit_options": "प्लेबिट पर्याय",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "तुम्ही या समुदायाचे प्रशासक आहात",
|
||||
"you_are_owner": "तुम्ही या समुदायाचे मालक आहात",
|
||||
"looking_for_more_posts": "अधिक पोस्ट शोधत आहे",
|
||||
"loading_feed": "फीड लोड करत आहे"
|
||||
"loading_feed": "फीड लोड करत आहे",
|
||||
"loading_posts": "पोस्ट लोड करत आहे"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Je bent een beheerder van deze gemeenschap",
|
||||
"you_are_owner": "Je bent de eigenaar van deze gemeenschap",
|
||||
"looking_for_more_posts": "Op zoek naar meer berichten",
|
||||
"loading_feed": "Laad feed"
|
||||
"loading_feed": "Laad feed",
|
||||
"loading_posts": "Berichten laden"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Skjul innstillinger",
|
||||
"wallet": "Lommebok",
|
||||
"undelete": "Gjenopprette",
|
||||
"loading_comments": "Laster inn kommentarer",
|
||||
"loading_comments": "Laster kommentarer",
|
||||
"you_blocked_community": "Du har blokkert dette fellesskapet",
|
||||
"show": "vise",
|
||||
"plebbit_options": "plebbit alternativer",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Du er administrator for dette fellesskapet",
|
||||
"you_are_owner": "Du er eier av dette fellesskapet",
|
||||
"looking_for_more_posts": "Leter etter flere innlegg",
|
||||
"loading_feed": "Laster feed"
|
||||
"loading_feed": "Laster feed",
|
||||
"loading_posts": "Laster innlegg"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Jesteś administratorem tej społeczności",
|
||||
"you_are_owner": "Jesteś właścicielem tej społeczności",
|
||||
"looking_for_more_posts": "Szukam więcej postów",
|
||||
"loading_feed": "Ładowanie kanału"
|
||||
"loading_feed": "Ładowanie kanału",
|
||||
"loading_posts": "Ładowanie postów"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Você é um administrador desta comunidade",
|
||||
"you_are_owner": "Você é o proprietário desta comunidade",
|
||||
"looking_for_more_posts": "Procurando mais postagens",
|
||||
"loading_feed": "Carregando feed"
|
||||
"loading_feed": "Carregando feed",
|
||||
"loading_posts": "Carregando postagens"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Ascunde setările",
|
||||
"wallet": "Portofel",
|
||||
"undelete": "Recuperare",
|
||||
"loading_comments": "Se încarcă comentariile",
|
||||
"loading_comments": "Se încarcă comentarii",
|
||||
"you_blocked_community": "Ați blocat această comunitate",
|
||||
"show": "arată",
|
||||
"plebbit_options": "opțiuni plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Ești administrator al acestei comunități",
|
||||
"you_are_owner": "Ești proprietarul acestei comunități",
|
||||
"looking_for_more_posts": "Căutând mai multe postări",
|
||||
"loading_feed": "Încărcare feed"
|
||||
"loading_feed": "Încărcare feed",
|
||||
"loading_posts": "Se încarcă postările"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Вы администратор этой сообщества",
|
||||
"you_are_owner": "Вы являетесь владельцем этой сообщества",
|
||||
"looking_for_more_posts": "Ищу больше постов",
|
||||
"loading_feed": "Загрузка ленты"
|
||||
"loading_feed": "Загрузка ленты",
|
||||
"loading_posts": "Загрузка постов"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "Fshih rregullimet",
|
||||
"wallet": "Wallet",
|
||||
"undelete": "Rikuperimi",
|
||||
"loading_comments": "Duke u ngarkuar komentet",
|
||||
"loading_comments": "Po ngarkohen komentet",
|
||||
"you_blocked_community": "Ju keni bllokuar këtë komunitet",
|
||||
"show": "shfaq",
|
||||
"plebbit_options": "opsione plebbit",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Jeni administrator i kësaj komune",
|
||||
"you_are_owner": "Jeni pronari i kësaj komune",
|
||||
"looking_for_more_posts": "Po kërkoni më shumë postime",
|
||||
"loading_feed": "Po ngarkoni feed-in"
|
||||
"loading_feed": "Po ngarkoni feed-in",
|
||||
"loading_posts": "Duke ngarkuar postimet"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Du är administratör för denna gemenskap",
|
||||
"you_are_owner": "Du är ägaren av denna gemenskap",
|
||||
"looking_for_more_posts": "Letar efter fler inlägg",
|
||||
"loading_feed": "Laddar flöde"
|
||||
"loading_feed": "Laddar flöde",
|
||||
"loading_posts": "Laddar inlägg"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "సెట్టింగులను దాచు",
|
||||
"wallet": "వాలెట్",
|
||||
"undelete": "తొలగించడం రద్దు చేయండి",
|
||||
"loading_comments": "వ్యాఖ్యలను లోడ్ అవుతోంది",
|
||||
"loading_comments": "కామెంట్లు లోడవుతున్నాయి",
|
||||
"you_blocked_community": "ఈ సముదాయాన్ని మీరు నిరోధించారు",
|
||||
"show": "చూపించు",
|
||||
"plebbit_options": "plebbit ఎంపికలు",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "మీరు ఈ కమ్యూనిటీలో అడ్మిన్ అయితే",
|
||||
"you_are_owner": "మీరు ఈ కమ్యూనిటీ యొక్క యజమాని",
|
||||
"looking_for_more_posts": "మరింత పోస్ట్ల కోసం చూస్తున్నాను",
|
||||
"loading_feed": "లోడింగ్ ఫీడ్"
|
||||
"loading_feed": "లోడింగ్ ఫీడ్",
|
||||
"loading_posts": "పోస్ట్స్ లోడవుతున్నాయి"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "คุณเป็นผู้ดูแลระบบของชุมชนนี้",
|
||||
"you_are_owner": "คุณเป็นเจ้าของชุมชนนี้",
|
||||
"looking_for_more_posts": "กำลังมองหาบทความเพิ่มเติม",
|
||||
"loading_feed": "กำลังโหลดฟีด"
|
||||
"loading_feed": "กำลังโหลดฟีด",
|
||||
"loading_posts": "กำลังโหลดโพสต์"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Bu topluluğun yöneticisisiniz",
|
||||
"you_are_owner": "Bu topluluğun sahibi sizsiniz",
|
||||
"looking_for_more_posts": "Daha fazla gönderi arıyorum",
|
||||
"loading_feed": "Yükleniyor besleme"
|
||||
"loading_feed": "Yükleniyor besleme",
|
||||
"loading_posts": "Gönderiler yükleniyor"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Ви є адміністратором цієї спільноти",
|
||||
"you_are_owner": "Ви є власником цієї спільноти",
|
||||
"looking_for_more_posts": "Шукаю більше дописів",
|
||||
"loading_feed": "Завантаження потоку"
|
||||
"loading_feed": "Завантаження потоку",
|
||||
"loading_posts": "Завантаження постів"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "ترتیبات چھپائیں",
|
||||
"wallet": "والیٹ",
|
||||
"undelete": "حذف کو واپس لائیں",
|
||||
"loading_comments": "تبصرے لوڈ ہو رہے ہیں",
|
||||
"loading_comments": "کمنٹس لوڈ ہو رہے ہیں",
|
||||
"you_blocked_community": "آپ نے یہ سماج بلاک کر دی ہے",
|
||||
"show": "دکھائیں",
|
||||
"plebbit_options": "پلیبٹ اختیارات",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "آپ اس کمیونٹی کے ایڈمن ہیں",
|
||||
"you_are_owner": "آپ اس کمیونٹی کے مالک ہیں",
|
||||
"looking_for_more_posts": "مزید پوسٹس تلاش کر رہے ہیں",
|
||||
"loading_feed": "لوڈ ہو رہا ہے فیڈ"
|
||||
"loading_feed": "لوڈ ہو رہا ہے فیڈ",
|
||||
"loading_posts": "پوسٹس لوڈ ہو رہی ہیں"
|
||||
}
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "Bạn là quản trị viên của cộng đồng này",
|
||||
"you_are_owner": "Bạn là chủ sở hữu của cộng đồng này",
|
||||
"looking_for_more_posts": "Tìm kiếm thêm bài viết",
|
||||
"loading_feed": "Đang tải feed"
|
||||
"loading_feed": "Đang tải feed",
|
||||
"loading_posts": "Đang tải bài viết"
|
||||
}
|
||||
@@ -298,7 +298,7 @@
|
||||
"hide_settings": "隐藏设置",
|
||||
"wallet": "钱包",
|
||||
"undelete": "取消删除",
|
||||
"loading_comments": "正在加载评论",
|
||||
"loading_comments": "加载评论",
|
||||
"you_blocked_community": "您已封锁了此社区",
|
||||
"show": "显示",
|
||||
"plebbit_options": "plebbit选项",
|
||||
@@ -360,5 +360,6 @@
|
||||
"you_are_admin": "您是这个社区的管理员",
|
||||
"you_are_owner": "您是这个社区的拥有者",
|
||||
"looking_for_more_posts": "寻找更多帖子",
|
||||
"loading_feed": "加载中..."
|
||||
"loading_feed": "加载中...",
|
||||
"loading_posts": "加载帖子"
|
||||
}
|
||||
14
src/app.tsx
14
src/app.tsx
@@ -1,5 +1,5 @@
|
||||
import { useEffect } from 'react';
|
||||
import { Outlet, Route, Routes, useLocation, useNavigate } from 'react-router-dom';
|
||||
import { Outlet, Route, Routes } from 'react-router-dom';
|
||||
import useTheme from './hooks/use-theme';
|
||||
import styles from './app.module.css';
|
||||
import AboutView from './views/about';
|
||||
@@ -57,17 +57,6 @@ const App = () => {
|
||||
document.body.classList.add(theme);
|
||||
}, [theme]);
|
||||
|
||||
// react router doesn't handle the %23 hash correctly, so we need to replace it with #
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
useEffect(() => {
|
||||
const currentPath = location.pathname + location.hash;
|
||||
if (currentPath.includes('%23')) {
|
||||
const correctedPath = currentPath.replace('%23', '#');
|
||||
navigate(correctedPath, { replace: true });
|
||||
}
|
||||
}, [location, navigate]);
|
||||
|
||||
return (
|
||||
<div className={`${styles.app} ${theme}`}>
|
||||
<Routes>
|
||||
@@ -132,6 +121,7 @@ const App = () => {
|
||||
<Route path='/u/:authorAddress/c/:commentCid?/submitted/:sortType?/:timeFilterName?' element={<Author />} />
|
||||
|
||||
<Route path='*' element={<NotFound />} />
|
||||
<Route path='/not-found' element={<NotFound />} />
|
||||
</Route>
|
||||
</Route>
|
||||
</Routes>
|
||||
|
||||
@@ -13,10 +13,6 @@
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.stateString {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.morePostsSuggestion {
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useState, useEffect } from 'react';
|
||||
import { Link, useLocation, useParams } from 'react-router-dom';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { isModView } from '../../lib/utils/view-utils';
|
||||
import useFeedStateString from '../../hooks/use-feed-state-string';
|
||||
import { useFeedStateString } from '../../hooks/use-state-string';
|
||||
import LoadingEllipsis from '../loading-ellipsis';
|
||||
import styles from './feed-footer.module.css';
|
||||
|
||||
@@ -43,9 +43,9 @@ const FeedFooter = ({
|
||||
};
|
||||
|
||||
const feedStateString = useFeedStateString(subplebbitAddresses);
|
||||
const [isHovering, setIsHovering] = useState(false);
|
||||
const loadingStateString =
|
||||
!hasFeedLoaded || (feedLength === 0 && !(weeklyFeedLength > feedLength || monthlyFeedLength > feedLength)) ? t('loading_feed') : t('looking_for_more_posts');
|
||||
useFeedStateString(subplebbitAddresses) ||
|
||||
(!hasFeedLoaded || (feedLength === 0 && !(weeklyFeedLength > feedLength || monthlyFeedLength > feedLength)) ? t('loading_feed') : t('looking_for_more_posts'));
|
||||
|
||||
// Add state to track initial loading
|
||||
const [hasFetchedSubplebbitAddresses, setHasFetchedSubplebbitAddresses] = useState(false);
|
||||
@@ -101,7 +101,7 @@ const FeedFooter = ({
|
||||
</div>
|
||||
)
|
||||
)}
|
||||
<div className={styles.stateString} onMouseEnter={() => setIsHovering(true)} onMouseLeave={() => setIsHovering(false)}>
|
||||
<div className={styles.stateString}>
|
||||
{subplebbitAddresses.length === 0 ? (
|
||||
isInModView ? (
|
||||
<div className={styles.notModerator}>{t('not_moderator')}</div>
|
||||
@@ -116,7 +116,7 @@ const FeedFooter = ({
|
||||
</div>
|
||||
)
|
||||
) : (
|
||||
<LoadingEllipsis string={isHovering ? feedStateString || loadingStateString : loadingStateString} />
|
||||
<LoadingEllipsis string={feedStateString || loadingStateString} />
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
|
||||
@@ -23,11 +23,9 @@ import {
|
||||
import Markdown from '../markdown';
|
||||
import SearchBar from '../search-bar';
|
||||
import SubscribeButton from '../subscribe-button';
|
||||
import packageJson from '../../../package.json';
|
||||
import LoadingEllipsis from '../loading-ellipsis';
|
||||
import Version from '../version';
|
||||
|
||||
const { version } = packageJson;
|
||||
const commitRef = process.env.REACT_APP_COMMIT_REF;
|
||||
const isElectron = window.isElectron === true;
|
||||
|
||||
const RulesList = ({ rules }: { rules: string[] }) => {
|
||||
@@ -108,23 +106,6 @@ const ModerationTools = ({ address }: { address?: string }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const downloadAppLink = (() => {
|
||||
const platform = navigator.platform;
|
||||
if (platform === 'Linux' || platform === 'Linux x86_64' || platform === 'Linux i686' || platform === 'Linux aarch64') {
|
||||
return `https://github.com/plebbit/seedit/releases/download/v${version}/seedit-${version}.AppImage`;
|
||||
} else if (platform === 'Win32' || platform === 'Win64' || platform === 'Windows') {
|
||||
return `https://github.com/plebbit/seedit/releases/download/v${version}/seedit.Portable.${version}.exe`;
|
||||
} else if (platform === 'MacIntel' || platform === 'Macintosh') {
|
||||
return `https://github.com/plebbit/seedit/releases/download/v${version}/seedit-${version}.dmg`;
|
||||
} else if (platform === 'Android') {
|
||||
return undefined;
|
||||
} else if (platform === 'iPhone' || platform === 'iPad') {
|
||||
return undefined;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
})();
|
||||
|
||||
interface SidebarProps {
|
||||
comment?: Comment;
|
||||
isSubCreatedButNotYetPublished?: boolean;
|
||||
@@ -134,7 +115,6 @@ interface SidebarProps {
|
||||
}
|
||||
|
||||
export const Footer = () => {
|
||||
const { t } = useTranslation();
|
||||
const location = useLocation();
|
||||
const isMobile = useIsMobile();
|
||||
const isInHomeAboutView = isHomeAboutView(location.pathname);
|
||||
@@ -148,7 +128,7 @@ export const Footer = () => {
|
||||
<ul>
|
||||
<li>
|
||||
<a href='https://plebbit.com' target='_blank' rel='noopener noreferrer'>
|
||||
plebbit
|
||||
about
|
||||
</a>
|
||||
<span className={styles.footerSeparator}>|</span>
|
||||
</li>
|
||||
@@ -177,28 +157,14 @@ export const Footer = () => {
|
||||
</a>
|
||||
<span className={styles.footerSeparator}>|</span>
|
||||
</li>
|
||||
{downloadAppLink && (
|
||||
<li>
|
||||
<a href={downloadAppLink} target='_blank' rel='noopener noreferrer'>
|
||||
{t('download_app')}
|
||||
</a>
|
||||
<span className={styles.footerSeparator}>|</span>
|
||||
</li>
|
||||
)}
|
||||
<li>
|
||||
<a href={`https://github.com/plebbit/seedit/releases/tag/v${version}`} target='_blank' rel='noopener noreferrer'>
|
||||
v{version}
|
||||
<a href='https://plebbit.github.io/docs/learn/clients/seedit/what-is-seedit' target='_blank' rel='noopener noreferrer'>
|
||||
docs
|
||||
</a>
|
||||
{commitRef && (
|
||||
<>
|
||||
{' '}
|
||||
(
|
||||
<a href={`https://github.com/plebbit/seedit/commit/${commitRef}`} target='_blank' rel='noopener noreferrer'>
|
||||
{commitRef.slice(0, 7)}
|
||||
</a>
|
||||
)
|
||||
</>
|
||||
)}
|
||||
<span className={styles.footerSeparator}>|</span>
|
||||
</li>
|
||||
<li>
|
||||
<Version />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 6;
|
||||
transition: top 0.2s ease-in-out;
|
||||
will-change: transform;
|
||||
transform: translateY(0);
|
||||
transition: transform 0.2s ease-in-out;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ const StickyHeader = () => {
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className={styles.content} style={{ top: visible ? 0 : '-40px' }}>
|
||||
<div className={styles.content} style={{ transform: visible ? 'translateY(0)' : 'translateY(-40px)' }}>
|
||||
<TopBar />
|
||||
<AccountBar />
|
||||
</div>
|
||||
|
||||
1
src/components/version/index.ts
Normal file
1
src/components/version/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export { default } from './version';
|
||||
18
src/components/version/version.tsx
Normal file
18
src/components/version/version.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
import packageJson from '../../../package.json';
|
||||
|
||||
const { version } = packageJson;
|
||||
const commitRef = process.env.REACT_APP_COMMIT_REF;
|
||||
|
||||
const Version = () => {
|
||||
return (
|
||||
<a
|
||||
href={commitRef ? `https://github.com/plebbit/seedit/commit/${commitRef}` : `https://github.com/plebbit/seedit/releases/tag/v${version}`}
|
||||
target='_blank'
|
||||
rel='noopener noreferrer'
|
||||
>
|
||||
seedit v{commitRef ? '-dev' : version}
|
||||
</a>
|
||||
);
|
||||
};
|
||||
|
||||
export default Version;
|
||||
@@ -15,6 +15,7 @@ export interface MultisubSubplebbit {
|
||||
tags?: string[];
|
||||
features?: string[];
|
||||
seeditAutoSubscribe?: boolean;
|
||||
lowUptime?: boolean;
|
||||
}
|
||||
|
||||
let cacheSubplebbits: MultisubSubplebbit[] | null = null;
|
||||
@@ -34,14 +35,17 @@ export const useDefaultSubplebbits = () => {
|
||||
'https://raw.githubusercontent.com/plebbit/temporary-default-subplebbits/master/multisub.json',
|
||||
// { cache: 'no-cache' }
|
||||
).then((res) => res.json());
|
||||
cacheSubplebbits = multisub.subplebbits;
|
||||
|
||||
const filteredSubplebbits = multisub.subplebbits.filter((sub: MultisubSubplebbit) => !sub.lowUptime);
|
||||
|
||||
cacheSubplebbits = filteredSubplebbits;
|
||||
|
||||
// Cache auto-subscribe addresses when we fetch subplebbits
|
||||
cacheAutoSubscribeAddresses = multisub.subplebbits
|
||||
cacheAutoSubscribeAddresses = filteredSubplebbits
|
||||
.filter((sub: MultisubSubplebbit) => sub.seeditAutoSubscribe && sub.address)
|
||||
.map((sub: MultisubSubplebbit) => sub.address);
|
||||
|
||||
setSubplebbits(multisub.subplebbits);
|
||||
setSubplebbits(filteredSubplebbits);
|
||||
} catch (e) {
|
||||
console.warn(e);
|
||||
}
|
||||
@@ -51,6 +55,8 @@ export const useDefaultSubplebbits = () => {
|
||||
return cacheSubplebbits || subplebbits;
|
||||
};
|
||||
|
||||
export const getAutoSubscribeAddresses = () => cacheAutoSubscribeAddresses || [];
|
||||
|
||||
export const useDefaultSubplebbitAddresses = () => {
|
||||
const defaultSubplebbits = useDefaultSubplebbits();
|
||||
const { hideAdultCommunities, hideGoreCommunities, hideAntiCommunities, hideVulgarCommunities } = useContentOptionsStore();
|
||||
@@ -108,5 +114,3 @@ const getUniqueTags = (multisub: any) => {
|
||||
export const useDefaultSubplebbitTags = (subplebbits: any) => {
|
||||
return useMemo(() => getUniqueTags(subplebbits), [subplebbits]);
|
||||
};
|
||||
|
||||
export const getAutoSubscribeAddresses = () => cacheAutoSubscribeAddresses || [];
|
||||
|
||||
@@ -1,99 +0,0 @@
|
||||
import { useMemo } from 'react';
|
||||
import useStateString from './use-state-string';
|
||||
import { useSubplebbit, useSubplebbitsStates } from '@plebbit/plebbit-react-hooks';
|
||||
|
||||
const clientHosts: { [key: string]: string } = {};
|
||||
|
||||
const getClientHost = (clientUrl: string): string => {
|
||||
if (!clientHosts[clientUrl]) {
|
||||
try {
|
||||
clientHosts[clientUrl] = new URL(clientUrl).hostname || clientUrl;
|
||||
} catch (e) {
|
||||
clientHosts[clientUrl] = clientUrl;
|
||||
}
|
||||
}
|
||||
return clientHosts[clientUrl];
|
||||
};
|
||||
|
||||
const useFeedStateString = (subplebbitAddresses?: string[]): string | undefined => {
|
||||
// single subplebbit feed state string
|
||||
const subplebbitAddress = subplebbitAddresses?.length === 1 ? subplebbitAddresses[0] : undefined;
|
||||
const subplebbit = useSubplebbit({ subplebbitAddress });
|
||||
const singleSubplebbitFeedStateString = useStateString(subplebbit);
|
||||
|
||||
// multiple subplebbit feed state string
|
||||
const { states } = useSubplebbitsStates({ subplebbitAddresses });
|
||||
|
||||
const multipleSubplebbitsFeedStateString = useMemo(() => {
|
||||
if (subplebbitAddress) {
|
||||
return;
|
||||
}
|
||||
|
||||
// e.g. Resolving 2 addresses from infura.io, fetching 2 IPNS, 1 IPFS from cloudflare-ipfs.com, ipfs.io
|
||||
let stateString = '';
|
||||
|
||||
if (states['resolving-address']) {
|
||||
const { subplebbitAddresses, clientUrls } = states['resolving-address'];
|
||||
if (subplebbitAddresses.length && clientUrls.length) {
|
||||
stateString += `resolving ${subplebbitAddresses.length} ${subplebbitAddresses.length === 1 ? 'address' : 'addresses'} from ${clientUrls
|
||||
.map(getClientHost)
|
||||
.join(', ')}`;
|
||||
}
|
||||
}
|
||||
|
||||
// find all page client and sub addresses
|
||||
const pagesStatesClientHosts = new Set();
|
||||
const pagesStatesSubplebbitAddresses = new Set();
|
||||
for (const state in states) {
|
||||
if (state.match('page')) {
|
||||
states[state].clientUrls.forEach((clientUrl) => pagesStatesClientHosts.add(getClientHost(clientUrl)));
|
||||
states[state].subplebbitAddresses.forEach((subplebbitAddress) => pagesStatesSubplebbitAddresses.add(subplebbitAddress));
|
||||
}
|
||||
}
|
||||
|
||||
if (states['fetching-ipns'] || states['fetching-ipfs'] || pagesStatesSubplebbitAddresses.size) {
|
||||
// separate 2 different states using ', '
|
||||
if (stateString) {
|
||||
stateString += ', ';
|
||||
}
|
||||
|
||||
// find all client urls
|
||||
const clientHosts = new Set([...pagesStatesClientHosts]);
|
||||
states['fetching-ipns']?.clientUrls.forEach((clientUrl) => clientHosts.add(getClientHost(clientUrl)));
|
||||
states['fetching-ipfs']?.clientUrls.forEach((clientUrl) => clientHosts.add(getClientHost(clientUrl)));
|
||||
|
||||
if (clientHosts.size) {
|
||||
stateString += 'fetching ';
|
||||
if (states['fetching-ipns']) {
|
||||
stateString += `${states['fetching-ipns'].subplebbitAddresses.length} IPNS`;
|
||||
}
|
||||
if (states['fetching-ipfs']) {
|
||||
if (states['fetching-ipns']) {
|
||||
stateString += ', ';
|
||||
}
|
||||
stateString += `${states['fetching-ipfs'].subplebbitAddresses.length} IPFS`;
|
||||
}
|
||||
if (pagesStatesSubplebbitAddresses.size) {
|
||||
if (states['fetching-ipns'] || states['fetching-ipfs']) {
|
||||
stateString += ', ';
|
||||
}
|
||||
stateString += `${pagesStatesSubplebbitAddresses.size} ${pagesStatesSubplebbitAddresses.size === 1 ? 'page' : 'pages'}`;
|
||||
}
|
||||
stateString += ` from ${[...clientHosts].join(', ')}`;
|
||||
}
|
||||
}
|
||||
|
||||
// capitalize first letter
|
||||
stateString = stateString.charAt(0).toUpperCase() + stateString.slice(1);
|
||||
|
||||
// if string is empty, return undefined instead
|
||||
return stateString === '' ? undefined : stateString;
|
||||
}, [states, subplebbitAddress]);
|
||||
|
||||
if (singleSubplebbitFeedStateString) {
|
||||
return singleSubplebbitFeedStateString;
|
||||
}
|
||||
return multipleSubplebbitsFeedStateString;
|
||||
};
|
||||
|
||||
export default useFeedStateString;
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useMemo } from 'react';
|
||||
import { useClientsStates } from '@plebbit/plebbit-react-hooks';
|
||||
import { useClientsStates, useSubplebbit, useSubplebbitsStates } from '@plebbit/plebbit-react-hooks';
|
||||
import { debounce } from 'lodash';
|
||||
|
||||
interface CommentOrSubplebbit {
|
||||
@@ -59,7 +59,12 @@ const useStateString = (commentOrSubplebbit: CommentOrSubplebbit): string | unde
|
||||
stateString = commentOrSubplebbit.updatingState;
|
||||
}
|
||||
if (stateString) {
|
||||
stateString = stateString.replaceAll('-', ' ').replace('ipfs', 'IPFS').replace('ipns', 'IPNS');
|
||||
stateString = stateString
|
||||
.replaceAll('-', ' ')
|
||||
.replace('ipfs', 'post')
|
||||
.replace('ipns', 'subplebbit')
|
||||
.replace('fetching', 'downloading')
|
||||
.replace('subplebbit subplebbit', 'community');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,4 +76,85 @@ const useStateString = (commentOrSubplebbit: CommentOrSubplebbit): string | unde
|
||||
}, [debouncedStates, commentOrSubplebbit]);
|
||||
};
|
||||
|
||||
export const useFeedStateString = (subplebbitAddresses?: string[]): string | undefined => {
|
||||
// single subplebbit feed state string
|
||||
const subplebbitAddress = subplebbitAddresses?.length === 1 ? subplebbitAddresses[0] : undefined;
|
||||
const subplebbit = useSubplebbit({ subplebbitAddress });
|
||||
const singleSubplebbitFeedStateString = useStateString(subplebbit);
|
||||
|
||||
// multiple subplebbit feed state string
|
||||
const { states } = useSubplebbitsStates({ subplebbitAddresses });
|
||||
|
||||
const multipleSubplebbitsFeedStateString = useMemo(() => {
|
||||
if (subplebbitAddress) {
|
||||
return;
|
||||
}
|
||||
|
||||
// e.g. Resolving 2 addresses from infura.io, fetching 2 IPNS, 1 IPFS from cloudflare-ipfs.com, ipfs.io
|
||||
let stateString = '';
|
||||
|
||||
if (states['resolving-address']) {
|
||||
const { subplebbitAddresses, clientUrls } = states['resolving-address'];
|
||||
if (subplebbitAddresses.length && clientUrls.length) {
|
||||
stateString += `resolving ${subplebbitAddresses.length} ${subplebbitAddresses.length === 1 ? 'address' : 'addresses'} from ${clientUrls
|
||||
.map(getClientHost)
|
||||
.join(', ')}`;
|
||||
}
|
||||
}
|
||||
|
||||
// find all page client and sub addresses
|
||||
const pagesStatesClientHosts = new Set();
|
||||
const pagesStatesSubplebbitAddresses = new Set();
|
||||
for (const state in states) {
|
||||
if (state.match('page')) {
|
||||
states[state].clientUrls.forEach((clientUrl) => pagesStatesClientHosts.add(getClientHost(clientUrl)));
|
||||
states[state].subplebbitAddresses.forEach((subplebbitAddress) => pagesStatesSubplebbitAddresses.add(subplebbitAddress));
|
||||
}
|
||||
}
|
||||
|
||||
if (states['fetching-ipns'] || states['fetching-ipfs'] || pagesStatesSubplebbitAddresses.size) {
|
||||
// separate 2 different states using ', '
|
||||
if (stateString) {
|
||||
stateString += ', ';
|
||||
}
|
||||
|
||||
// find all client urls
|
||||
const clientHosts = new Set([...pagesStatesClientHosts]);
|
||||
states['fetching-ipns']?.clientUrls.forEach((clientUrl) => clientHosts.add(getClientHost(clientUrl)));
|
||||
states['fetching-ipfs']?.clientUrls.forEach((clientUrl) => clientHosts.add(getClientHost(clientUrl)));
|
||||
|
||||
if (clientHosts.size) {
|
||||
stateString += 'downloading ';
|
||||
if (states['fetching-ipns']) {
|
||||
stateString += `${states['fetching-ipns'].subplebbitAddresses.length} communities`;
|
||||
}
|
||||
if (states['fetching-ipfs']) {
|
||||
if (states['fetching-ipns']) {
|
||||
stateString += ', ';
|
||||
}
|
||||
stateString += `${states['fetching-ipfs'].subplebbitAddresses.length} posts`;
|
||||
}
|
||||
if (pagesStatesSubplebbitAddresses.size) {
|
||||
if (states['fetching-ipns'] || states['fetching-ipfs']) {
|
||||
stateString += ', ';
|
||||
}
|
||||
stateString += `${pagesStatesSubplebbitAddresses.size} ${pagesStatesSubplebbitAddresses.size === 1 ? 'page' : 'pages'}`;
|
||||
}
|
||||
stateString += ` from ${[...clientHosts].join(', ')}`;
|
||||
}
|
||||
}
|
||||
|
||||
// capitalize first letter
|
||||
stateString = stateString.charAt(0).toUpperCase() + stateString.slice(1);
|
||||
|
||||
// if string is empty, return undefined instead
|
||||
return stateString === '' ? undefined : stateString;
|
||||
}, [states, subplebbitAddress]);
|
||||
|
||||
if (singleSubplebbitFeedStateString) {
|
||||
return singleSubplebbitFeedStateString;
|
||||
}
|
||||
return multipleSubplebbitsFeedStateString;
|
||||
};
|
||||
|
||||
export default useStateString;
|
||||
|
||||
@@ -6,6 +6,20 @@ div[data-viewport-type="window"] {
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
.loadingString {
|
||||
display: flex;
|
||||
text-transform: lowercase;
|
||||
font-size: 12px;
|
||||
padding-left: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.noPosts {
|
||||
color: var(--red);
|
||||
font-size: 13px;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.sidebarDesktop {
|
||||
display: none;
|
||||
|
||||
@@ -29,8 +29,14 @@ const Author = () => {
|
||||
const replyComments = useMemo(() => authorComments?.filter((comment) => comment && comment.parentCid) || [], [authorComments]);
|
||||
const postComments = useMemo(() => authorComments?.filter((comment) => comment && !comment.parentCid) || [], [authorComments]);
|
||||
|
||||
const loadingString = isInAuthorCommentsView ? t('loading_comments') : t('loading_posts');
|
||||
|
||||
const Footer = () => {
|
||||
return hasMore ? <LoadingEllipsis string={'loading'} /> : null;
|
||||
return hasMore ? (
|
||||
<span className={styles.loadingString}>
|
||||
<LoadingEllipsis string={loadingString || t('loading')} />
|
||||
</span>
|
||||
) : null;
|
||||
};
|
||||
|
||||
const virtuosoRef = useRef<VirtuosoHandle | null>(null);
|
||||
@@ -76,7 +82,6 @@ const Author = () => {
|
||||
<div className={isMobile ? styles.sidebarMobile : styles.sidebarDesktop}>
|
||||
<AuthorSidebar />
|
||||
</div>
|
||||
{authorComments?.length === 0 && !hasMore && <div className={styles.noPosts}>{t('no_posts_found')}</div>}
|
||||
<Virtuoso
|
||||
increaseViewportBy={{ bottom: 1200, top: 600 }}
|
||||
totalCount={authorComments?.length || 0}
|
||||
@@ -92,6 +97,7 @@ const Author = () => {
|
||||
restoreStateFrom={lastVirtuosoState}
|
||||
initialScrollTop={lastVirtuosoState?.scrollTop}
|
||||
/>
|
||||
{virtuosoData?.length === 0 && !hasMore && <div className={styles.noPosts}>{t('nothing_found')}</div>}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect } from 'react';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
import { useAccountComment } from '@plebbit/plebbit-react-hooks';
|
||||
import { useAccountComment, useAccountComments } from '@plebbit/plebbit-react-hooks';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import styles from './pending-post.module.css';
|
||||
import Post from '../../components/post';
|
||||
@@ -9,6 +9,7 @@ import LoadingEllipsis from '../../components/loading-ellipsis';
|
||||
|
||||
const PendingPost = () => {
|
||||
const { t } = useTranslation();
|
||||
const { accountComments } = useAccountComments();
|
||||
const { accountCommentIndex } = useParams<{ accountCommentIndex?: string }>();
|
||||
const commentIndex = accountCommentIndex ? parseInt(accountCommentIndex) : undefined;
|
||||
const post = useAccountComment({ commentIndex });
|
||||
@@ -17,6 +18,19 @@ const PendingPost = () => {
|
||||
|
||||
useEffect(() => window.scrollTo(0, 0), []);
|
||||
|
||||
const isValidAccountCommentIndex =
|
||||
!accountCommentIndex ||
|
||||
(!isNaN(parseInt(accountCommentIndex)) &&
|
||||
parseInt(accountCommentIndex) >= 0 &&
|
||||
accountComments?.length > 0 &&
|
||||
parseInt(accountCommentIndex) < accountComments.length);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isValidAccountCommentIndex) {
|
||||
navigate('/not-found', { replace: true });
|
||||
}
|
||||
}, [isValidAccountCommentIndex, navigate]);
|
||||
|
||||
useEffect(() => {
|
||||
if (post?.cid && post?.subplebbitAddress) {
|
||||
navigate(`/p/${post?.subplebbitAddress}/c/${post?.cid}`, { replace: true });
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
|
||||
.loadingString {
|
||||
padding: 5px;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
.stateString {
|
||||
|
||||
@@ -138,8 +138,6 @@ const Post = ({ post }: { post: Comment }) => {
|
||||
|
||||
const lockedState = deleted ? t('deleted') : locked ? t('locked') : removed ? t('removed') : '';
|
||||
|
||||
const [isHovering, setIsHovering] = useState(false);
|
||||
|
||||
return (
|
||||
<>
|
||||
{(deleted || locked || removed) && (
|
||||
@@ -180,10 +178,10 @@ const Post = ({ post }: { post: Comment }) => {
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<span className={styles.loadingString} onMouseEnter={() => setIsHovering(true)} onMouseLeave={() => setIsHovering(false)}>
|
||||
<span className={styles.loadingString}>
|
||||
{stateString && stateString !== 'Failed' ? (
|
||||
<div className={styles.stateString}>
|
||||
<LoadingEllipsis string={isHovering ? stateString : t('loading')} />
|
||||
<LoadingEllipsis string={stateString || t('loading')} />
|
||||
</div>
|
||||
) : (
|
||||
state === 'failed' && t('failed')
|
||||
|
||||
@@ -6,6 +6,7 @@ import { setAccount, useAccount } from '@plebbit/plebbit-react-hooks';
|
||||
import { isSettingsPlebbitOptionsView } from '../../lib/utils/view-utils';
|
||||
import useContentOptionsStore from '../../stores/use-content-options-store';
|
||||
import useTheme from '../../hooks/use-theme';
|
||||
import Version from '../../components/version';
|
||||
import AccountSettings from './account-settings';
|
||||
import AddressSettings from './address-settings';
|
||||
import AvatarSettings from './avatar-settings';
|
||||
@@ -206,25 +207,12 @@ const GeneralSettings = () => {
|
||||
<span className={styles.categoryTitle}>{t('version')}</span>
|
||||
<span className={styles.categorySettings}>
|
||||
<div className={styles.version}>
|
||||
seedit{' '}
|
||||
<a href={`https://github.com/plebbit/seedit/releases/tag/v${packageJson.version}`} target='_blank' rel='noopener noreferrer'>
|
||||
v{packageJson.version}
|
||||
</a>
|
||||
seedit <Version />
|
||||
{isElectron && (
|
||||
<a className={styles.fullNodeStats} href='http://localhost:50019/webui/' target='_blank' rel='noreferrer'>
|
||||
{t('node_stats')}
|
||||
</a>
|
||||
)}
|
||||
{commitRef && (
|
||||
<>
|
||||
{' '}
|
||||
(
|
||||
<a href={`https://github.com/plebbit/seedit/commit/${commitRef}`} target='_blank' rel='noopener noreferrer'>
|
||||
{commitRef.slice(0, 7)}
|
||||
</a>
|
||||
)
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<CheckForUpdates />
|
||||
</span>
|
||||
|
||||
@@ -7,7 +7,7 @@ import styles from '../home/home.module.css';
|
||||
import LoadingEllipsis from '../../components/loading-ellipsis';
|
||||
import Post from '../../components/post';
|
||||
import Sidebar from '../../components/sidebar';
|
||||
import useFeedStateString from '../../hooks/use-feed-state-string';
|
||||
import { useFeedStateString } from '../../hooks/use-state-string';
|
||||
import useTimeFilter from '../../hooks/use-time-filter';
|
||||
import { usePinnedPostsStore } from '../../stores/use-pinned-posts-store';
|
||||
import { useIsBroadlyNsfwSubplebbit } from '../../hooks/use-is-broadly-nsfw-subplebbit';
|
||||
|
||||
Reference in New Issue
Block a user