feat(water-log): cycle 4 — Tuxedo mobile worker Time tab + unified PIN
The mobile `/water` worker experience (Tuxedo-only, matching the
existing water flow) now exposes a "Time" tab alongside "Headgates"
so irrigators can clock in/out from the same phone they use for
water entries — no second PIN.
- MobileWaterApp: new `activeTab` state, sticky TabBar rendered only
after PIN, screen='time' case embeds <TimeTrackingFieldClient>
with hardcoded Tuxedo brand constants.
- handlePinSubmit best-effort calls `verifyTimeTrackingPin` after
the water PIN succeeds, so the Time tab never re-prompts a worker
who is also set up in `time_tracking_workers`.
- handleLogout clears BOTH `wl_session` and `time_tracking_session`
cookies in independent try/catch blocks.
- Tab switching to Time drops in-flight water flow state; switching
back to Headgates restores the list without reload.
- i18n: added `tab.{headgates,time,logout}` strings (en + es); lifted
Tuxedo brand display constants into @/lib/water-log/brand so the
standalone /tuxedo/time-clock page and the embedded Time tab share
one source of truth.
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
import TimeTrackingFieldClient from "@/components/time-tracking/TimeTrackingFieldClient";
|
||||
import { getBrandSettingsPublic } from "@/actions/brand-settings";
|
||||
|
||||
const BRAND_ID = "64294306-5f42-463d-a5e8-2ad6c81a96de";
|
||||
const BRAND_NAME = "Tuxedo Corn";
|
||||
const BRAND_ACCENT = "green";
|
||||
import {
|
||||
TUXEDO_BRAND_ID,
|
||||
TUXEDO_BRAND_NAME,
|
||||
TUXEDO_BRAND_ACCENT,
|
||||
} from "@/lib/water-log/brand";
|
||||
|
||||
export const metadata = {
|
||||
title: "Worker Clock — Tuxedo Corn",
|
||||
title: `Worker Clock — ${TUXEDO_BRAND_NAME}`,
|
||||
};
|
||||
|
||||
export default async function TuxedoTimeClockPage() {
|
||||
@@ -15,9 +16,9 @@ export default async function TuxedoTimeClockPage() {
|
||||
|
||||
return (
|
||||
<TimeTrackingFieldClient
|
||||
brandId={BRAND_ID}
|
||||
brandName={BRAND_NAME}
|
||||
brandAccent={BRAND_ACCENT}
|
||||
brandId={TUXEDO_BRAND_ID}
|
||||
brandName={TUXEDO_BRAND_NAME}
|
||||
brandAccent={TUXEDO_BRAND_ACCENT}
|
||||
logoUrl={logoUrl}
|
||||
/>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user