From c6daf72da961c39d7740f8dcc1b1df7c2b8cdd30 Mon Sep 17 00:00:00 2001 From: Zeedif Date: Thu, 9 Apr 2026 22:09:30 -0600 Subject: [PATCH] feat(opds): allow editing of registered catalogs (#3814) * feat(opds): allow editing of registered catalogs * chore(i18n): add translations for catalog edit feature Translate "Remove", "Edit OPDS Catalog", and "Save Changes" across all 31 locales. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Huang Xin Co-authored-by: Claude Opus 4.6 (1M context) --- .../public/locales/ar/translation.json | 5 +- .../public/locales/bn/translation.json | 5 +- .../public/locales/bo/translation.json | 5 +- .../public/locales/de/translation.json | 5 +- .../public/locales/el/translation.json | 5 +- .../public/locales/es/translation.json | 5 +- .../public/locales/fa/translation.json | 5 +- .../public/locales/fr/translation.json | 5 +- .../public/locales/he/translation.json | 5 +- .../public/locales/hi/translation.json | 5 +- .../public/locales/hu/translation.json | 5 +- .../public/locales/id/translation.json | 5 +- .../public/locales/it/translation.json | 5 +- .../public/locales/ja/translation.json | 5 +- .../public/locales/ko/translation.json | 5 +- .../public/locales/ms/translation.json | 5 +- .../public/locales/nl/translation.json | 5 +- .../public/locales/pl/translation.json | 5 +- .../public/locales/pt/translation.json | 5 +- .../public/locales/ro/translation.json | 5 +- .../public/locales/ru/translation.json | 5 +- .../public/locales/si/translation.json | 5 +- .../public/locales/sl/translation.json | 5 +- .../public/locales/sv/translation.json | 5 +- .../public/locales/ta/translation.json | 5 +- .../public/locales/th/translation.json | 5 +- .../public/locales/tr/translation.json | 5 +- .../public/locales/uk/translation.json | 5 +- .../public/locales/vi/translation.json | 5 +- .../public/locales/zh-CN/translation.json | 5 +- .../public/locales/zh-TW/translation.json | 5 +- .../app/opds/components/CatelogManager.tsx | 59 +++++++++++++++---- 32 files changed, 171 insertions(+), 43 deletions(-) diff --git a/apps/readest-app/public/locales/ar/translation.json b/apps/readest-app/public/locales/ar/translation.json index 2ad0b3dc..715198b3 100644 --- a/apps/readest-app/public/locales/ar/translation.json +++ b/apps/readest-app/public/locales/ar/translation.json @@ -1239,5 +1239,8 @@ "Split Hyphens": "تقسيم الواصلات", "Apply Theme Colors to PDF": "تطبيق ألوان السمة على PDF", "Name": "الاسم", - "Unavailable": "غير متاح" + "Unavailable": "غير متاح", + "Remove": "إزالة", + "Edit OPDS Catalog": "تعديل كتالوج OPDS", + "Save Changes": "حفظ التغييرات" } diff --git a/apps/readest-app/public/locales/bn/translation.json b/apps/readest-app/public/locales/bn/translation.json index 980fc84a..f00e801d 100644 --- a/apps/readest-app/public/locales/bn/translation.json +++ b/apps/readest-app/public/locales/bn/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "হাইফেন বিভক্ত করুন", "Apply Theme Colors to PDF": "PDF-এ থিম রং প্রয়োগ করুন", "Name": "নাম", - "Unavailable": "অনুপলব্ধ" + "Unavailable": "অনুপলব্ধ", + "Remove": "সরান", + "Edit OPDS Catalog": "OPDS ক্যাটালগ সম্পাদনা", + "Save Changes": "পরিবর্তন সংরক্ষণ" } diff --git a/apps/readest-app/public/locales/bo/translation.json b/apps/readest-app/public/locales/bo/translation.json index f04852f4..8187c029 100644 --- a/apps/readest-app/public/locales/bo/translation.json +++ b/apps/readest-app/public/locales/bo/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "སྦྲེལ་རྟགས་གཅད་པ", "Apply Theme Colors to PDF": "PDF ལ་བརྗོད་དོན་ཚོས་གཞི་སྤྱོད་པ", "Name": "མིང", - "Unavailable": "རག་མི་ཐུབ" + "Unavailable": "རག་མི་ཐུབ", + "Remove": "བསུབ།", + "Edit OPDS Catalog": "OPDS དཀར་ཆག་རྩོམ་སྒྲིག", + "Save Changes": "བསྒྱུར་བཅོས་ཉར་ཚགས།" } diff --git a/apps/readest-app/public/locales/de/translation.json b/apps/readest-app/public/locales/de/translation.json index 5b89e786..43b29fde 100644 --- a/apps/readest-app/public/locales/de/translation.json +++ b/apps/readest-app/public/locales/de/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "Bindestriche trennen", "Apply Theme Colors to PDF": "Designfarben auf PDF anwenden", "Name": "Name", - "Unavailable": "Nicht verfügbar" + "Unavailable": "Nicht verfügbar", + "Remove": "Entfernen", + "Edit OPDS Catalog": "OPDS-Katalog bearbeiten", + "Save Changes": "Änderungen speichern" } diff --git a/apps/readest-app/public/locales/el/translation.json b/apps/readest-app/public/locales/el/translation.json index b314612f..a2752ee3 100644 --- a/apps/readest-app/public/locales/el/translation.json +++ b/apps/readest-app/public/locales/el/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "Διαχωρισμός παύλων", "Apply Theme Colors to PDF": "Εφαρμογή χρωμάτων θέματος σε PDF", "Name": "Όνομα", - "Unavailable": "Μη διαθέσιμο" + "Unavailable": "Μη διαθέσιμο", + "Remove": "Αφαίρεση", + "Edit OPDS Catalog": "Επεξεργασία καταλόγου OPDS", + "Save Changes": "Αποθήκευση αλλαγών" } diff --git a/apps/readest-app/public/locales/es/translation.json b/apps/readest-app/public/locales/es/translation.json index e25825e2..0a57bc7d 100644 --- a/apps/readest-app/public/locales/es/translation.json +++ b/apps/readest-app/public/locales/es/translation.json @@ -1200,5 +1200,8 @@ "Split Hyphens": "Dividir guiones", "Apply Theme Colors to PDF": "Aplicar colores del tema al PDF", "Name": "Nombre", - "Unavailable": "No disponible" + "Unavailable": "No disponible", + "Remove": "Eliminar", + "Edit OPDS Catalog": "Editar catálogo OPDS", + "Save Changes": "Guardar cambios" } diff --git a/apps/readest-app/public/locales/fa/translation.json b/apps/readest-app/public/locales/fa/translation.json index 1ee176a9..c33f0d4a 100644 --- a/apps/readest-app/public/locales/fa/translation.json +++ b/apps/readest-app/public/locales/fa/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "تقسیم خط‌تیره‌ها", "Apply Theme Colors to PDF": "اعمال رنگ‌های پوسته روی PDF", "Name": "نام", - "Unavailable": "ناموجود" + "Unavailable": "ناموجود", + "Remove": "حذف", + "Edit OPDS Catalog": "ویرایش کاتالوگ OPDS", + "Save Changes": "ذخیره تغییرات" } diff --git a/apps/readest-app/public/locales/fr/translation.json b/apps/readest-app/public/locales/fr/translation.json index 29b291b3..d9838161 100644 --- a/apps/readest-app/public/locales/fr/translation.json +++ b/apps/readest-app/public/locales/fr/translation.json @@ -1200,5 +1200,8 @@ "Split Hyphens": "Séparer les traits d'union", "Apply Theme Colors to PDF": "Appliquer les couleurs du thème au PDF", "Name": "Nom", - "Unavailable": "Indisponible" + "Unavailable": "Indisponible", + "Remove": "Supprimer", + "Edit OPDS Catalog": "Modifier le catalogue OPDS", + "Save Changes": "Enregistrer les modifications" } diff --git a/apps/readest-app/public/locales/he/translation.json b/apps/readest-app/public/locales/he/translation.json index e9ae321c..3b1315fa 100644 --- a/apps/readest-app/public/locales/he/translation.json +++ b/apps/readest-app/public/locales/he/translation.json @@ -1200,5 +1200,8 @@ "Split Hyphens": "פיצול מקפים", "Apply Theme Colors to PDF": "החל צבעי ערכת נושא על PDF", "Name": "שם", - "Unavailable": "לא זמין" + "Unavailable": "לא זמין", + "Remove": "הסר", + "Edit OPDS Catalog": "עריכת קטלוג OPDS", + "Save Changes": "שמור שינויים" } diff --git a/apps/readest-app/public/locales/hi/translation.json b/apps/readest-app/public/locales/hi/translation.json index ac1e7575..5d6c7419 100644 --- a/apps/readest-app/public/locales/hi/translation.json +++ b/apps/readest-app/public/locales/hi/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "हाइफ़न विभाजित करें", "Apply Theme Colors to PDF": "PDF पर थीम रंग लागू करें", "Name": "नाम", - "Unavailable": "अनुपलब्ध" + "Unavailable": "अनुपलब्ध", + "Remove": "हटाएँ", + "Edit OPDS Catalog": "OPDS कैटलॉग संपादित करें", + "Save Changes": "परिवर्तन सहेजें" } diff --git a/apps/readest-app/public/locales/hu/translation.json b/apps/readest-app/public/locales/hu/translation.json index 19236849..7c766859 100644 --- a/apps/readest-app/public/locales/hu/translation.json +++ b/apps/readest-app/public/locales/hu/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "Kötőjelek felosztása", "Apply Theme Colors to PDF": "Téma színeinek alkalmazása PDF-re", "Name": "Név", - "Unavailable": "Nem elérhető" + "Unavailable": "Nem elérhető", + "Remove": "Eltávolítás", + "Edit OPDS Catalog": "OPDS katalógus szerkesztése", + "Save Changes": "Módosítások mentése" } diff --git a/apps/readest-app/public/locales/id/translation.json b/apps/readest-app/public/locales/id/translation.json index 954d1721..9fd540a0 100644 --- a/apps/readest-app/public/locales/id/translation.json +++ b/apps/readest-app/public/locales/id/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "Pisahkan Tanda Hubung", "Apply Theme Colors to PDF": "Terapkan Warna Tema ke PDF", "Name": "Nama", - "Unavailable": "Tidak Tersedia" + "Unavailable": "Tidak Tersedia", + "Remove": "Hapus", + "Edit OPDS Catalog": "Edit Katalog OPDS", + "Save Changes": "Simpan Perubahan" } diff --git a/apps/readest-app/public/locales/it/translation.json b/apps/readest-app/public/locales/it/translation.json index 1ebcde3d..839a6263 100644 --- a/apps/readest-app/public/locales/it/translation.json +++ b/apps/readest-app/public/locales/it/translation.json @@ -1200,5 +1200,8 @@ "Split Hyphens": "Dividi trattini", "Apply Theme Colors to PDF": "Applica colori tema al PDF", "Name": "Nome", - "Unavailable": "Non disponibile" + "Unavailable": "Non disponibile", + "Remove": "Rimuovi", + "Edit OPDS Catalog": "Modifica catalogo OPDS", + "Save Changes": "Salva modifiche" } diff --git a/apps/readest-app/public/locales/ja/translation.json b/apps/readest-app/public/locales/ja/translation.json index 31be11b3..5612ef7b 100644 --- a/apps/readest-app/public/locales/ja/translation.json +++ b/apps/readest-app/public/locales/ja/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "ハイフンで分割", "Apply Theme Colors to PDF": "テーマカラーをPDFに適用", "Name": "名前", - "Unavailable": "利用不可" + "Unavailable": "利用不可", + "Remove": "削除", + "Edit OPDS Catalog": "OPDSカタログを編集", + "Save Changes": "変更を保存" } diff --git a/apps/readest-app/public/locales/ko/translation.json b/apps/readest-app/public/locales/ko/translation.json index bdcdb4ce..274812c9 100644 --- a/apps/readest-app/public/locales/ko/translation.json +++ b/apps/readest-app/public/locales/ko/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "하이픈 분리", "Apply Theme Colors to PDF": "PDF에 테마 색상 적용", "Name": "이름", - "Unavailable": "사용 불가" + "Unavailable": "사용 불가", + "Remove": "삭제", + "Edit OPDS Catalog": "OPDS 카탈로그 편집", + "Save Changes": "변경 사항 저장" } diff --git a/apps/readest-app/public/locales/ms/translation.json b/apps/readest-app/public/locales/ms/translation.json index 317e1039..5e863dfb 100644 --- a/apps/readest-app/public/locales/ms/translation.json +++ b/apps/readest-app/public/locales/ms/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "Pisahkan Sempang", "Apply Theme Colors to PDF": "Gunakan Warna Tema pada PDF", "Name": "Nama", - "Unavailable": "Tidak Tersedia" + "Unavailable": "Tidak Tersedia", + "Remove": "Alih keluar", + "Edit OPDS Catalog": "Edit Katalog OPDS", + "Save Changes": "Simpan Perubahan" } diff --git a/apps/readest-app/public/locales/nl/translation.json b/apps/readest-app/public/locales/nl/translation.json index f69fdbe6..2b781b18 100644 --- a/apps/readest-app/public/locales/nl/translation.json +++ b/apps/readest-app/public/locales/nl/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "Afbreekstreepjes splitsen", "Apply Theme Colors to PDF": "Themakleuren toepassen op PDF", "Name": "Naam", - "Unavailable": "Niet beschikbaar" + "Unavailable": "Niet beschikbaar", + "Remove": "Verwijderen", + "Edit OPDS Catalog": "OPDS-catalogus bewerken", + "Save Changes": "Wijzigingen opslaan" } diff --git a/apps/readest-app/public/locales/pl/translation.json b/apps/readest-app/public/locales/pl/translation.json index 91a539c4..1e80946f 100644 --- a/apps/readest-app/public/locales/pl/translation.json +++ b/apps/readest-app/public/locales/pl/translation.json @@ -1213,5 +1213,8 @@ "Split Hyphens": "Dziel łączniki", "Apply Theme Colors to PDF": "Zastosuj kolory motywu do PDF", "Name": "Nazwa", - "Unavailable": "Niedostępne" + "Unavailable": "Niedostępne", + "Remove": "Usuń", + "Edit OPDS Catalog": "Edytuj katalog OPDS", + "Save Changes": "Zapisz zmiany" } diff --git a/apps/readest-app/public/locales/pt/translation.json b/apps/readest-app/public/locales/pt/translation.json index 2c98f64a..21703b9c 100644 --- a/apps/readest-app/public/locales/pt/translation.json +++ b/apps/readest-app/public/locales/pt/translation.json @@ -1200,5 +1200,8 @@ "Split Hyphens": "Dividir hífens", "Apply Theme Colors to PDF": "Aplicar cores do tema ao PDF", "Name": "Nome", - "Unavailable": "Indisponível" + "Unavailable": "Indisponível", + "Remove": "Remover", + "Edit OPDS Catalog": "Editar catálogo OPDS", + "Save Changes": "Salvar alterações" } diff --git a/apps/readest-app/public/locales/ro/translation.json b/apps/readest-app/public/locales/ro/translation.json index 96a12853..d68e25e7 100644 --- a/apps/readest-app/public/locales/ro/translation.json +++ b/apps/readest-app/public/locales/ro/translation.json @@ -1200,5 +1200,8 @@ "Split Hyphens": "Desparte cratimele", "Apply Theme Colors to PDF": "Aplică culorile temei la PDF", "Name": "Nume", - "Unavailable": "Indisponibil" + "Unavailable": "Indisponibil", + "Remove": "Elimină", + "Edit OPDS Catalog": "Editare catalog OPDS", + "Save Changes": "Salvare modificări" } diff --git a/apps/readest-app/public/locales/ru/translation.json b/apps/readest-app/public/locales/ru/translation.json index 7120ca82..c78e1c70 100644 --- a/apps/readest-app/public/locales/ru/translation.json +++ b/apps/readest-app/public/locales/ru/translation.json @@ -1213,5 +1213,8 @@ "Split Hyphens": "Разделить дефисы", "Apply Theme Colors to PDF": "Применить цвета темы к PDF", "Name": "Имя", - "Unavailable": "Недоступно" + "Unavailable": "Недоступно", + "Remove": "Удалить", + "Edit OPDS Catalog": "Редактировать каталог OPDS", + "Save Changes": "Сохранить изменения" } diff --git a/apps/readest-app/public/locales/si/translation.json b/apps/readest-app/public/locales/si/translation.json index cefd1596..f695e2ba 100644 --- a/apps/readest-app/public/locales/si/translation.json +++ b/apps/readest-app/public/locales/si/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "හයිෆන් බෙදන්න", "Apply Theme Colors to PDF": "PDF වෙත තේමා වර්ණ යොදන්න", "Name": "නම", - "Unavailable": "ලබාගත නොහැක" + "Unavailable": "ලබාගත නොහැක", + "Remove": "ඉවත් කරන්න", + "Edit OPDS Catalog": "OPDS නාමාවලිය සංස්කරණය", + "Save Changes": "වෙනස්කම් සුරකින්න" } diff --git a/apps/readest-app/public/locales/sl/translation.json b/apps/readest-app/public/locales/sl/translation.json index d1a53138..42ad0f30 100644 --- a/apps/readest-app/public/locales/sl/translation.json +++ b/apps/readest-app/public/locales/sl/translation.json @@ -1213,5 +1213,8 @@ "Split Hyphens": "Razdeli vezaje", "Apply Theme Colors to PDF": "Uporabi barve teme za PDF", "Name": "Ime", - "Unavailable": "Nedosegljivo" + "Unavailable": "Nedosegljivo", + "Remove": "Odstrani", + "Edit OPDS Catalog": "Uredi katalog OPDS", + "Save Changes": "Shrani spremembe" } diff --git a/apps/readest-app/public/locales/sv/translation.json b/apps/readest-app/public/locales/sv/translation.json index fa974168..6f32e605 100644 --- a/apps/readest-app/public/locales/sv/translation.json +++ b/apps/readest-app/public/locales/sv/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "Dela bindestreck", "Apply Theme Colors to PDF": "Tillämpa temafärger på PDF", "Name": "Namn", - "Unavailable": "Inte tillgängligt" + "Unavailable": "Inte tillgängligt", + "Remove": "Ta bort", + "Edit OPDS Catalog": "Redigera OPDS-katalog", + "Save Changes": "Spara ändringar" } diff --git a/apps/readest-app/public/locales/ta/translation.json b/apps/readest-app/public/locales/ta/translation.json index 5314c692..7ea80359 100644 --- a/apps/readest-app/public/locales/ta/translation.json +++ b/apps/readest-app/public/locales/ta/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "ஹைபன்களைப் பிரி", "Apply Theme Colors to PDF": "PDF-க்கு தீம் நிறங்களைப் பயன்படுத்து", "Name": "பெயர்", - "Unavailable": "கிடைக்கவில்லை" + "Unavailable": "கிடைக்கவில்லை", + "Remove": "நீக்கு", + "Edit OPDS Catalog": "OPDS பட்டியலைத் திருத்து", + "Save Changes": "மாற்றங்களைச் சேமி" } diff --git a/apps/readest-app/public/locales/th/translation.json b/apps/readest-app/public/locales/th/translation.json index 7bde9e02..3f13ddd9 100644 --- a/apps/readest-app/public/locales/th/translation.json +++ b/apps/readest-app/public/locales/th/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "แยกยัติภังค์", "Apply Theme Colors to PDF": "ใช้สีธีมกับ PDF", "Name": "ชื่อ", - "Unavailable": "ไม่พร้อมใช้งาน" + "Unavailable": "ไม่พร้อมใช้งาน", + "Remove": "ลบ", + "Edit OPDS Catalog": "แก้ไขแคตตาล็อก OPDS", + "Save Changes": "บันทึกการเปลี่ยนแปลง" } diff --git a/apps/readest-app/public/locales/tr/translation.json b/apps/readest-app/public/locales/tr/translation.json index 7020265b..aec4ecb4 100644 --- a/apps/readest-app/public/locales/tr/translation.json +++ b/apps/readest-app/public/locales/tr/translation.json @@ -1187,5 +1187,8 @@ "Split Hyphens": "Tireleri Böl", "Apply Theme Colors to PDF": "Tema Renklerini PDF'ye Uygula", "Name": "Ad", - "Unavailable": "Kullanılamaz" + "Unavailable": "Kullanılamaz", + "Remove": "Kaldır", + "Edit OPDS Catalog": "OPDS Kataloğunu Düzenle", + "Save Changes": "Değişiklikleri Kaydet" } diff --git a/apps/readest-app/public/locales/uk/translation.json b/apps/readest-app/public/locales/uk/translation.json index f22edebb..2c813af4 100644 --- a/apps/readest-app/public/locales/uk/translation.json +++ b/apps/readest-app/public/locales/uk/translation.json @@ -1213,5 +1213,8 @@ "Split Hyphens": "Розділити дефіси", "Apply Theme Colors to PDF": "Застосувати кольори теми до PDF", "Name": "Ім'я", - "Unavailable": "Недоступно" + "Unavailable": "Недоступно", + "Remove": "Видалити", + "Edit OPDS Catalog": "Редагувати каталог OPDS", + "Save Changes": "Зберегти зміни" } diff --git a/apps/readest-app/public/locales/vi/translation.json b/apps/readest-app/public/locales/vi/translation.json index 8dd411aa..d7fb4bee 100644 --- a/apps/readest-app/public/locales/vi/translation.json +++ b/apps/readest-app/public/locales/vi/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "Tách gạch nối", "Apply Theme Colors to PDF": "Áp dụng màu chủ đề cho PDF", "Name": "Tên", - "Unavailable": "Không khả dụng" + "Unavailable": "Không khả dụng", + "Remove": "Xóa", + "Edit OPDS Catalog": "Chỉnh sửa danh mục OPDS", + "Save Changes": "Lưu thay đổi" } diff --git a/apps/readest-app/public/locales/zh-CN/translation.json b/apps/readest-app/public/locales/zh-CN/translation.json index 9c1c7120..6ccd76e1 100644 --- a/apps/readest-app/public/locales/zh-CN/translation.json +++ b/apps/readest-app/public/locales/zh-CN/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "拆分连字符", "Apply Theme Colors to PDF": "将主题颜色应用于 PDF", "Name": "名称", - "Unavailable": "不可用" + "Unavailable": "不可用", + "Remove": "移除", + "Edit OPDS Catalog": "编辑 OPDS 目录", + "Save Changes": "保存更改" } diff --git a/apps/readest-app/public/locales/zh-TW/translation.json b/apps/readest-app/public/locales/zh-TW/translation.json index 828f24e1..d9bc1c78 100644 --- a/apps/readest-app/public/locales/zh-TW/translation.json +++ b/apps/readest-app/public/locales/zh-TW/translation.json @@ -1174,5 +1174,8 @@ "Split Hyphens": "拆分連字號", "Apply Theme Colors to PDF": "將主題顏色套用至 PDF", "Name": "名稱", - "Unavailable": "無法使用" + "Unavailable": "無法使用", + "Remove": "移除", + "Edit OPDS Catalog": "編輯 OPDS 目錄", + "Save Changes": "儲存變更" } diff --git a/apps/readest-app/src/app/opds/components/CatelogManager.tsx b/apps/readest-app/src/app/opds/components/CatelogManager.tsx index 6718c6b3..295c3038 100644 --- a/apps/readest-app/src/app/opds/components/CatelogManager.tsx +++ b/apps/readest-app/src/app/opds/components/CatelogManager.tsx @@ -2,7 +2,7 @@ import clsx from 'clsx'; import { useState } from 'react'; -import { IoAdd, IoTrash, IoOpenOutline, IoBook, IoEyeOff, IoEye } from 'react-icons/io5'; +import { IoAdd, IoTrash, IoOpenOutline, IoBook, IoEyeOff, IoEye, IoPencil } from 'react-icons/io5'; import { useRouter } from 'next/navigation'; import { useEnv } from '@/context/EnvContext'; import { useTranslation } from '@/hooks/useTranslation'; @@ -77,6 +77,7 @@ export function CatalogManager() { const { settings } = useSettingsStore(); const [catalogs, setCatalogs] = useState(() => settings.opdsCatalogs || []); const [showAddDialog, setShowAddDialog] = useState(false); + const [editingCatalogId, setEditingCatalogId] = useState(null); const [newCatalog, setNewCatalog] = useState(EMPTY_NEW_CATALOG); const [showPassword, setShowPassword] = useState(false); const [urlError, setUrlError] = useState(''); @@ -147,7 +148,7 @@ export function CatalogManager() { } const catalog: OPDSCatalog = { - id: Date.now().toString(), + id: editingCatalogId || Date.now().toString(), name: newCatalog.name, url: newCatalog.url, description: newCatalog.description, @@ -158,15 +159,35 @@ export function CatalogManager() { : undefined, }; - saveCatalogs([catalog, ...catalogs]); + if (editingCatalogId) { + saveCatalogs(catalogs.map((c) => (c.id === editingCatalogId ? catalog : c))); + } else { + saveCatalogs([catalog, ...catalogs]); + } + setNewCatalog(EMPTY_NEW_CATALOG); setUrlError(''); setHeaderError(''); setProxyConsentError(''); setIsValidating(false); + setEditingCatalogId(null); setShowAddDialog(false); }; + const handleEditCatalog = (catalog: OPDSCatalog) => { + setNewCatalog({ + name: catalog.name, + url: catalog.url, + description: catalog.description || '', + username: catalog.username || '', + password: catalog.password || '', + customHeadersInput: formatOPDSCustomHeadersInput(catalog.customHeaders), + proxyConsent: false, + }); + setEditingCatalogId(catalog.id); + setShowAddDialog(true); + }; + const handleAddPopularCatalog = (popularCatalog: OPDSCatalog) => { if (catalogs.some((c) => c.url === popularCatalog.url)) { return; @@ -192,6 +213,7 @@ export function CatalogManager() { setHeaderError(''); setProxyConsentError(''); setShowPassword(false); + setEditingCatalogId(null); }; return ( @@ -239,13 +261,22 @@ export function CatalogManager() { {catalog.icon && {catalog.icon}} {catalog.name} - +
+ + +
{catalog.description && (

@@ -329,12 +360,14 @@ export function CatalogManager() { - {/* Add Catalog Dialog */} + {/* Add/Edit Catalog Dialog */} {showAddDialog && (

-

{_('Add OPDS Catalog')}

+

+ {editingCatalogId ? _('Edit OPDS Catalog') : _('Add OPDS Catalog')} +

{ e.preventDefault(); @@ -518,6 +551,8 @@ export function CatalogManager() { {_('Validating...')} + ) : editingCatalogId ? ( + _('Save Changes') ) : ( _('Add Catalog') )}