Fixed meal membership

This commit is contained in:
jableader 2025-11-02 17:41:40 +11:00
parent 4eec86794c
commit d69128a334
2 changed files with 26 additions and 3 deletions

View file

@ -124,6 +124,8 @@ import { currentUser } from '@/api/auth'
import { useAlert } from '@/composables/useAlert'
import { parseRouteId } from '@/router/helpers'
import type { Ingredient, Meal, MealRecipe } from '@/domain/types'
import { listMembers } from '@/api/households'
import { selectMyMember } from '@/domain/members'
import { ago } from '@/dateformats'
@ -169,9 +171,10 @@ onBeforeMount(async () => {
const loaded = await getMeal(id)
Object.assign(meal, loaded)
} else {
const self = await currentUser()
if (self) {
const me = { id: self.id, displayName: self.displayName }
const [user, members] = await Promise.all([currentUser(), listMembers()])
const fallback = Array.isArray(members) && members.length > 0 ? { id: members[0]!.id, displayName: members[0]!.displayName } : null
const me = selectMyMember(members, user) ?? fallback
if (me) {
meal.chefs = [me]
meal.consumers = [me]
meal.cleanup = [me]

20
src/domain/members.ts Normal file
View file

@ -0,0 +1,20 @@
import type { components } from '@/api/types'
import type { MemberRef, User } from '@/domain/types'
export type HouseholdMember = components['schemas']['HouseholdMember']
export function toMemberRef(m: HouseholdMember): MemberRef {
return { id: m.id, displayName: m.displayName }
}
export function selectMyMember(members: HouseholdMember[] | null | undefined, user: User | null): MemberRef | null {
const list: HouseholdMember[] = Array.isArray(members) ? members : []
if (list.length === 0) return null
if (list.length === 1) return toMemberRef(list[0]!)
if (user && typeof user.displayName === 'string' && user.displayName) {
const match = list.find((m) => m.displayName === user.displayName)
if (match) return toMemberRef(match)
}
return null
}