v1 review pass: fixed some minor bugs
This commit is contained in:
26
src/model.ts
26
src/model.ts
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user