From b24bc47076785a6bd1f7b9abfb70025e01decd97 Mon Sep 17 00:00:00 2001 From: Michele Azzolari Date: Wed, 2 Aug 2023 08:16:07 +0200 Subject: [PATCH 1/3] Add new properties to VaultSettingsLocal --- source/shared/symbols.ts | 6 +++++- source/shared/types.ts | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/source/shared/symbols.ts b/source/shared/symbols.ts index 6fbf6302..d1010ca7 100644 --- a/source/shared/symbols.ts +++ b/source/shared/symbols.ts @@ -31,5 +31,9 @@ export const PREFERENCES_DEFAULT: Preferences = { export const VAULT_SETTINGS_DEFAULT: VaultSettingsLocal = { localBackup: false, - localBackupLocation: null + localBackupLocation: null, + biometricForcePasswordMaxInterval: "", + biometricForcePasswordCount: "", + biometricLastManualUnlock: +Infinity, + biometricUnlockCount: 0 }; diff --git a/source/shared/types.ts b/source/shared/types.ts index dacff890..9d714df4 100644 --- a/source/shared/types.ts +++ b/source/shared/types.ts @@ -66,6 +66,10 @@ export interface UpdateProgressInfo { export interface VaultSettingsLocal { localBackup: boolean; localBackupLocation: null | string; + biometricForcePasswordMaxInterval: string; + biometricForcePasswordCount: string; + biometricLastManualUnlock: number; + biometricUnlockCount: number; } export interface VaultSourceDescription { From f0cf9809c0188292731ab4359da186d239813690 Mon Sep 17 00:00:00 2001 From: Michele Azzolari Date: Wed, 2 Aug 2023 08:16:37 +0200 Subject: [PATCH 2/3] VaultSettingsDialog: add new Biometric settings --- .../components/VaultSettingsDialog.tsx | 59 ++++++++++++++++++- source/shared/i18n/translations/en.json | 14 +++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/source/renderer/components/VaultSettingsDialog.tsx b/source/renderer/components/VaultSettingsDialog.tsx index 990c28f8..b963efbe 100644 --- a/source/renderer/components/VaultSettingsDialog.tsx +++ b/source/renderer/components/VaultSettingsDialog.tsx @@ -1,7 +1,21 @@ import React, { Fragment, useCallback, useEffect, useState } from "react"; import styled from "styled-components"; import { useState as useHookState } from "@hookstate/core"; -import { Alignment, Button, ButtonGroup, Callout, Classes, Dialog, FormGroup, Icon, InputGroup, Intent, Switch, Text } from "@blueprintjs/core"; +import { + Alignment, + Button, + ButtonGroup, + Callout, + Classes, + Dialog, + FormGroup, + Icon, + InputGroup, + Intent, + NumericInput, + Switch, + Text +} from "@blueprintjs/core"; import { VaultFormatID, VaultSourceStatus } from "buttercup"; import { ConfirmDialog } from "./prompt/ConfirmDialog"; import { t } from "../../shared/i18n/trans"; @@ -18,6 +32,7 @@ import { convertVaultToFormat } from "../actions/format"; const PAGE_BACKUP = "backup"; const PAGE_FORMAT = "format"; +const PAGE_BIOMETRIC = "biometric"; const ContentNotice = styled.div` margin-top: 12px; @@ -206,6 +221,41 @@ export function VaultSettingsDialog() { ); + const pageBiometric = () => ( + <> + +
+ + + { + setSettings({ + ...naiveClone(settings), + biometricForcePasswordMaxInterval: valueAsString + }) + }} + /> + + + { + setSettings({ + ...naiveClone(settings), + biometricForcePasswordCount: valueAsString + }) + }} + placeholder={t("vault-settings.biometric.enable-password-prompt-count.placeholder")} + value={settings.biometricForcePasswordCount} + /> + + + ) return ( @@ -230,11 +280,18 @@ export function VaultSettingsDialog() { onClick={() => setCurrentPage(PAGE_BACKUP)} text={t("vault-settings.backup.title")} /> + -