summaryrefslogtreecommitdiff
path: root/src/model/utility.rs
diff options
context:
space:
mode:
authorjelemux <jeremias.weber@protonmail.com>2021-02-11 12:07:22 +0100
committerjelemux <jeremias.weber@protonmail.com>2021-02-11 12:07:22 +0100
commit0660151a8b641fa0a23dde2598132029970f7ae4 (patch)
tree0bdeb1108419add4570f278795f0bfd0f5366856 /src/model/utility.rs
parent036a567bae8346eb38f9237f59645dbcc4f1cd8c (diff)
downloadwasm-card-0660151a8b641fa0a23dde2598132029970f7ae4.tar.gz
wasm-card-0660151a8b641fa0a23dde2598132029970f7ae4.tar.bz2
refactoring - reduced code size by about a third
Diffstat (limited to 'src/model/utility.rs')
-rw-r--r--src/model/utility.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/model/utility.rs b/src/model/utility.rs
new file mode 100644
index 0000000..617ee45
--- /dev/null
+++ b/src/model/utility.rs
@@ -0,0 +1,45 @@
+#[derive(Clone)]
+pub struct Download {
+ pub file_name: String,
+ pub content: String,
+ pub mime_type: MimeType,
+}
+
+impl Download {
+ pub fn as_data_link(&self) -> String {
+ let data = base64::encode(&*self.content);
+ let uri_component: String = js_sys::encode_uri_component(&data).into();
+
+ format!("data:{};base64,{}", self.mime_type.as_text(), uri_component)
+ }
+}
+
+#[derive(Clone, Copy)]
+pub enum MimeType {
+ PDF,
+ VCard,
+ SVG,
+}
+
+impl MimeType {
+ pub fn as_text(&self) -> &str {
+ match self {
+ MimeType::PDF => "application/pdf",
+ MimeType::VCard => "text/vcard",
+ MimeType::SVG => "image/svg+xml",
+ }
+ }
+}
+
+#[derive(Clone, Copy, PartialEq)]
+pub enum DownloadOption {
+ PDF,
+ VCard,
+ QrCode,
+}
+
+#[derive(Clone, Debug, PartialEq)]
+pub struct File {
+ pub name: String,
+ pub content: String,
+}