// Preact
import { h } from 'preact';
import { useState, useEffect } from 'preact/hooks';
import Cookies from 'js-cookie'
import { jwtDecode } from 'jwt-decode'
// Functions
import { getMod, deleteMod } from '../services/mods';
// Components
import Button from '../components/Buttons/button';
// Images
import logo from '../assets/logo.png'
import profile from '../assets/profile.svg'
import download_icon from '../assets/download_alt.svg'
import favorite_icon from '../assets/favorite.svg'
// Styles
import styles from '../styles/content_page.module.css'
function ModPage({name}) {
// UseState
const [mod, setMod] = useState({})
const [loading, setLoading] = useState(true)
const [error, setError] = useState(null)
const [owner, setOwner] = useState(false);
// UseEffect
useEffect(() => {
// Load mod informations
async function loadItems() {
setLoading(true);
setError(false);
try {
const fetched_mod = await getMod(name);
setMod(fetched_mod);
} catch (err) {
setError(err.message);
} finally {
setLoading(false);
}
}
loadItems();
}, []); // <-- Tells useEffect to run once after render
// Handles
const handleDeleteMod = async () => {
await deleteMod(mod.name);
location.replace('/dashboard');
};
// Load user informations
//TODO use a service
//? for some reason, doesn't work inside useEffect
const token = Cookies.get('authToken');
if (token) {
const decoded_token = jwtDecode(token);
if (decoded_token) {
console.debug('Here');
if (decoded_token.username === mod.author) {
setOwner(true);
}
}
}
const base_page = (
<>
mods
Loading...
Couldn't load this mod
{error}
{mod.display_name || mod.name }
{mod.author}
Versions
{ owner ? (