feat: open about page in setting modal when click about menu (#6245)

Co-authored-by: EYHN <cneyhn@gmail.com>
This commit is contained in:
BABA 2024-03-23 21:27:05 +08:00 committed by GitHub
parent 6c9db367e2
commit 6a02d0bc96
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 45 additions and 3 deletions

View File

@ -1,9 +1,16 @@
import { events } from '@affine/electron-api';
import { WorkspaceFlavour } from '@affine/env/workspace';
import { WorkspaceManager } from '@toeverything/infra';
import { useService } from '@toeverything/infra/di';
import { useLiveData } from '@toeverything/infra/livedata';
import { useAtom } from 'jotai';
import { lazy, type ReactElement, Suspense, useCallback } from 'react';
import {
lazy,
type ReactElement,
Suspense,
useCallback,
useEffect,
} from 'react';
import {
authAtom,
@ -116,6 +123,18 @@ export const Setting = () => {
[setOpenSettingModalAtom]
);
useEffect(() => {
if (environment.isDesktop) {
return events?.applicationMenu.openAboutPageInSettingModal(() =>
setOpenSettingModalAtom({
activeTab: 'about',
open: true,
})
);
}
return;
}, [setOpenSettingModalAtom]);
if (!open) {
return null;
}

View File

@ -2,7 +2,7 @@ import { app, Menu } from 'electron';
import { isMacOS } from '../../shared/utils';
import { revealLogFile } from '../logger';
import { initAndShowMainWindow } from '../main-window';
import { initAndShowMainWindow, showMainWindow } from '../main-window';
import { checkForUpdates } from '../updater';
import { applicationMenuSubjects } from './subject';
@ -22,7 +22,13 @@ export function createApplicationMenu() {
{
label: app.name,
submenu: [
{ role: 'about' },
{
label: `About ${app.getName()}`,
click: async () => {
await showMainWindow();
applicationMenuSubjects.openAboutPageInSettingModal.next();
},
},
{ type: 'separator' },
{ role: 'services' },
{ type: 'separator' },

View File

@ -17,4 +17,11 @@ export const applicationMenuEvents = {
sub.unsubscribe();
};
},
openAboutPageInSettingModal: (fn: () => void) => {
const sub =
applicationMenuSubjects.openAboutPageInSettingModal.subscribe(fn);
return () => {
sub.unsubscribe();
};
},
} satisfies Record<string, MainEventRegister>;

View File

@ -2,4 +2,5 @@ import { Subject } from 'rxjs';
export const applicationMenuSubjects = {
newPageAction: new Subject<void>(),
openAboutPageInSettingModal: new Subject<void>(),
};

View File

@ -215,6 +215,15 @@ export async function getMainWindow() {
return window;
}
export async function showMainWindow() {
const window = await getMainWindow();
if (!window) return;
if (window.isMinimized()) {
window.restore();
}
window.focus();
}
export async function handleOpenUrlInHiddenWindow(url: string) {
const win = new BrowserWindow({
width: 1200,