From 01eca061ce3a0a2f3bc2c6e8d37b85c5efb2334a Mon Sep 17 00:00:00 2001 From: rxdn <29165304+rxdn@users.noreply.github.com> Date: Thu, 16 Jun 2022 15:53:09 +0100 Subject: [PATCH] WIP --- app/http/endpoints/api/emojis.go | 25 +++++ app/http/server.go | 1 + botcontext/botcontext.go | 14 +++ frontend/src/components/EmojiItem.svelte | 97 +++++++++++++++++++ .../src/components/form/EmojiInput.svelte | 4 +- .../src/components/form/RoleSelect.svelte | 4 +- .../manage/PanelCreationForm.svelte | 48 ++++++--- frontend/src/views/Panels.svelte | 16 ++- 8 files changed, 193 insertions(+), 16 deletions(-) create mode 100644 app/http/endpoints/api/emojis.go create mode 100644 frontend/src/components/EmojiItem.svelte diff --git a/app/http/endpoints/api/emojis.go b/app/http/endpoints/api/emojis.go new file mode 100644 index 0000000..f6e7e85 --- /dev/null +++ b/app/http/endpoints/api/emojis.go @@ -0,0 +1,25 @@ +package api + +import ( + "github.com/TicketsBot/GoPanel/botcontext" + "github.com/TicketsBot/GoPanel/utils" + "github.com/gin-gonic/gin" +) + +func EmojisHandler(ctx *gin.Context) { + guildId := ctx.Keys["guildid"].(uint64) + + botContext, err := botcontext.ContextForGuild(guildId) + if err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + + emojis, err := botContext.GetGuildEmojis(guildId) + if err != nil { + ctx.JSON(500, utils.ErrorJson(err)) + return + } + + ctx.JSON(200, emojis) +} diff --git a/app/http/server.go b/app/http/server.go index 9dffacc..825846d 100644 --- a/app/http/server.go +++ b/app/http/server.go @@ -75,6 +75,7 @@ func StartServer() { guildAuthApiSupport.GET("/premium", api.PremiumHandler) guildAuthApiSupport.GET("/user/:user", api.UserHandler) guildAuthApiSupport.GET("/roles", api.RolesHandler) + guildAuthApiSupport.GET("/emojis", rl(middleware.RateLimitTypeGuild, 5, time.Second*30), api.EmojisHandler) guildAuthApiSupport.GET("/members/search", rl(middleware.RateLimitTypeGuild, 5, time.Second), rl(middleware.RateLimitTypeGuild, 10, time.Second*30), diff --git a/botcontext/botcontext.go b/botcontext/botcontext.go index 8dd5500..068ad37 100644 --- a/botcontext/botcontext.go +++ b/botcontext/botcontext.go @@ -9,6 +9,7 @@ import ( "github.com/TicketsBot/database" "github.com/rxdn/gdl/objects/channel" "github.com/rxdn/gdl/objects/guild" + "github.com/rxdn/gdl/objects/guild/emoji" "github.com/rxdn/gdl/objects/member" "github.com/rxdn/gdl/objects/user" "github.com/rxdn/gdl/rest" @@ -100,6 +101,19 @@ func (ctx BotContext) GetGuildRoles(guildId uint64) (roles []guild.Role, err err return } +func (ctx BotContext) GetGuildEmojis(guildId uint64) (emojis []emoji.Emoji, err error) { + if emojis := cache.Instance.GetGuildEmojis(guildId); len(emojis) > 0 { + return emojis, nil + } + + emojis, err = rest.ListGuildEmojis(ctx.Token, ctx.RateLimiter, guildId) + if err == nil { + go cache.Instance.StoreEmojis(emojis, guildId) + } + + return +} + func (ctx BotContext) SearchMembers(guildId uint64, query string) (members []member.Member, err error) { data := rest.SearchGuildMembersData{ Query: query, diff --git a/frontend/src/components/EmojiItem.svelte b/frontend/src/components/EmojiItem.svelte new file mode 100644 index 0000000..1a6d6fc --- /dev/null +++ b/frontend/src/components/EmojiItem.svelte @@ -0,0 +1,97 @@ + + + + +
Your panel quota: {panels.length} / {isPremium ? '∞' : '3'}
+