diff --git a/package-lock.json b/package-lock.json index 4a35a6c..3f3e66e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@tauri-apps/api": "^1.5.6", + "qr-scanner": "^1.4.2", "qrcode": "^1.5.3" }, "devDependencies": { @@ -1297,6 +1298,11 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/offscreencanvas": { + "version": "2019.7.3", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" + }, "node_modules/@types/pug": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", @@ -3648,6 +3654,14 @@ "node": ">=6" } }, + "node_modules/qr-scanner": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/qr-scanner/-/qr-scanner-1.4.2.tgz", + "integrity": "sha512-kV1yQUe2FENvn59tMZW6mOVfpq9mGxGf8l6+EGaXUOd4RBOLg7tRC83OrirM5AtDvZRpdjdlXURsHreAOSPOUw==", + "dependencies": { + "@types/offscreencanvas": "^2019.6.4" + } + }, "node_modules/qrcode": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", diff --git a/package.json b/package.json index 5d03c7a..ebd345e 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "type": "module", "dependencies": { "@tauri-apps/api": "^1.5.6", + "qr-scanner": "^1.4.2", "qrcode": "^1.5.3" } } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index e7acb26..ccfd171 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -209,3 +209,11 @@ fn open_file(file: PathBuf) -> Result<(), InvokeError> { open::that(file) .map_err(|e| InvokeError::from_anyhow(anyhow::anyhow!("failed to open file: {}", e))) } + +#[tauri::command] +fn is_valid_ticket(ticket: String) -> Result { + let ticket = BlobTicket::from_str(&ticket) + .map_err(|e| InvokeError::from_anyhow(anyhow::anyhow!("failed to parse ticket: {}", e)))?; + + Ok(ticket.format() == BlobFormat::HashSeq) +} diff --git a/src/routes/transfers/recieve/+page.svelte b/src/routes/transfers/recieve/+page.svelte index 4e7b639..45539b9 100644 --- a/src/routes/transfers/recieve/+page.svelte +++ b/src/routes/transfers/recieve/+page.svelte @@ -1,36 +1,68 @@ -
+
-

Temporary Page

- -
- Enter Hash Code - - -
+ diff --git a/src/routes/transfers/recieve/confirm/+page.svelte b/src/routes/transfers/recieve/confirm/+page.svelte index dc3c2c6..a98a42c 100644 --- a/src/routes/transfers/recieve/confirm/+page.svelte +++ b/src/routes/transfers/recieve/confirm/+page.svelte @@ -6,6 +6,12 @@ export let data; + let isValidHash = invoke('is_valid_ticket', { ticket: data.hash }); + + if (!isValidHash) { + goto('/transfers'); + } + let codes = [data.confirmationCode]; while (codes.length < 3) { diff --git a/src/routes/transfers/transferring/+page.svelte b/src/routes/transfers/transferring/+page.svelte index beba3f3..d07b68c 100644 --- a/src/routes/transfers/transferring/+page.svelte +++ b/src/routes/transfers/transferring/+page.svelte @@ -31,7 +31,6 @@ responseData = await invoke('recieve_files', { ticket: data.ticket }); - console.log(responseData); time_complete = Date.now() - time; done = true; });