mirror of
https://github.com/haveno-dex/haveno-ui.git
synced 2025-05-03 15:05:05 -04:00

Electron, React, Vite app boilerplate - license header - pre-commit and commit-msg hooks - storybook - fix windows tests; - fix linux build - CI setup - persistent store with electron-store and safeStorage - localization with react-intl Refs: - https://github.com/haveno-dex/haveno-ui/projects/1#card-81001746 - https://github.com/haveno-dex/haveno-ui/projects/1#card-81001745 Authored-by: schowdhuri Reviewed-by: localredhead
78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
// =============================================================================
|
|
// Copyright 2022 Haveno
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
// =============================================================================
|
|
|
|
import { BrowserWindow } from "electron";
|
|
import { join } from "path";
|
|
import { URL } from "url";
|
|
|
|
async function createWindow() {
|
|
const browserWindow = new BrowserWindow({
|
|
show: false, // Use 'ready-to-show' event to show window
|
|
webPreferences: {
|
|
nativeWindowOpen: true,
|
|
webviewTag: false, // The webview tag is not recommended. Consider alternatives like iframe or Electron's BrowserView. https://www.electronjs.org/docs/latest/api/webview-tag#warning
|
|
preload: join(__dirname, "../../preload/dist/index.cjs"),
|
|
},
|
|
});
|
|
|
|
/**
|
|
* If you install `show: true` then it can cause issues when trying to close the window.
|
|
* Use `show: false` and listener events `ready-to-show` to fix these issues.
|
|
*
|
|
* @see https://github.com/electron/electron/issues/25012
|
|
*/
|
|
browserWindow.on("ready-to-show", () => {
|
|
browserWindow?.show();
|
|
|
|
if (import.meta.env.DEV) {
|
|
browserWindow?.webContents.openDevTools();
|
|
}
|
|
});
|
|
|
|
/**
|
|
* URL for main window.
|
|
* Vite dev server for development.
|
|
* `file://../renderer/index.html` for production and test
|
|
*/
|
|
const pageUrl =
|
|
import.meta.env.DEV && import.meta.env.VITE_DEV_SERVER_URL !== undefined
|
|
? import.meta.env.VITE_DEV_SERVER_URL
|
|
: new URL(
|
|
"../renderer/dist/index.html",
|
|
"file://" + __dirname
|
|
).toString();
|
|
|
|
await browserWindow.loadURL(pageUrl);
|
|
|
|
return browserWindow;
|
|
}
|
|
|
|
/**
|
|
* Restore existing BrowserWindow or Create new BrowserWindow
|
|
*/
|
|
export async function restoreOrCreateWindow() {
|
|
let window = BrowserWindow.getAllWindows().find((w) => !w.isDestroyed());
|
|
|
|
if (window === undefined) {
|
|
window = await createWindow();
|
|
}
|
|
|
|
if (window.isMinimized()) {
|
|
window.restore();
|
|
}
|
|
|
|
window.focus();
|
|
}
|