v1 review pass: fixed some minor bugs

This commit is contained in:
khannurien
2026-03-16 11:08:39 +00:00
parent e88fed4e98
commit 867e64cb5b
37 changed files with 1228 additions and 400 deletions

View File

@@ -48,6 +48,32 @@ export interface PublicUser {
avatarMime?: string;
}
// Wire types — createdAt arrives as an ISO string from API/WS/localStorage
type WithStringDate<T extends { createdAt: Date }> = Omit<T, "createdAt"> & {
createdAt: string;
};
export type RawDump = WithStringDate<Dump>;
export type RawUser = WithStringDate<User>;
export type RawPublicUser = WithStringDate<PublicUser>;
export type RawAuthResponse = Omit<AuthResponse, "user"> & { user: RawUser };
// Deserializers — convert wire types to domain types at API/WS/localStorage boundaries
export function deserializeDump(raw: RawDump): Dump {
return { ...raw, createdAt: new Date(raw.createdAt) };
}
export function deserializeUser(raw: RawUser): User {
return { ...raw, createdAt: new Date(raw.createdAt) };
}
export function deserializePublicUser(raw: RawPublicUser): PublicUser {
return { ...raw, createdAt: new Date(raw.createdAt) };
}
export function deserializeAuthResponse(raw: RawAuthResponse): AuthResponse {
return { ...raw, user: deserializeUser(raw.user) };
}
export interface LoginUserRequest {
username: string;
password: string;