Extract project workspace hook
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-06-17 07:31:28 +02:00
parent ea70a77c6f
commit c0216823f2
9 changed files with 257 additions and 132 deletions
+12 -1
View File
@@ -1,6 +1,7 @@
import { FormEvent, useMemo, useState } from 'react'
import { FormEvent, useEffect, useMemo, useState } from 'react'
import { datasetsApi, jobsApi } from '../services/api'
import type {
AreaRead,
DatasetCreateResponse,
JobRead,
RasterMetadataResponse,
@@ -12,6 +13,7 @@ import { formatError } from '../lib/formatError'
interface DatasetWorkflowOptions {
selectedProjectId: string | null
areas: AreaRead[]
datasets: DatasetCreateResponse[]
loadProjectData: (projectId: string) => Promise<{ datasets: DatasetCreateResponse[] } | null>
setErrorMessage: (message: string | null) => void
@@ -27,6 +29,7 @@ function toRasterMetadata(metadata: Record<string, unknown> | null | undefined):
export function useDatasetWorkflow({
selectedProjectId,
areas,
datasets,
loadProjectData,
setErrorMessage,
@@ -72,6 +75,14 @@ export function useDatasetWorkflow({
[rasterTileSize, rasterTileOverlap],
)
useEffect(() => {
if (areas.length === 0) {
setSelectedClipAreaId('')
} else if (!selectedClipAreaId || !areas.some((area) => area.id === selectedClipAreaId)) {
setSelectedClipAreaId(areas[0].id)
}
}, [areas, selectedClipAreaId])
const loadDatasetJobs = async (projectId: string, datasetId: string) => {
const response = await jobsApi.list(projectId, { dataset_id: datasetId, limit: 20, offset: 0 })
setJobs(response.items)