import { useContext, useState } from "react"; import { AllowedLanguages, LanguageContext } from "../Locales/Context"; import { BackendURL } from "../Config"; import axios from "axios"; import { RangedWeapon } from "../Models/RangedWeapon"; import { Description } from "../Models/Description"; import { useParams } from "react-router"; import { GetLocalizedString } from "../Locales/Locales"; import "./Weapons.css" const RangedWeaponsURL = `${BackendURL}/weapons/ranged`; function RangedWeaponPage() { const { id } = useParams(); const lang = useContext(LanguageContext); const [weapon, setWeapon] = useState(null); const [description, setDescription] = useState(null); useState(() => { getWeapon(id).then(data => setWeapon(data)); getWeaponDescription(id, lang).then(data => setDescription(data)); }); if (weapon == null) { return

Not found

; // ; } return (

{weapon?.Name}

{ GetLocalizedString(weapon.WeaponType, lang) }

{ GetLocalizedString("Accuracy", lang) } { weapon.Accuracy }
{ GetLocalizedString("Concealability", lang) } { GetLocalizedString(weapon.Concealability, lang) }
{ GetLocalizedString("Avaliability", lang) } { GetLocalizedString(weapon.Avaliability, lang) }
{ GetLocalizedString("Damage/Ammunition", lang) } { weapon.Damage }({ weapon.Ammunition })
{ GetLocalizedString("Number Of Shots", lang) } { weapon.NumberOfShots }
{ GetLocalizedString("Rate Of Fire", lang) } { weapon.RateOfFire }
{ GetLocalizedString("Reliability", lang) } { GetLocalizedString(weapon.Reliability, lang) }
{ GetLocalizedString("Origin", lang) } { GetLocalizedString(weapon.Origin, lang) }

{description?.Contents}

); } async function getWeapon(id: string | undefined): Promise { if (id == undefined) return null; try { const {data, status} = await axios.get( `${RangedWeaponsURL}/${id}`, { headers: { Accept: "application/json" } } ); if (status != 200) return null; return data; } catch (err) { console.log(`Failed to get ranged weapon: ${err}`); return null; } } async function getWeaponDescription(id: string | undefined, lanuage: AllowedLanguages): Promise { if (id == undefined) return null; try { const {data, status} = await axios.get( `${RangedWeaponsURL}/${id}/description?lang=${lanuage}`, { headers: { Accept: "application/json" } } ); if (status != 200) return null; return data; } catch (err) { console.log(`Failed to get ranged weapon: ${err}`); return null; } } export default RangedWeaponPage;