// Preact import { h } from 'preact'; import { useState, useEffect } from 'preact/hooks'; // Functions import { fetchMod } from '../services/api'; // Components // 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) // UseEffect useEffect(() => { async function loadItems() { setLoading(true); setError(false); try { const fetched_mod = await fetchMod(name); setMod(fetched_mod); } catch (err) { setError(err.message); } finally { setLoading(false); } } loadItems(); }, []); // <-- Tells useEffect to run once after render if (loading) { // TODO replace by loading screen return
Loading mod
} if (error) { // TODO replace by popup return
Couldn't load mod: {error}
} return ( <>

{mod.display_name || mod.name }

{mod.mod_infos.full_description || "No description"}

{mod.author}

{mod.mod_infos.downloads_count || 0}
{mod.mod_infos.favorites_count || 0}

Versions

v3.0
v2.0
v1.0
) } export default ModPage