Pending category

This commit is contained in:
rxdn 2024-12-01 13:22:08 +00:00
parent 7135dbca61
commit 8f5d68ab0d
6 changed files with 46 additions and 27 deletions

View File

@ -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{

View File

@ -232,6 +232,7 @@ func UpdatePanel(c *gin.Context) {
ForceDisabled: existing.ForceDisabled,
Disabled: data.Disabled,
ExitSurveyFormId: data.ExitSurveyFormId,
PendingCategory: data.PendingCategory,
}
// insert mention data

View File

@ -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,

View File

@ -68,6 +68,14 @@
<option value={form.form_id}>{form.title}</option>
{/each}
</Dropdown>
<Dropdown col3 label="Awaiting Response Category" premiumBadge={true} bind:value={data.pending_category} disabled={!isPremium}>
<option value="">Disabled</option>
{#each channels as channel}
{#if channel.type === 4}
<option value={channel.id}>{channel.name}</option>
{/if}
{/each}
</Dropdown>
</div>
</div>
</Collapsible>
@ -138,7 +146,6 @@
</div>
</div>
<div class="row">
<Input col2={true} label="Large Image URL" badge="Optional" bind:value={data.image_url} placeholder="https://example.com/image.png" />
<Input col2={true} label="Small Image URL" badge="Optional" bind:value={data.thumbnail_url} placeholder="https://example.com/image.png" />
@ -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) {

6
go.mod
View File

@ -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

12
go.sum
View File

@ -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=