Haay's picture
Upload 926 files
519a20c verified
import { app, BrowserWindow } from 'electron';
import path from 'path';
import { fileURLToPath } from 'url';
import yargs from 'yargs';
import { serverEvents, EVENT_NAMES } from '../server-events.js';
const cliArguments = yargs(process.argv)
.usage('Usage: <your-start-script> [options]')
.option('width', {
type: 'number',
default: 800,
describe: 'The width of the window',
})
.option('height', {
type: 'number',
default: 600,
describe: 'The height of the window',
})
.parseSync();
/** @type {string} The URL to load in the window. */
let appUrl;
function createSillyTavernWindow() {
if (!appUrl) {
console.error('The server has not started yet.');
return;
}
new BrowserWindow({
height: cliArguments.height,
width: cliArguments.width,
}).loadURL(appUrl);
}
function startServer() {
return new Promise((_resolve, _reject) => {
serverEvents.addListener(EVENT_NAMES.SERVER_STARTED, ({ url }) => {
appUrl = url.toString();
createSillyTavernWindow();
});
const sillyTavernRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
process.chdir(sillyTavernRoot);
import('../../server.js');
});
}
app.whenReady().then(() => {
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createSillyTavernWindow();
}
});
startServer();
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});