@@ -429,4 +433,112 @@ class TosModal extends React.Component<{}, {}> {
}
}
-export { WelcomeModal, LoadingSpinner, ClientStopModal, AlertModal, DisconnectedModal, TosModal };
+@mobxReact.observer
+class AboutModal extends React.Component<{}, {}> {
+ @boundMethod
+ closeModal(): void {
+ mobx.action(() => {
+ GlobalModel.aboutModalOpen.set(false);
+ })();
+ }
+
+ @boundMethod
+ isUpToDate(): boolean {
+ return true;
+ }
+
+ @boundMethod
+ updateApp(): void {
+ // GlobalCommandRunner.updateApp();
+ }
+
+ @boundMethod
+ getStatus(isUpToDate: boolean): JSX.Element {
+ if (isUpToDate) {
+ return (
+
+
+
+ Up to Date
+
+
Client Version v0.4.0 20231016-110014
+
+ );
+ }
+ return (
+
+
+
+ Outdated Version
+
+
Client Version v0.4.0 20231016-110014
+
+
+
+
+ );
+ }
+
+ render() {
+ return (
+
+
+
+
+
+ About
+
+

+
+
+
+
+
+

+
+
+
Wave Terminal
+
Modern Terminal for Seamless Workflow
+
+
+
{this.getStatus(this.isUpToDate())}
+
+
Copyright © 2023 Command Line Inc.
+
+
+
+
+ );
+ }
+}
+
+export { WelcomeModal, LoadingSpinner, ClientStopModal, AlertModal, DisconnectedModal, TosModal, AboutModal };
diff --git a/src/electron/emain.ts b/src/electron/emain.ts
index 527bad30..317e6bd4 100644
--- a/src/electron/emain.ts
+++ b/src/electron/emain.ts
@@ -146,6 +146,14 @@ function readAuthKey() {
let menuTemplate = [
{
role: "appMenu",
+ submenu: [
+ {
+ label: 'About Wave Terminal',
+ click: () => {
+ MainWindow?.webContents.send('menu-item-about');
+ }
+ }
+ ],
},
{
label: "File",
@@ -165,7 +173,7 @@ let menuTemplate = [
let menu = electron.Menu.buildFromTemplate(menuTemplate);
electron.Menu.setApplicationMenu(menu);
-let MainWindow = null;
+let MainWindow: Electron.BrowserWindow | null = null;
function getMods(input: any) {
return { meta: input.meta, shift: input.shift, ctrl: input.control, alt: input.alt };
diff --git a/src/electron/preload.js b/src/electron/preload.js
index 701d7ee3..2b07a1e9 100644
--- a/src/electron/preload.js
+++ b/src/electron/preload.js
@@ -19,6 +19,7 @@ contextBridge.exposeInMainWorld("api", {
onMetaPageDown: (callback) => ipcRenderer.on("meta-pagedown", callback),
onBracketCmd: (callback) => ipcRenderer.on("bracket-cmd", callback),
onDigitCmd: (callback) => ipcRenderer.on("digit-cmd", callback),
+ onMenuItemAbout: (callback) => ipcRenderer.on("menu-item-about", callback),
contextScreen: (screenOpts, position) => ipcRenderer.send("context-screen", screenOpts, position),
contextEditMenu: (position, opts) => ipcRenderer.send("context-editmenu", position, opts),
onWaveSrvStatusChange: (callback) => ipcRenderer.on("wavesrv-status-change", callback),
diff --git a/src/model/model.ts b/src/model/model.ts
index 3fcae67b..ed19ee0f 100644
--- a/src/model/model.ts
+++ b/src/model/model.ts
@@ -180,6 +180,7 @@ type ElectronApi = {
onICmd: (callback: (mods: KeyModsType) => void) => void;
onLCmd: (callback: (mods: KeyModsType) => void) => void;
onHCmd: (callback: (mods: KeyModsType) => void) => void;
+ onMenuItemAbout: (callback: () => void) => void;
onMetaArrowUp: (callback: () => void) => void;
onMetaArrowDown: (callback: () => void) => void;
onMetaPageUp: (callback: () => void) => void;
@@ -2699,6 +2700,9 @@ class Model {
welcomeModalOpen: OV
= mobx.observable.box(false, {
name: "welcomeModalOpen",
});
+ aboutModalOpen: OV = mobx.observable.box(false, {
+ name: "aboutModalOpen",
+ });
screenSettingsModal: OV<{ sessionId: string; screenId: string }> = mobx.observable.box(null, {
name: "screenSettingsModal",
});
@@ -2759,6 +2763,7 @@ class Model {
getApi().onICmd(this.onICmd.bind(this));
getApi().onLCmd(this.onLCmd.bind(this));
getApi().onHCmd(this.onHCmd.bind(this));
+ getApi().onMenuItemAbout(this.onMenuItemAbout.bind(this));
getApi().onMetaArrowUp(this.onMetaArrowUp.bind(this));
getApi().onMetaArrowDown(this.onMetaArrowDown.bind(this));
getApi().onMetaPageUp(this.onMetaPageUp.bind(this));
@@ -2977,6 +2982,10 @@ class Model {
GlobalModel.welcomeModalOpen.set(false);
didSomething = true;
}
+ if (GlobalModel.welcomeModalOpen.get()) {
+ GlobalModel.welcomeModalOpen.set(false);
+ didSomething = true;
+ }
})();
return didSomething;
}
@@ -3106,6 +3115,12 @@ class Model {
}
}
+ onMenuItemAbout(): void {
+ mobx.action(() => {
+ this.aboutModalOpen.set(true);
+ })();
+ }
+
onMetaPageUp(): void {
GlobalCommandRunner.screenSelectLine("-1");
}