Add additive KDBX importer
This commit is contained in:
@@ -60,6 +60,7 @@ pub enum UiAction {
|
||||
GenerateOtp,
|
||||
CopyOtp,
|
||||
ImportOtp,
|
||||
ImportKdbx,
|
||||
ShowOtpUri,
|
||||
CopyOtpUri,
|
||||
ShowOtpQr,
|
||||
@@ -106,6 +107,7 @@ impl UiAction {
|
||||
Self::GenerateOtp => "generate-otp",
|
||||
Self::CopyOtp => "copy-otp",
|
||||
Self::ImportOtp => "import-otp",
|
||||
Self::ImportKdbx => "import-kdbx",
|
||||
Self::ShowOtpUri => "show-otp-uri",
|
||||
Self::CopyOtpUri => "copy-otp-uri",
|
||||
Self::ShowOtpQr => "show-otp-qr",
|
||||
@@ -302,6 +304,12 @@ pub const ACTIONS: &[ActionSpec] = &[
|
||||
spec(UiAction::ShowOtpQr, MenuGroup::Entry, "Show OTP QR", None),
|
||||
spec(UiAction::RemoveOtp, MenuGroup::Entry, "Remove OTP", None),
|
||||
spec(UiAction::GitStatus, MenuGroup::Tools, "Git Status…", None),
|
||||
spec(
|
||||
UiAction::ImportKdbx,
|
||||
MenuGroup::Tools,
|
||||
"Import KeePass Database…",
|
||||
None,
|
||||
),
|
||||
spec(UiAction::GitPull, MenuGroup::Tools, "Pull", None),
|
||||
spec(UiAction::GitPush, MenuGroup::Tools, "Push", None),
|
||||
spec(UiAction::GitSync, MenuGroup::Tools, "Synchronize", None),
|
||||
@@ -454,7 +462,7 @@ pub fn enabled(action: UiAction, context: ActionContext) -> bool {
|
||||
&& !context.switching_vault
|
||||
&& !context.modal_open
|
||||
}
|
||||
UiAction::ImportOtp => {
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx => {
|
||||
context.storage_ready
|
||||
&& context.unlocked
|
||||
&& !context.dirty
|
||||
@@ -623,12 +631,20 @@ pub fn disabled_reason(action: UiAction, context: ActionContext) -> Option<&'sta
|
||||
| UiAction::CopyOtpUri
|
||||
| UiAction::ShowOtpQr
|
||||
| UiAction::RemoveOtp => "Close the current screen first",
|
||||
UiAction::ImportOtp if !context.storage_ready => "Shared configuration is unavailable",
|
||||
UiAction::ImportOtp if !context.unlocked => "Unlock the password store first",
|
||||
UiAction::ImportOtp if context.dirty => "Save or discard the current draft first",
|
||||
UiAction::ImportOtp if context.saving => "Wait for the active save",
|
||||
UiAction::ImportOtp if context.switching_vault => "Wait for vault validation",
|
||||
UiAction::ImportOtp => "Close the current screen first",
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx if !context.storage_ready => {
|
||||
"Shared configuration is unavailable"
|
||||
}
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx if !context.unlocked => {
|
||||
"Unlock the password store first"
|
||||
}
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx if context.dirty => {
|
||||
"Save or discard the current draft first"
|
||||
}
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx if context.saving => "Wait for the active save",
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx if context.switching_vault => {
|
||||
"Wait for vault validation"
|
||||
}
|
||||
UiAction::ImportOtp | UiAction::ImportKdbx => "Close the current screen first",
|
||||
UiAction::GitStatus | UiAction::GitPull | UiAction::GitPush | UiAction::GitSync
|
||||
if !context.storage_ready =>
|
||||
{
|
||||
@@ -695,6 +711,7 @@ pub const fn aliases(action: UiAction) -> &'static [&'static str] {
|
||||
UiAction::GenerateOtp => &["totp", "hotp", "one time password"],
|
||||
UiAction::CopyOtp => &["copy totp", "copy hotp", "otp clipboard"],
|
||||
UiAction::ImportOtp => &["add otp", "scan qr", "import otpauth"],
|
||||
UiAction::ImportKdbx => &["keepass", "kdbx", "import database"],
|
||||
UiAction::ShowOtpUri => &["show otpauth", "otp secret"],
|
||||
UiAction::CopyOtpUri => &["copy otpauth", "copy otp secret"],
|
||||
UiAction::ShowOtpQr => &["otp qr", "export otp"],
|
||||
|
||||
Reference in New Issue
Block a user