generateur_v3/frontend/src/routes/dashboard/+page.svelte

79 lines
3.0 KiB
Svelte
Raw Normal View History

2023-02-22 12:43:39 +01:00
<script lang='ts'>
import {getContext} from "svelte";
import {dashBoardRequest} from "../../requests/auth.request";
import Section from "../../components/auth/Section.svelte";
import InfoForm from "../../components/auth/InfoForm.svelte";
import RoomList from "../../components/auth/RoomList.svelte";
import type {User} from "../../types/auth.type";
import type {Writable} from "svelte/store";
import {writable} from "svelte/store";
import PasswordForm from "../../components/auth/PasswordForm.svelte";
import {updatePassword, updateUserRequest} from "../../requests/auth.request.js";
import UserConfirm from "../../components/auth/UserConfirm.svelte";
import MdInfo from 'svelte-icons/md/MdInfo.svelte'
import FaUsers from 'svelte-icons/fa/FaUsers.svelte'
import FaUserLock from 'svelte-icons/fa/FaUserLock.svelte'
import {goto} from "$app/navigation";
let u = '';
let p = '';
const user: Writable<User | null> = writable(null)
const {logout, username, isAuth,initialLoading} = getContext('auth')
$: !$initialLoading && $isAuth && dashBoardRequest().then((res) => {
console.log(res)
user.set(res)
})
const {show, close} = getContext("modal")
const {success, error} = getContext("notif")
let passwordForm = null
let infoForm = null
$: !$initialLoading && !$isAuth && goto('/')
</script>
<div>
{#if $user != null}
<h1>Mon compte</h1>
<Section title="Mes informations" icon={MdInfo} onValidate={()=>{
if(infoForm == null) return
updateUserRequest($infoForm.summary).then(res=>{
user.update((o)=>{return {...o,...res}})
success("Mis a jour", "Informations mises à jour avec succès")
}).catch(()=>{
error("Erreur","Une erreur est survenue")
})
}} canValid={infoForm != null && $infoForm.valid}>
<InfoForm user={$user} bind:myForm={infoForm}/>
</Section>
<Section title="Salles" icon={FaUsers}>
<RoomList rooms={$user.rooms}/>
</Section>
<Section title="Sécurité" icon={FaUserLock} validate="Modifier mon mot de passe" onValidate={()=>{
show(UserConfirm, {onValidate: ( p )=>{
updatePassword({...$passwordForm.summary, old_password: p}).then((r)=>{
localStorage.setItem("token", r.access_token)
localStorage.setItem("refresh", r.refresh_token)
close()
success("Sécurité", "Mot de passe mises à jour avec succès")
}).catch((e)=>{
console.log('Erreur', e)
error("Sécurité","Une erreur est survenue")
})
}, validate: "Changer mon mot de passe", cancel: close, cancelMsg: "Garder le mot de passe actuel"})
}} canValid={passwordForm != null && $passwordForm.valid}>
<PasswordForm bind:myForm={passwordForm}/>
</Section>
{/if}
</div>
<style lang='scss'>
h1 {
font-size: 3em;
margin-bottom: 20px;
}
</style>