feat(browser): 被搁置的导入提供「重启并完成导入」一键按钮
This commit is contained in:
@@ -338,6 +338,7 @@ export async function importBrowserProfile(sourceId: string, profileDir: string)
|
|||||||
log.warn('partition locked, import deferred to next launch', { source: sourceId, profile: dirName })
|
log.warn('partition locked, import deferred to next launch', { source: sourceId, profile: dirName })
|
||||||
return {
|
return {
|
||||||
ok: true,
|
ok: true,
|
||||||
|
deferred: true,
|
||||||
cookies: collected.cookies,
|
cookies: collected.cookies,
|
||||||
localStorage: collected.localStorage,
|
localStorage: collected.localStorage,
|
||||||
cookieNote: deferredNote,
|
cookieNote: deferredNote,
|
||||||
|
|||||||
@@ -274,6 +274,12 @@ export function registerIpc(): AgentService {
|
|||||||
return Promise.resolve()
|
return Promise.resolve()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 应用自重启(浏览器数据导入被搁置时的一键完成入口)
|
||||||
|
handle('app:relaunch', () => {
|
||||||
|
app.relaunch()
|
||||||
|
app.exit(0)
|
||||||
|
})
|
||||||
|
|
||||||
handle('app:versions', () => ({
|
handle('app:versions', () => ({
|
||||||
app: process.env.npm_package_version ?? '0.0.0',
|
app: process.env.npm_package_version ?? '0.0.0',
|
||||||
electron: process.versions.electron,
|
electron: process.versions.electron,
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ const api = {
|
|||||||
getState: (): Promise<SessionState> => ipcRenderer.invoke('agent:state'),
|
getState: (): Promise<SessionState> => ipcRenderer.invoke('agent:state'),
|
||||||
versions: (): Promise<{ app: string; electron: string; node: string; chrome: string; user: string }> =>
|
versions: (): Promise<{ app: string; electron: string; node: string; chrome: string; user: string }> =>
|
||||||
ipcRenderer.invoke('app:versions'),
|
ipcRenderer.invoke('app:versions'),
|
||||||
|
appRelaunch: (): Promise<void> => ipcRenderer.invoke('app:relaunch'),
|
||||||
listSessions: (): Promise<SessionMeta[]> => ipcRenderer.invoke('sessions:list'),
|
listSessions: (): Promise<SessionMeta[]> => ipcRenderer.invoke('sessions:list'),
|
||||||
newSession: (): Promise<void> => ipcRenderer.invoke('sessions:new'),
|
newSession: (): Promise<void> => ipcRenderer.invoke('sessions:new'),
|
||||||
openSession: (path: string): Promise<void> => ipcRenderer.invoke('sessions:open', path),
|
openSession: (path: string): Promise<void> => ipcRenderer.invoke('sessions:open', path),
|
||||||
|
|||||||
@@ -118,6 +118,17 @@ export function BrowserImportForm(): JSX.Element {
|
|||||||
{error && (
|
{error && (
|
||||||
<div className="mt-3 rounded border border-red/40 bg-red-tint px-2.5 py-2 text-[11.5px] text-red">{error}</div>
|
<div className="mt-3 rounded border border-red/40 bg-red-tint px-2.5 py-2 text-[11.5px] text-red">{error}</div>
|
||||||
)}
|
)}
|
||||||
|
{result?.deferred && (
|
||||||
|
<div className="mt-3 flex items-center justify-end">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => void window.api.appRelaunch()}
|
||||||
|
className="rounded bg-accent px-3.5 py-1.5 text-[12px] font-medium text-page transition-opacity hover:opacity-90"
|
||||||
|
>
|
||||||
|
重启并完成导入
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{result && (
|
{result && (
|
||||||
<div
|
<div
|
||||||
className={`mt-3 rounded border px-2.5 py-2 text-[11.5px] leading-relaxed ${
|
className={`mt-3 rounded border px-2.5 py-2 text-[11.5px] leading-relaxed ${
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ declare global {
|
|||||||
stop: () => Promise<void>
|
stop: () => Promise<void>
|
||||||
getState: () => Promise<SessionState>
|
getState: () => Promise<SessionState>
|
||||||
versions: () => Promise<{ app: string; electron: string; node: string; chrome: string; user: string }>
|
versions: () => Promise<{ app: string; electron: string; node: string; chrome: string; user: string }>
|
||||||
|
appRelaunch: () => Promise<void>
|
||||||
listSessions: () => Promise<SessionMeta[]>
|
listSessions: () => Promise<SessionMeta[]>
|
||||||
newSession: () => Promise<void>
|
newSession: () => Promise<void>
|
||||||
openSession: (path: string) => Promise<void>
|
openSession: (path: string) => Promise<void>
|
||||||
|
|||||||
@@ -333,6 +333,8 @@ export interface BrowserImportResult {
|
|||||||
localStorage: boolean
|
localStorage: boolean
|
||||||
cookieNote?: string
|
cookieNote?: string
|
||||||
message: string
|
message: string
|
||||||
|
/** true = 分区被占用,已转待办:重启应用后自动完成导入 */
|
||||||
|
deferred?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type AgentUiEvent =
|
export type AgentUiEvent =
|
||||||
|
|||||||
Reference in New Issue
Block a user