mirror of
https://github.com/shuaiplus/nodewarden.git
synced 2026-06-20 13:00:39 +00:00
feat: reset password visibility and history state on cipher selection change
This commit is contained in:
@@ -554,7 +554,7 @@ export default function SendsPage(props: SendsPageProps) {
|
|||||||
<button type="button" className="btn btn-secondary small" onClick={() => copyAccessUrl(selectedSend)}>
|
<button type="button" className="btn btn-secondary small" onClick={() => copyAccessUrl(selectedSend)}>
|
||||||
<Copy size={14} className="btn-icon" /> {t('txt_copy_link')}
|
<Copy size={14} className="btn-icon" /> {t('txt_copy_link')}
|
||||||
</button>
|
</button>
|
||||||
<button type="button" className="btn btn-secondary small" onClick={() => { setDraft(draftFromSend(selectedSend)); setIsCreating(false); setIsEditing(true); }}>
|
<button type="button" className="btn btn-secondary small" onClick={() => { setDraft(draftFromSend(selectedSend)); setIsCreating(false); setIsEditing(true); setShowPassword(false); }}>
|
||||||
<Pencil size={14} className="btn-icon" /> {t('txt_edit')}
|
<Pencil size={14} className="btn-icon" /> {t('txt_edit')}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -263,6 +263,8 @@ export default function VaultPage(props: VaultPageProps) {
|
|||||||
setRepromptApprovedCipherId(null);
|
setRepromptApprovedCipherId(null);
|
||||||
setRepromptPassword('');
|
setRepromptPassword('');
|
||||||
setRepromptOpen(false);
|
setRepromptOpen(false);
|
||||||
|
setShowPassword(false);
|
||||||
|
setHiddenFieldVisibleMap({});
|
||||||
}, [selectedCipherId]);
|
}, [selectedCipherId]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -516,6 +518,7 @@ const folderName = useCallback((id: string | null | undefined): string => {
|
|||||||
setCreateMenuOpen(false);
|
setCreateMenuOpen(false);
|
||||||
setSelectedCipherId('');
|
setSelectedCipherId('');
|
||||||
setShowPassword(false);
|
setShowPassword(false);
|
||||||
|
setHiddenFieldVisibleMap({});
|
||||||
setLocalError('');
|
setLocalError('');
|
||||||
setAttachmentQueue([]);
|
setAttachmentQueue([]);
|
||||||
setRemovedAttachmentIds({});
|
setRemovedAttachmentIds({});
|
||||||
@@ -530,6 +533,7 @@ const folderName = useCallback((id: string | null | undefined): string => {
|
|||||||
setIsCreating(false);
|
setIsCreating(false);
|
||||||
setIsEditing(true);
|
setIsEditing(true);
|
||||||
setShowPassword(false);
|
setShowPassword(false);
|
||||||
|
setHiddenFieldVisibleMap({});
|
||||||
setLocalError('');
|
setLocalError('');
|
||||||
setAttachmentQueue([]);
|
setAttachmentQueue([]);
|
||||||
setRemovedAttachmentIds({});
|
setRemovedAttachmentIds({});
|
||||||
@@ -542,6 +546,8 @@ const folderName = useCallback((id: string | null | undefined): string => {
|
|||||||
setDraft(null);
|
setDraft(null);
|
||||||
setIsEditing(false);
|
setIsEditing(false);
|
||||||
setIsCreating(false);
|
setIsCreating(false);
|
||||||
|
setShowPassword(false);
|
||||||
|
setHiddenFieldVisibleMap({});
|
||||||
setLocalError('');
|
setLocalError('');
|
||||||
setAttachmentQueue([]);
|
setAttachmentQueue([]);
|
||||||
setRemovedAttachmentIds({});
|
setRemovedAttachmentIds({});
|
||||||
@@ -971,6 +977,8 @@ const folderName = useCallback((id: string | null | undefined): string => {
|
|||||||
}
|
}
|
||||||
setSelectedCipherId(cipherId);
|
setSelectedCipherId(cipherId);
|
||||||
setRepromptApprovedCipherId(null);
|
setRepromptApprovedCipherId(null);
|
||||||
|
setShowPassword(false);
|
||||||
|
setHiddenFieldVisibleMap({});
|
||||||
if (isMobileLayout) setMobilePanel('detail');
|
if (isMobileLayout) setMobilePanel('detail');
|
||||||
setMobileSidebarOpen(false);
|
setMobileSidebarOpen(false);
|
||||||
}, [isEditing, isCreating, cancelEdit, isMobileLayout]);
|
}, [isEditing, isCreating, cancelEdit, isMobileLayout]);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { createPortal } from 'preact/compat';
|
import { createPortal } from 'preact/compat';
|
||||||
import { useMemo, useState } from 'preact/hooks';
|
import { useEffect, useMemo, useState } from 'preact/hooks';
|
||||||
import { Archive, Clipboard, Download, Eye, EyeOff, ExternalLink, Folder, Paperclip, Pencil, RotateCcw, Trash2, X } from 'lucide-preact';
|
import { Archive, Clipboard, Download, Eye, EyeOff, ExternalLink, Folder, Paperclip, Pencil, RotateCcw, Trash2, X } from 'lucide-preact';
|
||||||
import { useDialogLifecycle } from '@/components/ConfirmDialog';
|
import { useDialogLifecycle } from '@/components/ConfirmDialog';
|
||||||
import type { Cipher } from '@/lib/types';
|
import type { Cipher } from '@/lib/types';
|
||||||
@@ -92,6 +92,10 @@ export default function VaultDetailView(props: VaultDetailViewProps) {
|
|||||||
.filter((entry) => entry.password.trim()),
|
.filter((entry) => entry.password.trim()),
|
||||||
[props.selectedCipher.passwordHistory]
|
[props.selectedCipher.passwordHistory]
|
||||||
);
|
);
|
||||||
|
useEffect(() => {
|
||||||
|
setShowSshPrivateKey(false);
|
||||||
|
setPasswordHistoryOpen(false);
|
||||||
|
}, [props.selectedCipher.id]);
|
||||||
const formatDownloadLabel = (attachmentId: string) => {
|
const formatDownloadLabel = (attachmentId: string) => {
|
||||||
const downloadKey = `${props.selectedCipher.id}:${attachmentId}`;
|
const downloadKey = `${props.selectedCipher.id}:${attachmentId}`;
|
||||||
if (props.downloadingAttachmentKey !== downloadKey) return t('txt_download');
|
if (props.downloadingAttachmentKey !== downloadKey) return t('txt_download');
|
||||||
|
|||||||
Reference in New Issue
Block a user