New options
This commit is contained in:
parent
35423e03d9
commit
e26400da78
@ -3,6 +3,7 @@ package api
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/TicketsBot/GoPanel/botcontext"
|
||||
dbclient "github.com/TicketsBot/GoPanel/database"
|
||||
"github.com/TicketsBot/GoPanel/rpc/cache"
|
||||
@ -54,6 +55,10 @@ func UpdateSettingsHandler(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func (s *Settings) updateSettings(guildId uint64) error {
|
||||
if err := s.Validate(guildId); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
group, _ := errgroup.WithContext(context.Background())
|
||||
|
||||
group.Go(func() error {
|
||||
@ -67,6 +72,30 @@ func (s *Settings) updateSettings(guildId uint64) error {
|
||||
return group.Wait()
|
||||
}
|
||||
|
||||
func (s *Settings) Validate(guildId uint64) error {
|
||||
group, _ := errgroup.WithContext(context.Background())
|
||||
|
||||
// Validate panel from same guild
|
||||
group.Go(func() error {
|
||||
if s.ContextMenuPanel != nil {
|
||||
panelId := *s.ContextMenuPanel
|
||||
|
||||
panel, err := dbclient.Client.Panel.GetById(panelId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if guildId != panel.GuildId {
|
||||
return fmt.Errorf("guild ID doesn't match")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
return group.Wait()
|
||||
}
|
||||
|
||||
func setOpenCommandPermissions(guildId uint64, disabled bool) error {
|
||||
ctx, err := botcontext.ContextForGuild(guildId)
|
||||
if err != nil {
|
||||
|
@ -14,7 +14,7 @@
|
||||
export let selected;
|
||||
export let isMulti = true;
|
||||
|
||||
let selectedRaw;
|
||||
let selectedRaw = isMulti ? panels.filter((p) => selected.includes(p.panel_id)) : selected;
|
||||
|
||||
function labelMapper(panel) {
|
||||
return panel.title || "";
|
||||
@ -53,6 +53,10 @@
|
||||
selectedRaw = selectedRaw.panel_id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
console.log(selectedRaw)
|
||||
console.log(selected)
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
|
20
frontend/src/components/SimplePanelDropdown.svelte
Normal file
20
frontend/src/components/SimplePanelDropdown.svelte
Normal file
@ -0,0 +1,20 @@
|
||||
<Dropdown {col1} {col2} {col3} {col4} bind:value label={label}>
|
||||
{#each panels as panel}
|
||||
<option value="{panel.panel_id}">
|
||||
{panel.title}
|
||||
</option>
|
||||
{/each}
|
||||
</Dropdown>
|
||||
|
||||
<script>
|
||||
import Dropdown from "./form/Dropdown.svelte"
|
||||
|
||||
export let value;
|
||||
export let label;
|
||||
export let panels = [];
|
||||
|
||||
export let col1 = false;
|
||||
export let col2 = false;
|
||||
export let col3 = false;
|
||||
export let col4 = false;
|
||||
</script>
|
@ -25,12 +25,18 @@
|
||||
<Checkbox label="Hide Claim Button" col4=true bind:value={data.hide_claim_button}/>
|
||||
<Checkbox label="Disable /open Command" col4=true bind:value={data.disable_open_command}/>
|
||||
</div>
|
||||
<div class="from-message-settings">
|
||||
<h3>Start Ticket From Message Settings</h3>
|
||||
<div class="row">
|
||||
<Dropdown col3={true} label="Context Menu Permission Level" bind:value={data.context_menu_permission_level}>
|
||||
<Dropdown col3={true} label="Required Permission Level" bind:value={data.context_menu_permission_level}>
|
||||
<option value="0">Everyone</option>
|
||||
<option value="1">Support Representative</option>
|
||||
<option value="2">Administrator</option>
|
||||
</Dropdown>
|
||||
|
||||
<Checkbox label="Add Message Sender To Ticket" col3={true} bind:value={data.context_menu_add_sender} />
|
||||
<SimplePanelDropdown label="Use Settings From Panel" col3={true} bind:panels bind:value={data.context_menu_panel} />
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-1">
|
||||
@ -57,12 +63,25 @@
|
||||
import Button from "../Button.svelte";
|
||||
import NamingScheme from "../NamingScheme.svelte";
|
||||
import Dropdown from "../form/Dropdown.svelte";
|
||||
import PanelDropdown from "../PanelDropdown.svelte";
|
||||
import SimplePanelDropdown from "../SimplePanelDropdown.svelte";
|
||||
|
||||
export let guildId;
|
||||
|
||||
setDefaultHeaders();
|
||||
|
||||
let channels = [];
|
||||
let panels = [];
|
||||
|
||||
async function loadPanels() {
|
||||
const res = await axios.get(`${API_URL}/api/${guildId}/panels`);
|
||||
if (res.status !== 200) {
|
||||
notifyError(res.data.error);
|
||||
return;
|
||||
}
|
||||
|
||||
panels = res.data;
|
||||
}
|
||||
|
||||
async function loadChannels() {
|
||||
const res = await axios.get(`${API_URL}/api/${guildId}/channels`);
|
||||
@ -156,6 +175,7 @@
|
||||
}
|
||||
|
||||
withLoadingScreen(async () => {
|
||||
await loadPanels();
|
||||
await loadChannels();
|
||||
await loadData();
|
||||
});
|
||||
@ -183,6 +203,10 @@
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.from-message-settings {
|
||||
border-top: 1px solid rgba(0, 0, 0, .25);
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 950px) {
|
||||
.row {
|
||||
flex-direction: column;
|
||||
|
2
go.mod
2
go.mod
@ -6,7 +6,7 @@ require (
|
||||
github.com/BurntSushi/toml v0.3.1
|
||||
github.com/TicketsBot/archiverclient v0.0.0-20210220155137-a562b2f1bbbb
|
||||
github.com/TicketsBot/common v0.0.0-20210903095620-eb02b87cb4ca
|
||||
github.com/TicketsBot/database v0.0.0-20210902205640-76b8973364e8
|
||||
github.com/TicketsBot/database v0.0.0-20210903140813-152a2383314c
|
||||
github.com/TicketsBot/worker v0.0.0-20210903100019-6e6eab3a3196
|
||||
github.com/apex/log v1.1.2
|
||||
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect
|
||||
|
Loading…
x
Reference in New Issue
Block a user