Initial commit: dashboard
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
import {
|
||||
getAccessToken,
|
||||
getRefreshToken,
|
||||
setTokens,
|
||||
} from "@/lib/meshkee-api";
|
||||
import {
|
||||
getBusinessDashboardOrigin,
|
||||
getCustomerDashboardOrigin,
|
||||
} from "@/lib/host";
|
||||
import {
|
||||
clearManagedBusinessId,
|
||||
setManagedBusinessId,
|
||||
} from "@/lib/managed-business";
|
||||
|
||||
/**
|
||||
* Superadmin “Manage business” — same origin as admin (no subdomain bounce).
|
||||
* Example: /manage/{meshkeeBusinessId}/profile
|
||||
*/
|
||||
export function openBusinessDashboardAsAdmin(
|
||||
meshkeeBusinessId: string,
|
||||
nextPath = "/profile",
|
||||
) {
|
||||
const id = meshkeeBusinessId.trim();
|
||||
if (!id) return;
|
||||
|
||||
setManagedBusinessId(id);
|
||||
|
||||
const path = nextPath.startsWith("/") ? nextPath : `/${nextPath}`;
|
||||
const suffix = path === "/" ? "/profile" : path;
|
||||
window.location.assign(`/manage/${encodeURIComponent(id)}${suffix}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Business owner / staff → business.* host from their account.
|
||||
*/
|
||||
export function openBusinessDashboardAsUser(nextPath = "/profile") {
|
||||
const access = getAccessToken();
|
||||
const refresh = getRefreshToken();
|
||||
if (!access || !refresh) {
|
||||
window.location.assign(`${getCustomerDashboardOrigin()}/login`);
|
||||
return;
|
||||
}
|
||||
|
||||
setTokens(access, refresh);
|
||||
clearManagedBusinessId();
|
||||
|
||||
const next = nextPath.startsWith("/") ? nextPath : `/${nextPath}`;
|
||||
const hash = new URLSearchParams({
|
||||
access,
|
||||
refresh,
|
||||
next,
|
||||
clearManaged: "1",
|
||||
}).toString();
|
||||
|
||||
window.location.assign(
|
||||
`${getBusinessDashboardOrigin()}/auth/handoff#${hash}`,
|
||||
);
|
||||
}
|
||||
|
||||
export function businessDashboardHrefForUser(nextPath = "/profile"): string {
|
||||
const next = nextPath.startsWith("/") ? nextPath : `/${nextPath}`;
|
||||
const access = getAccessToken();
|
||||
const refresh = getRefreshToken();
|
||||
if (!access || !refresh) {
|
||||
return `${getCustomerDashboardOrigin()}/login`;
|
||||
}
|
||||
const hash = new URLSearchParams({
|
||||
access,
|
||||
refresh,
|
||||
next,
|
||||
clearManaged: "1",
|
||||
}).toString();
|
||||
return `${getBusinessDashboardOrigin()}/auth/handoff#${hash}`;
|
||||
}
|
||||
|
||||
export function businessDashboardHrefForAdmin(
|
||||
meshkeeBusinessId: string,
|
||||
nextPath = "/profile",
|
||||
): string {
|
||||
const id = meshkeeBusinessId.trim();
|
||||
if (!id) return "/businesses";
|
||||
const path = nextPath.startsWith("/") ? nextPath : `/${nextPath}`;
|
||||
const suffix = path === "/" ? "/profile" : path;
|
||||
return `/manage/${encodeURIComponent(id)}${suffix}`;
|
||||
}
|
||||
|
||||
export function customerDashboardHref(nextPath = "/"): string {
|
||||
const next = nextPath.startsWith("/") ? nextPath : `/${nextPath}`;
|
||||
const access = getAccessToken();
|
||||
const refresh = getRefreshToken();
|
||||
if (!access || !refresh) {
|
||||
return `${getCustomerDashboardOrigin()}${next}`;
|
||||
}
|
||||
const hash = new URLSearchParams({
|
||||
access,
|
||||
refresh,
|
||||
next,
|
||||
}).toString();
|
||||
return `${getCustomerDashboardOrigin()}/auth/handoff#${hash}`;
|
||||
}
|
||||
Reference in New Issue
Block a user