Skip to content

Commit

Permalink
feat: open about page in setting modal when click about menu (#6245)
Browse files Browse the repository at this point in the history
Co-authored-by: EYHN <[email protected]>
  • Loading branch information
BABA983 and EYHN authored Mar 23, 2024
1 parent 6c9db36 commit 6a02d0b
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 3 deletions.
21 changes: 20 additions & 1 deletion packages/frontend/core/src/providers/modal-provider.tsx
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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;
}
Expand Down
10 changes: 8 additions & 2 deletions packages/frontend/electron/src/main/application-menu/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -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' },
Expand Down
7 changes: 7 additions & 0 deletions packages/frontend/electron/src/main/application-menu/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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>;
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ import { Subject } from 'rxjs';

export const applicationMenuSubjects = {
newPageAction: new Subject<void>(),
openAboutPageInSettingModal: new Subject<void>(),
};
9 changes: 9 additions & 0 deletions packages/frontend/electron/src/main/main-window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 6a02d0b

Please sign in to comment.