diff --git a/appointment.js b/appointment.js
new file mode 100644
index 0000000..fd0dbb4
--- /dev/null
+++ b/appointment.js
@@ -0,0 +1,56 @@
+const {_android: android} = require('playwright');
+const ExcelUtil = require("./src/excel/ExcelUtil");
+const CommandorPage = require("./src/workers/CommandorPage");
+const {MongoManager, formatDate} = require("./src/workers/mongo_manager");
+
+const mongoManager = new MongoManager();
+
+let excelUtil = new ExcelUtil();
+let contactList = excelUtil.readContacts()
+mongoManager.connect().then(r =>
+
+ android.devices().then((devices) => {
+ let segmentNumber = contactList.length / devices.length;
+ for (let i = 0; i < devices.length; i++) {
+ startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]);
+ }
+ }))
+
+// Connect to the device.
+
+async function needToBook(contact, mongoManager) {
+ let collectionName = formatDate(new Date())
+ let alreadBooked = await mongoManager.getAllSuccessfulItemsForDay(collectionName)
+ let toReturn = true;
+ await alreadBooked.forEach((bookedItem) => {
+ if (bookedItem.email === contact.mail) {
+ toReturn = false;
+ }
+ }
+ )
+ return toReturn
+}
+
+async function startBook(contactPojo, device) {
+ console.log(`Model: ${device.model()}`);
+ console.log(`Serial: ${device.serial()}`);
+ if (await needToBook(contactPojo, mongoManager)) {
+ let commandor = new CommandorPage(contactPojo, device, mongoManager);
+ //read contacts form excel
+ return await commandor.loadPage();
+ } else {
+ console.log("do not send request --> skip")
+ }
+}
+
+
+async function startWithList(contacts, device) {
+ await contacts.reduce(async (promise, contactPojo) => {
+ // This line will wait for the last async function to finish.
+ // The first iteration uses an already resolved Promise
+ // so, it will immediately continue.
+ await promise;
+ const contents = await startBook(contactPojo, device);
+ console.log(contents);
+ }, Promise.resolve());
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e6accd8
--- /dev/null
+++ b/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ 爱马仕约会
+
+
+Hello World!
+We are using Node.js ,
+Chromium ,
+and Electron .
+
+
\ No newline at end of file
diff --git a/main.js b/main.js
index fd0dbb4..068dfdd 100644
--- a/main.js
+++ b/main.js
@@ -1,56 +1,25 @@
-const {_android: android} = require('playwright');
-const ExcelUtil = require("./src/excel/ExcelUtil");
-const CommandorPage = require("./src/workers/CommandorPage");
-const {MongoManager, formatDate} = require("./src/workers/mongo_manager");
+const {app, BrowserWindow} = require('electron')
+const path = require("path");
-const mongoManager = new MongoManager();
-
-let excelUtil = new ExcelUtil();
-let contactList = excelUtil.readContacts()
-mongoManager.connect().then(r =>
-
- android.devices().then((devices) => {
- let segmentNumber = contactList.length / devices.length;
- for (let i = 0; i < devices.length; i++) {
- startWithList(contactList.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i]);
+const createWindow = () => {
+ const win = new BrowserWindow({
+ width: 800,
+ height: 600,
+ webPreferences: {
+ preload: path.join(__dirname, 'preload.js')
}
- }))
+ });
-// Connect to the device.
-
-async function needToBook(contact, mongoManager) {
- let collectionName = formatDate(new Date())
- let alreadBooked = await mongoManager.getAllSuccessfulItemsForDay(collectionName)
- let toReturn = true;
- await alreadBooked.forEach((bookedItem) => {
- if (bookedItem.email === contact.mail) {
- toReturn = false;
- }
- }
- )
- return toReturn
+ win.loadFile('index.html');
}
-async function startBook(contactPojo, device) {
- console.log(`Model: ${device.model()}`);
- console.log(`Serial: ${device.serial()}`);
- if (await needToBook(contactPojo, mongoManager)) {
- let commandor = new CommandorPage(contactPojo, device, mongoManager);
- //read contacts form excel
- return await commandor.loadPage();
- } else {
- console.log("do not send request --> skip")
- }
-}
+app.whenReady().then(() => {
+ createWindow();
+ app.on('activate', () => {
+ if (BrowserWindow.getAllWindows().length === 0) createWindow()
+ })
+})
-
-async function startWithList(contacts, device) {
- await contacts.reduce(async (promise, contactPojo) => {
- // This line will wait for the last async function to finish.
- // The first iteration uses an already resolved Promise
- // so, it will immediately continue.
- await promise;
- const contents = await startBook(contactPojo, device);
- console.log(contents);
- }, Promise.resolve());
-}
+app.on('window-all-closed', () => {
+ if (process.platform !== 'darwin') app.quit()
+})
\ No newline at end of file
diff --git a/package.json b/package.json
index 1fdac37..6d5a13b 100644
--- a/package.json
+++ b/package.json
@@ -1,10 +1,16 @@
{
+ "main": "main.js",
+ "version": "0.1",
+ "author": "Lei PAN",
+ "description": "爱马仕约会",
"scripts": {
- "start": "node main.js"
+ "start": "electron ."
},
"dependencies": {
+ "@nodegui/nodegui": "^0.57.1",
"axios": "^0.27.2",
"beepbeep": "^1.3.0",
+ "electron": "^20.1.3",
"mongodb": "^4.9.1",
"mongoose": "^6.5.4",
"node-xlsx": "^0.21.0",
diff --git a/preload.js b/preload.js
new file mode 100644
index 0000000..a069b42
--- /dev/null
+++ b/preload.js
@@ -0,0 +1,10 @@
+window.addEventListener('DOMContentLoaded', () => {
+ const replaceText = (selector, text) => {
+ const element = document.getElementById(selector)
+ if (element) element.innerText = text
+ }
+
+ for (const dependency of ['chrome', 'node', 'electron']) {
+ replaceText(`${dependency}-version`, process.versions[dependency])
+ }
+})
\ No newline at end of file