diff --git a/desktop/pages/index.vue b/desktop/pages/index.vue
index cc340bc4..10332f7f 100644
--- a/desktop/pages/index.vue
+++ b/desktop/pages/index.vue
@@ -1 +1,5 @@
-
+{{state}}
+
+
\ No newline at end of file
diff --git a/desktop/src-tauri/src/auth.rs b/desktop/src-tauri/src/auth.rs
index d0ff6f80..d71fdd13 100644
--- a/desktop/src-tauri/src/auth.rs
+++ b/desktop/src-tauri/src/auth.rs
@@ -185,7 +185,6 @@ pub fn setup() -> Result<(AppStatus, Option), Error> {
let user_result = fetch_user();
if user_result.is_err() {
return Ok((AppStatus::SignedInNeedsReauth, None));
-
}
return Ok((AppStatus::SignedIn, Some(user_result.unwrap())))
}
diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs
index fadfc0c8..c2402914 100644
--- a/desktop/src-tauri/src/lib.rs
+++ b/desktop/src-tauri/src/lib.rs
@@ -12,7 +12,7 @@ use std::{
use auth::{auth_initiate, recieve_handshake};
use data::DatabaseInterface;
use log::info;
-use remote::use_remote;
+use remote::{gen_drop_url, open_url, use_remote};
use serde::{Deserialize, Serialize};
use structured_logger::{json::new_writer, Builder};
use tauri_plugin_deep_link::DeepLinkExt;
@@ -24,10 +24,16 @@ pub enum AppStatus {
SignedIn,
SignedInNeedsReauth,
}
-#[derive(Clone, Copy, Serialize, Deserialize)]
-pub struct User {}
+#[derive(Clone, Serialize, Deserialize)]
+pub struct User {
+ id: String,
+ username: String,
+ admin: bool,
+ displayName: String,
+ profilePicture: String,
+}
-#[derive(Clone, Copy, Serialize)]
+#[derive(Clone, Serialize)]
pub struct AppState {
status: AppStatus,
user: Option,
@@ -83,7 +89,9 @@ pub fn run() {
.invoke_handler(tauri::generate_handler![
fetch_state,
auth_initiate,
- use_remote
+ use_remote,
+ gen_drop_url,
+ open_url,
])
.plugin(tauri_plugin_shell::init())
.setup(|app| {
diff --git a/desktop/src-tauri/src/remote.rs b/desktop/src-tauri/src/remote.rs
index d02770bc..c95f2e44 100644
--- a/desktop/src-tauri/src/remote.rs
+++ b/desktop/src-tauri/src/remote.rs
@@ -4,7 +4,9 @@ use std::{
};
use log::{info, warn};
+use openssl::x509::store::HashDir;
use serde::Deserialize;
+use tauri::async_runtime::handle;
use url::Url;
use crate::{AppState, AppStatus, DB};
@@ -59,3 +61,26 @@ pub async fn use_remote<'a>(
return Ok(());
}
+
+#[tauri::command]
+pub fn open_url(path: String) -> Result<(), String> {
+ webbrowser::open(&path).unwrap();
+ Ok(())
+}
+
+#[tauri::command]
+pub fn gen_drop_url(app: tauri::AppHandle, path: String) -> Result {
+ let base_url = {
+ let handle = DB.borrow_data().unwrap();
+
+ if handle.base_url.is_empty() {
+ return Ok("".to_string());
+ };
+
+ Url::parse(&handle.base_url).unwrap()
+ };
+
+ let url = base_url.join(&path).unwrap();
+
+ return Ok(url.to_string());
+}
diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json
index c7c49541..e361ef08 100644
--- a/desktop/src-tauri/tauri.conf.json
+++ b/desktop/src-tauri/tauri.conf.json
@@ -1,6 +1,6 @@
{
"$schema": "https://schema.tauri.app/config/2.0.0",
- "productName": "drop",
+ "productName": "Drop Desktop Client",
"version": "0.1.0",
"identifier": "dev.drop.app",
"build": {
diff --git a/desktop/types.d.ts b/desktop/types.d.ts
index 32c2816a..9b7405cc 100644
--- a/desktop/types.d.ts
+++ b/desktop/types.d.ts
@@ -1,6 +1,20 @@
+export type AppState = {
+ status: AppStatus;
+ user?: User;
+};
+
export enum AppStatus {
- NotConfigured = "NotConfigured",
- SignedOut = "SignedOut",
- SignedIn = "SignedIn",
- SignedInNeedsReauth = "SignedInNeedsReauth",
-}
\ No newline at end of file
+ NotConfigured = "NotConfigured",
+ SignedOut = "SignedOut",
+ SignedIn = "SignedIn",
+ SignedInNeedsReauth = "SignedInNeedsReauth",
+}
+
+export type User = {
+ id: string;
+ username: string;
+ admin: boolean;
+ email: string;
+ displayName: string;
+ profilePicture: string;
+};