From 4359b315e39377621829cafd82b3678f4227f1eb Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Sat, 16 Mar 2024 09:43:23 -0500 Subject: [PATCH 1/9] show player search errors --- src/pages/player/index.js | 8 +++++++- src/pages/players/index.js | 28 +++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/pages/player/index.js b/src/pages/player/index.js index defb08bf9..0b47189d0 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -12,7 +12,8 @@ import { mdiBagPersonal, mdiArmFlex, mdiStarBox, - mdiTrophyAward + mdiTrophyAward, + mdiAccountSearch, } from '@mdi/js'; import { TreeView, TreeItem } from '@mui/x-tree-view'; @@ -652,6 +653,11 @@ function Player() { key="seo-wrapper" />,
+
+

+ {t('Search different player')} +

+

diff --git a/src/pages/players/index.js b/src/pages/players/index.js index 9867f2f8a..263b288f0 100644 --- a/src/pages/players/index.js +++ b/src/pages/players/index.js @@ -18,6 +18,7 @@ function Players() { ); const [nameFilter, setNameFilter] = useState(defaultQuery || ''); const [nameResults, setNameResults] = useState([]); + const [nameResultsError, setNameResultsError] = useState(false); const [isButtonDisabled, setButtonDisabled] = useState(true); const [searched, setSearched] = useState(false); @@ -27,18 +28,30 @@ function Players() { return; } try { + setNameResultsError(false); setButtonDisabled(true); const response = await fetch('https://player.tarkov.dev/name/'+nameFilter); if (response.status !== 200) { - return; + let errorMessage = await response.text(); + try { + const json = JSON.parse(errorMessage); + errorMessage = json.errmsg; + } catch {} + throw new Error(errorMessage); } - setButtonDisabled(false); setSearched(true); setNameResults(await response.json()); } catch (error) { - setNameResults(['Error searching player profile: ' + error]); + let message = error.message; + if (message.includes('Malformed')) { + message = 'Error searching player profile; try removing one character from the end until the search works.' + } + setSearched(false); + setNameResults([]); + setNameResultsError(message); } - }, [nameFilter, setNameResults]); + setButtonDisabled(false); + }, [nameFilter, setNameResults, setNameResultsError]); const searchResults = useMemo(() => { if (!searched) { @@ -105,7 +118,12 @@ function Players() { />

- {searchResults} + {!!nameResultsError && ( +
+

{`${t('Search error')}: ${nameResultsError}`}

+
+ )} + {!nameResultsError && searchResults}
, ]; } From 3ba2636a8e9567da59a297e311ba5f1fc9a45fcd Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Mon, 18 Mar 2024 09:51:16 -0500 Subject: [PATCH 2/9] enhancements to banned players display --- src/pages/player/index.css | 4 ++++ src/pages/player/index.js | 15 +++++++++++++-- src/pages/players/index.js | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/pages/player/index.css b/src/pages/player/index.css index bb7dd2686..f244a3f54 100644 --- a/src/pages/player/index.css +++ b/src/pages/player/index.css @@ -50,3 +50,7 @@ ul.favorite-item-list li { .legendary { color: #ffe084; } + +.banned { + color: #cd1e2f; +} diff --git a/src/pages/player/index.js b/src/pages/player/index.js index 0b47189d0..27e34087d 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -166,6 +166,17 @@ function Player() { }); }, [playerData, playerLevel, t]); + const bannedMessage = useMemo(() => { + if (!playerData?.info?.bannedState) { + return false; + } + if (playerData.info.bannedUntil < 0) { + return t('Banned Permanently'); + } + return t('Banned until {{banLiftDate}}', {banLiftDate: new Date(playerData.info.bannedUntil * 1000).toLocaleString()}); + }, [playerData, t]); + console.log(bannedMessage); + const achievementColumns = useMemo( () => [ { @@ -671,8 +682,8 @@ function Player() { {playerData.info.registrationDate !== 0 && (

{`${t('Started current wipe')}: ${new Date(playerData.info.registrationDate * 1000).toLocaleString()}`}

)} - {playerData.info.bannedState && ( -

{t('Banned')}

+ {!!bannedMessage && ( +

{bannedMessage}

)} {totalSecondsInGame > 0 && (

{`${t('Total account time in game')}: ${(() => { diff --git a/src/pages/players/index.js b/src/pages/players/index.js index 263b288f0..c4e762994 100644 --- a/src/pages/players/index.js +++ b/src/pages/players/index.js @@ -58,7 +58,7 @@ function Players() { return ''; } if (nameResults.length < 1) { - return 'No players with this name'; + return 'No players with this name. Note: banned players do not show up in name searches.'; } let morePlayers = ''; if (nameResults.length >= 5) { From 5d7c704016d3d42ff169b5e89d921fa41417abf8 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Mon, 18 Mar 2024 14:26:43 -0500 Subject: [PATCH 3/9] show profile retrieval errors --- src/pages/player/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pages/player/index.js b/src/pages/player/index.js index 27e34087d..17b461508 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -120,14 +120,14 @@ function Player() { } try { const response = await fetch('https://player.tarkov.dev/account/'+accountId); - if (response.status !== 200) { - return; - } const profileResponse = await response.json(); if (profileResponse.err) { setProfileError(profileResponse.errmsg); return; } + if (response.status !== 200) { + return; + } setPlayerData(profileResponse); } catch (error) { console.log('Error retrieving player profile', error); @@ -175,7 +175,6 @@ function Player() { } return t('Banned until {{banLiftDate}}', {banLiftDate: new Date(playerData.info.bannedUntil * 1000).toLocaleString()}); }, [playerData, t]); - console.log(bannedMessage); const achievementColumns = useMemo( () => [ From ccd991754f334e0d8e1be537f3dbcf450d47a309 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Mon, 18 Mar 2024 16:12:36 -0500 Subject: [PATCH 4/9] make error more prominent --- src/pages/player/index.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/pages/player/index.js b/src/pages/player/index.js index 17b461508..daafb68cb 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -656,6 +656,23 @@ function Player() { ]) }, [playerData, getItemDisplay, getLoadoutContents, t]); + const playerSearchDiv = ( +

+

+ {t('Search different player')} +

+
+ ); + + if (profileError) { + return ( +
+

{profileError}

+ {playerSearchDiv} +
+ ); + } + return [ {t('Search different player')}

-
-

- - {pageTitle} -

-
+ {playerSearchDiv}
- {profileError && ( -

{profileError}

- )} {playerData.info.registrationDate !== 0 && (

{`${t('Started current wipe')}: ${new Date(playerData.info.registrationDate * 1000).toLocaleString()}`}

)} From 7359fd442d8e4bbe5d8f9fb240138d5b3e1eccb6 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Mon, 18 Mar 2024 18:14:53 -0500 Subject: [PATCH 5/9] fix page title --- src/pages/player/index.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/pages/player/index.js b/src/pages/player/index.js index daafb68cb..c722c7663 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -680,10 +680,11 @@ function Player() { key="seo-wrapper" />,
-
-

- {t('Search different player')} -

+
+

+ + {pageTitle} +

{playerSearchDiv}
From b0b607b190d16defe7c2698d51abb897f6c8eca7 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Mon, 18 Mar 2024 18:39:25 -0500 Subject: [PATCH 6/9] enter submits player search --- src/pages/players/index.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pages/players/index.js b/src/pages/players/index.js index c4e762994..e306e7044 100644 --- a/src/pages/players/index.js +++ b/src/pages/players/index.js @@ -1,10 +1,12 @@ -import { useState, useCallback, useMemo } from 'react'; +import { useState, useCallback, useMemo, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { Trans, useTranslation } from 'react-i18next'; import { Icon } from '@mdi/react'; import { mdiAccountSearch } from '@mdi/js'; +import useKeyPress from '../../hooks/useKeyPress.jsx'; + import SEO from '../../components/SEO.jsx'; import { InputFilter } from '../../components/filter/index.js'; @@ -13,6 +15,8 @@ import './index.css'; function Players() { const { t } = useTranslation(); + const enterPress = useKeyPress('Enter'); + const defaultQuery = new URLSearchParams(window.location.search).get( 'search', ); @@ -84,6 +88,12 @@ function Players() { searchForName(); } + useEffect(() => { + if (enterPress) { + searchForName(); + } + }, [enterPress, searchForName]); + return [ Date: Mon, 18 Mar 2024 21:33:05 -0500 Subject: [PATCH 7/9] update footer --- src/components/footer/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/footer/index.js b/src/components/footer/index.js index 57e22b2fc..1ecfbe333 100644 --- a/src/components/footer/index.js +++ b/src/components/footer/index.js @@ -61,7 +61,7 @@ function Footer() {

{t('Item Data')}

{t( - 'Fresh EFT data and player name searching courtesy of', + 'Fresh EFT data courtesy of', )}{' '} Tarkov-Changes From 34c4557727298a88319ab9a1bd434c03c8f2d52e Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Tue, 19 Mar 2024 06:51:35 -0500 Subject: [PATCH 8/9] handle rate limiting errors --- src/pages/player/index.js | 12 ++++++++++++ src/pages/players/index.js | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/pages/player/index.js b/src/pages/player/index.js index c722c7663..d2edc5208 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -115,11 +115,20 @@ function Player() { } return; } catch (error) { + if (error.message.includes('NetworkError')) { + setProfileError('Rate limited exceeded. Wait one minute to send another request.'); + } console.log('Error retrieving player profile', error); } } try { const response = await fetch('https://player.tarkov.dev/account/'+accountId); + if (response.status !== 200) { + if (response.status === 429) { + setProfileError(`Rate limited exceeded. Wait ${response.headers.get('Retry-After')} seconds to send another request`); + } + return; + } const profileResponse = await response.json(); if (profileResponse.err) { setProfileError(profileResponse.errmsg); @@ -130,6 +139,9 @@ function Player() { } setPlayerData(profileResponse); } catch (error) { + if (error.message.includes('NetworkError')) { + setProfileError('Rate limited exceeded. Wait one minute to send another request.'); + } console.log('Error retrieving player profile', error); } } diff --git a/src/pages/players/index.js b/src/pages/players/index.js index e306e7044..bb49fe89c 100644 --- a/src/pages/players/index.js +++ b/src/pages/players/index.js @@ -47,6 +47,9 @@ function Players() { setNameResults(await response.json()); } catch (error) { let message = error.message; + if (message.includes('NetworkError')) { + message = 'Rate limited exceeded. Wait one minute to send another request.'; + } if (message.includes('Malformed')) { message = 'Error searching player profile; try removing one character from the end until the search works.' } From 28367413801c1b4c0c912808f3c314def1438ff9 Mon Sep 17 00:00:00 2001 From: Razzmatazz Date: Tue, 19 Mar 2024 08:51:08 -0500 Subject: [PATCH 9/9] move search link on player page --- src/pages/player/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/player/index.js b/src/pages/player/index.js index d2edc5208..213b8a077 100644 --- a/src/pages/player/index.js +++ b/src/pages/player/index.js @@ -692,13 +692,13 @@ function Player() { key="seo-wrapper" />,