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 -
- {status === 'idle' && ( - - )} - {status === 'success' && ( - - )} +
+
+ +
+
-
- {status === 'idle' && ( - Click to check - )} - {status === 'loading' && ( - Checking... - )} - {status === 'success' && data?.success && ( -
- - {data.modpack_name || data.modpack_id} - - - {data.status === 'update_available' ? `→ ${data.latest_version}` : 'Up to date'} - -
- )} - {(status === 'error' || (status === 'success' && !data?.success)) && ( - - {data?.error || data?.message || 'Error'} - - )} + +
+

+ Modpack Version +

+
+ {status === 'idle' && Click to check} + {status === 'loading' && Checking...} + {status === 'success' && data?.success && {data.latest_version}} + {(status === 'error' || (status === 'success' && !data?.success)) && ( + {getErrorMessage(data?.error || data?.message)} + )} +
);