Update read state on message create
This commit is contained in:
parent
891e548396
commit
357ec51f1c
@ -14,6 +14,7 @@ import {
|
|||||||
Member,
|
Member,
|
||||||
Role,
|
Role,
|
||||||
MessageCreateSchema,
|
MessageCreateSchema,
|
||||||
|
ReadState,
|
||||||
} from "@fosscord/util";
|
} from "@fosscord/util";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
import { handleMessage, postHandleMessage, route } from "@fosscord/api";
|
import { handleMessage, postHandleMessage, route } from "@fosscord/api";
|
||||||
@ -74,7 +75,7 @@ router.get("/", async (req: Request, res: Response) => {
|
|||||||
permissions.hasThrow("VIEW_CHANNEL");
|
permissions.hasThrow("VIEW_CHANNEL");
|
||||||
if (!permissions.has("READ_MESSAGE_HISTORY")) return res.json([]);
|
if (!permissions.has("READ_MESSAGE_HISTORY")) return res.json([]);
|
||||||
|
|
||||||
var query: FindManyOptions<Message> & { where: { id?: any } } = {
|
var query: FindManyOptions<Message> & { where: { id?: any; }; } = {
|
||||||
order: { timestamp: "DESC" },
|
order: { timestamp: "DESC" },
|
||||||
take: limit,
|
take: limit,
|
||||||
where: { channel_id },
|
where: { channel_id },
|
||||||
@ -132,9 +133,8 @@ router.get("/", async (req: Request, res: Response) => {
|
|||||||
const uri = y.proxy_url.startsWith("http")
|
const uri = y.proxy_url.startsWith("http")
|
||||||
? y.proxy_url
|
? y.proxy_url
|
||||||
: `https://example.org${y.proxy_url}`;
|
: `https://example.org${y.proxy_url}`;
|
||||||
y.proxy_url = `${endpoint == null ? "" : endpoint}${
|
y.proxy_url = `${endpoint == null ? "" : endpoint}${new URL(uri).pathname
|
||||||
new URL(uri).pathname
|
}`;
|
||||||
}`;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -267,7 +267,15 @@ router.post(
|
|||||||
return role.id;
|
return role.id;
|
||||||
}) as any;
|
}) as any;
|
||||||
|
|
||||||
|
let read_state = await ReadState.findOne({
|
||||||
|
where: { user_id: req.user_id, channel_id }
|
||||||
|
});
|
||||||
|
if (!read_state)
|
||||||
|
read_state = ReadState.create({ user_id: req.user_id, channel_id });
|
||||||
|
read_state.last_message_id = message.id;
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
|
read_state.save(),
|
||||||
message.save(),
|
message.save(),
|
||||||
emitEvent({
|
emitEvent({
|
||||||
event: "MESSAGE_CREATE",
|
event: "MESSAGE_CREATE",
|
||||||
@ -276,14 +284,14 @@ router.post(
|
|||||||
} as MessageCreateEvent),
|
} as MessageCreateEvent),
|
||||||
message.guild_id
|
message.guild_id
|
||||||
? Member.update(
|
? Member.update(
|
||||||
{ id: req.user_id, guild_id: message.guild_id },
|
{ id: req.user_id, guild_id: message.guild_id },
|
||||||
{ last_message_id: message.id },
|
{ last_message_id: message.id },
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
channel.save(),
|
channel.save(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
postHandleMessage(message).catch((e) => {}); // no await as it shouldnt block the message send function and silently catch error
|
postHandleMessage(message).catch((e) => { }); // no await as it shouldnt block the message send function and silently catch error
|
||||||
|
|
||||||
return res.json(message);
|
return res.json(message);
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user