feat: update desktop workflows and app center
This commit is contained in:
55
src/pages/ProductCenter/url.ts
Normal file
55
src/pages/ProductCenter/url.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import type { YinianSessionState } from '../../../shared/yinian';
|
||||
|
||||
const DEFAULT_PRODUCT_CENTER_URL = 'https://ticket.nianxx.cn/';
|
||||
|
||||
export interface ProductCenterLaunchOptions {
|
||||
baseUrl?: string;
|
||||
reloadKey: number;
|
||||
session: YinianSessionState;
|
||||
// Future SSO should use a short-lived one-time ticket, never a long-lived desktop credential.
|
||||
ssoToken?: string;
|
||||
}
|
||||
|
||||
export function getProductCenterBaseUrl() {
|
||||
return import.meta.env.VITE_PRODUCT_CENTER_URL?.trim() || DEFAULT_PRODUCT_CENTER_URL;
|
||||
}
|
||||
|
||||
export function buildProductCenterSrc(options: ProductCenterLaunchOptions) {
|
||||
const baseUrl = options.baseUrl?.trim() || DEFAULT_PRODUCT_CENTER_URL;
|
||||
|
||||
try {
|
||||
const url = new URL(baseUrl);
|
||||
url.searchParams.set('zhinianEmbed', '1');
|
||||
url.searchParams.set('zhinianApp', 'product-center');
|
||||
url.searchParams.set('zhinianHostReload', String(options.reloadKey));
|
||||
|
||||
if (options.session.authenticated) {
|
||||
url.searchParams.set('workspaceId', options.session.currentHotelId);
|
||||
url.searchParams.set('userId', options.session.user.id);
|
||||
}
|
||||
|
||||
if (options.ssoToken) {
|
||||
url.searchParams.set('ssoToken', options.ssoToken);
|
||||
}
|
||||
|
||||
return url.toString();
|
||||
} catch {
|
||||
const normalizedBase = baseUrl.replace(/\/$/, '');
|
||||
const params = new URLSearchParams({
|
||||
zhinianEmbed: '1',
|
||||
zhinianApp: 'product-center',
|
||||
zhinianHostReload: String(options.reloadKey),
|
||||
});
|
||||
|
||||
if (options.session.authenticated) {
|
||||
params.set('workspaceId', options.session.currentHotelId);
|
||||
params.set('userId', options.session.user.id);
|
||||
}
|
||||
|
||||
if (options.ssoToken) {
|
||||
params.set('ssoToken', options.ssoToken);
|
||||
}
|
||||
|
||||
return `${normalizedBase}/?${params.toString()}`;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user