about summary refs log tree commit diff
path: root/corp/rih/frontend
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2023-06-09T12·52+0300
committertazjin <tazjin@tvl.su>2023-06-10T11·23+0000
commita970de336574e046e63763d93f9a70d5b1e8464b (patch)
treea700d4c1a983bd4a4be24b50c84d39351c732fdb /corp/rih/frontend
parentd925ec34cd6625b211c4f5dfe66937d7f3d6a0d6 (diff)
feat(corp/rih): add UUIDs to records from frontend r/6254
This UUID stays the same even if a user submits the form multiple
times (unless they edit it manually in local storage, of course).

Change-Id: I4190fbfeb1027ce8a8d87bc283099539e8722b39
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8733
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Diffstat (limited to 'corp/rih/frontend')
-rw-r--r--corp/rih/frontend/Cargo.lock11
-rw-r--r--corp/rih/frontend/Cargo.toml1
-rw-r--r--corp/rih/frontend/src/main.rs10
3 files changed, 21 insertions, 1 deletions
diff --git a/corp/rih/frontend/Cargo.lock b/corp/rih/frontend/Cargo.lock
index b9d5c9c330d8..9be2ab384b43 100644
--- a/corp/rih/frontend/Cargo.lock
+++ b/corp/rih/frontend/Cargo.lock
@@ -1092,6 +1092,7 @@ dependencies = [
  "serde_json",
  "serde_urlencoded",
  "static_markdown",
+ "uuid",
  "wasm-bindgen",
  "wasm-bindgen-futures",
  "web-sys",
@@ -1466,6 +1467,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
+name = "uuid"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2"
+dependencies = [
+ "getrandom",
+ "serde",
+]
+
+[[package]]
 name = "version_check"
 version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/corp/rih/frontend/Cargo.toml b/corp/rih/frontend/Cargo.toml
index 1ef53bb5d3f6..2f58274566c6 100644
--- a/corp/rih/frontend/Cargo.toml
+++ b/corp/rih/frontend/Cargo.toml
@@ -20,6 +20,7 @@ wasm-bindgen-futures = "0.4"
 
 # needs to be in sync with nixpkgs
 wasm-bindgen = "= 0.2.84"
+uuid = { version = "1.3.3", features = ["v4", "serde"] }
 
 [dependencies.serde]
 version = "*" # pinned by yew
diff --git a/corp/rih/frontend/src/main.rs b/corp/rih/frontend/src/main.rs
index 9b7e38422ac2..efccaaece287 100644
--- a/corp/rih/frontend/src/main.rs
+++ b/corp/rih/frontend/src/main.rs
@@ -10,6 +10,7 @@ use rand::thread_rng;
 use serde::{Deserialize, Serialize};
 use static_markdown::markdown;
 use std::collections::BTreeSet;
+use uuid::Uuid;
 use wasm_bindgen::closure::Closure;
 use wasm_bindgen::{JsCast, JsValue};
 use web_sys::{HtmlInputElement, HtmlTextAreaElement, KeyboardEvent};
@@ -94,6 +95,9 @@ enum Route {
 /// primary data structure we want to populate and persist somewhere.
 #[derive(Clone, Default, Debug, Deserialize, Serialize)]
 struct Record {
+    // Record-specific metadata
+    uuid: Uuid,
+
     // Personal information
     name: String,
     email: String,
@@ -362,7 +366,11 @@ impl Component for App {
 
     fn create(ctx: &Context<Self>) -> Self {
         App {
-            record: LocalStorage::get("record").unwrap_or_default(),
+            record: LocalStorage::get("record").unwrap_or_else(|_| {
+                let mut new_record = Record::default();
+                new_record.uuid = Uuid::new_v4();
+                new_record
+            }),
             citizenship_focus: false,
             citizenship_query: String::default(),
             history: BrowserHistory::default(),