add muted section to territory select

This commit is contained in:
keyan 2023-12-30 18:19:42 -06:00
parent 214e863458
commit f267137662
2 changed files with 21 additions and 9 deletions

View File

@ -79,19 +79,23 @@ export default {
}) })
}, },
subs: async (parent, args, { models, me }) => { subs: async (parent, args, { models, me }) => {
if (me) {
return await models.$queryRaw`
SELECT "Sub".*, COALESCE(json_agg("MuteSub".*) FILTER (WHERE "MuteSub"."userId" IS NOT NULL), '[]') AS "MuteSub"
FROM "Sub"
LEFT JOIN "MuteSub" ON "Sub".name = "MuteSub"."subName" AND "MuteSub"."userId" = ${me.id}::INTEGER
WHERE status <> 'STOPPED'
GROUP BY "Sub".name, "MuteSub"."userId"
ORDER BY "MuteSub"."userId" NULLS FIRST, "Sub".name ASC
`
}
return await models.sub.findMany({ return await models.sub.findMany({
where: { where: {
status: { status: {
not: 'STOPPED' not: 'STOPPED'
} }
}, },
include: {
MuteSub: {
where: {
userId: Number(me.id)
}
}
},
orderBy: { orderBy: {
name: 'asc' name: 'asc'
} }
@ -187,7 +191,7 @@ export default {
return await models.user.findUnique({ where: { id: sub.userId } }) return await models.user.findUnique({ where: { id: sub.userId } })
}, },
meMuteSub: async (sub, args, { models }) => { meMuteSub: async (sub, args, { models }) => {
return sub.MuteSub.length > 0 return sub.MuteSub?.length > 0
} }
} }
} }

View File

@ -30,7 +30,15 @@ export function useSubs ({ prependSubs = [], sub, filterSubs = () => true, appen
...appendSubs.filter(s => s !== sub)]) ...appendSubs.filter(s => s !== sub)])
useEffect(() => { useEffect(() => {
if (!data) return if (!data) return
setSubs([...prependSubs, ...data.subs.filter(filterSubs).map(s => s.name), ...appendSubs]) console.log(data)
const joined = data.subs.filter(filterSubs).filter(s => !s.meMuteSub).map(s => s.name)
const muted = data.subs.filter(filterSubs).filter(s => s.meMuteSub).map(s => s.name)
const mutedSection = muted.length ? [{ label: 'muted', items: muted }] : []
setSubs([
...prependSubs,
...joined,
...mutedSection,
...appendSubs])
}, [data]) }, [data])
return subs return subs