add support for random store

This commit is contained in:
2022-09-15 21:20:07 +02:00
parent 0616d4af65
commit 2a8d6afc88
6 changed files with 34 additions and 9 deletions
+2
View File
@@ -22,11 +22,13 @@
<div class="col-md-4"> <div class="col-md-4">
<label name="store" for="store_selector">目标商店</label> <label name="store" for="store_selector">目标商店</label>
<select name="store_list" id="store_selector"> <select name="store_list" id="store_selector">
<option value="random">随机</option>
<option value="faubourg">Hermès Faubourg Saint-Honoré</option> <option value="faubourg">Hermès Faubourg Saint-Honoré</option>
<option value="georgev">Hermès George V</option> <option value="georgev">Hermès George V</option>
<option value="sevres">Hermès Sèvres</option> <option value="sevres">Hermès Sèvres</option>
</select> </select>
</div> </div>
<div id="device_list"/>
<br/> <br/>
<button id="start_book_btn">开始约会 <button id="start_book_btn">开始约会
</button> </button>
+9
View File
@@ -1,4 +1,5 @@
const {app, BrowserWindow, ipcMain} = require('electron') const {app, BrowserWindow, ipcMain} = require('electron')
const {_android: android} = require('playwright');
const startBookWithNumbers = require('./src/appointment') const startBookWithNumbers = require('./src/appointment')
const path = require("path"); const path = require("path");
@@ -17,6 +18,7 @@ const createWindow = () => {
ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore) => { ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore) => {
startBook(startNumber, endNumber, selectedStore) startBook(startNumber, endNumber, selectedStore)
}) })
ipcMain.handle('scan-devices', scanDevices)
win.webContents.openDevTools(); win.webContents.openDevTools();
} }
@@ -40,5 +42,12 @@ function startBook(startNumber, endNumber, selectedStore) {
}) })
} }
async function scanDevices() {
let deviceList = await android.devices()
return deviceList.map((item) => {
return [item.model(), item.serial()]
})
}
+2 -2
View File
@@ -1,6 +1,6 @@
const {contextBridge, ipcRenderer} = require('electron') const {contextBridge, ipcRenderer} = require('electron')
contextBridge.exposeInMainWorld('appointment', { contextBridge.exposeInMainWorld('appointment', {
startBook: (startNumber, endNumber, selectedStore) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore) startBook: (startNumber, endNumber, selectedStore) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore),
scanDevices: () => ipcRenderer.invoke('scan-devices')
}) })
+12
View File
@@ -3,6 +3,18 @@ let endNumber = 0;
let selectedStore = 'faubourg'; let selectedStore = 'faubourg';
window.addEventListener('load', () => { window.addEventListener('load', () => {
window.appointment.scanDevices().then((deviceList) => {
// Make the list
let listElement = document.getElementById('device_list');
for (i = 0; i < deviceList.length; ++i) {
// Create an item for each one
let listItem = document.createElement('li');
// Add the item text
listItem.innerHTML = deviceList[i].join(" : ");
// Add listItem to the listElement
listElement.appendChild(listItem);
}
})
document.getElementById("start_book_btn").addEventListener('click', () => { document.getElementById("start_book_btn").addEventListener('click', () => {
window.appointment.startBook(startNumber, endNumber, selectedStore) window.appointment.startBook(startNumber, endNumber, selectedStore)
}) })
+2 -2
View File
@@ -35,8 +35,8 @@ async function needToBook(contact, mongoManager) {
} }
async function startBook(contactPojo, device, selectedStore) { async function startBook(contactPojo, device, selectedStore) {
console.log(`Model: ${device.model()}`); console.log(`型号: ${device.model()}`);
console.log(`Serial: ${device.serial()}`); console.log(`序列号: ${device.serial()}`);
if (await needToBook(contactPojo, mongoManager)) { if (await needToBook(contactPojo, mongoManager)) {
let commandor = new CommandorPage(contactPojo, device, mongoManager, selectedStore); let commandor = new CommandorPage(contactPojo, device, mongoManager, selectedStore);
//read contacts form excel //read contacts form excel
+2
View File
@@ -196,11 +196,13 @@ class CommandorPage {
async chooseStore(page) { async chooseStore(page) {
try { try {
if (!page.isClosed()) { if (!page.isClosed()) {
if (selectedStore !== "random") {
await page.locator(PREFER_STORE).focus() await page.locator(PREFER_STORE).focus()
await delay(1000) await delay(1000)
await page.click(PREFER_STORE); await page.click(PREFER_STORE);
await page.selectOption(PREFER_STORE, this.selectedStore); await page.selectOption(PREFER_STORE, this.selectedStore);
} }
}
} catch (e) { } catch (e) {
console.log(e); console.log(e);
this.isTerminated = true; this.isTerminated = true;