import { useLoginDialogStore } from "@/store/login-dialog" type RequestExecutor = () => Promise interface RequestOptions { onUnauthorized?: () => void } export async function requestWithAuth(executor: RequestExecutor, options?: RequestOptions) { try { return await executor() } catch (error) { if (error instanceof Error && error.message === "UNAUTHORIZED") { if (options?.onUnauthorized) { useLoginDialogStore.getState().openLoginDialog(options.onUnauthorized) } else { useLoginDialogStore.getState().openLoginDialog() } return null } throw error } }