close confirmation

This commit is contained in:
Dot-Rar 2020-05-16 16:02:01 +01:00
parent 3cab8c2a06
commit 85aeab4ab6
4 changed files with 60 additions and 46 deletions

View File

@ -17,63 +17,67 @@ type Settings struct {
NamingScheme database.NamingScheme `json:"naming_scheme"` NamingScheme database.NamingScheme `json:"naming_scheme"`
PingEveryone bool `json:"ping_everyone"` PingEveryone bool `json:"ping_everyone"`
UsersCanClose bool `json:"users_can_close"` UsersCanClose bool `json:"users_can_close"`
CloseConfirmation bool `json:"close_confirmation"`
} }
func GetSettingsHandler(ctx *gin.Context) { func GetSettingsHandler(ctx *gin.Context) {
guildId := ctx.Keys["guildid"].(uint64) guildId := ctx.Keys["guildid"].(uint64)
var prefix, welcomeMessage string
var ticketLimit uint8 var settings Settings
var category, archiveChannel uint64
var allowUsersToClose, pingEveryone bool
var namingScheme database.NamingScheme
group, _ := errgroup.WithContext(context.Background()) group, _ := errgroup.WithContext(context.Background())
// prefix // prefix
group.Go(func() (err error) { group.Go(func() (err error) {
prefix, err = dbclient.Client.Prefix.Get(guildId) settings.Prefix, err = dbclient.Client.Prefix.Get(guildId)
return return
}) })
// welcome message // welcome message
group.Go(func() (err error) { group.Go(func() (err error) {
welcomeMessage, err = dbclient.Client.WelcomeMessages.Get(guildId) settings.WelcomeMessaage, err = dbclient.Client.WelcomeMessages.Get(guildId)
return return
}) })
// ticket limit // ticket limit
group.Go(func() (err error) { group.Go(func() (err error) {
ticketLimit, err = dbclient.Client.TicketLimit.Get(guildId) settings.TicketLimit, err = dbclient.Client.TicketLimit.Get(guildId)
return return
}) })
// category // category
group.Go(func() (err error) { group.Go(func() (err error) {
category, err = dbclient.Client.ChannelCategory.Get(guildId) settings.Category, err = dbclient.Client.ChannelCategory.Get(guildId)
return return
}) })
// archive channel // archive channel
group.Go(func() (err error) { group.Go(func() (err error) {
archiveChannel, err = dbclient.Client.ArchiveChannel.Get(guildId) settings.ArchiveChannel, err = dbclient.Client.ArchiveChannel.Get(guildId)
return return
}) })
// allow users to close // allow users to close
group.Go(func() (err error) { group.Go(func() (err error) {
allowUsersToClose, err = dbclient.Client.UsersCanClose.Get(guildId) settings.UsersCanClose, err = dbclient.Client.UsersCanClose.Get(guildId)
return return
}) })
// ping everyone // ping everyone
group.Go(func() (err error) { group.Go(func() (err error) {
pingEveryone, err = dbclient.Client.PingEveryone.Get(guildId) settings.PingEveryone, err = dbclient.Client.PingEveryone.Get(guildId)
return return
}) })
// naming scheme // naming scheme
group.Go(func() (err error) { 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 return
}) })
@ -85,14 +89,5 @@ func GetSettingsHandler(ctx *gin.Context) {
return return
} }
ctx.JSON(200, Settings{ ctx.JSON(200, settings)
Prefix: prefix,
WelcomeMessaage: welcomeMessage,
TicketLimit: ticketLimit,
Category: category,
ArchiveChannel: archiveChannel,
NamingScheme: namingScheme,
PingEveryone: pingEveryone,
UsersCanClose: allowUsersToClose,
})
} }

View File

