Version 1.0.0 - Finalisation de Account et de GuildHeader

This commit is contained in:
2025-08-06 23:07:34 +02:00
parent 93379b0042
commit 4ab23f7c52
48 changed files with 1949 additions and 175 deletions

View File

@@ -1,14 +1,16 @@
<template>
<SocketEnvironment>
<div class="container">
<HeaderGuild/>
<GuildHeader/>
<Box>
<Button @click="router.push('/servers')">Choisir un serveur</Button>
<Button @click="router.push('/terms')">Terms</Button>
<Button @click="router.push('/privacy')">Privacy</Button>
<Button @click="IORequest('/MOD/USERS/BAN', null, '582966873201704960')">Bannir Raphixscrap_</Button>
<Button @click="globalStore.toogleTheme()">Changer le thème</Button>
<p>{{ guildId }}</p>
</Box>
<Search/>
<Account/>
</div>
</SocketEnvironment>
@@ -23,9 +25,10 @@ import { useGlobalStore } from '@/stores/globalStore';
import { useUserStore } from '@/stores/userStore';
import { IOListener, IORequest } from '@/utils/IORequest';
import { onMounted, ref } from 'vue';
import Account from '@/components/Features/Account.vue';
import Account from '@/components/Layout/Account.vue';
import events from '@/utils/Events.js';
import HeaderGuild from '@/components/Features/HeaderGuild.vue';
import GuildHeader from '@/components/Layout/GuildHeader.vue';
import Search from '@/components/Layout/Search.vue';
const props = defineProps({
guildId: {
@@ -43,7 +46,6 @@ if (!guildId) {
const globalStore = useGlobalStore();
const userStore = useUserStore();
const router = useRouter();
const alreadyLoaded = ref(false);
watch(() => globalStore.isLoading, (value, oldValue) => {
if(!value && oldValue != value) {
@@ -52,7 +54,7 @@ watch(() => globalStore.isLoading, (value, oldValue) => {
})
onMounted(() => {
if(globalStore.lastGuild && !globalStore.isLoading) {
if(!globalStore.isLoading) {
loadInteface();
}
});
@@ -62,16 +64,9 @@ events.on("UPDATE", () => {
});
function loadInteface() {
if(alreadyLoaded.value) return;
console.log("Loading interface")
console.log("Guild ID:", guildId);
checkGuildAvailability();
IORequest("/USERS/LIST", (data) => {
console.log("User list received:", data);
})
alreadyLoaded.value = true;
}
function checkGuildAvailability() {
@@ -85,6 +80,7 @@ function checkGuildAvailability() {
IORequest("/GUILD/JOIN", (response) => {
if(response === true) {
console.log("Successfully joined guild:", guildId);
events.emit("GUILD_JOINED");
} else {
console.error("Failed to join guild:", response);
globalStore.setLastGuild(null);
@@ -102,11 +98,10 @@ function checkGuildAvailability() {
<style scoped>
.container {
padding: 20px;;
padding: 15px;;;
max-width: 400px;
display: flex;
flex-direction: column;
gap: 20px;
width: 100%;
}
</style>

View File

@@ -7,26 +7,27 @@
<Error v-if="callbackError">{{ callbackError }}</Error>
<Error v-if="error">{{ error }}</Error>
<Error v-if="errorServer">{{ errorServer }}</Error>
<Info v-if="message">{{ message }}</Info>
<Success v-if="message">{{ message }}</Success>
</div>
<div class="footer">
<p class="secondtext"><router-link to="/terms">Conditions d'utilisation</router-link> </p>
<p class="secondtext"><router-link to="/privacy">Privacy</router-link></p>
<p class="secondtext"><router-link to="/privacy">Confidentialité</router-link></p>
</div>
<p class="second">Session : {{ sessionId }}</p>
</DefaultSplash>
</template>
<script setup>
import DefaultSplash from '@/components/Layout/DefaultSplash.vue';
import DefaultSplash from '@/components/UI/DefaultSplash.vue';
import Button from '@/components/UI/Button.vue';
import Error from '@/components/UI/Error.vue';
import Info from '@/components/UI/Info.vue';
import { useRoute, useRouter } from 'vue-router';
import { useLoginStore } from '@/stores/loginStore';
import { computed, ref, watch, onMounted } from 'vue';
import { computed, ref, watch } from 'vue';
import { socket } from '@/socket.js';
import { useGlobalStore } from '@/stores/globalStore';
import Success from '@/components/UI/Success.vue';
const loginStore = useLoginStore();

View File

@@ -16,7 +16,7 @@
</template>
<script setup>
import DefaultSplash from '@/components/Layout/DefaultSplash.vue';
import DefaultSplash from '@/components/UI/DefaultSplash.vue';
import Button from '@/components/UI/Button.vue'
import Box from '@/components/UI/Box.vue';
import { socket } from '@/socket';

View File

@@ -1,6 +1,6 @@
<script setup>
import ReturnHomeButton from '@/components/Widget/ReturnHomeButton.vue';
import DefaultSplash from '@/components/Layout/DefaultSplash.vue';
import DefaultSplash from '@/components/UI/DefaultSplash.vue';
import Box from '@/components/UI/Box.vue';
import Button from '@/components/UI/Button.vue';
</script>
@@ -8,7 +8,7 @@ import Button from '@/components/UI/Button.vue';
<template>
<DefaultSplash>
<ReturnHomeButton/>
<h1>Privacy</h1>
<h1>Confidentialité</h1>
<Box no-shadow level="second" padding="closed">
<div class="terms-content">
<p><strong>Date d'entrée en vigueur :</strong> 22 juillet 2025</p>
@@ -116,4 +116,9 @@ import Button from '@/components/UI/Button.vue';
color: var(--text-secondary);
text-align: justify;
}
h1 {
font-size: 1.6em;
margin-bottom: 10px;
color: var(--text);
}
</style>

View File

@@ -1,5 +1,5 @@
<script setup>
import Splash from '@/components/Layout/Splash.vue';
import Splash from '@/components/UI/Splash.vue';
import Box from '@/components/UI/Box.vue';
import SocketEnvironment from "../utils/SocketEnvironment.vue"
import { useRouter } from 'vue-router';
@@ -8,9 +8,9 @@ import { useUserStore } from '@/stores/userStore';
import Button from '@/components/UI/Button.vue';
import ReturnHomeButton from '@/components/Widget/ReturnHomeButton.vue';
import { ref } from 'vue';
import ServerListItem from '@/components/Widget/ServerListItem.vue';
import ServerListItem from '@/components/Widget/Server/ServerListItem.vue';
import Info from '@/components/UI/Info.vue';
import Account from '@/components/Features/Account.vue';
import Account from '@/components/Layout/Account.vue';
const globalStore = useGlobalStore();
const userStore = useUserStore();

View File

@@ -1,6 +1,6 @@
<script setup>
import ReturnHomeButton from '@/components/Widget/ReturnHomeButton.vue';
import DefaultSplash from '@/components/Layout/DefaultSplash.vue';
import DefaultSplash from '@/components/UI/DefaultSplash.vue';
import Box from '@/components/UI/Box.vue';
import Button from '@/components/UI/Button.vue';
</script>
@@ -11,12 +11,16 @@ import Button from '@/components/UI/Button.vue';
<h1>Conditions d'utilisation</h1>
<Box no-shadow level="second" padding="closed">
<div class="terms-content">
<p>En utilisant ce site, vous consentez à l'utilisation de vos données fournis par Discord <Icon icon="fa-solid fa-copyright"/> afin d'assurer le bon fonctionnement de la plateforme. Vous avez la possibilité de demander la suppression de vos données à tout moment en contactant Raphix (raphixscrap). Tout acte intentionnel de dégradation du bot entraînera un bannissement du site.</p>
<p>Ce bot est destiné à un usage privé exclusivement et n'est pas conçu pour être utilisé par le grand public.</p>
<p>Toutes les musiques disponibles sur ce site sont hébergées sur les plateformes suivantes : Youtube, Soundcloud, Spotify.</p>
<p>En utilisant Subsonics, vous bénéficiez du droit d'accès au service et de l'écoute du contenu. Cependant, veuillez noter que Raphix n'est pas tenu de fournir la provenance ni l'autorisation d'exploitation des musiques par les ayants droits. Il vous incombe donc d'obtenir les autorisations nécessaires des ayants droits pour écouter le contenu.</p>
<p>En utilisant Subsonics, vous acceptez de ne pas utiliser le bot pour diffuser des contenus illégaux, violents, haineux, discriminatoires, ou à caractère sexuel.</p>
<p>En utilisant Subsonics, vous acceptez de ne pas utiliser le bot pour diffuser des contenus à caractère politique, religieux, incitant à la haine, publicitaire ou pornographique.</p>
<p>En accédant à cette plateforme et en vous connectant via Discord <Icon icon="fa-solid fa-copyright"/>, vous acceptez automatiquement les présentes conditions dutilisation ainsi que la <strong>politique de confidentialité</strong>.
Les données fournies par Discord sont utilisées uniquement pour assurer le bon fonctionnement du service. Vous pouvez à tout moment demander la suppression de vos données en contactant <strong>Raphix</strong> (<code>raphixscrap</code>) ou bien en allant dans les paramètres de votre compte en utilisant le petit engrenage à coté de votre photo de profil et en cliquant sur le boutton "Supprimer mon compte".</p>
<p>En vous connectant, vous acceptez que votre identifiant Discord (ID et @) soit gardé à jamais pour des raisons de sécurité (bannissement). Cependant toutes les playlists crées, votre historique de musique, les informations seront supprimés.</p>
<p>Tout acte de sabotage, de tentative de perturbation ou de dégradation intentionnelle du bot entraînera un bannissement immédiat et définitif du site.</p> <p><strong>Subsonics est un outil privé</strong>, non destiné à une utilisation publique ou commerciale.</p>
<p>Les musiques disponibles via le service sont diffusées à partir des plateformes suivantes : <strong>YouTube</strong>, <strong>SoundCloud</strong> et <strong>Spotify</strong>.
Subsonics ne stocke aucun fichier audio. Vous bénéficiez uniquement dun droit daccès au service et à lécoute du contenu, mais <strong>Raphix</strong> ne fournit ni la provenance, ni les autorisations légales liées à l'exploitation des œuvres. Il vous revient dobtenir les autorisations nécessaires auprès des ayants droit si nécessaire.</p>
<p>En utilisant Subsonics, vous vous engagez à ne pas diffuser de contenu :</p>
<ul> <li>illégal, violent, haineux, discriminatoire ou à caractère sexuel explicite,</li>
<li>à caractère politique, religieux, publicitaire, incitant à la haine ou pornographique.</li> </ul>
<p>Toute infraction à ces règles pourra entraîner des sanctions immédiates, y compris lexclusion définitive du service.</p>
</div>
</Box>
@@ -40,4 +44,10 @@ import Button from '@/components/UI/Button.vue';
color: var(--text-secondary);
text-align: justify;
}
h1 {
font-size: 1.6em;
margin-bottom: 10px;
color: var(--text);
}
</style>