feat(core): open app in electron app entry (#8637)

fix PD-208
fix PD-210
fix PD-209
fix AF-1495
This commit is contained in:
pengx17
2024-10-31 06:16:32 +00:00
parent 5d92c900d1
commit 0f8b273134
36 changed files with 887 additions and 226 deletions
@@ -273,15 +273,3 @@ export async function openUrlInHiddenWindow(urlObj: URL) {
});
return win;
}
// TODO(@pengx17): somehow the page won't load the url passed, help needed
export async function openUrlInMainWindow(urlObj: URL) {
const url = transformToAppUrl(urlObj);
logger.info('loading page at', url);
const mainWindow = await getMainWindow();
if (mainWindow) {
await mainWindow.loadURL(url);
}
return null;
}
@@ -932,7 +932,35 @@ export const isActiveTab = (wc: WebContents) => {
WebContentViewsManager.instance.activeWorkbenchView?.webContents.id
);
};
// parse the full pathname to basename and pathname
// eg: /workspace/xxx/yyy => { basename: '/workspace/xxx', pathname: '/yyy' }
export const parseFullPathname = (url: string) => {
const urlObj = new URL(url);
const basename = urlObj.pathname.match(/\/workspace\/[^/]+/g)?.[0] ?? '/';
return {
basename,
pathname: urlObj.pathname.slice(basename.length),
search: urlObj.search,
hash: urlObj.hash,
};
};
export const addTab = WebContentViewsManager.instance.addTab;
export const addTabWithUrl = (url: string) => {
const { basename, pathname, search, hash } = parseFullPathname(url);
return addTab({
basename,
view: {
path: { pathname, search, hash },
},
});
};
export const loadUrlInActiveTab = async (_url: string) => {
// todo: implement
throw new Error('loadUrlInActiveTab not implemented');
};
export const showTab = WebContentViewsManager.instance.showTab;
export const closeTab = WebContentViewsManager.instance.closeTab;
export const undoCloseTab = WebContentViewsManager.instance.undoCloseTab;