mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-01-31 00:52:04 -05:00
65 lines
1.5 KiB
TypeScript
65 lines
1.5 KiB
TypeScript
import {APIError, APIHandler} from './helpers/endpoint'
|
|
import {createSupabaseDirectClient} from 'shared/supabase/init'
|
|
import {broadcastPrivateMessages} from "api/helpers/private-messages";
|
|
|
|
// const DELETED_MESSAGE_CONTENT: JSONContent = {
|
|
// type: 'doc',
|
|
// content: [
|
|
// {
|
|
// type: 'paragraph',
|
|
// content: [
|
|
// {
|
|
// type: 'text',
|
|
// text: '[deleted]',
|
|
// },
|
|
// ],
|
|
// },
|
|
// ],
|
|
// }
|
|
|
|
export const deleteMessage: APIHandler<'delete-message'> = async ({messageId}, auth) => {
|
|
const pg = createSupabaseDirectClient()
|
|
|
|
// Verify user is the message author and message is not too old
|
|
const message = await pg.oneOrNone(
|
|
`SELECT *
|
|
FROM private_user_messages
|
|
WHERE id = $1
|
|
AND user_id = $2`,
|
|
[messageId, auth.uid]
|
|
)
|
|
|
|
if (!message) {
|
|
throw new APIError(404, 'Message not found')
|
|
}
|
|
|
|
// Soft delete the message
|
|
// await pg.none(
|
|
// `UPDATE private_user_messages
|
|
// SET deleted = TRUE,
|
|
// content = $2::jsonb,
|
|
// ciphertext = NULL,
|
|
// iv = NULL,
|
|
// tag = NULL
|
|
// WHERE id = $1`,
|
|
// [messageId, DELETED_MESSAGE_CONTENT]
|
|
// )
|
|
|
|
// Hard delete the message
|
|
await pg.none(
|
|
`DELETE
|
|
FROM private_user_messages
|
|
WHERE id = $1
|
|
AND user_id = $2`,
|
|
[messageId, auth.uid]
|
|
)
|
|
|
|
void broadcastPrivateMessages(pg, message.channel_id, auth.uid)
|
|
.catch((err) => {
|
|
console.error('broadcastPrivateMessages failed', err)
|
|
})
|
|
|
|
return {success: true}
|
|
}
|
|
|