diff --git a/WebServer/static/exchange_client.py b/WebServer/static/exchange_client.py
index 8f6adbe..2f4ab84 100644
--- a/WebServer/static/exchange_client.py
+++ b/WebServer/static/exchange_client.py
@@ -1,10 +1,11 @@
+from typing import Optional, Callable
+
from Crypto.PublicKey.ECC import EccKey
-from src.SantaExchange.Message import Message
-from src.SantaExchange.MessageHandler import MessageHandler
-from src.SantaExchange.SantasBrain import Brain
-from src.SantaExchange.UserInterface import UserInterface
-
+from SantaExchange.Message import Message
+from SantaExchange.MessageHandler import MessageHandler
+from SantaExchange.SantasBrain import Brain
+from SantaExchange.UserInterface import UserInterface
class ExchangeClient(MessageHandler, UserInterface):
def __init__(self, send_message_function, receive_user_function, announce_recipient_function):
@@ -25,4 +26,4 @@ class ExchangeClient(MessageHandler, UserInterface):
self.receive_user_function(name)
def announce_recipient(self, name: str, other_info: str):
- self.announce_recipient_function(name, other_info)
\ No newline at end of file
+ self.announce_recipient_function(name, other_info)
diff --git a/WebServer/static/exchange_worker.js b/WebServer/static/exchange_worker.js
index 208bc2f..0be023f 100644
--- a/WebServer/static/exchange_worker.js
+++ b/WebServer/static/exchange_worker.js
@@ -1,23 +1,56 @@
import "./pyodide.js";
async function prepare() {
+ self.postMessage({type: 'status', stage: 'initialize', text: 'Initializing...'});
let pyodide = await loadPyodide();
await pyodide.loadPackage("pycryptodome");
- await pyodide.loadPackage("./santaexchange-0.1-py3-none-any.whl")
- pyodide.runPython(`
- class Test:
- def calculate(self):
- return 15
+ await pyodide.loadPackage("./santaexchange-0.1-py3-none-any.whl");
+ let response = await fetch('./exchange_client.py');
+ pyodide.runPython(await response.text())
- a = Test()
+ function sendMessage(messageString) {
+ self.postMessage({type: 'message', message: messageString})
+ }
+
+ function receiveUser(username) {
+ self.postMessage({type: 'new_user', username: username})
+ }
+
+ function announceRecipient(recipient_name, recipient_info) {
+ self.postMessage({type: 'status', stage: 'finished', text: `Your secret santa receiver is \n${recipient_name}\n${recipient_info}`})
+ }
+
+ function printLogs(record) {
+ console.log(record);
+ }
+
+ pyodide.globals.set('send_message', sendMessage);
+ pyodide.globals.set('receive_user', receiveUser);
+ pyodide.globals.set('announce_recipient', announceRecipient);
+ pyodide.globals.set('print_logs_function', printLogs);
+
+ pyodide.runPython(`
+ exchange_worker = ExchangeClient(send_message, receive_user, announce_recipient)
`);
- console.log('Running python function');
- console.log(pyodide.globals.get('a').calculate());
-}
-prepare();
+ addEventListener('message', e => {
+ if (e.data.type == 'message') {
+ pyodide.globals.get('exchange_worker').decode_received_message(e.data.message);
+ } else if (e.data.type == 'set_user') {
+ let username = e.data.username;
+ let userinfo = e.data.userinfo;
+ pyodide.globals.get('exchange_worker').set_user_info(username, userinfo);
+ postMessage({type: 'status', stage: 'wait_for_start', text: 'Waiting for other participants'});
+ } else if (e.data.type == 'start') {
+ postMessage({
+ type: 'status',
+ stage: 'exchanging',
+ text: 'Performing exchange when all users have pressed start. This may take a minute or so.'
+ });
+ pyodide.globals.get('exchange_worker').start_exchange(e.data.users);
+ }
+ });
-addEventListener('message', e => {
- self.postMessage('Loading pyodide');
- self.postMessage('Loaded pyodide');
-});
\ No newline at end of file
+ self.postMessage({type: 'status', stage: 'wait_for_user', text: 'Initialized'})
+}
+prepare();
\ No newline at end of file
diff --git a/WebServer/static/style.css b/WebServer/static/style.css
index bd42c2e..05a4f67 100644
--- a/WebServer/static/style.css
+++ b/WebServer/static/style.css
@@ -35,4 +35,5 @@ input {
textarea {
width: 30vw;
height: 20vh;
+ font-size: 20px;
}
\ No newline at end of file
diff --git a/WebServer/templates/exchange.html b/WebServer/templates/exchange.html
index 9e40e07..c077d19 100644
--- a/WebServer/templates/exchange.html
+++ b/WebServer/templates/exchange.html
@@ -12,38 +12,70 @@
-
+
-
Current participants:
- - + const other_users = [] + + let submitButton = document.getElementById('submit_info_button'); + let startButton = document.getElementById('start_exchange_button'); + + submitButton.disabled = true; + startButton.disabled = true; -