diff --git a/services/modpack-version-checker/blueprint-extension/build.sh b/services/modpack-version-checker/blueprint-extension/build.sh index 8d7669c..80f741d 100755 --- a/services/modpack-version-checker/blueprint-extension/build.sh +++ b/services/modpack-version-checker/blueprint-extension/build.sh @@ -28,7 +28,7 @@ fi echo "Using extension directory: $EXT_DIR" # =========================================== -# 1. CONSOLE WIDGET INJECTION +# 1. CONSOLE WIDGET INJECTION (Right Column) # =========================================== echo "" echo "--- Console Widget ---" @@ -40,14 +40,20 @@ else echo "⚠ wrapper.tsx not found, skipping console widget" fi -# Inject into ServerConsoleContainer.tsx -if ! grep -q "ModpackVersionCard" resources/scripts/components/server/console/ServerConsoleContainer.tsx 2>/dev/null; then - sed -i '1i import ModpackVersionCard from "@/components/server/ModpackVersionCard";' resources/scripts/components/server/console/ServerConsoleContainer.tsx - # Place after ServerDetailsBlock for consistent positioning - sed -i '/' resources/scripts/components/server/console/ServerConsoleContainer.tsx - echo "✓ Injected ModpackVersionCard into ServerConsoleContainer.tsx" +# Inject into AfterInformation.tsx (right column, after stats) +AFTER_INFO="resources/scripts/blueprint/components/Server/Terminal/AfterInformation.tsx" +if [ -f "$AFTER_INFO" ]; then + if ! grep -q "ModpackVersionCard" "$AFTER_INFO" 2>/dev/null; then + # Add import after the blueprint/import comment + sed -i '/\/\* blueprint\/import \*\//a import ModpackVersionCard from "@/components/server/ModpackVersionCard";' "$AFTER_INFO" + # Add component inside the fragment after blueprint/react comment + sed -i 's|{/\* blueprint/react \*/}|{/* blueprint/react */}\n |' "$AFTER_INFO" + echo "✓ Injected ModpackVersionCard into AfterInformation.tsx" + else + echo "○ ModpackVersionCard already present in AfterInformation.tsx" + fi else - echo "○ ModpackVersionCard already present in ServerConsoleContainer.tsx" + echo "⚠ AfterInformation.tsx not found, skipping injection" fi # =========================================== 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 68a5cbc..4d7620d 100644 --- a/services/modpack-version-checker/blueprint-extension/views/server/wrapper.tsx +++ b/services/modpack-version-checker/blueprint-extension/views/server/wrapper.tsx @@ -1,6 +1,8 @@ import React, { useState } from 'react'; import { ServerContext } from '@/state/server'; import http from '@/api/http'; +import { faCube } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; interface VersionData { success: boolean; @@ -24,12 +26,10 @@ const ModpackVersionCard: React.FC = () => { setStatus('loading'); try { - // Updated to match Batch 1 route optimization const response = await http.post(`/api/client/extensions/modpackchecker/servers/${uuid}/check`); setData(response.data); setStatus(response.data.success ? 'success' : 'error'); } catch (error: any) { - // Handle 429 Rate Limit responses with user-friendly message if (error.response?.status === 429) { setData({ success: false, @@ -45,121 +45,65 @@ const ModpackVersionCard: React.FC = () => { } }; - const getPlatformIcon = (platform?: string) => { - switch (platform) { - case 'curseforge': - return '🔥'; - case 'modrinth': - return '🌿'; - case 'technic': - return '⚙️'; - case 'ftb': - return '📦'; - default: - return '❓'; - } - }; - - const getStatusColor = (status?: string) => { - switch (status) { - case 'up_to_date': - return '#4ECDC4'; // Frost - case 'update_available': - return '#FF6B35'; // Fire - case 'error': - return '#ef4444'; - default: - return '#888'; - } - }; - + // Match StatBlock styling from Pterodactyl return ( -
-
-

- Modpack Version -

+
+
+
+ + Modpack +
{status === 'idle' && ( )} {status === 'success' && ( )}
- - {status === 'loading' && ( -
- - Checking version... - -
- )} - - {status === 'success' && data?.success && ( -
-
- {getPlatformIcon(data.platform)} - {data.modpack_name} - - ({data.platform}) +
+ {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'}
-
-
- Latest: - {data.latest_version} -
-
-
- )} - - {(status === 'error' || (status === 'success' && !data?.success)) && ( -
- {data?.error || data?.message || 'Unknown error'} -
- )} - - + )} + {(status === 'error' || (status === 'success' && !data?.success)) && ( + + {data?.error || data?.message || 'Error'} + + )} +
); };