diff --git a/src/features/scan/components/hooks/useScanResultCardsModel.ts b/src/features/scan/components/hooks/useScanResultCardsModel.ts index 95a0a10..41f1c44 100644 --- a/src/features/scan/components/hooks/useScanResultCardsModel.ts +++ b/src/features/scan/components/hooks/useScanResultCardsModel.ts @@ -60,19 +60,20 @@ export function useScanResultCardModel({ parsed, }: Pick): ScanResultCardModel { const substats = parsed.substats; + const rows: Array<[string, ParsedField]> = [ + ["Name", parsed.fields.name], + ["Slot", parsed.fields.slot], + ["Level", getLevelField(parsed)], + ["Main", mergeField(parsed.fields.mainStat, parsed.fields.mainValue)], + ["Set", parsed.fields.setName], + ["Equipped", parsed.fields.equipped], + ["Substats", parsed.fields.substats], + ]; return { levelField: getLevelField(parsed), quality: resolveQuality(parsed.confidence), - fieldRows: [ - ["Name", parsed.fields.name], - ["Slot", parsed.fields.slot], - ["Level", getLevelField(parsed)], - ["Main", mergeField(parsed.fields.mainStat, parsed.fields.mainValue)], - ["Set", parsed.fields.setName], - ["Equipped", parsed.fields.equipped], - ["Substats", parsed.fields.substats], - ].map(([label, field]) => ({ + fieldRows: rows.map(([label, field]) => ({ label, field, confidenceClassName: resolveFieldConfidenceClass(field), diff --git a/src/features/scan/components/hooks/useScanTopControlsModel.ts b/src/features/scan/components/hooks/useScanTopControlsModel.ts index c4e8a6a..e5a386a 100644 --- a/src/features/scan/components/hooks/useScanTopControlsModel.ts +++ b/src/features/scan/components/hooks/useScanTopControlsModel.ts @@ -8,6 +8,7 @@ export interface ScanTopControlsModel { canStartAutoScan: boolean; canStartManualScan: boolean; canCaptureSingle: boolean; + autoScanRunning: boolean; handleSourceChange: (event: ChangeEvent) => void; selectGenshinSource: () => void; openSettings: () => void; @@ -41,7 +42,7 @@ export function useScanTopControlsModel({ bridgeReady, isScanning, controller, -}: ScanTopControlsSectionProps): ScanTopControlsModel { +}: Omit): ScanTopControlsModel { const { setSettingsOpen, setDiagnosticsOpen, @@ -116,6 +117,7 @@ export function useScanTopControlsModel({ canStartAutoScan: hasSourceSelected && !isScanning && !autoScanRunning && canAutoScan && !requiresAdminForAutoScan, canStartManualScan: hasSourceSelected && !isScanning && !autoScanRunning && canCaptureSource, canCaptureSingle: hasSourceSelected && !isScanning && !autoScanRunning && canCaptureSource, + autoScanRunning, handleSourceChange, selectGenshinSource, openSettings, diff --git a/src/features/scan/components/modals/hooks/useScanDetailsModalModel.ts b/src/features/scan/components/modals/hooks/useScanDetailsModalModel.ts index c705690..705c90e 100644 --- a/src/features/scan/components/modals/hooks/useScanDetailsModalModel.ts +++ b/src/features/scan/components/modals/hooks/useScanDetailsModalModel.ts @@ -1,6 +1,6 @@ import { useCallback, type MouseEvent } from "react"; import type { ScanDetailsModalProps } from "../types"; -import type { ParsedArtifactCandidate } from "../../../../lib/artifactOcrParser"; +import type { ParsedArtifactCandidate } from "../../../../../lib/artifactOcrParser"; export interface ScanDetailsModalModel { closeDetails: () => void; diff --git a/src/features/scan/components/modals/hooks/useScanDiagnosticsModalModel.ts b/src/features/scan/components/modals/hooks/useScanDiagnosticsModalModel.ts index 9534871..15d7cf2 100644 --- a/src/features/scan/components/modals/hooks/useScanDiagnosticsModalModel.ts +++ b/src/features/scan/components/modals/hooks/useScanDiagnosticsModalModel.ts @@ -1,5 +1,5 @@ -import { detailFingerprint } from "../../../../lib/autoScanLoop"; -import { sourceVersion } from "../../../../lib/genshinData"; +import { detailFingerprint } from "../../../../../lib/autoScanLoop"; +import { sourceVersion } from "../../../../../lib/genshinData"; import { useCallback, useMemo, type MouseEvent } from "react"; import type { ScanDiagnosticsModalProps } from "../types"; @@ -39,16 +39,20 @@ export interface ScanDiagnosticsModalModel { canSaveReviewSample: boolean; } +type ScanDiagnosticsController = ScanDiagnosticsModalProps["controller"]; + interface UseScanDiagnosticsModalModelInput extends Pick< ScanDiagnosticsModalProps, | "setDetailsOpen" | "setDiagnosticsOpen" - | "saveReviewSample" - | "canSaveReviewSample" | "latestCapture" | "controller" > { captureStatus: string; + // saveReviewSample / canSaveReviewSample live on the controller, not the modal + // props; the component wires them through from controller.* . + saveReviewSample: ScanDiagnosticsController["saveReviewSample"]; + canSaveReviewSample: ScanDiagnosticsController["canSaveReviewSample"]; } export function useScanDiagnosticsModalModel({ diff --git a/src/features/scan/components/modals/hooks/useScanReviewQueueModalModel.ts b/src/features/scan/components/modals/hooks/useScanReviewQueueModalModel.ts index 0d850ef..a14f096 100644 --- a/src/features/scan/components/modals/hooks/useScanReviewQueueModalModel.ts +++ b/src/features/scan/components/modals/hooks/useScanReviewQueueModalModel.ts @@ -1,5 +1,5 @@ import { useCallback, useMemo, type MouseEvent } from "react"; -import type { ReviewSampleAnalysis } from "../../../../lib/reviewSampleAnalysis"; +import type { ReviewSampleAnalysis } from "../../../../../lib/reviewSampleAnalysis"; import type { ScanReviewQueueModalProps } from "../types"; export interface ScanReviewQueueRow { @@ -18,8 +18,10 @@ export interface ScanReviewQueueModalModel { interface UseScanReviewQueueModalModelInput extends Pick< ScanReviewQueueModalProps, - "setReviewQueueOpen" | "loadReviewQueue" + "setReviewQueueOpen" > { + // loadReviewQueue is wired through from controller.* by the component. + loadReviewQueue: ScanReviewQueueModalProps["controller"]["loadReviewQueue"]; reviewAnalysis: ReviewSampleAnalysis; reviewSampleTotal: number; } diff --git a/src/features/scan/components/modals/hooks/useScanSettingsModalModel.ts b/src/features/scan/components/modals/hooks/useScanSettingsModalModel.ts index 6793c80..7744eca 100644 --- a/src/features/scan/components/modals/hooks/useScanSettingsModalModel.ts +++ b/src/features/scan/components/modals/hooks/useScanSettingsModalModel.ts @@ -1,6 +1,6 @@ import { useCallback, type ChangeEvent, type MouseEvent } from "react"; import type { CaptureResult, RuntimeInfo } from "../../../../../types/global"; -import { clampScanLimit, clampSkipRows } from "../../../../lib/scannerSession"; +import { clampScanLimit, clampSkipRows } from "../../../../../lib/scannerSession"; export interface ScanSettingsModalModel { closeSettings: () => void;