Release govoplan-campaign v0.1.28: stabilize saving, review and delivery recovery
Module Package Release / publish-packages (push) Successful in 12s

This commit is contained in:
2026-09-08 01:32:26 +02:00
parent 1b32427813
commit c51fc180fb
111 changed files with 6905 additions and 980 deletions
@@ -53,14 +53,13 @@ import {
AddressHeaderControl,
HeaderAddressEditorDialog,
RecipientAddressEditorDialog,
entryWithAddressList,
entryWithAddressValues,
formatAddressCollectionForClipboard,
getAddressColumn,
getEntryAddresses,
headerAddressValues,
hiddenRecipientAddressMatch,
recipientAddressFilterValue,
recipientAddressOverlayColumns,
recipientAddressSummary,
recipientHeaderRows,
type AddressFieldKey,
@@ -110,7 +109,7 @@ export default function RecipientDataPage({ settings, campaignId }: {settings: A
const version = data.currentVersion;
const locked = isAuditLockedVersion(version, data.campaign?.current_version_id);
const { draft, setDraft, displayDraft, dirty, saveState, localError, patch, markDirty, discardDraft, saveDraft } = useCampaignDraftEditor({
const { draft, setDraft, displayDraft, dirty, saving, saveState, localError, patch, markDirty, discardDraft, saveDraft } = useCampaignDraftEditor({
settings,
campaignId,
version,
@@ -293,17 +292,7 @@ export default function RecipientDataPage({ settings, campaignId }: {settings: A
values: HeaderAddressValues,
merges: EntryAddressMergeValues
) {
updateEntry(index, (entry) => {
let nextEntry = entry;
for (const column of recipientAddressOverlayColumns) {
if (!(column.key in values)) continue;
nextEntry = entryWithAddressList(nextEntry, column.key, values[column.key] ?? []);
if (!column.mergeKey || !(column.mergeKey in merges)) continue;
nextEntry = { ...nextEntry, [column.mergeKey]: Boolean(merges[column.mergeKey]) };
delete nextEntry[column.mergeKey.replace("merge_", "combine_")];
}
return nextEntry;
});
updateEntry(index, (entry) => entryWithAddressValues(entry, values, merges));
setRecipientAddressEditorIndex(null);
}
@@ -417,6 +406,7 @@ export default function RecipientDataPage({ settings, campaignId }: {settings: A
campaignId={campaignId}
title="i18n:govoplan-campaign.sender_recipients.922c6d24"
loading={loading}
saving={saving}
version={version}
versions={data.versions}
saveState={saveState}