feat(electron): add isMaximized flag to html (#6199)

to make some special ui rules for desktop
This commit is contained in:
pengx17
2024-03-20 13:20:19 +00:00
parent 65ab6c89bf
commit a8a1074a8a
4 changed files with 21 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
import './register-blocksuite-components';
import './edgeless-template';
import { apis, events } from '@affine/electron-api';
import { setupGlobal } from '@affine/env/global';
import * as Sentry from '@sentry/react';
import { useEffect } from 'react';
@@ -51,10 +52,16 @@ export function setup() {
// load persistent config for electron
// TODO: should be sync, but it's not necessary for now
environment.isDesktop &&
if (environment.isDesktop) {
appConfigProxy
.getSync()
.catch(() => console.error('failed to load app config'));
const handleMaximized = (maximized: boolean | undefined) => {
document.documentElement.dataset.maximized = String(maximized);
};
apis?.ui.isMaximized().then(handleMaximized).catch(console.error);
events?.ui.onMaximized(handleMaximized);
}
performanceSetupLogger.info('done');
}

View File

@@ -21,7 +21,11 @@ type ClientHandler = {
arg0: any,
...rest: infer A
) => any
? (...args: A) => Promise<ReturnType<MainHandlers[namespace][method]>>
? (
...args: A
) => ReturnType<MainHandlers[namespace][method]> extends Promise<any>
? ReturnType<MainHandlers[namespace][method]>
: Promise<ReturnType<MainHandlers[namespace][method]>>
: never;
};
} & HelperHandlers;

View File

@@ -96,6 +96,10 @@ async function createWindow(additionalArguments: string[]) {
);
logger.info('main window is ready to show');
if (browserWindow.isMaximized() || browserWindow.isFullScreen()) {
uiSubjects.onMaximized.next(true);
}
});
browserWindow.on('close', e => {

View File

@@ -12,6 +12,10 @@ import { getChallengeResponse } from './challenge';
import { getGoogleOauthCode } from './google-auth';
export const uiHandlers = {
isMaximized: async () => {
const window = await getMainWindow();
return window?.isMaximized();
},
handleThemeChange: async (_, theme: (typeof nativeTheme)['themeSource']) => {
nativeTheme.themeSource = theme;
},