update footer | add shared chores | expire todos if not completed
This commit is contained in:
@@ -442,6 +442,8 @@ async function ensureAssignedChoreFields(): Promise<void> {
|
||||
if (!has('icon')) needed.push({ name: 'icon', type: 'text', required: false });
|
||||
if (!has('color')) needed.push({ name: 'color', type: 'text', required: false });
|
||||
if (!has('emoji')) needed.push({ name: 'emoji', type: 'text', required: false });
|
||||
// Shared chores: memberId becomes optional, shared boolean tracks original mode
|
||||
if (!has('shared')) needed.push({ name: 'shared', type: 'bool', required: false });
|
||||
// Todos can be celebration-only (emoji) as well as points/money.
|
||||
let changed = !!needed.length;
|
||||
const typeField = col.fields.find((f: any) => f.name === 'type');
|
||||
@@ -455,6 +457,12 @@ async function ensureAssignedChoreFields(): Promise<void> {
|
||||
tplField.required = false;
|
||||
changed = true;
|
||||
}
|
||||
// memberId must be optional for shared chores (null = shared with all members)
|
||||
const memberField = col.fields.find((f: any) => f.name === 'memberId');
|
||||
if (memberField && memberField.required) {
|
||||
memberField.required = false;
|
||||
changed = true;
|
||||
}
|
||||
if (changed) {
|
||||
await updateCollection(col.id, { ...col, fields: [...col.fields] });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user