diff --git a/services/modpack-version-checker/blueprint-extension/views/server/wrapper.tsx b/services/modpack-version-checker/blueprint-extension/views/server/wrapper.tsx index 4d7620d..368642d 100644 --- a/services/modpack-version-checker/blueprint-extension/views/server/wrapper.tsx +++ b/services/modpack-version-checker/blueprint-extension/views/server/wrapper.tsx @@ -3,6 +3,7 @@ import { ServerContext } from '@/state/server'; import http from '@/api/http'; import { faCube } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import classNames from 'classnames'; interface VersionData { success: boolean; @@ -31,78 +32,65 @@ const ModpackVersionCard: React.FC = () => { setStatus(response.data.success ? 'success' : 'error'); } catch (error: any) { if (error.response?.status === 429) { - setData({ - success: false, - error: 'Rate limit reached. Please wait 60 seconds.', - }); + setData({ success: false, error: 'rate_limited' }); + } else if (error.response?.status === 404) { + setData({ success: false, error: 'not_found' }); } else { - setData({ - success: false, - error: error.response?.data?.message || 'Failed to check for updates', - }); + setData({ success: false, error: 'api_error' }); } setStatus('error'); } }; - // Match StatBlock styling from Pterodactyl + // Convert error codes to short display messages + const getErrorMessage = (error?: string): string => { + if (!error) return 'Error'; + if (error.includes('detect') || error.includes('MODPACK')) return 'Not configured'; + if (error === 'rate_limited') return 'Wait 60s'; + if (error === 'not_found') return 'Not found'; + if (error === 'api_error') return 'API error'; + if (error.length > 20) return 'Check failed'; + return error; + }; + + const getBgColor = () => { + if (status === 'success' && data?.status === 'update_available') return 'bg-orange-500'; + if (status === 'success' && data?.success) return 'bg-cyan-500'; + return 'bg-gray-700'; + }; + return ( -
+ Modpack Version +
+