mirror of
https://github.com/plebbit/seedit.git
synced 2026-02-15 08:21:19 -05:00
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "إرسال إلى {{string}}",
|
||||
"page_not_found": "الصفحة غير موجودة",
|
||||
"not_found_description": "الصفحة التي طلبتها غير موجودة",
|
||||
"last_edited": "آخر تعديل {{timestamp}}"
|
||||
"last_edited": "آخر تعديل {{timestamp}}",
|
||||
"view_spoiler": "عرض الحاضر",
|
||||
"more": "المزيد",
|
||||
"default_communities": "المجتمعات الافتراضية",
|
||||
"avatar": "الصورة الرمزية",
|
||||
"pending_edit": "تحرير معلق",
|
||||
"failed_edit": "فشل التعديل"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} এ জমা দিন",
|
||||
"page_not_found": "পৃষ্ঠাটি খুঁজে পাওয়া যায়নি",
|
||||
"not_found_description": "আপনি যে পৃষ্ঠাটি অনুরোধ করেছেন সেটি অস্তিত্বে নেই",
|
||||
"last_edited": "শেষ সম্পাদনা {{timestamp}}"
|
||||
"last_edited": "শেষ সম্পাদনা {{timestamp}}",
|
||||
"view_spoiler": "স্পোয়ালার দেখুন",
|
||||
"more": "আরও",
|
||||
"default_communities": "ডিফল্ট কমিউনিটিস",
|
||||
"avatar": "অবতার",
|
||||
"pending_edit": "মুলতুবি সম্পাদনা",
|
||||
"failed_edit": "ব্যর্থ সম্পাদনা"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Odeslat do {{string}}",
|
||||
"page_not_found": "Stránka nenalezena",
|
||||
"not_found_description": "Požadovaná stránka neexistuje",
|
||||
"last_edited": "Poslední úprava {{timestamp}}"
|
||||
"last_edited": "Poslední úprava {{timestamp}}",
|
||||
"view_spoiler": "zobrazit spoiler",
|
||||
"more": "více",
|
||||
"default_communities": "výchozí komunity",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "čekající úprava",
|
||||
"failed_edit": "neúspěšná úprava"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Indsend til {{string}}",
|
||||
"page_not_found": "Side ikke fundet",
|
||||
"not_found_description": "Den side, du har anmodet om, findes ikke",
|
||||
"last_edited": "Sidst redigeret {{timestamp}}"
|
||||
"last_edited": "Sidst redigeret {{timestamp}}",
|
||||
"view_spoiler": "vis spoiler",
|
||||
"more": "mere",
|
||||
"default_communities": "standardfællesskaber",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "ventende redigering",
|
||||
"failed_edit": "mislykket redigering"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Einreichen bei {{string}}",
|
||||
"page_not_found": "Seite nicht gefunden",
|
||||
"not_found_description": "Die von Ihnen angeforderte Seite existiert nicht",
|
||||
"last_edited": "Zuletzt bearbeitet am {{timestamp}}"
|
||||
"last_edited": "Zuletzt bearbeitet am {{timestamp}}",
|
||||
"view_spoiler": "Spoiler anzeigen",
|
||||
"more": "mehr",
|
||||
"default_communities": "Standard-Communities",
|
||||
"avatar": "Avatar",
|
||||
"pending_edit": "ausstehende Bearbeitung",
|
||||
"failed_edit": "fehlgeschlagene Bearbeitung"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Υποβολή στο {{string}}",
|
||||
"page_not_found": "Η σελίδα δεν βρέθηκε",
|
||||
"not_found_description": "Η σελίδα που ζητήσατε δεν υπάρχει",
|
||||
"last_edited": "Τελευταία επεξεργασία {{timestamp}}"
|
||||
"last_edited": "Τελευταία επεξεργασία {{timestamp}}",
|
||||
"view_spoiler": "προβολή spoiler",
|
||||
"more": "περισσότερα",
|
||||
"default_communities": "προεπιλεγμένες κοινότητες",
|
||||
"avatar": "εικόνα προφίλ",
|
||||
"pending_edit": "εκκρεμής επεξεργασία",
|
||||
"failed_edit": "αποτυχημένη επεξεργασία"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Submit to {{string}}",
|
||||
"page_not_found": "Page not found",
|
||||
"not_found_description": "The page you requested does not exist",
|
||||
"last_edited": "last edited {{timestamp}}"
|
||||
"last_edited": "last edited {{timestamp}}",
|
||||
"view_spoiler": "view spoiler",
|
||||
"more": "more",
|
||||
"default_communities": "default communities",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "pending edit",
|
||||
"failed_edit": "failed edit"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Enviar a {{string}}",
|
||||
"page_not_found": "Página no encontrada",
|
||||
"not_found_description": "La página que solicitaste no existe",
|
||||
"last_edited": "última edición {{timestamp}}"
|
||||
"last_edited": "última edición {{timestamp}}",
|
||||
"view_spoiler": "ver spoiler",
|
||||
"more": "más",
|
||||
"default_communities": "comunidades predeterminadas",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "edición pendiente",
|
||||
"failed_edit": "edición fallida"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "ارسال به {{string}}",
|
||||
"page_not_found": "صفحه یافت نشد",
|
||||
"not_found_description": "صفحهای که درخواست کردهاید وجود ندارد",
|
||||
"last_edited": "آخرین ویرایش {{timestamp}}"
|
||||
"last_edited": "آخرین ویرایش {{timestamp}}",
|
||||
"view_spoiler": "نمایش اسپویلر",
|
||||
"more": "بیشتر",
|
||||
"default_communities": "جوامع پیشفرض",
|
||||
"avatar": "آواتار",
|
||||
"pending_edit": "ویرایش در انتظار",
|
||||
"failed_edit": "ویرایش ناموفق"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Lähetä kohteeseen {{string}}",
|
||||
"page_not_found": "Sivua ei löytynyt",
|
||||
"not_found_description": "Pyytämääsi sivua ei löydy",
|
||||
"last_edited": "Viimeksi muokattu {{timestamp}}"
|
||||
"last_edited": "Viimeksi muokattu {{timestamp}}",
|
||||
"view_spoiler": "näytä spoiler",
|
||||
"more": "lisää",
|
||||
"default_communities": "oletusyhteisöt",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "odottava muokkaus",
|
||||
"failed_edit": "epäonnistunut muokkaus"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Isusumite sa {{string}}",
|
||||
"page_not_found": "Hindi makita ang pahina",
|
||||
"not_found_description": "Ang pahinang hiniling mo ay hindi umiiral",
|
||||
"last_edited": "huling inedit {{timestamp}}"
|
||||
"last_edited": "huling inedit {{timestamp}}",
|
||||
"view_spoiler": "tingnan ang spoiler",
|
||||
"more": "higit pa",
|
||||
"default_communities": "default na mga komunidad",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "naka-pending na edit",
|
||||
"failed_edit": "nakabigong edit"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Soumettre à {{string}}",
|
||||
"page_not_found": "Page non trouvée",
|
||||
"not_found_description": "La page que vous avez demandée n'existe pas",
|
||||
"last_edited": "dernière édition {{timestamp}}"
|
||||
"last_edited": "dernière édition {{timestamp}}",
|
||||
"view_spoiler": "voir le spoiler",
|
||||
"more": "plus",
|
||||
"default_communities": "communautés par défaut",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "modification en attente",
|
||||
"failed_edit": "modification échouée"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "שליחה אל {{string}}",
|
||||
"page_not_found": "הדף לא נמצא",
|
||||
"not_found_description": "הדף שביקשת אינו קיים",
|
||||
"last_edited": "עריכה אחרונה {{timestamp}}"
|
||||
"last_edited": "עריכה אחרונה {{timestamp}}",
|
||||
"view_spoiler": "הצג ספוילר",
|
||||
"more": "יותר",
|
||||
"default_communities": "קהילות ברירת מחדל",
|
||||
"avatar": "אוואטר",
|
||||
"pending_edit": "עריכה ממתינה",
|
||||
"failed_edit": "עריכה נכשלה"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} को सबमिट करें",
|
||||
"page_not_found": "पृष्ठ नहीं मिला",
|
||||
"not_found_description": "आपके द्वारा अनुरोधित पृष्ठ मौजूद नहीं है",
|
||||
"last_edited": "अंतिम संशोधन {{timestamp}}"
|
||||
"last_edited": "अंतिम संशोधन {{timestamp}}",
|
||||
"view_spoiler": "स्पॉइलर देखें",
|
||||
"more": "अधिक",
|
||||
"default_communities": "डिफ़ॉल्ट समुदाय",
|
||||
"avatar": "अवतार",
|
||||
"pending_edit": "अपूर्ण संपादन",
|
||||
"failed_edit": "विफल संपादन"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Beküldés ide: {{string}}",
|
||||
"page_not_found": "Az oldal nem található",
|
||||
"not_found_description": "Az általad kért oldal nem létezik",
|
||||
"last_edited": "utoljára szerkesztve: {{timestamp}}"
|
||||
"last_edited": "utoljára szerkesztve: {{timestamp}}",
|
||||
"view_spoiler": "spoiler megtekintése",
|
||||
"more": "több",
|
||||
"default_communities": "alapértelmezett közösségek",
|
||||
"avatar": "avatár",
|
||||
"pending_edit": "folyamatban lévő szerkesztés",
|
||||
"failed_edit": "sikertelen szerkesztés"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Kirim ke {{string}}",
|
||||
"page_not_found": "Halaman tidak ditemukan",
|
||||
"not_found_description": "Halaman yang Anda minta tidak ada",
|
||||
"last_edited": "terakhir diubah {{timestamp}}"
|
||||
"last_edited": "terakhir diubah {{timestamp}}",
|
||||
"view_spoiler": "lihat spoiler",
|
||||
"more": "lebih",
|
||||
"default_communities": "komunitas default",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "pengeditan tertunda",
|
||||
"failed_edit": "edit gagal"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Invia a {{string}}",
|
||||
"page_not_found": "Pagina non trovata",
|
||||
"not_found_description": "La pagina che hai richiesto non esiste",
|
||||
"last_edited": "ultima modifica {{timestamp}}"
|
||||
"last_edited": "ultima modifica {{timestamp}}",
|
||||
"view_spoiler": "mostra spoiler",
|
||||
"more": "altri",
|
||||
"default_communities": "comunità predefinite",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "modifica in attesa",
|
||||
"failed_edit": "modifica fallita"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} に提出",
|
||||
"page_not_found": "ページが見つかりません",
|
||||
"not_found_description": "要求されたページは存在しません",
|
||||
"last_edited": "最終編集 {{timestamp}}"
|
||||
"last_edited": "最終編集 {{timestamp}}",
|
||||
"view_spoiler": "スポイラーを表示",
|
||||
"more": "もっと",
|
||||
"default_communities": "デフォルトコミュニティ",
|
||||
"avatar": "アバター",
|
||||
"pending_edit": "保留中の編集",
|
||||
"failed_edit": "失敗した編集"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} 로 제출",
|
||||
"page_not_found": "페이지를 찾을 수 없음",
|
||||
"not_found_description": "요청하신 페이지가 존재하지 않습니다",
|
||||
"last_edited": "마지막으로 편집한 날짜: {{timestamp}}"
|
||||
"last_edited": "마지막으로 편집한 날짜: {{timestamp}}",
|
||||
"view_spoiler": "스포일러 보기",
|
||||
"more": "더 보기",
|
||||
"default_communities": "기본 커뮤니티",
|
||||
"avatar": "아바타",
|
||||
"pending_edit": "대기 중인 편집",
|
||||
"failed_edit": "실패한 편집"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} वर सबमिट करा",
|
||||
"page_not_found": "पृष्ठ सापडला नाही",
|
||||
"not_found_description": "आपण विनंती केलेला पृष्ठ अस्तित्वात नाही",
|
||||
"last_edited": "शेवटचा संपादन {{timestamp}}"
|
||||
"last_edited": "शेवटचा संपादन {{timestamp}}",
|
||||
"view_spoiler": "स्पॉईलर पहा",
|
||||
"more": "अधिक",
|
||||
"default_communities": "डिफॉल्ट समुदाय",
|
||||
"avatar": "अवतार",
|
||||
"pending_edit": "प्रलंबित संपादन",
|
||||
"failed_edit": "अयशस्वी संपादन"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Indienen bij {{string}}",
|
||||
"page_not_found": "Pagina niet gevonden",
|
||||
"not_found_description": "De pagina die je hebt opgevraagd, bestaat niet",
|
||||
"last_edited": "laatst bewerkt {{timestamp}}"
|
||||
"last_edited": "laatst bewerkt {{timestamp}}",
|
||||
"view_spoiler": "bekijk spoiler",
|
||||
"more": "meer",
|
||||
"default_communities": "standaardgemeenschappen",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "in afwachting van bewerking",
|
||||
"failed_edit": "mislukte bewerking"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Send til {{string}}",
|
||||
"page_not_found": "Siden ble ikke funnet",
|
||||
"not_found_description": "Siden du ba om, finnes ikke",
|
||||
"last_edited": "sist endret {{timestamp}}"
|
||||
"last_edited": "sist endret {{timestamp}}",
|
||||
"view_spoiler": "se spoiler",
|
||||
"more": "mer",
|
||||
"default_communities": "standardfellesskap",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "ventende redigering",
|
||||
"failed_edit": "mislykket redigering"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Prześlij do {{string}}",
|
||||
"page_not_found": "Strona nie znaleziona",
|
||||
"not_found_description": "Strona, którą żądasz, nie istnieje",
|
||||
"last_edited": "ostatnio edytowano {{timestamp}}"
|
||||
"last_edited": "ostatnio edytowano {{timestamp}}",
|
||||
"view_spoiler": "pokaż spoiler",
|
||||
"more": "więcej",
|
||||
"default_communities": "domyślne społeczności",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "edycja oczekująca",
|
||||
"failed_edit": "nieudana edycja"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Enviar para {{string}}",
|
||||
"page_not_found": "Página não encontrada",
|
||||
"not_found_description": "A página que você solicitou não existe",
|
||||
"last_edited": "última edição {{timestamp}}"
|
||||
"last_edited": "última edição {{timestamp}}",
|
||||
"view_spoiler": "ver spoiler",
|
||||
"more": "mais",
|
||||
"default_communities": "comunidades padrão",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "edição pendente",
|
||||
"failed_edit": "edição falhada"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Trimite la {{string}}",
|
||||
"page_not_found": "Pagina nu a fost găsită",
|
||||
"not_found_description": "Pagina pe care ai solicitat-o nu există",
|
||||
"last_edited": "ultima editare {{timestamp}}"
|
||||
"last_edited": "ultima editare {{timestamp}}",
|
||||
"view_spoiler": "vezi spoilerul",
|
||||
"more": "mai multe",
|
||||
"default_communities": "comunități implicite",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "editare în așteptare",
|
||||
"failed_edit": "editare eșuată"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Отправить на {{string}}",
|
||||
"page_not_found": "Страница не найдена",
|
||||
"not_found_description": "Запрошенная вами страница не существует",
|
||||
"last_edited": "последнее редактирование {{timestamp}}"
|
||||
"last_edited": "последнее редактирование {{timestamp}}",
|
||||
"view_spoiler": "посмотреть спойлер",
|
||||
"more": "больше",
|
||||
"default_communities": "стандартные сообщества",
|
||||
"avatar": "аватар",
|
||||
"pending_edit": "редактирование ожидается",
|
||||
"failed_edit": "не удалось отредактировать"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Dërgo në {{string}}",
|
||||
"page_not_found": "Faqja nuk u gjet",
|
||||
"not_found_description": "Faqja që keni kërkuar nuk ekziston",
|
||||
"last_edited": "i fundit i ndryshuar {{timestamp}}"
|
||||
"last_edited": "i fundit i ndryshuar {{timestamp}}",
|
||||
"view_spoiler": "shikoni spoiler",
|
||||
"more": "më shumë",
|
||||
"default_communities": "komunitete parazgjedhur",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "ndryshimi në pritje",
|
||||
"failed_edit": "ndryshimi i dështuar"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Skicka till {{string}}",
|
||||
"page_not_found": "Sidan kunde inte hittas",
|
||||
"not_found_description": "Sidan du begärde finns inte",
|
||||
"last_edited": "senast redigerad {{timestamp}}"
|
||||
"last_edited": "senast redigerad {{timestamp}}",
|
||||
"view_spoiler": "visa spoiler",
|
||||
"more": "mer",
|
||||
"default_communities": "standardgemenskaper",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "avvaktande redigering",
|
||||
"failed_edit": "misslyckad redigering"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} కు సబ్మిట్ చేయండి",
|
||||
"page_not_found": "పేజీ కనబడలేదు",
|
||||
"not_found_description": "మీ అభ్యర్థించిన పేజీ లేదు",
|
||||
"last_edited": "చివరి సవరించబడినది {{timestamp}}"
|
||||
"last_edited": "చివరి సవరించబడినది {{timestamp}}",
|
||||
"view_spoiler": "స్పోయ్లర్ వీక్షించండి",
|
||||
"more": "మరింత",
|
||||
"default_communities": "డిఫాల్ట్ సముదాయాలు",
|
||||
"avatar": "అవతార్",
|
||||
"pending_edit": "పెండింగ్ సవరించడం",
|
||||
"failed_edit": "విఫలమైన సవరించడం"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "ส่งไปยัง {{string}}",
|
||||
"page_not_found": "ไม่พบหน้า",
|
||||
"not_found_description": "หน้าที่คุณขอไม่มีอยู่จริง",
|
||||
"last_edited": "แก้ไขล่าสุด {{timestamp}}"
|
||||
"last_edited": "แก้ไขล่าสุด {{timestamp}}",
|
||||
"view_spoiler": "ดูสปอยล์เลอร์",
|
||||
"more": "มากกว่า",
|
||||
"default_communities": "ชุมชนเริ่มต้น",
|
||||
"avatar": "อวตาร์",
|
||||
"pending_edit": "การแก้ไขที่รอดำเนินการ",
|
||||
"failed_edit": "การแก้ไขล้มเหลว"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} e gönder",
|
||||
"page_not_found": "Sayfa bulunamadı",
|
||||
"not_found_description": "İstediğiniz sayfa mevcut değil",
|
||||
"last_edited": "son düzenleme {{timestamp}}"
|
||||
"last_edited": "son düzenleme {{timestamp}}",
|
||||
"view_spoiler": "spoileri görüntüle",
|
||||
"more": "daha fazla",
|
||||
"default_communities": "varsayılan topluluklar",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "bekleyen düzenleme",
|
||||
"failed_edit": "başarısız düzenleme"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Надіслати до {{string}}",
|
||||
"page_not_found": "Сторінка не знайдена",
|
||||
"not_found_description": "Сторінка, яку ви запросили, не існує",
|
||||
"last_edited": "остання редакція {{timestamp}}"
|
||||
"last_edited": "остання редакція {{timestamp}}",
|
||||
"view_spoiler": "переглянути спойлер",
|
||||
"more": "більше",
|
||||
"default_communities": "типові спільноти",
|
||||
"avatar": "аватар",
|
||||
"pending_edit": "очікуване редагування",
|
||||
"failed_edit": "невдале редагування"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "{{string}} کو جمع کرائیں",
|
||||
"page_not_found": "صفحہ نہیں ملا",
|
||||
"not_found_description": "آپ نے جو صفحہ درخواست کیا ہے وہ موجود نہیں ہے",
|
||||
"last_edited": "آخری ترمیم {{timestamp}}"
|
||||
"last_edited": "آخری ترمیم {{timestamp}}",
|
||||
"view_spoiler": "اسپوائلر دیکھیں",
|
||||
"more": "مزید",
|
||||
"default_communities": "ڈیفالٹ کمیونٹیز",
|
||||
"avatar": "اوتار",
|
||||
"pending_edit": "زیر التواء ترتیبات",
|
||||
"failed_edit": "ناکام ترتیبات"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "Gửi đến {{string}}",
|
||||
"page_not_found": "Không tìm thấy trang",
|
||||
"not_found_description": "Trang bạn yêu cầu không tồn tại",
|
||||
"last_edited": "sửa lần cuối {{timestamp}}"
|
||||
"last_edited": "sửa lần cuối {{timestamp}}",
|
||||
"view_spoiler": "xem spoiler",
|
||||
"more": "thêm",
|
||||
"default_communities": "các cộng đồng mặc định",
|
||||
"avatar": "avatar",
|
||||
"pending_edit": "chỉnh sửa đang chờ",
|
||||
"failed_edit": "chỉnh sửa thất bại"
|
||||
}
|
||||
@@ -264,5 +264,11 @@
|
||||
"submit_to_string": "提交到{{string}}",
|
||||
"page_not_found": "页面未找到",
|
||||
"not_found_description": "您请求的页面不存在",
|
||||
"last_edited": "上次编辑时间:{{timestamp}}"
|
||||
"last_edited": "上次编辑时间:{{timestamp}}",
|
||||
"view_spoiler": "查看剧透",
|
||||
"more": "更多",
|
||||
"default_communities": "默认社区",
|
||||
"avatar": "头像",
|
||||
"pending_edit": "待处理的编辑",
|
||||
"failed_edit": "编辑失败"
|
||||
}
|
||||
@@ -14,6 +14,7 @@ interface CommentToolsProps {
|
||||
cid: string;
|
||||
deleted?: boolean;
|
||||
failed?: boolean;
|
||||
editState?: string;
|
||||
hasLabel?: boolean;
|
||||
index?: number;
|
||||
isAuthor?: boolean;
|
||||
@@ -137,9 +138,11 @@ const SingleReplyTools = ({ author, cid, hasLabel, index, isAuthor, isMod, paren
|
||||
);
|
||||
};
|
||||
|
||||
const CommentToolsLabel = ({ cid, deleted, failed, isReply, removed, spoiler }: CommentToolsProps) => {
|
||||
const CommentToolsLabel = ({ cid, deleted, failed, editState, isReply, removed, spoiler }: CommentToolsProps) => {
|
||||
const { t } = useTranslation();
|
||||
const pending = cid === undefined && !isReply && !failed;
|
||||
const failedEdit = editState === 'failed';
|
||||
const pendingEdit = editState === 'pending';
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -148,6 +151,8 @@ const CommentToolsLabel = ({ cid, deleted, failed, isReply, removed, spoiler }:
|
||||
{failed && <Label color='red' text={t('failed')} />}
|
||||
{deleted && <Label color='red' text={t('deleted')} />}
|
||||
{removed && <Label color='red' text={t('removed')} />}
|
||||
{failedEdit && <Label color='red' text={t('failed_edit')} />}
|
||||
{pendingEdit && <Label color='yellow' text={t('pending_edit')} />}
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -157,6 +162,7 @@ const CommentTools = ({
|
||||
cid,
|
||||
deleted,
|
||||
failed,
|
||||
editState,
|
||||
hasLabel = false,
|
||||
index,
|
||||
isReply,
|
||||
@@ -178,7 +184,16 @@ const CommentTools = ({
|
||||
|
||||
return (
|
||||
<ul className={`${styles.buttons} ${isReply && !isInInboxView ? styles.buttonsReply : ''} ${hasLabel ? styles.buttonsLabel : ''}`}>
|
||||
<CommentToolsLabel cid={cid} deleted={deleted} failed={failed} isReply={isReply} removed={removed} spoiler={spoiler} subplebbitAddress={subplebbitAddress} />
|
||||
<CommentToolsLabel
|
||||
cid={cid}
|
||||
deleted={deleted}
|
||||
failed={failed}
|
||||
editState={editState}
|
||||
isReply={isReply}
|
||||
removed={removed}
|
||||
spoiler={spoiler}
|
||||
subplebbitAddress={subplebbitAddress}
|
||||
/>
|
||||
{isReply ? (
|
||||
isSingleReply ? (
|
||||
<SingleReplyTools
|
||||
|
||||
@@ -45,6 +45,34 @@
|
||||
background-color: var(--background-thumbnail);
|
||||
}
|
||||
|
||||
.mediaPreview iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
background-color: var(--background-thumbnail);
|
||||
}
|
||||
|
||||
.hideSpoiler {
|
||||
width: calc(100% - 7px);
|
||||
height: calc(100% - 12px);
|
||||
border-radius: 7px;
|
||||
position: absolute;
|
||||
border: 1px solid var(--text-primary);
|
||||
background-color: black;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showSpoilerButton {
|
||||
color: white;
|
||||
text-transform: lowercase;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.mediaPreview img {
|
||||
max-width: 100%;
|
||||
@@ -60,10 +88,3 @@
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.mediaPreview iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
background-color: var(--background-thumbnail);
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useState } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import styles from './expando.module.css';
|
||||
import Embed from '../embed';
|
||||
@@ -13,12 +14,15 @@ interface ExpandoProps {
|
||||
reason?: string;
|
||||
removed?: boolean;
|
||||
showContent: boolean;
|
||||
spoiler?: boolean;
|
||||
toggleExpanded?: () => void;
|
||||
}
|
||||
|
||||
const Expando = ({ commentMediaInfo, content, expanded, link, reason, removed, showContent, toggleExpanded }: ExpandoProps) => {
|
||||
const Expando = ({ commentMediaInfo, content, expanded, link, reason, removed, showContent, spoiler = false, toggleExpanded }: ExpandoProps) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const [showSpoiler, setShowSpoiler] = useState(false);
|
||||
|
||||
let mediaComponent = null;
|
||||
let noExpandButton = false;
|
||||
|
||||
@@ -37,8 +41,13 @@ const Expando = ({ commentMediaInfo, content, expanded, link, reason, removed, s
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={expanded ? styles.expando : styles.expandoHidden}>
|
||||
{link && !removed && (
|
||||
<div
|
||||
className={expanded ? styles.expando : styles.expandoHidden}
|
||||
onClick={() => {
|
||||
spoiler && !showSpoiler && setShowSpoiler(true);
|
||||
}}
|
||||
>
|
||||
{link && !removed && !(spoiler && !showSpoiler) && (
|
||||
<div className={styles.mediaPreview}>
|
||||
<Link
|
||||
to={link}
|
||||
@@ -55,7 +64,9 @@ const Expando = ({ commentMediaInfo, content, expanded, link, reason, removed, s
|
||||
)}
|
||||
{content && showContent && (
|
||||
<div className={styles.usertext}>
|
||||
<div className={spoiler && !showSpoiler ? styles.hideSpoiler : ''} />
|
||||
<div className={styles.markdown}>
|
||||
{spoiler && !showSpoiler && <div className={styles.showSpoilerButton}>{t('view_spoiler')}</div>}
|
||||
<Markdown content={content} />
|
||||
{reason && (
|
||||
<div className={styles.modReason}>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 4px 0;
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.row {
|
||||
@@ -68,11 +68,7 @@
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.removedTitle {
|
||||
filter: blur(4px);
|
||||
}
|
||||
|
||||
.removedThumbnail {
|
||||
.blur {
|
||||
filter: blur(4px);
|
||||
}
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@ const Post = ({ index, post = {} }: PostProps) => {
|
||||
post = op;
|
||||
}
|
||||
// handle pending mod or author edit
|
||||
const { editedComment: editedPost } = useEditedComment({ comment: post });
|
||||
if (editedPost) {
|
||||
post = editedPost;
|
||||
const { state: editState, editedComment } = useEditedComment({ comment: post });
|
||||
if (editedComment) {
|
||||
post = editedComment;
|
||||
}
|
||||
const {
|
||||
author,
|
||||
@@ -156,122 +156,134 @@ const Post = ({ index, post = {} }: PostProps) => {
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={`${styles.content} ${isLastClicked && !isInPostView ? styles.lastClicked : ''}`} key={index}>
|
||||
<div className={`${styles.hiddenPost} ${blocked ? styles.visible : styles.hidden}`}>
|
||||
<div className={styles.hiddenPostText}>{t('post_hidden').charAt(0).toUpperCase() + t('post_hidden').slice(1)}</div>
|
||||
<div className={styles.undoHiddenPost} onClick={unblock}>
|
||||
{t('undo')}
|
||||
<div className={styles.content} key={index}>
|
||||
<div className={isLastClicked && !isInPostView ? styles.lastClicked : ''}>
|
||||
<div className={`${styles.hiddenPost} ${blocked ? styles.visible : styles.hidden}`}>
|
||||
<div className={styles.hiddenPostText}>{t('post_hidden').charAt(0).toUpperCase() + t('post_hidden').slice(1)}</div>
|
||||
<div className={styles.undoHiddenPost} onClick={unblock}>
|
||||
{t('undo')}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className={`${styles.container} ${blocked ? styles.hidden : styles.visible}`}>
|
||||
<div className={styles.row}>
|
||||
<div className={styles.leftcol}>
|
||||
<div className={styles.midcol}>
|
||||
<div className={styles.arrowWrapper}>
|
||||
<div className={`${styles.arrowCommon} ${upvoted ? styles.upvoted : styles.arrowUp}`} onClick={() => cid && upvote()} />
|
||||
</div>
|
||||
<div className={styles.score}>{postScore}</div>
|
||||
<div className={styles.arrowWrapper}>
|
||||
<div className={`${styles.arrowCommon} ${downvoted ? styles.downvoted : styles.arrowDown}`} onClick={() => cid && downvote()} />
|
||||
<div className={`${styles.container} ${blocked ? styles.hidden : styles.visible}`}>
|
||||
<div className={styles.row}>
|
||||
<div className={styles.leftcol}>
|
||||
<div className={styles.midcol}>
|
||||
<div className={styles.arrowWrapper}>
|
||||
<div className={`${styles.arrowCommon} ${upvoted ? styles.upvoted : styles.arrowUp}`} onClick={() => cid && upvote()} />
|
||||
</div>
|
||||
<div className={styles.score}>{postScore}</div>
|
||||
<div className={styles.arrowWrapper}>
|
||||
<div className={`${styles.arrowCommon} ${downvoted ? styles.downvoted : styles.arrowDown}`} onClick={() => cid && downvote()} />
|
||||
</div>
|
||||
</div>
|
||||
{hasThumbnail && !isInPostView && (
|
||||
<span className={removed ? styles.blur : ''}>
|
||||
<Thumbnail
|
||||
cid={cid}
|
||||
commentMediaInfo={commentMediaInfo}
|
||||
isReply={false}
|
||||
link={link}
|
||||
linkHeight={linkHeight}
|
||||
linkWidth={linkWidth}
|
||||
subplebbitAddress={subplebbitAddress}
|
||||
/>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
{hasThumbnail && !isInPostView && (
|
||||
<span className={removed ? styles.removedThumbnail : ''}>
|
||||
<Thumbnail
|
||||
<div className={styles.entry}>
|
||||
<div className={styles.topMatter}>
|
||||
<p className={`${styles.title} ${removed && !isInPostView ? styles.blur : ''}`} onClick={handlePostClick}>
|
||||
{isInPostView && link ? (
|
||||
<a href={link} className={linkClass} target='_blank' rel='noopener noreferrer'>
|
||||
{postTitle ?? '-'}
|
||||
</a>
|
||||
) : (
|
||||
<Link className={linkClass} to={cid ? `/p/${subplebbitAddress}/c/${cid}` : `/profile/${post?.index}`}>
|
||||
{postTitle ?? '-'}
|
||||
</Link>
|
||||
)}
|
||||
{flair && (
|
||||
<>
|
||||
{' '}
|
||||
<Flair flair={flair} />
|
||||
</>
|
||||
)}{' '}
|
||||
{linkUrl && (
|
||||
<span className={styles.domain}>
|
||||
(
|
||||
<a href={link} target='_blank' rel='noopener noreferrer'>
|
||||
{linkUrl}
|
||||
</a>
|
||||
)
|
||||
</span>
|
||||
)}
|
||||
</p>
|
||||
{!isInPostView && (
|
||||
<ExpandButton
|
||||
commentMediaInfo={commentMediaInfo}
|
||||
content={content}
|
||||
expanded={isExpanded}
|
||||
hasThumbnail={hasThumbnail}
|
||||
link={link}
|
||||
toggleExpanded={toggleExpanded}
|
||||
/>
|
||||
)}
|
||||
<div className={styles.tagline}>
|
||||
{t('submitted')} {getFormattedTimeAgo(timestamp)} {edit && <span title={t('last_edited', { timestamp: getFormattedTimeAgo(edit.timestamp) })}>*</span>}{' '}
|
||||
{t('post_by')}{' '}
|
||||
<PostAuthor
|
||||
authorAddress={author?.address}
|
||||
authorRole={authorRole}
|
||||
cid={cid}
|
||||
displayName={displayName}
|
||||
imageUrl={imageUrl}
|
||||
index={post?.index}
|
||||
shortAddress={shortAddress}
|
||||
shortAuthorAddress={shortAuthorAddress}
|
||||
authorAddressChanged={authorAddressChanged}
|
||||
/>
|
||||
{!isInSubplebbitView && (
|
||||
<>
|
||||
{t('post_to')}{' '}
|
||||
<Link className={styles.subplebbit} to={`/p/${subplebbitAddress}`}>
|
||||
p/{subplebbit?.shortAddress || subplebbitAddress}
|
||||
</Link>
|
||||
</>
|
||||
)}
|
||||
{pinned && <span className={styles.announcement}> - {t('announcement')}</span>}
|
||||
</div>
|
||||
{state === 'pending' && <p className={styles.pending}>{loadingString}</p>}
|
||||
<CommentTools
|
||||
author={author}
|
||||
cid={cid}
|
||||
commentMediaInfo={commentMediaInfo}
|
||||
isReply={false}
|
||||
link={link}
|
||||
linkHeight={linkHeight}
|
||||
linkWidth={linkWidth}
|
||||
deleted={deleted}
|
||||
failed={state === 'failed'}
|
||||
editState={editState}
|
||||
index={post?.index}
|
||||
removed={removed}
|
||||
replyCount={replyCount}
|
||||
showEditForm={showEditForm}
|
||||
spoiler={spoiler}
|
||||
subplebbitAddress={subplebbitAddress}
|
||||
/>
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
<div className={styles.entry}>
|
||||
<div className={styles.topMatter}>
|
||||
<p className={`${styles.title} ${removed && !isInPostView ? styles.removedTitle : ''}`} onClick={handlePostClick}>
|
||||
{isInPostView && link ? (
|
||||
<a href={link} className={linkClass} target='_blank' rel='noopener noreferrer'>
|
||||
{postTitle}
|
||||
</a>
|
||||
) : (
|
||||
<Link className={linkClass} to={cid ? `/p/${subplebbitAddress}/c/${cid}` : `/profile/${post?.index}`}>
|
||||
{postTitle}
|
||||
</Link>
|
||||
)}
|
||||
{flair && (
|
||||
<>
|
||||
{' '}
|
||||
<Flair flair={flair} />
|
||||
</>
|
||||
)}{' '}
|
||||
{linkUrl && (
|
||||
<span className={styles.domain}>
|
||||
(
|
||||
<a href={link} target='_blank' rel='noopener noreferrer'>
|
||||
{linkUrl}
|
||||
</a>
|
||||
)
|
||||
</span>
|
||||
)}
|
||||
</p>
|
||||
{!isInPostView && (
|
||||
<ExpandButton
|
||||
commentMediaInfo={commentMediaInfo}
|
||||
content={content}
|
||||
expanded={isExpanded}
|
||||
hasThumbnail={hasThumbnail}
|
||||
link={link}
|
||||
toggleExpanded={toggleExpanded}
|
||||
/>
|
||||
)}
|
||||
<div className={styles.tagline}>
|
||||
{t('submitted')} {getFormattedTimeAgo(timestamp)} {edit && <span title={t('last_edited', { timestamp: getFormattedTimeAgo(edit.timestamp) })}>*</span>}{' '}
|
||||
{t('post_by')}{' '}
|
||||
<PostAuthor
|
||||
authorAddress={author?.address}
|
||||
authorRole={authorRole}
|
||||
cid={cid}
|
||||
displayName={displayName}
|
||||
imageUrl={imageUrl}
|
||||
index={post?.index}
|
||||
shortAddress={shortAddress}
|
||||
shortAuthorAddress={shortAuthorAddress}
|
||||
authorAddressChanged={authorAddressChanged}
|
||||
/>
|
||||
{!isInSubplebbitView && (
|
||||
<>
|
||||
{t('post_to')}{' '}
|
||||
<Link className={styles.subplebbit} to={`/p/${subplebbitAddress}`}>
|
||||
p/{subplebbit?.shortAddress || subplebbitAddress}
|
||||
</Link>
|
||||
</>
|
||||
)}
|
||||
{pinned && <span className={styles.announcement}> - {t('announcement')}</span>}
|
||||
</div>
|
||||
{state === 'pending' && <p className={styles.pending}>{loadingString}</p>}
|
||||
<CommentTools
|
||||
author={author}
|
||||
cid={cid}
|
||||
deleted={deleted}
|
||||
failed={state === 'failed'}
|
||||
index={post?.index}
|
||||
removed={removed}
|
||||
replyCount={replyCount}
|
||||
showEditForm={showEditForm}
|
||||
spoiler={spoiler}
|
||||
subplebbitAddress={subplebbitAddress}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{isEditing ? (
|
||||
<EditForm commentCid={cid} content={content} hideEditForm={hideEditForm} subplebbitAddress={subplebbitAddress} />
|
||||
) : (
|
||||
<Expando
|
||||
commentMediaInfo={commentMediaInfo}
|
||||
content={content}
|
||||
expanded={isExpanded}
|
||||
link={link}
|
||||
reason={reason}
|
||||
removed={removed}
|
||||
showContent={true}
|
||||
spoiler={spoiler}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
{isEditing ? (
|
||||
<EditForm commentCid={cid} content={content} hideEditForm={hideEditForm} subplebbitAddress={subplebbitAddress} />
|
||||
) : (
|
||||
<Expando commentMediaInfo={commentMediaInfo} content={content} expanded={isExpanded} link={link} reason={reason} removed={removed} showContent={true} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
position: relative;
|
||||
float: left;
|
||||
padding-right: 5px;
|
||||
padding-bottom: 2px;
|
||||
width: var(--width, 70px); /* Fallback to 70px if variable not set */
|
||||
height: var(--height, 70px); /* Fallback to 70px if variable not set */
|
||||
}
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
font-size: small;
|
||||
unicode-bidi: isolate;
|
||||
margin-top: 5px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.highlightMedia {
|
||||
@@ -128,6 +129,25 @@
|
||||
color: var(--markdown-link) !important;
|
||||
}
|
||||
|
||||
.hideSpoiler {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
background-color: black;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.showSpoilerButton {
|
||||
color: white;
|
||||
text-transform: lowercase;
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.highlightContent {
|
||||
background-color: var(--yellow-highlight);
|
||||
padding: 2px 5px;
|
||||
|
||||
@@ -201,9 +201,9 @@ interface ReplyProps {
|
||||
|
||||
const Reply = ({ cidOfReplyWithContext, depth = 0, isSingleComment, isSingleReply, isNotification = false, reply = {} }: ReplyProps) => {
|
||||
// handle pending mod or author edit
|
||||
const { editedComment: editedPost } = useEditedComment({ comment: reply });
|
||||
if (editedPost) {
|
||||
reply = editedPost;
|
||||
const { state: editState, editedComment } = useEditedComment({ comment: reply });
|
||||
if (editedComment) {
|
||||
reply = editedComment;
|
||||
}
|
||||
const {
|
||||
author,
|
||||
@@ -230,6 +230,8 @@ const Reply = ({ cidOfReplyWithContext, depth = 0, isSingleComment, isSingleRepl
|
||||
} = reply || {};
|
||||
const subplebbit = useSubplebbit({ subplebbitAddress });
|
||||
|
||||
const [showSpoiler, setShowSpoiler] = useState(false);
|
||||
|
||||
const { blocked, unblock } = useBlock({ address: cid });
|
||||
const [collapsed, setCollapsed] = useState(blocked);
|
||||
useEffect(() => {
|
||||
@@ -279,6 +281,8 @@ const Reply = ({ cidOfReplyWithContext, depth = 0, isSingleComment, isSingleRepl
|
||||
<span className={styles.stateLabel}>
|
||||
{state === 'failed' && <Label color='red' text={t('failed')} />}
|
||||
{cid === undefined && state !== 'failed' && <Label color='yellow' text={t('pending')} />}
|
||||
{editState === 'failed' && <Label color='red' text={t('failed_edit')} />}
|
||||
{editState === 'pending' && <Label color='yellow' text={t('pending_edit')} />}
|
||||
</span>
|
||||
);
|
||||
|
||||
@@ -348,8 +352,14 @@ const Reply = ({ cidOfReplyWithContext, depth = 0, isSingleComment, isSingleRepl
|
||||
/>
|
||||
)}
|
||||
{!collapsed && (
|
||||
<div className={`${styles.usertext} ${cid && commentMediaInfo && (isSingleComment || cidOfReplyWithContext === cid) ? styles.highlightMedia : ''}`}>
|
||||
{commentMediaInfo && (!removed || !deleted) && (
|
||||
<div
|
||||
className={`${styles.usertext} ${cid && commentMediaInfo && (isSingleComment || cidOfReplyWithContext === cid) ? styles.highlightMedia : ''}`}
|
||||
onClick={() => {
|
||||
spoiler && !showSpoiler && setShowSpoiler(true);
|
||||
}}
|
||||
>
|
||||
<div className={spoiler && !showSpoiler ? styles.hideSpoiler : ''} />
|
||||
{commentMediaInfo && !(removed || deleted || (spoiler && !showSpoiler)) && (
|
||||
<ReplyMedia
|
||||
commentMediaInfo={commentMediaInfo}
|
||||
content={content}
|
||||
@@ -365,6 +375,7 @@ const Reply = ({ cidOfReplyWithContext, depth = 0, isSingleComment, isSingleRepl
|
||||
<EditForm commentCid={cid} content={content} hideEditForm={hideEditForm} subplebbitAddress={subplebbitAddress} />
|
||||
) : (
|
||||
<div className={`${styles.md} ${cid && (isSingleComment || cidOfReplyWithContext === cid) ? styles.highlightContent : ''}`}>
|
||||
{spoiler && !showSpoiler && <div className={styles.showSpoilerButton}>{t('view_spoiler')}</div>}
|
||||
{content &&
|
||||
(removed ? (
|
||||
<div className={styles.removedContent}>[{t('removed')}]</div>
|
||||
|
||||
@@ -126,6 +126,9 @@ const TopBar = () => {
|
||||
<Link to='/communities/subscriber' className={`${styles.dropdownItem} ${styles.editSubscriptions}`}>
|
||||
{t('edit_subscriptions')}
|
||||
</Link>
|
||||
<Link to='/communities/vote' className={`${styles.dropdownItem} ${styles.editSubscriptions}`}>
|
||||
{t('default_communities')}
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
<div className={styles.dropdown} ref={sortsDropdownRef} onClick={toggleSortsDropdown}>
|
||||
@@ -179,7 +182,7 @@ const TopBar = () => {
|
||||
</ul>
|
||||
</div>
|
||||
<Link to='/communities/vote' className={styles.moreLink}>
|
||||
{t('edit')} »
|
||||
{t('more')} »
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -44,4 +44,12 @@
|
||||
position: relative;
|
||||
bottom: 2px;
|
||||
margin-bottom: -2px;
|
||||
}
|
||||
|
||||
.copyAddressSetting {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.copyAddressSetting button {
|
||||
margin-left: 0;
|
||||
}
|
||||
@@ -131,6 +131,9 @@ const AddressSettings = () => {
|
||||
|
||||
return (
|
||||
<div className={styles.addressSettings}>
|
||||
<div className={styles.copyAddressSetting}>
|
||||
<button onClick={() => navigator.clipboard.writeText(account?.signer?.address)}>copy</button> full address
|
||||
</div>
|
||||
<div className={styles.cryptoAddressSetting}>
|
||||
<span className={styles.settingTitle}>{t('crypto_address')}</span>
|
||||
<button className={styles.infoButton} onClick={cryptoAddressInfo}>
|
||||
|
||||
@@ -78,7 +78,6 @@
|
||||
.avatar {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
margin-bottom: 5px;
|
||||
border: 1px solid var(--border-text);
|
||||
}
|
||||
|
||||
|
||||
@@ -105,10 +105,21 @@ const ThemeSettings = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const ProfileSettings = () => {
|
||||
const AvatarSettings = () => {
|
||||
const { t } = useTranslation();
|
||||
const account = useAccount();
|
||||
const { imageUrl } = useAuthorAvatar({ author: account?.author });
|
||||
|
||||
return (
|
||||
<div className={styles.avatarSettings}>
|
||||
<div className={styles.avatar}>{imageUrl ? <img src={imageUrl} alt='avatar' /> : <span className={styles.emptyAvatar}>+{t('add')}</span>}</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const DisplayNameSetting = () => {
|
||||
const { t } = useTranslation();
|
||||
const account = useAccount();
|
||||
const [displayName, setDisplayName] = useState(account?.author.displayName || '');
|
||||
const [savedDisplayName, setSavedDisplayName] = useState(false);
|
||||
|
||||
@@ -127,6 +138,7 @@ const ProfileSettings = () => {
|
||||
}, 2000);
|
||||
}
|
||||
}, [savedDisplayName]);
|
||||
|
||||
const saveUsername = async () => {
|
||||
try {
|
||||
await setAccount({ ...account, author: { ...account?.author, displayName } });
|
||||
@@ -142,10 +154,7 @@ const ProfileSettings = () => {
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={styles.profileSettings}>
|
||||
<span className={styles.settingTitle}>avatar</span>
|
||||
<div className={styles.avatar}>{imageUrl ? <img src={imageUrl} alt='avatar' /> : <span className={styles.emptyAvatar}>+{t('add')}</span>}</div>
|
||||
<span className={styles.settingTitle}>{t('display_name')}</span>
|
||||
<div className={styles.displayNameSetting}>
|
||||
<div className={styles.usernameInput}>
|
||||
<input type='text' placeholder='My Name' value={displayName} onChange={(e) => setDisplayName(e.target.value)} />
|
||||
<button className={styles.button} onClick={saveUsername}>
|
||||
@@ -210,9 +219,15 @@ const Settings = () => {
|
||||
</span>
|
||||
</div>
|
||||
<div className={styles.category}>
|
||||
<span className={styles.categoryTitle}>{t('profile')}</span>
|
||||
<span className={styles.categoryTitle}>{t('avatar')}</span>
|
||||
<span className={styles.categorySettings}>
|
||||
<ProfileSettings />
|
||||
<AvatarSettings />
|
||||
</span>
|
||||
</div>
|
||||
<div className={styles.category}>
|
||||
<span className={styles.categoryTitle}>{t('display_name')}</span>
|
||||
<span className={styles.categorySettings}>
|
||||
<DisplayNameSetting />
|
||||
</span>
|
||||
</div>
|
||||
<div className={styles.category}>
|
||||
|
||||
@@ -76,6 +76,7 @@ h1 {
|
||||
|
||||
.contentPreviewMarkdown {
|
||||
font-size: 14px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.contentPreviewTitle {
|
||||
|
||||
@@ -3,9 +3,6 @@ import { Link, useLocation } from 'react-router-dom';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { Subplebbit as SubplebbitType, useAccount, useAccountSubplebbits, useSubplebbits, useSubplebbitStats } from '@plebbit/plebbit-react-hooks';
|
||||
import styles from './subplebbits.module.css';
|
||||
import Label from '../../components/post/label';
|
||||
import Sidebar from '../../components/sidebar';
|
||||
import SubscribeButton from '../../components/subscribe-button';
|
||||
import { getFormattedTimeDuration } from '../../lib/utils/time-utils';
|
||||
import {
|
||||
isSubplebbitsView,
|
||||
@@ -18,6 +15,10 @@ import {
|
||||
isSubplebbitsVoteRejectingView,
|
||||
} from '../../lib/utils/view-utils';
|
||||
import { useDefaultSubplebbitAddresses } from '../../lib/utils/addresses-utils';
|
||||
import Markdown from '../../components/markdown';
|
||||
import Label from '../../components/post/label';
|
||||
import Sidebar from '../../components/sidebar';
|
||||
import SubscribeButton from '../../components/subscribe-button';
|
||||
|
||||
interface SubplebbitProps {
|
||||
index?: number;
|
||||
@@ -181,7 +182,11 @@ const Subplebbit = ({ subplebbit }: SubplebbitProps) => {
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
{description && showDescription && <div className={styles.description}>{description}</div>}
|
||||
{description && showDescription && (
|
||||
<div className={styles.description}>
|
||||
<Markdown content={description} />
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user