fix: sync capture override response
This commit is contained in:
@@ -102,6 +102,18 @@ export async function handleSetCaptureOverride(input: {
|
||||
return { status: 500, body: { error: "insert_failed" } };
|
||||
}
|
||||
|
||||
const assetRows = await db<
|
||||
{
|
||||
capture_ts_utc: string | null;
|
||||
}[]
|
||||
>`
|
||||
select capture_ts_utc
|
||||
from assets
|
||||
where id = ${created.asset_id}
|
||||
limit 1
|
||||
`;
|
||||
const baseCaptureTs = assetRows[0]?.capture_ts_utc ?? null;
|
||||
|
||||
const payload = JSON.stringify({
|
||||
capture_ts_utc_override: created.capture_ts_utc_override,
|
||||
capture_offset_minutes_override: created.capture_offset_minutes_override,
|
||||
@@ -111,5 +123,11 @@ export async function handleSetCaptureOverride(input: {
|
||||
values ('admin', 'override_capture_ts', 'asset', ${created.asset_id}, ${payload}::jsonb)
|
||||
`;
|
||||
|
||||
return { status: 200, body: created };
|
||||
return {
|
||||
status: 200,
|
||||
body: {
|
||||
...created,
|
||||
base_capture_ts_utc: baseCaptureTs,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -25,6 +25,11 @@ type SignedUrlResponse = {
|
||||
expiresSeconds: number;
|
||||
};
|
||||
|
||||
type OverrideResponse = {
|
||||
capture_ts_utc_override: string | null;
|
||||
base_capture_ts_utc: string | null;
|
||||
};
|
||||
|
||||
type PreviewUrlState = Record<string, string | undefined>;
|
||||
type VideoPlaybackVariant = { kind: "original" } | { kind: "video_mp4"; size: number };
|
||||
type VariantsResponse = Array<{ kind: string; size: number; key: string }>;
|
||||
@@ -232,17 +237,20 @@ export function MediaPanel(props: { selectedDayIso: string | null }) {
|
||||
},
|
||||
);
|
||||
if (!res.ok) throw new Error(`override_failed:${res.status}`);
|
||||
const json = (await res.json()) as OverrideResponse;
|
||||
setViewer((prev) =>
|
||||
prev
|
||||
? {
|
||||
...prev,
|
||||
asset: {
|
||||
...prev.asset,
|
||||
capture_ts_utc: trimmed,
|
||||
capture_ts_utc:
|
||||
json.capture_ts_utc_override ?? json.base_capture_ts_utc,
|
||||
},
|
||||
}
|
||||
: prev,
|
||||
);
|
||||
setBaseCaptureTs(json.base_capture_ts_utc ?? null);
|
||||
setOverrideError("Override saved.");
|
||||
} catch (err) {
|
||||
setOverrideError(err instanceof Error ? err.message : String(err));
|
||||
@@ -270,18 +278,21 @@ export function MediaPanel(props: { selectedDayIso: string | null }) {
|
||||
},
|
||||
);
|
||||
if (!res.ok) throw new Error(`override_clear_failed:${res.status}`);
|
||||
const json = (await res.json()) as OverrideResponse;
|
||||
setViewer((prev) =>
|
||||
prev
|
||||
? {
|
||||
...prev,
|
||||
asset: {
|
||||
...prev.asset,
|
||||
capture_ts_utc: baseCaptureTs,
|
||||
capture_ts_utc:
|
||||
json.capture_ts_utc_override ?? json.base_capture_ts_utc,
|
||||
},
|
||||
}
|
||||
: prev,
|
||||
);
|
||||
setOverrideInput(baseCaptureTs ?? "");
|
||||
setBaseCaptureTs(json.base_capture_ts_utc ?? null);
|
||||
setOverrideInput(json.base_capture_ts_utc ?? "");
|
||||
setOverrideError("Override cleared.");
|
||||
} catch (err) {
|
||||
setOverrideError(err instanceof Error ? err.message : String(err));
|
||||
|
||||
Reference in New Issue
Block a user