Added Waiting room by name

This commit is contained in:
Christoph Stahl 2023-04-08 11:56:21 +02:00
parent d939e14c40
commit a4e117df66
2 changed files with 38 additions and 10 deletions

View file

@ -30,7 +30,8 @@ const state = ref({
'searching': false, 'searching': false,
'last_msg': "", 'last_msg': "",
'join_msg': null, 'join_msg': null,
'uid': null 'uid': null,
'double_entry': {'artist': null, 'title': null, 'reason': null}
}) })
onMounted(() => { onMounted(() => {
@ -87,14 +88,31 @@ function checked_append_with_name(entry, name) {
} else { } else {
$("#getusername").foundation("close"); $("#getusername").foundation("close");
var in_queue = false; var splitUserName = name.toLowerCase().split(/\b/).filter(e => e.trim().length > 3);
var uid_in_queue = false;
var name_in_queue = false;
for (const entry of state.value.queue) { for (const entry of state.value.queue) {
if(entry.uid == state.value.uid) { if(entry.uid == state.value.uid && !state.value.admin) {
in_queue = true; state.value.double_entry = entry;
state.value.double_entry.reason = "uid";
uid_in_queue = true;
break;
}
var splitEntryUserName = entry.performer.toLowerCase().split(/\b/).filter(e => e.trim().length > 3);
var difference = splitUserName.filter(x => splitEntryUserName.includes(x));
console.log(splitUserName);
console.log(splitEntryUserName);
console.log(difference);
if (difference.length > 0) {
state.value.double_entry = entry;
state.value.double_entry.reason = "name";
name_in_queue = true;
break;
} }
} }
if(in_queue && !state.value.admin) { if(name_in_queue || uid_in_queue) {
state.value.current_entry = entry; state.value.current_entry = entry;
$("#alreadyqueued").foundation("open"); $("#alreadyqueued").foundation("open");
} else { } else {
@ -109,6 +127,7 @@ function raw_append(ident, name, source, uid) {
state.value.current_name = null; state.value.current_name = null;
state.value.current_entry = null; state.value.current_entry = null;
state.value.double_entry = {'artist': null, 'title': null, 'reason': null};
state.socket.emit("append", {"ident": ident, "performer": name, "source": source, "uid": uid }); state.socket.emit("append", {"ident": ident, "performer": name, "source": source, "uid": uid });
$("#queue-tab-title").click(); $("#queue-tab-title").click();
} }
@ -259,8 +278,9 @@ function joinRoom() {
/> />
<AlreadyQueued <AlreadyQueued
@append="raw_append(state.current_entry.ident, state.name ? state.name : state.current_name, state.current_entry.source, state.uid)" @append="raw_append(state.current_entry.ident, state.name ? state.name : state.current_name, state.current_entry.source, state.uid)"
@wait="wait_append(state.current_entry.ident, state.name ? state.name : state.current_name, state.current_entry.source, state.uid)" @wait="(uid) => wait_append(state.current_entry.ident, state.name ? state.name : state.current_name, state.current_entry.source, uid)"
@cancel="close_already_queued" @cancel="close_already_queued"
:double_entry="state.double_entry"
/> />
<div class="reveal" id="msg" data-reveal> <div class="reveal" id="msg" data-reveal>
{{ state.last_msg }} {{ state.last_msg }}

View file

@ -1,14 +1,22 @@
<script setup> <script setup>
const emits = defineEmits(["append", "wait", "cancel"]) const emits = defineEmits(["append", "wait", "cancel"]);
const props = defineProps(["double_entry"]);
</script> </script>
<template> <template>
<div class="reveal" id="alreadyqueued" data-reveal > <div class="reveal" id="alreadyqueued" data-reveal >
<h1>You are already in queue</h1> <h1>You are already in queue</h1>
<p>While you can append the song anyway, you can also add it to the <i>waiting room</i>.</p> <p>You can
<p>It will be appended to the queue as soon, as your next song leaves the queue.</p> <ul>
<li>append the song anyway, or</li>
<li>add it to the <i>waiting room</i>.</li>
</ul>
</p>
<p>Your song in the waiting room will be added to the queue, once
<b>{{double_entry.artist}} - {{double_entry.title}}</b> <i>({{double_entry.performer}})</i>
leaves the queue.</p>
<div class="grid-x"> <div class="grid-x">
<div class="cell medium-6 small-12 btn"> <div class="cell medium-6 small-12 btn">
<button class="button expanded" @click="$emit('wait')">Waiting room</button> <button class="button expanded" @click="$emit('wait', double_entry.reason == 'uid' ? double_entry.uid : null)">Waiting room</button>
</div> </div>
<div class="cell medium-6 small-12 btn"> <div class="cell medium-6 small-12 btn">
<button class="button expanded" @click="$emit('append')">Append anyway</button> <button class="button expanded" @click="$emit('append')">Append anyway</button>