diff --git a/app/components/ui/FlagSvg.tsx b/app/components/ui/FlagSvg.tsx
index d47b92b..59ad8a9 100644
--- a/app/components/ui/FlagSvg.tsx
+++ b/app/components/ui/FlagSvg.tsx
@@ -1,5 +1,4 @@
import { cn } from "~/lib/utils";
-import { getDisplayFlagConfig } from "~/lib/avatar-data";
import type { FlagConfig } from "~/lib/flag-types";
interface FlagSvgProps {
@@ -10,12 +9,11 @@ interface FlagSvgProps {
}
function colorAt(colors: string[], index: number): string {
- return colors[index % colors.length] ?? "#adf661";
+ return colors[index % colors.length]!;
}
export function FlagSvg({ config, size = 48, className, title }: FlagSvgProps) {
- const safeConfig = getDisplayFlagConfig(`${config.pattern}:${config.colors.join("-")}`, config);
- const colors = safeConfig.colors;
+ const colors = config.colors;
const c0 = colorAt(colors, 0);
const c1 = colorAt(colors, 1);
const c2 = colorAt(colors, 2);
@@ -30,28 +28,28 @@ export function FlagSvg({ config, size = 48, className, title }: FlagSvgProps) {
className={cn("block shrink-0 overflow-hidden", className)}
>
{title ?
{title} : null}
- {safeConfig.pattern === "triband-h" && (
+ {config.pattern === "triband-h" && (
<>
>
)}
- {safeConfig.pattern === "triband-v" && (
+ {config.pattern === "triband-v" && (
<>
>
)}
- {safeConfig.pattern === "diagonal" && (
+ {config.pattern === "diagonal" && (
<>
>
)}
- {safeConfig.pattern === "nordic-cross" && (
+ {config.pattern === "nordic-cross" && (
<>
@@ -60,7 +58,7 @@ export function FlagSvg({ config, size = 48, className, title }: FlagSvgProps) {
>
)}
- {safeConfig.pattern === "cross" && (
+ {config.pattern === "cross" && (
<>
@@ -69,28 +67,28 @@ export function FlagSvg({ config, size = 48, className, title }: FlagSvgProps) {
>
)}
- {safeConfig.pattern === "canton" && (
+ {config.pattern === "canton" && (
<>
>
)}
- {safeConfig.pattern === "triangle" && (
+ {config.pattern === "triangle" && (
<>
>
)}
- {safeConfig.pattern === "chevron" && (
+ {config.pattern === "chevron" && (
<>
>
)}
- {safeConfig.pattern === "quartered" && (
+ {config.pattern === "quartered" && (
<>
@@ -98,21 +96,21 @@ export function FlagSvg({ config, size = 48, className, title }: FlagSvgProps) {
>
)}
- {safeConfig.pattern === "bordered" && (
+ {config.pattern === "bordered" && (
<>
>
)}
- {safeConfig.pattern === "circle" && (
+ {config.pattern === "circle" && (
<>
>
)}
- {safeConfig.pattern === "star" && (
+ {config.pattern === "star" && (
<>
{
+ await db
+ .update(schema.users)
+ .set({ flagConfig: generateFlagConfig(user.id) })
+ .where(eq(schema.users.id, user.id));
+ },
+ },
update: {
before: async (data) => {
const incomingImage =
diff --git a/app/models/team.ts b/app/models/team.ts
index 3e5cf0e..122f6e2 100644
--- a/app/models/team.ts
+++ b/app/models/team.ts
@@ -1,19 +1,28 @@
import { eq, and, isNull } from "drizzle-orm";
import { database } from "~/database/context";
import * as schema from "~/database/schema";
+import { generateFlagConfig } from "~/lib/flag-generator";
export type Team = typeof schema.teams.$inferSelect;
export type NewTeam = typeof schema.teams.$inferInsert;
export async function createTeam(data: NewTeam): Promise {
const db = database();
- const [team] = await db.insert(schema.teams).values(data).returning();
+ const id = data.id ?? crypto.randomUUID();
+ const [team] = await db
+ .insert(schema.teams)
+ .values({ ...data, id, flagConfig: data.flagConfig ?? generateFlagConfig(id) })
+ .returning();
return team;
}
export async function createManyTeams(teams: NewTeam[]): Promise {
const db = database();
- return await db.insert(schema.teams).values(teams).returning();
+ const withFlags = teams.map((team) => {
+ const id = team.id ?? crypto.randomUUID();
+ return { ...team, id, flagConfig: team.flagConfig ?? generateFlagConfig(id) };
+ });
+ return await db.insert(schema.teams).values(withFlags).returning();
}
export async function findTeamById(id: string): Promise {
diff --git a/app/models/user.ts b/app/models/user.ts
index 238c593..81d616f 100644
--- a/app/models/user.ts
+++ b/app/models/user.ts
@@ -1,6 +1,7 @@
import { eq, inArray, and } from "drizzle-orm";
import { database } from "~/database/context";
import * as schema from "~/database/schema";
+import { generateFlagConfig } from "~/lib/flag-generator";
export type User = typeof schema.users.$inferSelect;
export type NewUser = typeof schema.users.$inferInsert;
@@ -13,7 +14,11 @@ export function getUserDisplayName(
export async function createUser(data: NewUser): Promise {
const db = database();
- const [user] = await db.insert(schema.users).values(data).returning();
+ const id = data.id ?? crypto.randomUUID();
+ const [user] = await db
+ .insert(schema.users)
+ .values({ ...data, id, flagConfig: data.flagConfig ?? generateFlagConfig(id) })
+ .returning();
return user;
}