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" } };
|
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({
|
const payload = JSON.stringify({
|
||||||
capture_ts_utc_override: created.capture_ts_utc_override,
|
capture_ts_utc_override: created.capture_ts_utc_override,
|
||||||
capture_offset_minutes_override: created.capture_offset_minutes_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)
|
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;
|
expiresSeconds: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type OverrideResponse = {
|
||||||
|
capture_ts_utc_override: string | null;
|
||||||
|
base_capture_ts_utc: string | null;
|
||||||
|
};
|
||||||
|
|
||||||
type PreviewUrlState = Record<string, string | undefined>;
|
type PreviewUrlState = Record<string, string | undefined>;
|
||||||
type VideoPlaybackVariant = { kind: "original" } | { kind: "video_mp4"; size: number };
|
type VideoPlaybackVariant = { kind: "original" } | { kind: "video_mp4"; size: number };
|
||||||
type VariantsResponse = Array<{ kind: string; size: number; key: string }>;
|
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}`);
|
if (!res.ok) throw new Error(`override_failed:${res.status}`);
|
||||||
|
const json = (await res.json()) as OverrideResponse;
|
||||||
setViewer((prev) =>
|
setViewer((prev) =>
|
||||||
prev
|
prev
|
||||||
? {
|
? {
|
||||||
...prev,
|
...prev,
|
||||||
asset: {
|
asset: {
|
||||||
...prev.asset,
|
...prev.asset,
|
||||||
capture_ts_utc: trimmed,
|
capture_ts_utc:
|
||||||
|
json.capture_ts_utc_override ?? json.base_capture_ts_utc,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
: prev,
|
: prev,
|
||||||
);
|
);
|
||||||
|
setBaseCaptureTs(json.base_capture_ts_utc ?? null);
|
||||||
setOverrideError("Override saved.");
|
setOverrideError("Override saved.");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setOverrideError(err instanceof Error ? err.message : String(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}`);
|
if (!res.ok) throw new Error(`override_clear_failed:${res.status}`);
|
||||||
|
const json = (await res.json()) as OverrideResponse;
|
||||||
setViewer((prev) =>
|
setViewer((prev) =>
|
||||||
prev
|
prev
|
||||||
? {
|
? {
|
||||||
...prev,
|
...prev,
|
||||||
asset: {
|
asset: {
|
||||||
...prev.asset,
|
...prev.asset,
|
||||||
capture_ts_utc: baseCaptureTs,
|
capture_ts_utc:
|
||||||
|
json.capture_ts_utc_override ?? json.base_capture_ts_utc,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
: prev,
|
: prev,
|
||||||
);
|
);
|
||||||
setOverrideInput(baseCaptureTs ?? "");
|
setBaseCaptureTs(json.base_capture_ts_utc ?? null);
|
||||||
|
setOverrideInput(json.base_capture_ts_utc ?? "");
|
||||||
setOverrideError("Override cleared.");
|
setOverrideError("Override cleared.");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setOverrideError(err instanceof Error ? err.message : String(err));
|
setOverrideError(err instanceof Error ? err.message : String(err));
|
||||||
|
|||||||
Reference in New Issue
Block a user