mirror of
https://github.com/Sea-Haven-Industries/seahaven-ap.git
synced 2026-10-07 16:18:53 +00:00
* feat(settings): add settings and approvals POC shells (AP-7) Add app shell nav plus mock settings CRUD routes and an approvals inbox so the POC demo path works without an API. * fix(build): generate router types before tsc CI failed because src/router.ts is gitignored and tsc ran before Vite created it.
65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import { areMocksEnabled } from "@/mocks/env";
|
|
|
|
export type MockUserRole = "ap_operator" | "approver" | "admin";
|
|
|
|
export type MockUser = {
|
|
id: string;
|
|
name: string;
|
|
email: string;
|
|
role: MockUserRole;
|
|
};
|
|
|
|
const seedUsers: MockUser[] = [
|
|
{
|
|
id: "user-1",
|
|
name: "Alex Rivera",
|
|
email: "alex.rivera@seahaven.example",
|
|
role: "ap_operator",
|
|
},
|
|
{
|
|
id: "user-2",
|
|
name: "Jordan Lee",
|
|
email: "jordan.lee@seahaven.example",
|
|
role: "approver",
|
|
},
|
|
{
|
|
id: "user-3",
|
|
name: "Sam Patel",
|
|
email: "sam.patel@seahaven.example",
|
|
role: "approver",
|
|
},
|
|
{
|
|
id: "user-4",
|
|
name: "Casey Morgan",
|
|
email: "casey.morgan@seahaven.example",
|
|
role: "admin",
|
|
},
|
|
];
|
|
|
|
let userStore: MockUser[] = seedUsers.map((user) => ({ ...user }));
|
|
|
|
export function getMockUsers(): MockUser[] {
|
|
if (!areMocksEnabled()) {
|
|
return [];
|
|
}
|
|
return userStore.map((user) => ({ ...user }));
|
|
}
|
|
|
|
export function getMockUser(id: string): MockUser | undefined {
|
|
return getMockUsers().find((user) => user.id === id);
|
|
}
|
|
|
|
export function upsertMockUser(user: MockUser): MockUser {
|
|
const index = userStore.findIndex((row) => row.id === user.id);
|
|
const next = { ...user };
|
|
if (index === -1) {
|
|
userStore = [...userStore, next];
|
|
} else {
|
|
userStore = [...userStore.slice(0, index), next, ...userStore.slice(index + 1)];
|
|
}
|
|
return { ...next };
|
|
}
|
|
|
|
export function resetMockUsers(): void {
|
|
userStore = seedUsers.map((user) => ({ ...user }));
|
|
}
|