mirror of
https://github.com/stoatchat/javascript-client-sdk.git
synced 2026-07-20 20:16:06 -04:00
Add fetchMessages().
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "revolt.js",
|
||||
"version": "3.0.1-beta.3",
|
||||
"version": "3.0.1-beta.4",
|
||||
"main": "dist/index.js",
|
||||
"repository": "https://gitlab.insrt.uk/revolt/revolt.js",
|
||||
"author": "Paul Makles <insrt.uk>",
|
||||
|
||||
@@ -38,4 +38,10 @@ export namespace Channels {
|
||||
nonce: string,
|
||||
users: string[]
|
||||
}
|
||||
|
||||
export type FetchMessagesRequest = {
|
||||
limit?: number,
|
||||
before?: string,
|
||||
after?: string
|
||||
}
|
||||
}
|
||||
|
||||
+16
-5
@@ -50,7 +50,7 @@ export default abstract class Channel {
|
||||
return channel;
|
||||
}
|
||||
|
||||
async fetchMessage(client: Client, id: string, data?: Channels.Message): Promise<Message> {
|
||||
async fetchMessage(id: string, data?: Channels.Message, fetchingMultiple?: boolean): Promise<Message> {
|
||||
let existing;
|
||||
if (existing = this.messages.get(id)) {
|
||||
if (data) {
|
||||
@@ -61,19 +61,30 @@ export default abstract class Channel {
|
||||
return existing;
|
||||
}
|
||||
|
||||
let message = new Message(client, this, data ?? (await client.Axios.get(`/channels/${this.id}/messages/${id}`)).data);
|
||||
let message = new Message(this.client, this, data ?? (await this.client.Axios.get(`/channels/${this.id}/messages/${id}`)).data);
|
||||
await message.$sync();
|
||||
this.messages.set(id, message);
|
||||
client.messages.set(id, message);
|
||||
client.emit('create/message', message);
|
||||
this.client.messages.set(id, message);
|
||||
this.client.emit('create/message', message, fetchingMultiple);
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
async fetchMessages(params?: Channels.FetchMessagesRequest): Promise<Message[]> {
|
||||
let res = await this.client.Axios.get(`/channels/${this.id}/messages`, { params });
|
||||
let messages = [];
|
||||
|
||||
for (let entry of res.data) {
|
||||
messages.push(await this.fetchMessage(entry.id, entry, true));
|
||||
}
|
||||
|
||||
return messages;
|
||||
}
|
||||
|
||||
async sendMessage(content: string, nonce: string = ulid()) {
|
||||
let res = await this.client.Axios.post(`/channels/${this.id}/messages`, { content, nonce });
|
||||
let fire = !this.client.messages.has(res.data.id);
|
||||
let message = await this.fetchMessage(this.client, res.data.id, res.data);
|
||||
let message = await this.fetchMessage(res.data.id, res.data);
|
||||
fire && this.client.emit('message', message);
|
||||
return message;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ client.once('ready', async () => {
|
||||
console.log(`Logged in as @${client.user?.username}`);
|
||||
|
||||
// let channel = client.channels.values().next().value as Channel;
|
||||
// console.log(await channel.fetchMessages());
|
||||
// let message = await channel.sendMessage("epic!");
|
||||
// await message.edit("pogger!");
|
||||
// await message.delete();
|
||||
|
||||
@@ -96,7 +96,7 @@ export class WebSocketClient {
|
||||
case 'Message': {
|
||||
if (!this.client.messages.has(packet._id)) {
|
||||
let channel = await Channel.fetch(this.client, packet.channel);
|
||||
let message = await channel.fetchMessage(this.client, packet._id, packet);
|
||||
let message = await channel.fetchMessage(packet._id, packet);
|
||||
this.client.emit('message', message);
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user