aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/client/api/client.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/api/client.ts')
-rw-r--r--src/client/api/client.ts15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/client/api/client.ts b/src/client/api/client.ts
index 7741942..7607eb6 100644
--- a/src/client/api/client.ts
+++ b/src/client/api/client.ts
@@ -1,6 +1,13 @@
-import { hc } from "hono/client";
+import { hc, type InferResponseType } from "hono/client";
import type { AppType } from "../../server/index.js";
-import type { ApiError, AuthResponse, Tokens } from "./types";
+import type { ApiError, Tokens } from "./types";
+
+// Create a temporary client just for type inference
+const _rpc = hc<AppType>("");
+
+// Infer response types from server definitions
+export type LoginResponse = InferResponseType<typeof _rpc.api.auth.login.$post>;
+export type User = LoginResponse["user"];
export class ApiClientError extends Error {
constructor(
@@ -120,12 +127,12 @@ export class ApiClient {
}
}
- async login(username: string, password: string): Promise<AuthResponse> {
+ async login(username: string, password: string): Promise<LoginResponse> {
const res = await this.rpc.api.auth.login.$post({
json: { username, password },
});
- const data = await this.handleResponse<AuthResponse>(res);
+ const data = await this.handleResponse<LoginResponse>(res);
this.tokenStorage.setTokens({
accessToken: data.accessToken,