From 8f5d68ab0de450a60202788c4c660f2ebdb8c47c Mon Sep 17 00:00:00 2001
From: rxdn <29165304+rxdn@users.noreply.github.com>
Date: Sun, 1 Dec 2024 13:22:08 +0000
Subject: [PATCH] Pending category
---
app/http/endpoints/api/panel/panelcreate.go | 2 ++
app/http/endpoints/api/panel/panelupdate.go | 1 +
app/http/endpoints/api/panel/validation.go | 21 +++++++++++++
.../manage/PanelCreationForm.svelte | 31 ++++++++-----------
go.mod | 6 ++--
go.sum | 12 +++----
6 files changed, 46 insertions(+), 27 deletions(-)
diff --git a/app/http/endpoints/api/panel/panelcreate.go b/app/http/endpoints/api/panel/panelcreate.go
index 2068074..cfb1654 100644
--- a/app/http/endpoints/api/panel/panelcreate.go
+++ b/app/http/endpoints/api/panel/panelcreate.go
@@ -45,6 +45,7 @@ type panelBody struct {
Disabled bool `json:"disabled"`
ExitSurveyFormId *int `json:"exit_survey_form_id"`
AccessControlList []database.PanelAccessControlRule `json:"access_control_list"`
+ PendingCategory *uint64 `json:"pending_category,string"`
}
func (p *panelBody) IntoPanelMessageData(customId string, isPremium bool) panelMessageData {
@@ -230,6 +231,7 @@ func CreatePanel(c *gin.Context) {
ForceDisabled: false,
Disabled: data.Disabled,
ExitSurveyFormId: data.ExitSurveyFormId,
+ PendingCategory: data.PendingCategory,
}
createOptions := panelCreateOptions{
diff --git a/app/http/endpoints/api/panel/panelupdate.go b/app/http/endpoints/api/panel/panelupdate.go
index 9fa5821..a605fc3 100644
--- a/app/http/endpoints/api/panel/panelupdate.go
+++ b/app/http/endpoints/api/panel/panelupdate.go
@@ -232,6 +232,7 @@ func UpdatePanel(c *gin.Context) {
ForceDisabled: existing.ForceDisabled,
Disabled: data.Disabled,
ExitSurveyFormId: data.ExitSurveyFormId,
+ PendingCategory: data.PendingCategory,
}
// insert mention data
diff --git a/app/http/endpoints/api/panel/validation.go b/app/http/endpoints/api/panel/validation.go
index 2053dac..1a1a3c2 100644
--- a/app/http/endpoints/api/panel/validation.go
+++ b/app/http/endpoints/api/panel/validation.go
@@ -73,6 +73,7 @@ func panelValidators() []validation.Validator[PanelValidationContext] {
validateNamingScheme,
validateWelcomeMessage,
validateAccessControlList,
+ validatePendingCategory,
}
}
@@ -237,6 +238,26 @@ func validateExitSurveyFormId(ctx PanelValidationContext) validation.ValidationF
return validatedNullableFormId(ctx.GuildId, ctx.Data.ExitSurveyFormId)
}
+func validatePendingCategory(ctx PanelValidationContext) validation.ValidationFunc {
+ return func() error {
+ if ctx.Data.PendingCategory == nil {
+ return nil
+ }
+
+ if !ctx.IsPremium {
+ return validation.NewInvalidInputError("Awaiting response category is a premium feature")
+ }
+
+ for _, ch := range ctx.Channels {
+ if ch.Id == *ctx.Data.PendingCategory && ch.Type == channel.ChannelTypeGuildCategory {
+ return nil
+ }
+ }
+
+ return validation.NewInvalidInputError("Invalid awaiting response category")
+ }
+}
+
func validateTeams(ctx PanelValidationContext) validation.ValidationFunc {
return func() error {
// Query does not work nicely if there are no teams created in the guild, but if the user submits no teams,
diff --git a/frontend/src/components/manage/PanelCreationForm.svelte b/frontend/src/components/manage/PanelCreationForm.svelte
index eb0a48b..58a3f4e 100644
--- a/frontend/src/components/manage/PanelCreationForm.svelte
+++ b/frontend/src/components/manage/PanelCreationForm.svelte
@@ -68,6 +68,14 @@
{/each}
+
+
+ {#each channels as channel}
+ {#if channel.type === 4}
+
+ {/if}
+ {/each}
+
@@ -138,7 +146,6 @@
-
@@ -175,7 +182,7 @@
import Colour from "../form/Colour.svelte";
import ChannelDropdown from "../ChannelDropdown.svelte";
- import {createEventDispatcher, onMount} from 'svelte';
+ import {onMount} from 'svelte';
import {colourToInt, intToColour} from "../../js/util";
import CategoryDropdown from "../CategoryDropdown.svelte";
import EmojiInput from "../form/EmojiInput.svelte";
@@ -190,8 +197,6 @@
export let guildId;
export let seedDefault = true;
- const dispatch = createEventDispatcher();
-
let tempColour = '#2ECC71';
export let data = {};
@@ -203,9 +208,6 @@
export let forms = [];
export let isPremium = false;
- let advancedSettings = false;
- let overflowShow = false;
-
let teamsWithDefault = [];
let mentionItems = [];
@@ -250,17 +252,6 @@
}
}
- function toggleAdvancedSettings() {
- advancedSettings = !advancedSettings;
- if (advancedSettings) {
- setTimeout(() => {
- overflowShow = true;
- }, 300);
- } else {
- overflowShow = false;
- }
- }
-
function handleEmojiTypeChange(e) {
let isCustomEmoji = e.detail;
if (isCustomEmoji) {
@@ -307,6 +298,10 @@
.forEach((mention) => selectedMentions.push(mention));
}
+ if (!data.pending_category) {
+ data.pending_category = "";
+ }
+
data.emote = data.emote;
if (!data.colour) {
diff --git a/go.mod b/go.mod
index 6548b55..e45e1c0 100644
--- a/go.mod
+++ b/go.mod
@@ -7,10 +7,10 @@ toolchain go1.22.4
require (
github.com/BurntSushi/toml v1.2.1
github.com/TicketsBot/archiverclient v0.0.0-20241012221057-16a920bfb454
- github.com/TicketsBot/common v0.0.0-20241104184641-e39c64bdcf3e
- github.com/TicketsBot/database v0.0.0-20241116202646-1741ded5d50f
+ github.com/TicketsBot/common v0.0.0-20241117150316-ff54c97b45c1
+ github.com/TicketsBot/database v0.0.0-20241116234225-cdf216a9ffca
github.com/TicketsBot/logarchiver v0.0.0-20241012220745-5f3ba17a5138
- github.com/TicketsBot/worker v0.0.0-20241110222533-ba74e19de868
+ github.com/TicketsBot/worker v0.0.0-20241117155137-89dec1fd9a11
github.com/apex/log v1.1.2
github.com/caarlos0/env/v11 v11.2.2
github.com/getsentry/sentry-go v0.24.0
diff --git a/go.sum b/go.sum
index d3b1735..d125ef5 100644
--- a/go.sum
+++ b/go.sum
@@ -45,16 +45,16 @@ github.com/TicketsBot/analytics-client v0.0.0-20240724103359-30f5dac821e6 h1:Jig
github.com/TicketsBot/analytics-client v0.0.0-20240724103359-30f5dac821e6/go.mod h1:9Z9qP/yovb6DUe1KlzgN2wicc+8ey6MMoxfynFbMyRg=
github.com/TicketsBot/archiverclient v0.0.0-20241012221057-16a920bfb454 h1:u77mqvmLdljjircnvgikSWNOSyc2uSLLybPOQP8moK8=
github.com/TicketsBot/archiverclient v0.0.0-20241012221057-16a920bfb454/go.mod h1:ZJ+b5JzRBQqywD7/oTsqJSB34VwzQ8eExHslaGRLOVQ=
-github.com/TicketsBot/common v0.0.0-20241104184641-e39c64bdcf3e h1:cYfBjPX/FhD/MCViBI2Wz2YlC2esLiTbDE65Qku2WVg=
-github.com/TicketsBot/common v0.0.0-20241104184641-e39c64bdcf3e/go.mod h1:N7zwetwx8B3RK/ZajWwMroJSyv2ZJ+bIOZWv/z8DhaM=
-github.com/TicketsBot/database v0.0.0-20241116202646-1741ded5d50f h1:CdYauI7Vkg0O9a/j8eZTFue2payodBblXkS6jqjrss4=
-github.com/TicketsBot/database v0.0.0-20241116202646-1741ded5d50f/go.mod h1:mpVkDO8tnnWn1pMGEphVg6YSeGIhDwLAN43lBTkpGmU=
+github.com/TicketsBot/common v0.0.0-20241117150316-ff54c97b45c1 h1:FqC1KGOsmB+ikvbmDkyNQU6bGUWyfYq8Ip9r4KxTveY=
+github.com/TicketsBot/common v0.0.0-20241117150316-ff54c97b45c1/go.mod h1:N7zwetwx8B3RK/ZajWwMroJSyv2ZJ+bIOZWv/z8DhaM=
+github.com/TicketsBot/database v0.0.0-20241116234225-cdf216a9ffca h1:dWFpbKflrHgkoNOI6e44GMMCwt8YWD614SmsCzwUAZY=
+github.com/TicketsBot/database v0.0.0-20241116234225-cdf216a9ffca/go.mod h1:mpVkDO8tnnWn1pMGEphVg6YSeGIhDwLAN43lBTkpGmU=
github.com/TicketsBot/logarchiver v0.0.0-20241012220745-5f3ba17a5138 h1:wsR5ESeaQKo122qsmzPcblxlJdE0GIQbp2B/7/uX+TA=
github.com/TicketsBot/logarchiver v0.0.0-20241012220745-5f3ba17a5138/go.mod h1:4Rq0CgSCgXVW6uEyEUvWzxOmFp+L57rFfCjPDFPHFiw=
github.com/TicketsBot/ttlcache v1.6.1-0.20200405150101-acc18e37b261 h1:NHD5GB6cjlkpZFjC76Yli2S63/J2nhr8MuE6KlYJpQM=
github.com/TicketsBot/ttlcache v1.6.1-0.20200405150101-acc18e37b261/go.mod h1:2zPxDAN2TAPpxUPjxszjs3QFKreKrQh5al/R3cMXmYk=
-github.com/TicketsBot/worker v0.0.0-20241110222533-ba74e19de868 h1:EzmxFrwx17GBCdiosZ+lSxBoH3djVZPKgQ/eMDGp7JI=
-github.com/TicketsBot/worker v0.0.0-20241110222533-ba74e19de868/go.mod h1:TlW/vJQ7OFooFxocENC5qFSZre+znlYsIVQ0pG8u+0U=
+github.com/TicketsBot/worker v0.0.0-20241117155137-89dec1fd9a11 h1:dhlsB50GXL0GaUvzGBYtcmLp7bVAjzFXj1EYXVPBjis=
+github.com/TicketsBot/worker v0.0.0-20241117155137-89dec1fd9a11/go.mod h1:UjYX/xEJ7WsqmdxOL7B+jk4LC5Ejv8bLVdkdolIVjxA=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=