mirror of
https://github.com/kennethnym/aris.git
synced 2026-03-23 18:41:17 +00:00
* feat: add admin dashboard app - React + Vite + TanStack Router + TanStack Query - Auth with better-auth (login, session, admin guard) - Source config management (WeatherKit credentials, user config) - Feed query panel - Location push card - General settings with health check - CORS middleware for cross-origin auth - Disable CSRF check in dev mode - Sonner toasts for mutation feedback Co-authored-by: Ona <no-reply@ona.com> * fix: use useQuery instead of getQueryData Co-authored-by: Ona <no-reply@ona.com> * refactor: remove backend changes from dashboard PR Backend CORS/CSRF changes moved to #92. Source registry removed (sources hardcoded in frontend). Co-authored-by: Ona <no-reply@ona.com> --------- Co-authored-by: Ona <no-reply@ona.com>
35 lines
957 B
TypeScript
35 lines
957 B
TypeScript
import { createRoute } from "@tanstack/react-router"
|
|
import { useQuery, useQueryClient } from "@tanstack/react-query"
|
|
|
|
import { fetchSources } from "@/lib/api"
|
|
import { SourceConfigPanel } from "@/components/source-config-panel"
|
|
import { Route as dashboardRoute } from "../_dashboard"
|
|
|
|
export const Route = createRoute({
|
|
getParentRoute: () => dashboardRoute,
|
|
path: "/sources/$sourceId",
|
|
component: SourceRoute,
|
|
})
|
|
|
|
function SourceRoute() {
|
|
const { sourceId } = Route.useParams()
|
|
const queryClient = useQueryClient()
|
|
const { data: sources = [] } = useQuery({
|
|
queryKey: ["sources"],
|
|
queryFn: fetchSources,
|
|
})
|
|
const source = sources.find((s) => s.id === sourceId)
|
|
|
|
if (!source) {
|
|
return <p className="text-sm text-muted-foreground">Source not found.</p>
|
|
}
|
|
|
|
return (
|
|
<SourceConfigPanel
|
|
key={source.id}
|
|
source={source}
|
|
onUpdate={() => queryClient.invalidateQueries({ queryKey: ["configs"] })}
|
|
/>
|
|
)
|
|
}
|