Birthdays: single calendar model + sync on server-sync (iOS)
- one birthday calendar per user; BirthdaysImporter auto-creates/targets it
(no picker) and reconciles per-device (external_uid contact:<deviceId>:<id>)
so multiple devices don't clash
- Contacts birthday sync now runs on every "Sync with server" (syncFromServer),
not just app launch and the manual button
- report the device after each sync (POST /api/birthdays/sync-report) for the
web device list
- Accounts: Birthdays-from-Contacts section drops the target picker, keeps the
reminder picker; removed the birthday toggle from the generic new-calendar sheet
- New-birthday sheet targets the single calendar, offers activation if none
- exclude the birthday calendar from the group-visible ("shared calendar") picker
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -347,6 +347,9 @@ private let strings: [String: [String: String]] = [
|
||||
|
||||
// Birthdays
|
||||
"birthday.new": "Neuer Geburtstag",
|
||||
"birthday.calendar_name": "Geburtstage",
|
||||
"birthday.activate": "Geburtstagskalender aktivieren",
|
||||
"birthday.activate_hint": "Aktiviere den Geburtstagskalender, um Geburtstage anzulegen. Er erscheint als eigener Kalender in der Seitenleiste.",
|
||||
"birthday.person": "Name",
|
||||
"birthday.person_placeholder": "Name der Person",
|
||||
"birthday.date": "Geburtstag",
|
||||
@@ -702,6 +705,9 @@ private let strings: [String: [String: String]] = [
|
||||
|
||||
// Birthdays
|
||||
"birthday.new": "New birthday",
|
||||
"birthday.calendar_name": "Birthdays",
|
||||
"birthday.activate": "Enable birthday calendar",
|
||||
"birthday.activate_hint": "Enable the birthday calendar to add birthdays. It appears as its own calendar in the sidebar.",
|
||||
"birthday.person": "Name",
|
||||
"birthday.person_placeholder": "Person's name",
|
||||
"birthday.date": "Birthday",
|
||||
|
||||
Reference in New Issue
Block a user