diff --git a/gsm-frontend/src/api.js b/gsm-frontend/src/api.js index d76f1bb..e154088 100644 --- a/gsm-frontend/src/api.js +++ b/gsm-frontend/src/api.js @@ -179,3 +179,9 @@ export async function getFactorioCurrentSave(token) { headers: { Authorization: `Bearer ${token}` }, }) } + +export async function getFactorioWorldSettings(token, saveName) { + return fetchAPI(`/servers/factorio/saves/${encodeURIComponent(saveName)}/settings`, { + headers: { Authorization: `Bearer ${token}` }, + }) +} diff --git a/gsm-frontend/src/components/FactorioWorldManager.jsx b/gsm-frontend/src/components/FactorioWorldManager.jsx index a52e1b3..4cca209 100644 --- a/gsm-frontend/src/components/FactorioWorldManager.jsx +++ b/gsm-frontend/src/components/FactorioWorldManager.jsx @@ -8,6 +8,7 @@ import { deleteFactorioTemplate, createFactorioWorld, deleteFactorioSave, + getFactorioWorldSettings, serverAction } from '../api' import WorldGenForm from './WorldGenForm' @@ -25,6 +26,9 @@ export default function FactorioWorldManager({ server, token, onServerAction }) const [creating, setCreating] = useState(false) const [deleteConfirm, setDeleteConfirm] = useState(null) const [actionLoading, setActionLoading] = useState(null) + const [viewingSettings, setViewingSettings] = useState(null) + const [settingsData, setSettingsData] = useState(null) + const [settingsLoading, setSettingsLoading] = useState(false) const fetchData = async () => { try { @@ -137,6 +141,35 @@ export default function FactorioWorldManager({ server, token, onServerAction }) } } + const handleViewSettings = async (saveName) => { + try { + setSettingsLoading(true) + setViewingSettings(saveName) + const data = await getFactorioWorldSettings(token, saveName) + setSettingsData(data) + } catch (err) { + setError(err.message) + setViewingSettings(null) + } finally { + setSettingsLoading(false) + } + } + + const closeSettingsModal = () => { + setViewingSettings(null) + setSettingsData(null) + } + + // Format setting value for display + const formatSettingValue = (value) => { + if (value === 0) return 'None' + if (value <= 0.2) return 'Very Low' + if (value <= 0.6) return 'Low' + if (value <= 1.2) return 'Normal' + if (value <= 2.5) return 'High' + return 'Very High' + } + if (loading) { return (
+ {settingsData.message} +
+