Files
Compass/backend/api/src/block-user.ts
2026-03-06 15:27:49 +01:00

32 lines
1.0 KiB
TypeScript

import {createSupabaseDirectClient} from 'shared/supabase/init'
import {updatePrivateUser} from 'shared/supabase/users'
import {FieldVal} from 'shared/supabase/utils'
import {APIErrors, APIHandler} from './helpers/endpoint'
export const blockUser: APIHandler<'user/by-id/:id/block'> = async ({id}, auth) => {
if (auth.uid === id) throw APIErrors.badRequest('You cannot block yourself')
const pg = createSupabaseDirectClient()
await pg.tx(async (tx) => {
await updatePrivateUser(tx, auth.uid, {
blockedUserIds: FieldVal.arrayConcat(id),
})
await updatePrivateUser(tx, id, {
blockedByUserIds: FieldVal.arrayConcat(auth.uid),
})
})
}
export const unblockUser: APIHandler<'user/by-id/:id/unblock'> = async ({id}, auth) => {
const pg = createSupabaseDirectClient()
await pg.tx(async (tx) => {
await updatePrivateUser(tx, auth.uid, {
blockedUserIds: FieldVal.arrayRemove(id),
})
await updatePrivateUser(tx, id, {
blockedByUserIds: FieldVal.arrayRemove(auth.uid),
})
})
}