From bdb1f7bb6422e9e30ac1491352d9dcacbe1c4bd1 Mon Sep 17 00:00:00 2001 From: physcik Date: Thu, 7 May 2026 17:53:39 +0500 Subject: Ranged weapons description --- front/src/Pages/RangedWeapon.tsx | 110 +++++++++++++++++++++++++++++---------- 1 file changed, 82 insertions(+), 28 deletions(-) (limited to 'front/src') diff --git a/front/src/Pages/RangedWeapon.tsx b/front/src/Pages/RangedWeapon.tsx index 5b66fad..bcfa649 100644 --- a/front/src/Pages/RangedWeapon.tsx +++ b/front/src/Pages/RangedWeapon.tsx @@ -84,25 +84,6 @@ export function RangedWeaponPage() { ); } -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; - } -} const defaultNewRangedWeapon: RangedWeapon = { Id: "", @@ -129,6 +110,7 @@ export function EditRangedWeaponPage() { var [weapon, setWeapon] = useState(null); const [description, setDescription] = useState(null); const [authCookie, ] = useCookies(['X-AUTH-TOKEN']); + const navigate = useNavigate(); const [Name, setName] = useState(); const [WeaponType, setWeaponType] = useState(); @@ -141,7 +123,9 @@ export function EditRangedWeaponPage() { const [RateOfFire, setRateOfFire] = useState(); const [Reliability, setReliability] = useState(); const [Origin, setOrigin] = useState(); - const navigate = useNavigate(); + + const [currentLanguage, setCurrentLanguage] = useState("en"); + const [DescriptionContents, SetDescContents] = useState(""); useState(() => { if (id == 'new') { @@ -149,7 +133,7 @@ export function EditRangedWeaponPage() { return } getWeapon(id).then(data => setWeapon(data)); - getWeaponDescription(id, lang).then(data => setDescription(data)); + getWeaponDescription(id, currentLanguage).then(data => setDescription(data)); }); useEffect(() => { @@ -171,9 +155,18 @@ export function EditRangedWeaponPage() { setRateOfFire(weapon.RateOfFire); setReliability(weapon.Reliability); setOrigin(weapon.Origin); + SetDescContents(description?.Contents ?? ""); } }, [weapon]); + useEffect(() => { + getWeaponDescription(id, currentLanguage).then(val => { + const input = document.getElementById('description') as HTMLInputElement | null; + if (!input) return; + input.value = val?.Contents ?? ''; + }); + }, [currentLanguage]); + function getUpdatedWeapon(): RangedWeaponRequest { var outp: RangedWeaponRequest = { Id: id || "", @@ -362,15 +355,43 @@ export function EditRangedWeaponPage() { document.location.reload(); }}> Delete -

- {description?.Contents} -

+ + +
+ { + SetDescContents(val.target.value); + }} + /> +
+ + ); } -async function getWeapon(id: string | undefined): Promise { - if (id == undefined) return null; +function isIdValid(id: string | undefined): boolean { + return id != undefined && id != "new" && id?.length > 0; +} + +async function getWeapon(id: string | undefined): Promise { + if (!isIdValid(id)) return null; try { const {data, status} = await axios.get( `${RangedWeaponsURL}/${id}`, @@ -390,7 +411,7 @@ async function getWeapon(id: string | undefined): Promise } async function UpdateRangedWeapon(id: string | undefined, model: RangedWeaponRequest, token: string) { - if (id == undefined) return null; + if (!isIdValid(id)) return; const uri = `${RangedWeaponsURL}/${id}`; await axios.put(uri, model, { @@ -433,7 +454,7 @@ async function CreateRangedWeapon(model: RangedWeaponRequest, token: string) { } async function DeleteRangedWeapon(id: string | undefined, token: string) { - if (id == undefined || id == "new" || id.length < 1) { + if (!isIdValid(id)) { throw new Error("Invalid ID"); } @@ -450,3 +471,36 @@ async function DeleteRangedWeapon(id: string | undefined, token: string) { console.log(`Failed to create the model: ${err}`) }); } + +async function getWeaponDescription(id: string | undefined, lanuage: AllowedLanguages): Promise { + if (!isIdValid(id)) 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; + } +} + +async function updateWeaponDescription(id: string | undefined, updated: Description, token: string) { + if (!isIdValid) return; + const uri = `${RangedWeaponsURL}/${id}/description`; + axios.post(uri, { + Language: updated.Language, + Contents: updated.Contents, + }, { + headers: { + Authorization: `Bearer ${token}` + } + }); +} -- cgit v1.3