Fixed meal membership
This commit is contained in:
parent
4eec86794c
commit
d69128a334
2 changed files with 26 additions and 3 deletions
|
|
@ -124,6 +124,8 @@ import { currentUser } from '@/api/auth'
|
||||||
import { useAlert } from '@/composables/useAlert'
|
import { useAlert } from '@/composables/useAlert'
|
||||||
import { parseRouteId } from '@/router/helpers'
|
import { parseRouteId } from '@/router/helpers'
|
||||||
import type { Ingredient, Meal, MealRecipe } from '@/domain/types'
|
import type { Ingredient, Meal, MealRecipe } from '@/domain/types'
|
||||||
|
import { listMembers } from '@/api/households'
|
||||||
|
import { selectMyMember } from '@/domain/members'
|
||||||
|
|
||||||
import { ago } from '@/dateformats'
|
import { ago } from '@/dateformats'
|
||||||
|
|
||||||
|
|
@ -169,9 +171,10 @@ onBeforeMount(async () => {
|
||||||
const loaded = await getMeal(id)
|
const loaded = await getMeal(id)
|
||||||
Object.assign(meal, loaded)
|
Object.assign(meal, loaded)
|
||||||
} else {
|
} else {
|
||||||
const self = await currentUser()
|
const [user, members] = await Promise.all([currentUser(), listMembers()])
|
||||||
if (self) {
|
const fallback = Array.isArray(members) && members.length > 0 ? { id: members[0]!.id, displayName: members[0]!.displayName } : null
|
||||||
const me = { id: self.id, displayName: self.displayName }
|
const me = selectMyMember(members, user) ?? fallback
|
||||||
|
if (me) {
|
||||||
meal.chefs = [me]
|
meal.chefs = [me]
|
||||||
meal.consumers = [me]
|
meal.consumers = [me]
|
||||||
meal.cleanup = [me]
|
meal.cleanup = [me]
|
||||||
|
|
|
||||||
20
src/domain/members.ts
Normal file
20
src/domain/members.ts
Normal 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
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue