diff --git a/app/http/endpoints/api/settings.go b/app/http/endpoints/api/settings.go index edeaa76..5dddba6 100644 --- a/app/http/endpoints/api/settings.go +++ b/app/http/endpoints/api/settings.go @@ -9,71 +9,75 @@ import ( ) type Settings struct { - Prefix string `json:"prefix"` - WelcomeMessaage string `json:"welcome_message"` - TicketLimit uint8 `json:"ticket_limit"` - Category uint64 `json:"category,string"` - ArchiveChannel uint64 `json:"archive_channel,string"` - NamingScheme database.NamingScheme `json:"naming_scheme"` - PingEveryone bool `json:"ping_everyone"` - UsersCanClose bool `json:"users_can_close"` + Prefix string `json:"prefix"` + WelcomeMessaage string `json:"welcome_message"` + TicketLimit uint8 `json:"ticket_limit"` + Category uint64 `json:"category,string"` + ArchiveChannel uint64 `json:"archive_channel,string"` + NamingScheme database.NamingScheme `json:"naming_scheme"` + PingEveryone bool `json:"ping_everyone"` + UsersCanClose bool `json:"users_can_close"` + CloseConfirmation bool `json:"close_confirmation"` } func GetSettingsHandler(ctx *gin.Context) { guildId := ctx.Keys["guildid"].(uint64) - var prefix, welcomeMessage string - var ticketLimit uint8 - var category, archiveChannel uint64 - var allowUsersToClose, pingEveryone bool - var namingScheme database.NamingScheme + + var settings Settings group, _ := errgroup.WithContext(context.Background()) // prefix group.Go(func() (err error) { - prefix, err = dbclient.Client.Prefix.Get(guildId) + settings.Prefix, err = dbclient.Client.Prefix.Get(guildId) return }) // welcome message group.Go(func() (err error) { - welcomeMessage, err = dbclient.Client.WelcomeMessages.Get(guildId) + settings.WelcomeMessaage, err = dbclient.Client.WelcomeMessages.Get(guildId) return }) // ticket limit group.Go(func() (err error) { - ticketLimit, err = dbclient.Client.TicketLimit.Get(guildId) + settings.TicketLimit, err = dbclient.Client.TicketLimit.Get(guildId) return }) // category group.Go(func() (err error) { - category, err = dbclient.Client.ChannelCategory.Get(guildId) + settings.Category, err = dbclient.Client.ChannelCategory.Get(guildId) return }) // archive channel group.Go(func() (err error) { - archiveChannel, err = dbclient.Client.ArchiveChannel.Get(guildId) + settings.ArchiveChannel, err = dbclient.Client.ArchiveChannel.Get(guildId) return }) // allow users to close group.Go(func() (err error) { - allowUsersToClose, err = dbclient.Client.UsersCanClose.Get(guildId) + settings.UsersCanClose, err = dbclient.Client.UsersCanClose.Get(guildId) return }) // ping everyone group.Go(func() (err error) { - pingEveryone, err = dbclient.Client.PingEveryone.Get(guildId) + settings.PingEveryone, err = dbclient.Client.PingEveryone.Get(guildId) return }) // naming scheme group.Go(func() (err error) { - namingScheme, err = dbclient.Client.NamingScheme.Get(guildId) + settings.NamingScheme, err = dbclient.Client.NamingScheme.Get(guildId) + return + }) + + // close confirmation + group.Go(func() (err error) { + settings.CloseConfirmation, err = dbclient.Client.CloseConfirmation.Get(guildId) return }) @@ -85,14 +89,5 @@ func GetSettingsHandler(ctx *gin.Context) { return } - ctx.JSON(200, Settings{ - Prefix: prefix, - WelcomeMessaage: welcomeMessage, - TicketLimit: ticketLimit, - Category: category, - ArchiveChannel: archiveChannel, - NamingScheme: namingScheme, - PingEveryone: pingEveryone, - UsersCanClose: allowUsersToClose, - }) + ctx.JSON(200, settings) } diff --git a/app/http/endpoints/api/updatesettings.go b/app/http/endpoints/api/updatesettings.go index 16d4f77..c5d0f12 100644 --- a/app/http/endpoints/api/updatesettings.go +++ b/app/http/endpoints/api/updatesettings.go @@ -32,6 +32,7 @@ func UpdateSettingsHandler(ctx *gin.Context) { validNamingScheme := settings.updateNamingScheme(guildId) settings.updatePingEveryone(guildId) settings.updateUsersCanClose(guildId) + settings.updateCloseConfirmation(guildId) ctx.JSON(200, gin.H{ "prefix": validPrefix, @@ -130,3 +131,7 @@ func (s *Settings) updatePingEveryone(guildId uint64) { func (s *Settings) updateUsersCanClose(guildId uint64) { go dbclient.Client.UsersCanClose.Set(guildId, s.UsersCanClose) } + +func (s *Settings) updateCloseConfirmation(guildId uint64) { + go dbclient.Client.CloseConfirmation.Set(guildId, s.CloseConfirmation) +} diff --git a/go.mod b/go.mod index df914c0..a69e333 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.14 require ( github.com/BurntSushi/toml v0.3.1 github.com/TicketsBot/archiverclient v0.0.0-20200425115930-0ca198cc8306 - github.com/TicketsBot/database v0.0.0-20200514152605-f7a83711930c + github.com/TicketsBot/database v0.0.0-20200516145701-e13f7e204cc6 github.com/apex/log v1.1.2 github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible diff --git a/public/templates/views/settings.tmpl b/public/templates/views/settings.tmpl index a1ab1ba..257c4c2 100644 --- a/public/templates/views/settings.tmpl +++ b/public/templates/views/settings.tmpl @@ -10,18 +10,20 @@
-
+
-
+ +
+
@@ -30,6 +32,26 @@
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
@@ -40,7 +62,7 @@
-
+
@@ -51,23 +73,13 @@
-
+
- -
-
- -
- -
-
-
@@ -200,6 +212,7 @@ document.getElementById("ticket_limit").value = settings.ticket_limit; document.getElementById("ping_everyone").checked = settings.ping_everyone; document.getElementById("users_can_close").checked = settings.users_can_close; + document.getElementById("close_confirmation").checked = settings.close_confirmation; if (settings.naming_scheme === "username") { document.getElementById("naming-by-username").checked = true; @@ -262,6 +275,7 @@ 'ticket_limit': parseInt(document.getElementById('ticket_limit').value), 'ping_everyone': document.getElementById("ping_everyone").checked, 'users_can_close': document.getElementById("users_can_close").checked, + 'close_confirmation': document.getElementById("close_confirmation").checked, 'naming_scheme': document.querySelector('input[name="namingscheme"]:checked').value, 'archive_channel': document.getElementById('archive_channel').options[document.getElementById('archive_channel').selectedIndex].value, 'category': document.getElementById('category').options[document.getElementById('category').selectedIndex].value