Update a re-imported event rather than skipping it
Contacts and calendars disagreed on a re-import: a vCard or LDIF entry whose identity a book already held overwrote the card there (#242, #274), while an event whose UID a calendar held was counted and thrown away (#222). The asymmetry was never decided -- it was where each half stopped. Decided on #279: calendars update too, with two properties held back. `participants` carries every attendee's accepted/declined and `recurrenceOverrides` holds every "just this Wednesday" edit made here. Both are decisions taken after the file was written, and a file that mentions them at all describes them as they were at export, so writing either one over would destroy work silently and return no error. A corrected export now fixes the time, the title and the location, and leaves who said yes alone. `uid` is held back with them: it is what the two were matched on, so it is already equal. The scan returns uid -> id rather than a set of UIDs, since updating needs something to address, and creates and updates now share one `maxObjectsInSet` budget the way contacts' `writeCards` does -- 300 new and 300 changed batched separately would be two calls of 300, neither over a ceiling of 500 and both refused. Counts become created/updated, reported as the contacts import reports them. Still no scheduling messages, on an update as much as on a create. That is a real cost -- an event a re-import moves is moved here and nowhere else -- and it is the lesser one: an import is not the place to start mailing a room full of people who never asked for it. Driven against the mock end to end: a second file with the same UID updated the event in place, took the file's title, start and location, and left an accepted RSVP and a per-occurrence override untouched even though the file carried participants of its own.
This commit is contained in:
@@ -1388,8 +1388,7 @@ export const catalog: Catalog = {
|
||||
"Your administrator changed {n} settings": { other: "管理者が {n} 件の設定を変更しました" },
|
||||
"Exported {n} events": { other: "{n} 件の予定をエクスポートしました" },
|
||||
"Imported {n} events": { other: "{n} 件の予定をインポートしました" },
|
||||
"Already here: {n} events, nothing imported": { other: "すでに存在: {n} 件、インポートなし" },
|
||||
"{n} were already here": { other: "{n} 件はすでに存在していました" },
|
||||
"Updated {n} events, nothing new": { other: "{n} 件の予定を更新しました。新規はありません" },
|
||||
/*
|
||||
* One form each, because Japanese has one. Intl.PluralRules returns
|
||||
* `other` for every number, so `one`, `few` and `many` would never be
|
||||
|
||||
Reference in New Issue
Block a user