Don't serve null

This commit is contained in:
rxdn 2021-02-17 12:01:36 +00:00
parent 57df266bc5
commit d6951e89ad
7 changed files with 104 additions and 26 deletions

View File

@ -1,23 +1,18 @@
package api
import (
"encoding/json"
"github.com/TicketsBot/GoPanel/rpc/cache"
"github.com/gin-gonic/gin"
"github.com/rxdn/gdl/objects/channel"
)
func ChannelsHandler(ctx *gin.Context) {
guildId := ctx.Keys["guildid"].(uint64)
channels := cache.Instance.GetGuildChannels(guildId)
encoded, err := json.Marshal(channels)
if err != nil {
ctx.JSON(500, gin.H{
"success": true,
"error": err.Error(),
})
return
if channels == nil {
channels = make([]channel.Channel, 0) // don't serve null
}
ctx.Data(200, gin.MIMEJSON, encoded)
ctx.JSON(200, channels)
}

View File

@ -73,6 +73,7 @@ func StartServer() {
authenticateGuildSupport.GET("/manage/:id/blacklist", manage.BlacklistHandler)
authenticateGuildAdmin.GET("/manage/:id/panels", manage.PanelHandler)
authenticateGuildSupport.GET("/manage/:id/tags", manage.TagsHandler)
authenticateGuildSupport.GET("/manage/:id/teams", serveTemplate("manage/teams"))
authenticateGuildSupport.GET("/manage/:id/tickets", manage.TicketListHandler)
authenticateGuildSupport.GET("/manage/:id/tickets/view/:ticketId", manage.TicketViewHandler)
@ -151,6 +152,20 @@ func StartServer() {
}
}
func serveTemplate(templateName string) func(*gin.Context) {
return func(ctx *gin.Context) {
store := sessions.Default(ctx)
guildId := ctx.Keys["guildid"].(uint64)
ctx.HTML(200, templateName, gin.H{
"name": store.Get("name").(string),
"guildId": guildId,
"avatar": store.Get("avatar").(string),
"baseUrl": config.Conf.Server.BaseUrl,
})
}
}
func createRenderer() multitemplate.Renderer {
r := multitemplate.NewRenderer()
@ -165,6 +180,7 @@ func createRenderer() multitemplate.Renderer {
r = addManageTemplate(r, "ticketview")
r = addManageTemplate(r, "panels", "./public/templates/includes/substitutionmodal.tmpl", "./public/templates/includes/paneleditmodal.tmpl", "./public/templates/includes/multipaneleditmodal.tmpl")
r = addManageTemplate(r, "tags")
r = addManageTemplate(r, "teams")
r = addErrorTemplate(r)

2
go.mod
View File

@ -6,7 +6,7 @@ require (
github.com/BurntSushi/toml v0.3.1
github.com/TicketsBot/archiverclient v0.0.0-20200704164621-09d42dd941e0
github.com/TicketsBot/common v0.0.0-20210118172556-0b20b84f7df4
github.com/TicketsBot/database v0.0.0-20210106171550-992a749cd82a
github.com/TicketsBot/database v0.0.0-20210215164209-6ec5ebcbc399
github.com/TicketsBot/worker v0.0.0-20210207182653-fabef254ea30
github.com/apex/log v1.1.2
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect

View File

@ -327,3 +327,60 @@ html > ::-webkit-scrollbar {
margin-top: 20px;
color: white;
}
.tcontent-container {
display: flex;
justify-content: center;
height: 100%;
width: 100%;
}
.team-card-container {
display: flex;
margin-top: 4%;
height: 50%;
width: 80%;
}
.tcard {
display: flex;
flex-direction: column;
justify-content: space-evenly;
height: 100%;
width: 100%;
background-color: #272727 !important;
border-radius: 5px;
box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);
}
.tcard-title {
display: flex;
align-items: center;
width: 100%;
border-bottom: 1px solid rgba(0,0,0,.125);
}
.tcard-title > span {
color: white;
font-size: 32px;
font-weight: bold;
margin: 2% 0 2% 2%;
}
.tcard-body {
display: flex;
flex-direction: column;
margin: 2%;
flex: 1;
width: 100%;
color: white;
}
.flex-center {
display: flex;
width: 100%;
height: 100%;
flex-direction: column;
align-items: center;
}

View File

@ -7,15 +7,18 @@
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/logs"><i class="fas fa-copy icon"></i>Transcripts</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/panels"><i class="fas fa-mouse-pointer icon"></i>Reaction Panels</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/teams"><i class="fas fa-users icon"></i>Teams</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/blacklist"><i class="fas fa-ban icon"></i>Blacklist</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/tickets"><i class="fas fa-ticket-alt icon"></i>Ticket List</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/panels"><i class="fas fa-mouse-pointer icon"></i>Reaction Panels</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manage/{{.guildId}}/tags"><i class="fas fa-tags icon"></i>Tags</a>
</li>

View File

@ -67,16 +67,6 @@
</div>
</div>
</div>
<div class="col-md-2 px-1">
<div class="form-group">
<label>Enable modmail</label>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="on"
id="enable_modmail" style="width:30px;height:30px;">
</div>
</div>
</div>
</div>
<div class="row">
@ -340,7 +330,6 @@
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;
document.getElementById("enable_modmail").checked = settings.modmail_enabled;
if (settings.naming_scheme === "username") {
document.getElementById("naming-by-username").checked = true;
@ -459,8 +448,7 @@
'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,
'modmail_enabled': document.getElementById('enable_modmail').checked
'category': document.getElementById('category').options[document.getElementById('category').selectedIndex].value
};
const res = await axios.post('/api/{{.guildId}}/settings', data);

View File

@ -0,0 +1,19 @@
{{define "content"}}
<div class="tcontent-container">
<div class="team-card-container">
<div class="tcard">
<div class="tcard-title">
<span>Support Teams</span>
</div>
<div class="tcard-body">
<div class="flex-center">
<label for="team-selection">Select a team</label>
<select name="team-selection" style="width: 100%">
<option value="default">Default</option>
</select>
</div>
</div>
</div>
</div>
</div>
{{end}}