diff --git a/app/http/endpoints/api/panel/multipanelcreate.go b/app/http/endpoints/api/panel/multipanelcreate.go index 45ad8c4..2d4e028 100644 --- a/app/http/endpoints/api/panel/multipanelcreate.go +++ b/app/http/endpoints/api/panel/multipanelcreate.go @@ -17,22 +17,26 @@ import ( ) type multiPanelCreateData struct { - Title string `json:"title"` - Content string `json:"content"` - Colour int32 `json:"colour"` - ChannelId uint64 `json:"channel_id,string"` - SelectMenu bool `json:"select_menu"` - Panels []int `json:"panels"` + Title string `json:"title"` + Content string `json:"content"` + Colour int32 `json:"colour"` + ChannelId uint64 `json:"channel_id,string"` + SelectMenu bool `json:"select_menu"` + Panels []int `json:"panels"` + ImageUrl *string `json:"image_url,omitempty"` + ThumbnailUrl *string `json:"thumbnail_url,omitempty"` } func (d *multiPanelCreateData) IntoMessageData(isPremium bool) multiPanelMessageData { return multiPanelMessageData{ - ChannelId: d.ChannelId, - Title: d.Title, - Content: d.Content, - Colour: int(d.Colour), - SelectMenu: d.SelectMenu, - IsPremium: isPremium, + ChannelId: d.ChannelId, + Title: d.Title, + Content: d.Content, + Colour: int(d.Colour), + SelectMenu: d.SelectMenu, + IsPremium: isPremium, + ImageUrl: d.ImageUrl, + ThumbnailUrl: d.ThumbnailUrl, } } diff --git a/app/http/endpoints/api/panel/multipanelmessagedata.go b/app/http/endpoints/api/panel/multipanelmessagedata.go index d7e3f74..273f747 100644 --- a/app/http/endpoints/api/panel/multipanelmessagedata.go +++ b/app/http/endpoints/api/panel/multipanelmessagedata.go @@ -14,21 +14,24 @@ import ( type multiPanelMessageData struct { ChannelId uint64 - Title string - Content string - Colour int - SelectMenu bool - IsPremium bool + Title string + Content string + Colour int + SelectMenu bool + IsPremium bool + ImageUrl, ThumbnailUrl *string } func multiPanelIntoMessageData(panel database.MultiPanel, isPremium bool) multiPanelMessageData { return multiPanelMessageData{ - ChannelId: panel.ChannelId, - Title: panel.Title, - Content: panel.Content, - Colour: panel.Colour, - SelectMenu: panel.SelectMenu, - IsPremium: isPremium, + ChannelId: panel.ChannelId, + Title: panel.Title, + Content: panel.Content, + Colour: panel.Colour, + SelectMenu: panel.SelectMenu, + IsPremium: isPremium, + ImageUrl: panel.ImageUrl, + ThumbnailUrl: panel.ThumbnailUrl, } } @@ -38,6 +41,14 @@ func (d *multiPanelMessageData) send(ctx *botcontext.BotContext, panels []databa SetDescription(d.Content). SetColor(d.Colour) + if d.ImageUrl != nil { + e.SetImage(*d.ImageUrl) + } + + if d.ThumbnailUrl != nil { + e.SetThumbnail(*d.ThumbnailUrl) + } + if !d.IsPremium { // TODO: Don't harcode e.SetFooter("Powered by ticketsbot.net", "https://ticketsbot.net/assets/img/logo.png") diff --git a/app/http/endpoints/api/panel/multipanelupdate.go b/app/http/endpoints/api/panel/multipanelupdate.go index bad154b..88a8a12 100644 --- a/app/http/endpoints/api/panel/multipanelupdate.go +++ b/app/http/endpoints/api/panel/multipanelupdate.go @@ -78,7 +78,7 @@ func MultiPanelUpdate(ctx *gin.Context) { // delete old message var unwrapped request.RestError - if err := rest.DeleteMessage(botContext.Token, botContext.RateLimiter, multiPanel.ChannelId, multiPanel.MessageId); err != nil && !(errors.As(err, &unwrapped) && unwrapped.IsClientError()) { + if err := rest.DeleteMessage(botContext.Token, botContext.RateLimiter, multiPanel.ChannelId, multiPanel.MessageId); err != nil && !(errors.As(err, &unwrapped) && unwrapped.IsClientError()) { ctx.JSON(500, utils.ErrorJson(err)) return } @@ -106,13 +106,16 @@ func MultiPanelUpdate(ctx *gin.Context) { // update DB updated := database.MultiPanel{ - Id: multiPanel.Id, - MessageId: messageId, - ChannelId: data.ChannelId, - GuildId: guildId, - Title: data.Title, - Content: data.Content, - Colour: int(data.Colour), + Id: multiPanel.Id, + MessageId: messageId, + ChannelId: data.ChannelId, + GuildId: guildId, + Title: data.Title, + Content: data.Content, + Colour: int(data.Colour), + SelectMenu: data.SelectMenu, + ImageUrl: data.ImageUrl, + ThumbnailUrl: data.ThumbnailUrl, } if err = dbclient.Client.MultiPanels.Update(multiPanel.Id, updated); err != nil { diff --git a/frontend/src/components/manage/MultiPanelCreationForm.svelte b/frontend/src/components/manage/MultiPanelCreationForm.svelte index ea0ec13..5f559a7 100644 --- a/frontend/src/components/manage/MultiPanelCreationForm.svelte +++ b/frontend/src/components/manage/MultiPanelCreationForm.svelte @@ -23,6 +23,25 @@ + +
+
+ +
+
+
+
+
+ +
+
+ +
+
+