Pending category
This commit is contained in:
parent
7135dbca61
commit
8f5d68ab0d
@ -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{
|
||||
|
@ -232,6 +232,7 @@ func UpdatePanel(c *gin.Context) {
|
||||
ForceDisabled: existing.ForceDisabled,
|
||||
Disabled: data.Disabled,
|
||||
ExitSurveyFormId: data.ExitSurveyFormId,
|
||||
PendingCategory: data.PendingCategory,
|
||||
}
|
||||
|
||||
// insert mention data
|
||||
|
@ -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,
|
||||
|
@ -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
6
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
|
||||
|
12
go.sum
12
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=
|
||||
|
Loading…
x
Reference in New Issue
Block a user