minor tweaks
This commit is contained in:
parent
e746963052
commit
913148a75a
@ -90,7 +90,7 @@ pub fn set_auto_launch(is_configured: bool) -> Result<(), SetupError> {
|
|||||||
|
|
||||||
|
|
||||||
pub fn get_or_create_db_path() -> Result<PathBuf, DataDirError> {
|
pub fn get_or_create_db_path() -> Result<PathBuf, DataDirError> {
|
||||||
if cfg!(debug_assertions) {
|
if cfg!(debug_assertions) && std::env::var("HOME").is_ok() {
|
||||||
return Ok(PathBuf::from("./creddy.db"));
|
return Ok(PathBuf::from("./creddy.db"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,43 +69,17 @@ pub struct AppState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AppState {
|
impl AppState {
|
||||||
pub fn new(config: AppConfig, session: Session, server: Server, pool: SqlitePool) -> AppState {
|
pub fn new(config: AppConfig, session: Session, server: Server, pool: SqlitePool) -> AppState {
|
||||||
AppState {
|
AppState {
|
||||||
config: RwLock::new(config),
|
config: RwLock::new(config),
|
||||||
session: RwLock::new(session),
|
session: RwLock::new(session),
|
||||||
request_count: RwLock::new(0),
|
request_count: RwLock::new(0),
|
||||||
open_requests: RwLock::new(HashMap::new()),
|
open_requests: RwLock::new(HashMap::new()),
|
||||||
bans: RwLock::new(HashSet::new()),
|
bans: RwLock::new(HashSet::new()),
|
||||||
server: RwLock::new(server),
|
server: RwLock::new(server),
|
||||||
pool,
|
pool,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// pub async fn load(app_handle: AppHandle) -> Result<Self, SetupError> {
|
|
||||||
// let conn_opts = SqliteConnectOptions::new()
|
|
||||||
// .filename(config::get_or_create_db_path())
|
|
||||||
// .create_if_missing(true);
|
|
||||||
// let pool_opts = SqlitePoolOptions::new();
|
|
||||||
|
|
||||||
// let pool: SqlitePool = pool_opts.connect_with(conn_opts).await?;
|
|
||||||
// sqlx::migrate!().run(&pool).await?;
|
|
||||||
|
|
||||||
// let creds = Self::load_creds(&pool).await?;
|
|
||||||
// let conf = AppConfig::load(&pool).await?;
|
|
||||||
// let server = Server::new(conf.listen_addr, conf.listen_port, app_handle)?;
|
|
||||||
|
|
||||||
// let state = AppState {
|
|
||||||
// config: RwLock::new(conf),
|
|
||||||
// session: RwLock::new(creds),
|
|
||||||
// request_count: RwLock::new(0),
|
|
||||||
// open_requests: RwLock::new(HashMap::new()),
|
|
||||||
// bans: RwLock::new(HashSet::new()),
|
|
||||||
// server: RwLock::new(server),
|
|
||||||
// pool,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// Ok(state)
|
|
||||||
// }
|
|
||||||
|
|
||||||
pub async fn load_creds(pool: &SqlitePool) -> Result<Session, SetupError> {
|
pub async fn load_creds(pool: &SqlitePool) -> Result<Session, SetupError> {
|
||||||
let res = sqlx::query!("SELECT * FROM credentials ORDER BY created_at desc")
|
let res = sqlx::query!("SELECT * FROM credentials ORDER BY created_at desc")
|
||||||
@ -313,9 +287,8 @@ pub fn new(config: AppConfig, session: Session, server: Server, pool: SqlitePool
|
|||||||
expiration,
|
expiration,
|
||||||
};
|
};
|
||||||
|
|
||||||
if cfg!(debug_assertions) {
|
#[cfg(debug_assertions)]
|
||||||
println!("Got new session:\n{}", serde_json::to_string(&session_creds).unwrap());
|
println!("Got new session:\n{}", serde_json::to_string(&session_creds).unwrap());
|
||||||
}
|
|
||||||
|
|
||||||
*app_session = Session::Unlocked(session_creds);
|
*app_session = Session::Unlocked(session_creds);
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import { slide } from 'svelte/transition';
|
import { slide } from 'svelte/transition';
|
||||||
|
|
||||||
let extraClasses;
|
let extraClasses = "";
|
||||||
export {extraClasses as class};
|
export {extraClasses as class};
|
||||||
export let slideDuration = 150;
|
export let slideDuration = 150;
|
||||||
let animationClass = "";
|
let animationClass = "";
|
||||||
|
@ -27,12 +27,10 @@
|
|||||||
<div class="flex flex-col h-screen items-center justify-center p-4 space-y-4">
|
<div class="flex flex-col h-screen items-center justify-center p-4 space-y-4">
|
||||||
{#await invoke('get_session_status') then status}
|
{#await invoke('get_session_status') then status}
|
||||||
{#if status === 'locked'}
|
{#if status === 'locked'}
|
||||||
<!-- <img src={closedPadlockUrl} alt="A locked padlock" class="w-32" /> -->
|
|
||||||
|
|
||||||
{@html vaultDoorSvg}
|
{@html vaultDoorSvg}
|
||||||
|
|
||||||
<h2 class="text-2xl font-bold">Creddy is locked</h2>
|
<h2 class="text-2xl font-bold">Creddy is locked</h2>
|
||||||
<Link target="Unlock" class="w-64">
|
<Link target="Unlock" hotkey="Enter" class="w-64">
|
||||||
<button class="btn btn-primary w-full">Unlock</button>
|
<button class="btn btn-primary w-full">Unlock</button>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
@ -43,7 +41,7 @@
|
|||||||
{:else if status === 'empty'}
|
{:else if status === 'empty'}
|
||||||
{@html vaultDoorSvg}
|
{@html vaultDoorSvg}
|
||||||
<h2 class="text-2xl font-bold">No credentials found</h2>
|
<h2 class="text-2xl font-bold">No credentials found</h2>
|
||||||
<Link target="EnterCredentials" class="w-64">
|
<Link target="EnterCredentials" hotkey="Enter" class="w-64">
|
||||||
<button class="btn btn-primary w-full">Enter Credentials</button>
|
<button class="btn btn-primary w-full">Enter Credentials</button>
|
||||||
</Link>
|
</Link>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { invoke } from '@tauri-apps/api/tauri';
|
import { invoke } from '@tauri-apps/api/tauri';
|
||||||
|
import { onMount } from 'svelte';
|
||||||
|
|
||||||
import { appState } from '../lib/state.js';
|
import { appState } from '../lib/state.js';
|
||||||
import { navigate } from '../lib/routing.js';
|
import { navigate } from '../lib/routing.js';
|
||||||
@ -11,7 +12,14 @@
|
|||||||
let errorMsg = null;
|
let errorMsg = null;
|
||||||
let alert;
|
let alert;
|
||||||
let passphrase = '';
|
let passphrase = '';
|
||||||
|
let loadTime = 0;
|
||||||
async function unlock() {
|
async function unlock() {
|
||||||
|
// The hotkey for navigating here from homepage is Enter, which also
|
||||||
|
// happens to trigger the form submit event
|
||||||
|
if (Date.now() - loadTime < 10) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let r = await invoke('unlock', {passphrase});
|
let r = await invoke('unlock', {passphrase});
|
||||||
$appState.credentialStatus = 'unlocked';
|
$appState.credentialStatus = 'unlocked';
|
||||||
@ -37,6 +45,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
loadTime = Date.now();
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
@ -47,6 +59,7 @@
|
|||||||
<ErrorAlert bind:this="{alert}">{errorMsg}</ErrorAlert>
|
<ErrorAlert bind:this="{alert}">{errorMsg}</ErrorAlert>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<!-- svelte-ignore a11y-autofocus -->
|
||||||
<input autofocus name="password" type="password" placeholder="correct horse battery staple" bind:value="{passphrase}" class="input input-bordered" />
|
<input autofocus name="password" type="password" placeholder="correct horse battery staple" bind:value="{passphrase}" class="input input-bordered" />
|
||||||
|
|
||||||
<input type="submit" class="btn btn-primary" />
|
<input type="submit" class="btn btn-primary" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user