Skip to content

Commit 5689eb6

Browse files
committed
Open new window
1 parent b838d69 commit 5689eb6

File tree

7 files changed

+85
-62
lines changed

7 files changed

+85
-62
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,13 @@
165165
"@teamsupercell/typings-for-css-modules-loader": "^2.4.0",
166166
"@testing-library/jest-dom": "^5.11.6",
167167
"@testing-library/react": "^11.2.2",
168-
"@types/diff": "^5.0.1",
169168
"@types/enzyme": "^3.10.5",
170169
"@types/enzyme-adapter-react-16": "^1.0.6",
171170
"@types/history": "4.7.6",
172171
"@types/jest": "^26.0.15",
173172
"@types/node": "14.14.10",
174173
"@types/pngjs": "^6.0.1",
174+
"@types/qs": "^6.9.7",
175175
"@types/react": "^16.9.44",
176176
"@types/react-dom": "^16.9.9",
177177
"@types/react-helmet": "^6.1.2",
@@ -255,6 +255,7 @@
255255
"electron-store": "^8.0.0",
256256
"electron-updater": "^4.3.4",
257257
"history": "^5.0.0",
258+
"qs": "^6.10.1",
258259
"react": "^17.0.1",
259260
"react-dom": "^17.0.1",
260261
"react-helmet": "^6.1.0",

src/App.tsx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
import React from 'react';
2-
import {
3-
BrowserRouter as Router,
4-
Switch,
5-
Route,
6-
Redirect,
7-
} from 'react-router-dom';
8-
import Main from './components/Main';
2+
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
3+
import qs from 'qs';
4+
95
import './App.global.css';
106
import './helpers/fontAwesome';
7+
import Main from './components/printer/Main';
8+
import Screen from './components/printer/Screen';
119

1210
export default function App() {
1311
return (
1412
<Router>
1513
<Switch>
16-
<Route path="/" component={Main} />
14+
<Route
15+
path="*"
16+
render={(props) => {
17+
const { search } = props.location;
18+
const so = qs.parse(search.slice(search.lastIndexOf('?') + 1));
19+
return so.page === 'screen' ? <Screen /> : <Main />;
20+
}}
21+
/>
1722
</Switch>
18-
<Redirect from="*" to="/printer" />
1923
</Router>
2024
);
2125
}

src/components/Main.tsx

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/components/printer/Printer.tsx renamed to src/components/printer/Main.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import React from 'react';
22
import { ipcRenderer } from 'electron';
33

4-
const Printer = () => {
4+
const Main = () => {
55
const handleScreenSelect = async () => {
6-
await ipcRenderer.invoke('open-selector');
6+
await ipcRenderer.invoke('open-screen');
77
};
88

99
return (
@@ -15,4 +15,4 @@ const Printer = () => {
1515
);
1616
};
1717

18-
export default Printer;
18+
export default Main;

src/components/printer/Screen.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import React from 'react';
2+
3+
const Screen = () => {
4+
return (
5+
<section className="flex flex-1">
6+
<p>Hello!</p>
7+
</section>
8+
);
9+
};
10+
11+
export default Screen;

src/main.dev.ts

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export default class AppUpdater {
4444
}
4545

4646
let mainWindow: BrowserWindow | null = null;
47+
let screenWindow: BrowserWindow | null = null;
4748

4849
if (process.env.NODE_ENV === 'production') {
4950
const sourceMapSupport = require('source-map-support');
@@ -176,13 +177,38 @@ ipcMain.handle(
176177
}
177178
);
178179

179-
ipcMain.handle('open-selector', async (_event: IpcMainInvokeEvent) => {
180-
const win = new BrowserWindow({
181-
frame: false,
182-
transparent: true,
180+
const createScreenWindow = () => {
181+
if (screenWindow == null) {
182+
screenWindow = new BrowserWindow({
183+
frame: false,
184+
transparent: true,
185+
webPreferences: {
186+
nodeIntegration: true,
187+
},
188+
});
189+
}
190+
screenWindow.loadURL(`file://${__dirname}/index.html?page=screen`);
191+
192+
screenWindow.webContents.on('did-finish-load', () => {
193+
screenWindow?.show();
194+
screenWindow?.maximize();
195+
});
196+
197+
screenWindow.webContents.on('before-input-event', (event, ipnut) => {
198+
if (ipnut.key === 'Escape') {
199+
screenWindow?.close();
200+
}
183201
});
184-
win.show();
185-
win.maximize();
202+
203+
screenWindow.on('closed', () => {
204+
screenWindow = null;
205+
});
206+
207+
screenWindow.webContents.openDevTools({ mode: 'undocked' });
208+
};
209+
210+
ipcMain.handle('open-screen', async () => {
211+
createScreenWindow();
186212
});
187213

188214
ipcMain.handle('get-store', (_event, { key }) => {

yarn.lock

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1768,6 +1768,11 @@
17681768
resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz"
17691769
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
17701770

1771+
"@types/qs@^6.9.7":
1772+
version "6.9.7"
1773+
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
1774+
integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
1775+
17711776
"@types/react-dom@^16.9.9":
17721777
version "16.9.9"
17731778
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.9.tgz"
@@ -5940,10 +5945,10 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
59405945
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
59415946
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
59425947

5943-
get-intrinsic@^1.0.0:
5944-
version "1.0.1"
5945-
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz"
5946-
integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==
5948+
get-intrinsic@^1.0.0, get-intrinsic@^1.0.2:
5949+
version "1.1.1"
5950+
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
5951+
integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
59475952
dependencies:
59485953
function-bind "^1.1.1"
59495954
has "^1.0.3"
@@ -8828,7 +8833,7 @@ object-hash@^2.2.0:
88288833
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5"
88298834
integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
88308835

8831-
object-inspect@^1.7.0, object-inspect@^1.8.0:
8836+
object-inspect@^1.7.0, object-inspect@^1.8.0, object-inspect@^1.9.0:
88328837
version "1.11.0"
88338838
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
88348839
integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
@@ -9923,6 +9928,13 @@ qs@6.7.0:
99239928
resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz"
99249929
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
99259930

9931+
qs@^6.10.1:
9932+
version "6.10.1"
9933+
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a"
9934+
integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==
9935+
dependencies:
9936+
side-channel "^1.0.4"
9937+
99269938
qs@~6.5.2:
99279939
version "6.5.2"
99289940
resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz"
@@ -10920,13 +10932,14 @@ shellwords@^0.1.1:
1092010932
resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz"
1092110933
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
1092210934

10923-
side-channel@^1.0.2:
10924-
version "1.0.3"
10925-
resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz"
10926-
integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==
10935+
side-channel@^1.0.2, side-channel@^1.0.4:
10936+
version "1.0.4"
10937+
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
10938+
integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
1092710939
dependencies:
10928-
es-abstract "^1.18.0-next.0"
10929-
object-inspect "^1.8.0"
10940+
call-bind "^1.0.0"
10941+
get-intrinsic "^1.0.2"
10942+
object-inspect "^1.9.0"
1093010943

1093110944
signal-exit@^3.0.0, signal-exit@^3.0.2:
1093210945
version "3.0.3"

0 commit comments

Comments
 (0)