diff --git a/src/components/CreateServer/CreateServer.jsx b/src/components/CreateServer/CreateServer.jsx index 5f19719..865621d 100644 --- a/src/components/CreateServer/CreateServer.jsx +++ b/src/components/CreateServer/CreateServer.jsx @@ -67,8 +67,9 @@ const CreateServer = ({ user, onCreateServer, onSubdomainUpdate, onCancel, noSer }; useEffect(() => { - loadSubdomain(); - }, [user]); + loadSubdomain().then(r => r); + }, + [user]); const handleSaveSubdomain = async () => { try { diff --git a/src/components/serverCard/serverCard.jsx b/src/components/serverCards/DefaultServerCard.jsx similarity index 91% rename from src/components/serverCard/serverCard.jsx rename to src/components/serverCards/DefaultServerCard.jsx index 5aa3468..ec66a76 100644 --- a/src/components/serverCard/serverCard.jsx +++ b/src/components/serverCards/DefaultServerCard.jsx @@ -1,5 +1,5 @@ import { Link } from 'react-router-dom'; -import styles from './serverCard.module.scss'; +import styles from './DefaultServerCard.module.scss'; import bukkit from '../../assets/frameworks/bukkit.png'; import fabric from '../../assets/frameworks/fabric.png'; @@ -10,9 +10,7 @@ import vanilla from '../../assets/frameworks/vanilla.png'; import PropTypes from "prop-types"; // eslint-disable-next-line react/prop-types -const ServerCard = ({ status, version, name, framework, onRunClick, onStopClick, onDeleteClick , countPlayers , maxPlayers}) => { - - +const DefaultServerCard = ({ status, version, name, framework, onRunClick, onStopClick, onDeleteClick , countPlayers , maxPlayers}) => { const getFrameworkSource = () => { switch (framework) { case "bukkit": @@ -89,7 +87,7 @@ const ServerCard = ({ status, version, name, framework, onRunClick, onStopClick, }; -ServerCard.propTypes = { +DefaultServerCard.propTypes = { key: PropTypes.string, status: PropTypes.bool, version: PropTypes.string, @@ -102,4 +100,4 @@ ServerCard.propTypes = { subdomain: PropTypes.string, }; -export default ServerCard; +export default DefaultServerCard; diff --git a/src/components/serverCard/serverCard.module.scss b/src/components/serverCards/DefaultServerCard.module.scss similarity index 100% rename from src/components/serverCard/serverCard.module.scss rename to src/components/serverCards/DefaultServerCard.module.scss diff --git a/src/pages/DashboardPage/DashboardPage.jsx b/src/pages/DashboardPage/DashboardPage.jsx index adde911..2526645 100644 --- a/src/pages/DashboardPage/DashboardPage.jsx +++ b/src/pages/DashboardPage/DashboardPage.jsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import ServerCard from '../../components/serverCard/serverCard'; +import DefaultServerCard from '../../components/serverCards/DefaultServerCard.jsx'; import Navbar from '../../components/navbar/Navbar'; import styles from './DashboardPage.module.scss'; import Loading from '../Loading/loading'; @@ -87,7 +87,7 @@ const DashboardPage = ({ user }) => { const handleCopyAddress = () => { const address = `${subdomain}.servii.fr`; - navigator.clipboard.writeText(address) + navigator.clipboard.writeText(address).then(r => r) }; @@ -116,6 +116,7 @@ const DashboardPage = ({ user }) => { @@ -134,19 +135,19 @@ const DashboardPage = ({ user }) => { Créer un nouveau serveur {servers.map((server) => ( - handleRunServer(server.name)} - onStopClick={() => handleStopServer(server.name)} - onDeleteClick={() => handleDeleteServer(server.name)} - subdomain={subdomain} - /> + handleRunServer(server.name)} + onStopClick={() => handleStopServer(server.name)} + onDeleteClick={() => handleDeleteServer(server.name)} + subdomain={subdomain} + /> ))} )} diff --git a/src/service/api.tsx b/src/service/api.tsx index 2be430e..0c76d47 100644 --- a/src/service/api.tsx +++ b/src/service/api.tsx @@ -1,7 +1,8 @@ -import { getAuth } from 'firebase/auth'; -import { Bounce, toast } from "react-toastify"; +import {auth} from './firebase.jsx' +import {Bounce, toast} from "react-toastify"; const apiUrl: string = 'https://www.servii.fr/api'; +//const apiUrl: string = 'http://localhost:3000'; interface ApiResponse { return_code: number; @@ -9,7 +10,6 @@ interface ApiResponse { } interface BaseRequest { - token: string; } interface SubdomainRequest extends BaseRequest { @@ -87,13 +87,14 @@ function toast_status(status: number, message: string) { } class serviiApi { - private static async call(endpoint: serviiRequest, body: T): Promise { + private static async call(endpoint: serviiRequest, body: T, token: string): Promise { const unreachable: string = "Couldn't find an available API"; try { const response = await fetch(`${apiUrl}/${endpoint}`, { method: 'POST', headers: { 'Content-Type': 'application/json', + 'SST': token, }, body: JSON.stringify(body), }); @@ -121,81 +122,77 @@ class serviiApi { constructor() {} - private static token(): string { - const currentUser = getAuth().currentUser; - if (!currentUser) { - throw new Error('No user is currently logged in.'); + private static async token(): Promise { + try { + return await auth.currentUser.getIdToken(true); + } catch (error) { + throw new Error("No token retrieved."); } - return currentUser.uid; } public static async setSubdomain(subdomain: string): Promise { - const payload: SubdomainRequest = { token: this.token(), subdomain: subdomain }; - return this.call(serviiRequest.setSubdomain, payload); + const payload: SubdomainRequest = { subdomain: subdomain }; + return this.call(serviiRequest.setSubdomain, payload, await this.token()); } public static async fetchServers(): Promise { - const payload: BaseRequest = { token: this.token() }; - return this.call(serviiRequest.fetchServers, payload); + const payload: BaseRequest = { wait: "wtf" }; + return this.call(serviiRequest.fetchServers, payload, await this.token()); } public static async fetchLogs(name: string): Promise { - const payload: ServerRequest = { token: this.token(), name: name }; - return this.call(serviiRequest.fetchLogs, payload); + const payload: ServerRequest = { name: name }; + return this.call(serviiRequest.fetchLogs, payload, await this.token()); } public static async fetchHistory(name: string): Promise { - const payload: ServerRequest = { token: this.token(), name: name }; - return this.call(serviiRequest.fetchHistory, payload); + const payload: ServerRequest = { name: name }; + return this.call(serviiRequest.fetchHistory, payload, await this.token()); } public static async fetchPlayersStatus(name: string): Promise { - const payload: ServerRequest = { token: this.token(), name: name,}; - return this.call(serviiRequest.fetchPlayersStatus, payload); + const payload: ServerRequest = { name: name,}; + return this.call(serviiRequest.fetchPlayersStatus, payload, await this.token()); } public static async accountCreate(): Promise { const payload: BaseRequest = { token: this.token() }; - return this.call(serviiRequest.accountCreate, payload); + return this.call(serviiRequest.accountCreate, payload, await this.token()); } public static async serverCreate(name: string, version: string, framework: string): Promise { - const payload: ServerCreationRequest = { token: this.token(), name: name, version: version, framework: framework }; - return this.call(serviiRequest.serverCreate, payload); + const payload: ServerCreationRequest = { name: name, version: version, framework: framework }; + return this.call(serviiRequest.serverCreate, payload, await this.token()); } public static async serverDelete(name: string): Promise { - const payload: ServerRequest = { token: this.token(), name: name }; - return this.call(serviiRequest.serverDelete, payload); + const payload: ServerRequest = { name: name }; + return this.call(serviiRequest.serverDelete, payload, await this.token()); } public static async accountDelete(): Promise { const payload: BaseRequest = { token: this.token() }; - return this.call(serviiRequest.accountDelete, payload); + return this.call(serviiRequest.accountDelete, payload, await this.token()); } public static async serverRun(name: string): Promise { - const payload: ServerRequest = { token: this.token(), name: name }; - return this.call(serviiRequest.serverRun, payload); + const payload: ServerRequest = { name: name }; + return this.call(serviiRequest.serverRun, payload, await this.token()); } public static async serverStop(name: string): Promise { - const payload: ServerRequest = { token: this.token(), name: name }; - return this.call(serviiRequest.serverStop, payload); + const payload: ServerRequest = { name: name }; + return this.call(serviiRequest.serverStop, payload, await this.token()); } public static async updateProperties(name: string, props: [string, string][]): Promise { - const payload: UpdatePropertiesRequest = { - token: this.token(), - name: name, - props: props, - }; - return this.call(serviiRequest.updateProperty, payload); + const payload: UpdatePropertiesRequest = { name: name, props: props }; + return this.call(serviiRequest.updateProperty, payload, await this.token()); } public static async command(command: string, name: string): Promise { - const payload: CommandRequest = { token: this.token(), command: command, name: name }; - return this.call(serviiRequest.command, payload); + const payload: CommandRequest = { command: command, name: name }; + return this.call(serviiRequest.command, payload, await this.token()); } } diff --git a/src/service/firebase.jsx b/src/service/firebase.jsx index 428677e..5f84bdd 100644 --- a/src/service/firebase.jsx +++ b/src/service/firebase.jsx @@ -37,4 +37,4 @@ const getUserSubdomain = async (userId) => { } }; -export { auth, googleProvider, signInWithPopup, getUserSubdomain }; +export { auth, googleProvider, signInWithPopup, getUserSubdomain, app };