Skip to content

Commit

Permalink
Add support for async render functions for Pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Rodentman87 committed Apr 11, 2022
1 parent 81c5d84 commit 6729876
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/Page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export class PageInteractionReplyMessage {

export interface Page<P = {}, S = {}> {
constructor(props: P): Page<P, S>;
render(): RenderedPage;
render(): RenderedPage | Promise<RenderedPage>;
}
export abstract class Page<P = {}, S = {}> {
state: Readonly<S>;
Expand Down
12 changes: 6 additions & 6 deletions src/SlashasaurusClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -818,7 +818,7 @@ export class SlashasaurusClient extends Client<true> {
return;
}
this.activePages.set(interaction.message.id, page);
const renderedPage = page.render();
const renderedPage = await page.render();
if (!compareMessages(interaction.message, renderedPage)) {
await interaction.update({
...renderedPage,
Expand Down Expand Up @@ -846,7 +846,7 @@ export class SlashasaurusClient extends Client<true> {
return;
}
this.activePages.set(interaction.message.id, page);
const renderedPage = page.render();
const renderedPage = await page.render();
if (!compareMessages(interaction.message, renderedPage)) {
await interaction.update({
...renderedPage,
Expand All @@ -871,7 +871,7 @@ export class SlashasaurusClient extends Client<true> {
interaction: MessageComponentInteraction | BaseCommandInteraction,
ephemeral: boolean
) {
const messageOptions = page.render();
const messageOptions = await page.render();
if (ephemeral) {
// We need to save the interaction instead since it doesn't return a message we can edit
const message = await interaction.reply({
Expand Down Expand Up @@ -924,7 +924,7 @@ export class SlashasaurusClient extends Client<true> {
}

async sendPageToChannel(page: Page, channel: TextBasedChannel) {
const messageOptions = page.render();
const messageOptions = await page.render();
const message = await channel.send({
...messageOptions,
components: messageOptions.components
Expand All @@ -947,7 +947,7 @@ export class SlashasaurusClient extends Client<true> {
if (!page.message)
throw new Error('You cannot update a page before it has been sent');
page.state = newState;
const messageOptions = page.render();
const messageOptions = await page.render();
const { message } = page;
await message.edit({
...messageOptions,
Expand Down Expand Up @@ -1005,7 +1005,7 @@ export class SlashasaurusClient extends Client<true> {
const newPage: Page = new pageConstructor(props);
newPage.state = state;
newPage.message = message;
const rendered = newPage.render();
const rendered = await newPage.render();
if (rendered.components)
pageComponentRowsToComponents(rendered.components, newPage);
this.activePages.set(message.id, newPage);
Expand Down

0 comments on commit 6729876

Please sign in to comment.