@ -32,6 +32,7 @@ func UpdateSettingsHandler(ctx *gin.Context) {
validNamingScheme := settings.updateNamingScheme(guildId) validNamingScheme := settings.updateNamingScheme(guildId)
settings.updatePingEveryone(guildId) settings.updatePingEveryone(guildId)
settings.updateUsersCanClose(guildId) settings.updateUsersCanClose(guildId)
settings.updateCloseConfirmation(guildId)
ctx.JSON(200, gin.H{ ctx.JSON(200, gin.H{
"prefix": validPrefix, "prefix": validPrefix,
@ -130,3 +131,7 @@ func (s *Settings) updatePingEveryone(guildId uint64) {
func (s *Settings) updateUsersCanClose(guildId uint64) { func (s *Settings) updateUsersCanClose(guildId uint64) {
go dbclient.Client.UsersCanClose.Set(guildId, s.UsersCanClose) go dbclient.Client.UsersCanClose.Set(guildId, s.UsersCanClose)
} }
func (s *Settings) updateCloseConfirmation(guildId uint64) {
go dbclient.Client.CloseConfirmation.Set(guildId, s.CloseConfirmation)
}

2
go.mod
View File

@ -5,7 +5,7 @@ go 1.14
require ( require (
github.com/BurntSushi/toml v0.3.1 github.com/BurntSushi/toml v0.3.1
github.com/TicketsBot/archiverclient v0.0.0-20200425115930-0ca198cc8306 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/apex/log v1.1.2
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect
github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/dgrijalva/jwt-go v3.2.0+incompatible

View File

@ -10,18 +10,20 @@
<div class="card-body"> <div class="card-body">
<form onsubmit="updateSettings(); return false;"> <form onsubmit="updateSettings(); return false;">
<div class="row"> <div class="row">
<div class="col-md-5 pr-1"> <div class="col-md-2 pr-1">
<div class="form-group"> <div class="form-group">
<label>Prefix (Max len. 8)</label> <label>Prefix (Max len. 8)</label>
<input name="prefix" type="text" class="form-control" placeholder="t!" id="prefix"> <input name="prefix" type="text" class="form-control" placeholder="t!" id="prefix">
</div> </div>
</div> </div>
<div class="col-md-5 px-1">
<div class="col-md-1 px-1">
<div class="form-group"> <div class="form-group">
<label>Ticket Limit (1-10)</label> <label>Ticket Limit (1-10)</label>
<input name="ticketlimit" type="text" class="form-control" placeholder="5" id="ticket_limit"> <input name="ticketlimit" type="text" class="form-control" placeholder="5" id="ticket_limit">
</div> </div>
</div> </div>
<div class="col-md-2 px-1"> <div class="col-md-2 px-1">
<div class="form-group"> <div class="form-group">
<label>Ping @everyone on ticket open</label> <label>Ping @everyone on ticket open</label>
@ -30,6 +32,26 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-2 px-1">
<div class="form-group">
<label>Allow users to close tickets</label>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="userscanclose" value="on"
id="users_can_close" style="width:30px;height:30px;">
</div>
</div>
</div>
<div class="col-md-2 px-1">
<div class="form-group">
<label>Ticket close confirmation</label>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="close_confirmation" value="on"
id="close_confirmation" style="width:30px;height:30px;">
</div>
</div>
</div>
</div> </div>
<div class="row"> <div class="row">
@ -40,7 +62,7 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-5 pr-1"> <div class="col-md-4 pr-1">
<label>Archive Channel</label> <label>Archive Channel</label>
<div class="input-group mb-3"> <div class="input-group mb-3">
<div class="input-group-prepend"> <div class="input-group-prepend">
@ -51,23 +73,13 @@
</div> </div>
</div> </div>
<div class="col-md-5 px-1"> <div class="col-md-4 px-1">
<div class="form-group"> <div class="form-group">
<label>Channel Category</label> <label>Channel Category</label>
<select class="form-control" name="category" id="category"> <select class="form-control" name="category" id="category">
</select> </select>
</div> </div>
</div> </div>
<div class="col-md-2 px-1">
<div class="form-group">
<label>Allow users to close tickets</label>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="userscanclose" value="on"
id="users_can_close" style="width:30px;height:30px;">
</div>
</div>
</div>
</div> </div>
<label>Ticket Naming Scheme</label> <label>Ticket Naming Scheme</label>
@ -200,6 +212,7 @@
document.getElementById("ticket_limit").value = settings.ticket_limit; document.getElementById("ticket_limit").value = settings.ticket_limit;
document.getElementById("ping_everyone").checked = settings.ping_everyone; document.getElementById("ping_everyone").checked = settings.ping_everyone;
document.getElementById("users_can_close").checked = settings.users_can_close; document.getElementById("users_can_close").checked = settings.users_can_close;
document.getElementById("close_confirmation").checked = settings.close_confirmation;
if (settings.naming_scheme === "username") { if (settings.naming_scheme === "username") {
document.getElementById("naming-by-username").checked = true; document.getElementById("naming-by-username").checked = true;
@ -262,6 +275,7 @@
'ticket_limit': parseInt(document.getElementById('ticket_limit').value), 'ticket_limit': parseInt(document.getElementById('ticket_limit').value),
'ping_everyone': document.getElementById("ping_everyone").checked, 'ping_everyone': document.getElementById("ping_everyone").checked,
'users_can_close': document.getElementById("users_can_close").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, 'naming_scheme': document.querySelector('input[name="namingscheme"]:checked').value,
'archive_channel': document.getElementById('archive_channel').options[document.getElementById('archive_channel').selectedIndex].value, 'archive_channel': document.getElementById('archive_channel').options[document.getElementById('archive_channel').selectedIndex].value,
'category': document.getElementById('category').options[document.getElementById('category').selectedIndex].value 'category': document.getElementById('category').options[document.getElementById('category').selectedIndex].value