aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@elliehuxtable.com>2024-05-28 16:28:09 +0100
committerGitHub <noreply@github.com>2024-05-28 16:28:09 +0100
commitb49c73de3eded0a39091b24ef638e786500a2d7b (patch)
tree1bdfa0d0ea124188e4faa1a04e6ca0eff575c961
parentfix: save sync time in daemon (#2051) (diff)
downloadatuin-b49c73de3eded0a39091b24ef638e786500a2d7b.zip
fix(ui): handle being logged out gracefully (#2052)
* fix(ui): handle being logged out gracefully * use settings.logged_in
Diffstat (limited to '')
-rw-r--r--ui/backend/Cargo.lock8
-rw-r--r--ui/backend/src/main.rs30
-rw-r--r--ui/src/pages/Home.tsx5
-rw-r--r--ui/src/state/models.ts2
-rw-r--r--ui/src/state/store.ts11
5 files changed, 34 insertions, 22 deletions
diff --git a/ui/backend/Cargo.lock b/ui/backend/Cargo.lock
index 253a6994..b6eaa4b3 100644
--- a/ui/backend/Cargo.lock
+++ b/ui/backend/Cargo.lock
@@ -5249,9 +5249,9 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.34"
+version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
"itoa 1.0.11",
@@ -5272,9 +5272,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
-version = "0.2.17"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [
"num-conv",
"time-core",
diff --git a/ui/backend/src/main.rs b/ui/backend/src/main.rs
index 1616bff6..551145ee 100644
--- a/ui/backend/src/main.rs
+++ b/ui/backend/src/main.rs
@@ -19,10 +19,10 @@ use dotfiles::aliases::aliases;
#[derive(Debug, serde::Serialize)]
struct HomeInfo {
- pub username: String,
pub record_count: u64,
pub history_count: u64,
- pub last_sync: String,
+ pub username: Option<String>,
+ pub last_sync: Option<String>,
}
#[tauri::command]
@@ -88,38 +88,40 @@ async fn home_info() -> Result<HomeInfo, String> {
.await
.map_err(|e| e.to_string())?;
- let client = atuin_client::api_client::Client::new(
- &settings.sync_address,
- settings.session_token().map_err(|e|e.to_string())?.as_str(),
- settings.network_connect_timeout,
- settings.network_timeout,
- )
- .map_err(|e| e.to_string())?;
let session_path = settings.session_path.as_str();
let last_sync = Settings::last_sync()
.map_err(|e| e.to_string())?
.format(&Rfc3339)
.map_err(|e| e.to_string())?;
+
let record_count = sqlite_store.len_all().await.map_err(|e| e.to_string())?;
let history_count = sqlite_store
.len_tag(HISTORY_TAG)
.await
.map_err(|e| e.to_string())?;
- let info = if !PathBuf::from(session_path).exists() {
+ let info = if settings.logged_in() {
HomeInfo {
- username: String::from(""),
- last_sync: last_sync.to_string(),
+ username: None,
+ last_sync: None,
record_count,
history_count,
}
} else {
+ let client = atuin_client::api_client::Client::new(
+ &settings.sync_address,
+ settings.session_token().map_err(|e|e.to_string())?.as_str(),
+ settings.network_connect_timeout,
+ settings.network_timeout,
+ )
+ .map_err(|e| e.to_string())?;
+
let me = client.me().await.map_err(|e| e.to_string())?;
HomeInfo {
- username: me.username,
- last_sync: last_sync.to_string(),
+ username: Some(me.username),
+ last_sync: Some(last_sync.to_string()),
record_count,
history_count,
}
diff --git a/ui/src/pages/Home.tsx b/ui/src/pages/Home.tsx
index ce42e0b1..93f2bf93 100644
--- a/ui/src/pages/Home.tsx
+++ b/ui/src/pages/Home.tsx
@@ -68,7 +68,10 @@ export default function Home() {
stats={[
{
name: "Last Sync",
- stat: formatRelative(homeInfo.lastSyncTime, new Date()),
+ stat:
+ (homeInfo.lastSyncTime &&
+ formatRelative(homeInfo.lastSyncTime, new Date())) ||
+ "Never",
},
{
name: "Total history records",
diff --git a/ui/src/state/models.ts b/ui/src/state/models.ts
index 193b994d..57db44ae 100644
--- a/ui/src/state/models.ts
+++ b/ui/src/state/models.ts
@@ -11,7 +11,7 @@ export const DefaultUser: User = {
export interface HomeInfo {
historyCount: number;
recordCount: number;
- lastSyncTime: Date;
+ lastSyncTime: Date | null;
}
export const DefaultHomeInfo: HomeInfo = {
diff --git a/ui/src/state/store.ts b/ui/src/state/store.ts
index 56d7b224..5e2570bb 100644
--- a/ui/src/state/store.ts
+++ b/ui/src/state/store.ts
@@ -77,7 +77,7 @@ export const useStore = create<AtuinState>()((set, get) => ({
homeInfo: {
historyCount: res.history_count,
recordCount: res.record_count,
- lastSyncTime: parseISO(res.last_sync),
+ lastSyncTime: (res.last_sync && parseISO(res.last_sync)) || null,
},
});
})
@@ -88,7 +88,14 @@ export const useStore = create<AtuinState>()((set, get) => ({
refreshUser: async () => {
let config = await settings();
- let session = await sessionToken();
+ let session;
+
+ try {
+ session = await sessionToken();
+ } catch (e) {
+ console.log("Not logged in, so not refreshing user");
+ return;
+ }
let url = config.sync_address + "/api/v0/me";
let res = await fetch(url, {