From c63b8cd385b16e13cf2402e4ea4572d351d50426 Mon Sep 17 00:00:00 2001 From: amal Date: Thu, 9 Apr 2026 16:58:02 +0800 Subject: [PATCH] upd: connected api monitoring Deskripsi: - update version No Issues --- bun.lockb | Bin 0 -> 157810 bytes package.json | 1 + src/frontend/App.tsx | 3 + src/frontend/config/api.ts | 1 + src/frontend/routes/apps.$appId.index.tsx | 85 ++++++++++++++++++++-- 5 files changed, 83 insertions(+), 7 deletions(-) create mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..a4112feec11f489ae524f6b8c5218848f1c5331b GIT binary patch literal 157810 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 B)zAO{ literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 7d357e2..d0c4921 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@mantine/charts": "^9.0.0", "@mantine/core": "^8.3.18", "@mantine/hooks": "^8.3.18", + "@mantine/notifications": "^8.3.18", "@prisma/client": "6", "@tanstack/react-query": "^5.95.2", "@tanstack/react-router": "^1.168.10", diff --git a/src/frontend/App.tsx b/src/frontend/App.tsx index 838a693..453a205 100644 --- a/src/frontend/App.tsx +++ b/src/frontend/App.tsx @@ -1,5 +1,7 @@ import { ColorSchemeScript, MantineProvider, createTheme } from '@mantine/core' import '@mantine/core/styles.css' +import '@mantine/notifications/styles.css' +import { Notifications } from '@mantine/notifications' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { createRouter, RouterProvider } from '@tanstack/react-router' import { routeTree } from './routeTree.gen' @@ -61,6 +63,7 @@ export function App() { <> + diff --git a/src/frontend/config/api.ts b/src/frontend/config/api.ts index 0302546..bfcaf88 100644 --- a/src/frontend/config/api.ts +++ b/src/frontend/config/api.ts @@ -16,4 +16,5 @@ export const API_URLS = { getGridOverview: () => `${API_BASE_URL}/api/monitoring/grid-overview`, getDailyActivity: () => `${API_BASE_URL}/api/monitoring/daily-activity`, getComparisonActivity: () => `${API_BASE_URL}/api/monitoring/comparison-activity`, + postVersionUpdate: () => `${API_BASE_URL}/api/monitoring/version-update`, } diff --git a/src/frontend/routes/apps.$appId.index.tsx b/src/frontend/routes/apps.$appId.index.tsx index 6c737c8..acb394f 100644 --- a/src/frontend/routes/apps.$appId.index.tsx +++ b/src/frontend/routes/apps.$appId.index.tsx @@ -1,3 +1,5 @@ +import { useEffect, useState } from 'react' +import { notifications } from '@mantine/notifications' import { VillageActivityLineChart, VillageComparisonBarChart } from '@/frontend/components/DashboardCharts' import { ErrorDataTable } from '@/frontend/components/ErrorDataTable' import { SummaryCard } from '@/frontend/components/SummaryCard' @@ -40,6 +42,13 @@ function AppOverviewPage() { const isDesaPlus = appId === 'desa-plus' const [versionModalOpened, { open: openVersionModal, close: closeVersionModal }] = useDisclosure(false) + // Form State + const [latestVersion, setLatestVersion] = useState('') + const [minVersion, setMinVersion] = useState('') + const [messageUpdate, setMessageUpdate] = useState('') + const [maintenance, setMaintenance] = useState(false) + const [isSaving, setIsSaving] = useState(false) + // Data Fetching const { data: gridRes, isLoading: gridLoading, mutate: mutateGrid } = useSWR(isDesaPlus ? API_URLS.getGridOverview() : null, fetcher) const { data: dailyRes, isLoading: dailyLoading, mutate: mutateDaily } = useSWR(isDesaPlus ? API_URLS.getDailyActivity() : null, fetcher) @@ -49,31 +58,93 @@ function AppOverviewPage() { const dailyData = dailyRes?.data || [] const comparisonData = comparisonRes?.data || [] + // Initialize form when data loads or modal opens + useEffect(() => { + if (grid?.version && versionModalOpened) { + setLatestVersion(grid.version.mobile_latest_version || '') + setMinVersion(grid.version.mobile_minimum_version || '') + setMessageUpdate(grid.version.mobile_message_update || '') + setMaintenance(grid.version.mobile_maintenance === 'true') + } + }, [grid, versionModalOpened]) + const handleRefresh = () => { mutateGrid() mutateDaily() mutateComparison() } + const handleSaveVersion = async () => { + setIsSaving(true) + try { + const response = await fetch(API_URLS.postVersionUpdate(), { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + mobile_latest_version: latestVersion, + mobile_minimum_version: minVersion, + mobile_maintenance: maintenance, + mobile_message_update: messageUpdate, + }), + }) + + if (response.ok) { + notifications.show({ + title: 'Update Successful', + message: 'Application version information has been updated.', + color: 'teal', + }) + mutateGrid() + closeVersionModal() + } else { + notifications.show({ + title: 'Update Failed', + message: 'Failed to update version information. Please check your data.', + color: 'red', + }) + } + } catch (error) { + notifications.show({ + title: 'Network Error', + message: 'Could not connect to the server. Please try again later.', + color: 'red', + }) + } finally { + setIsSaving(false) + } + } + return ( <> - - + setLatestVersion(e.currentTarget.value)} + /> + setMinVersion(e.currentTarget.value)} + />