feat: add edit button for ICS subscriptions (#100)

Adds a pencil-icon edit button to each ICS subscription row. Clicking it
opens a modal to update name, color, and shared visibility via PATCH
/calendar/subscriptions/:id. Adds updatedToast i18n key to all 15 locales.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ulas Kalayci
2026-04-29 10:37:16 +02:00
parent f9b796ca13
commit 06adc0f3f5
16 changed files with 104 additions and 30 deletions
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "خاص",
"shared": "مشترك"
}
},
"updatedToast": "تم تحديث الاشتراك."
},
"memberPhoneLabel": "رقم الهاتف (اختياري)",
"memberEmailLabel": "البريد الإلكتروني (اختياري)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "أنشئ وصفات واربطها بمخطط الوجبات."
}
}
}
+3 -2
View File
@@ -757,7 +757,8 @@
"empty": "Noch keine Abonnements.",
"addedToast": "Abonnement hinzugefügt.",
"syncedToast": "Abonnement synchronisiert.",
"deletedToast": "Abonnement gelöscht."
"deletedToast": "Abonnement gelöscht.",
"updatedToast": "Abonnement aktualisiert."
},
"memberPhoneLabel": "Telefonnummer (optional)",
"memberEmailLabel": "E-Mail (optional)",
@@ -935,4 +936,4 @@
"goShop": "Einkaufsliste",
"goNotes": "Notizen"
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Ιδιωτικό",
"shared": "Κοινόχρηστο"
}
},
"updatedToast": "Η συνδρομή ενημερώθηκε."
},
"memberPhoneLabel": "Αριθμός τηλεφώνου (προαιρετικό)",
"memberEmailLabel": "Email (προαιρετικό)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Δημιουργήστε συνταγές και συνδέστε τις με τον προγραμματισμό γευμάτων."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Private",
"shared": "Shared"
}
},
"updatedToast": "Subscription updated."
},
"memberPhoneLabel": "Phone number (optional)",
"memberEmailLabel": "Email (optional)",
@@ -916,4 +917,4 @@
"birthdays": "Add birthdays — you will receive a reminder in time.",
"recipes": "Create recipes and link them to your meal planner."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Privado",
"shared": "Compartido"
}
},
"updatedToast": "Suscripción actualizada."
},
"memberPhoneLabel": "Número de teléfono (opcional)",
"memberEmailLabel": "Correo electrónico (opcional)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Crea recetas y vincúlalas con tu planificador de comidas."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Privé",
"shared": "Partagé"
}
},
"updatedToast": "Abonnement mis à jour."
},
"memberPhoneLabel": "Numéro de téléphone (facultatif)",
"memberEmailLabel": "E-mail (facultatif)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Créez des recettes et associez-les à votre planification des repas."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "निजी",
"shared": "साझा"
}
},
"updatedToast": "सदस्यता अपडेट की गई।"
},
"memberPhoneLabel": "फ़ोन नंबर (वैकल्पिक)",
"memberEmailLabel": "ईमेल (वैकल्पिक)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "रेसिपी बनाएं और उन्हें अपने भोजन योजनाकार से जोड़ें।"
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Privato",
"shared": "Condiviso"
}
},
"updatedToast": "Abbonamento aggiornato."
},
"memberPhoneLabel": "Numero di telefono (opzionale)",
"memberEmailLabel": "E-mail (opzionale)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Crea ricette e collegale al tuo piano pasti."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "プライベート",
"shared": "共有"
}
},
"updatedToast": "サブスクリプションが更新されました。"
},
"memberPhoneLabel": "電話番号(任意)",
"memberEmailLabel": "メールアドレス(任意)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "レシピを作成して、食事プランに関連付けましょう。"
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Privado",
"shared": "Partilhado"
}
},
"updatedToast": "Subscrição atualizada."
},
"memberPhoneLabel": "Telefone (opcional)",
"memberEmailLabel": "E-mail (opcional)",
@@ -898,4 +899,4 @@
"emptyHint": {
"recipes": "Crie receitas e vincule-as ao seu planejador de refeições."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Личное",
"shared": "Общее"
}
},
"updatedToast": "Подписка обновлена."
},
"memberPhoneLabel": "Номер телефона (необязательно)",
"memberEmailLabel": "Электронная почта (необязательно)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Создавайте рецепты и связывайте их с вашим планом питания."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Privat",
"shared": "Delad"
}
},
"updatedToast": "Prenumeration uppdaterad."
},
"memberPhoneLabel": "Telefonnummer (valfritt)",
"memberEmailLabel": "E-post (valfritt)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Skapa recept och koppla dem till din måltidsplanering."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Özel",
"shared": "Paylaşımlı"
}
},
"updatedToast": "Abonelik güncellendi."
},
"memberPhoneLabel": "Telefon numarası (isteğe bağlı)",
"memberEmailLabel": "E-posta (isteğe bağlı)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "Tarifler oluşturun ve yemek planlayıcınıza bağlayın."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "Приватне",
"shared": "Спільне"
}
},
"updatedToast": "Підписку оновлено."
},
"memberPhoneLabel": "Номер телефону (необов'язково)",
"memberEmailLabel": "Електронна пошта (необов'язково)",
@@ -905,4 +906,4 @@
"birthdays": "Додайте дні народження — ви отримаєте нагадування завчасно.",
"recipes": "Створюйте рецепти та пов'язуйте їх із планувальником харчування."
}
}
}
+3 -2
View File
@@ -732,7 +732,8 @@
"badges": {
"private": "私人",
"shared": "共享"
}
},
"updatedToast": "订阅已更新。"
},
"memberPhoneLabel": "电话号码(可选)",
"memberEmailLabel": "电子邮件(可选)",
@@ -897,4 +898,4 @@
"emptyHint": {
"recipes": "创建食谱并将其关联到你的膳食计划。"
}
}
}