27 lines
980 B
TypeScript
27 lines
980 B
TypeScript
import { createConnectTransport } from "@connectrpc/connect-web"
|
|
import { Code, ConnectError, createClient, type Interceptor } from "@connectrpc/connect"
|
|
import { AuthService } from "$lib/services/user/v1/auth_pb";
|
|
import { UserService } from "$lib/services/user/v1/user_pb";
|
|
import { ItemService } from "$lib/services/item/v1/item_pb";
|
|
import { goto } from "$app/navigation";
|
|
|
|
const redirector: Interceptor = (next) => async (req) => {
|
|
try {
|
|
return await next(req);
|
|
} catch (e) {
|
|
const error = ConnectError.from(e);
|
|
if (error.code === Code.Unauthenticated) {
|
|
await goto('/auth');
|
|
}
|
|
throw e;
|
|
}
|
|
};
|
|
|
|
const transport = createConnectTransport({
|
|
baseUrl: `${window.location.origin}/grpc`,
|
|
interceptors: [redirector],
|
|
});
|
|
|
|
export const AuthClient = createClient(AuthService, transport);
|
|
export const UserClient = createClient(UserService, transport);
|
|
export const ItemClient = createClient(ItemService, transport); |