11"use client" ;
22
3- import { deletePasswordItem } from "@/app/actions" ;
3+ import { deletePasswordItem , getPasswords } from "@/app/actions" ;
44import { Button } from "@/components/ui/button" ;
55import { Input } from "@/components/ui/input" ;
66import { ScrollArea } from "@/components/ui/scroll-area" ;
@@ -63,13 +63,14 @@ export const VaultPage: React.FC<VaultPageProps> = ({ user }) => {
6363 const [ searchQuery , setSearchQuery ] = useState ( "" ) ;
6464 const [ filteredEntries , setFilteredEntries ] = useState < PasswordEntry [ ] > ( [ ] ) ;
6565 const [ passwords , setPasswords ] = useState < PasswordEntry [ ] > ( [ ] ) ;
66+ const [ passwordItems , setPasswordItems ] = useState ( user ?. passwordItems )
6667
6768 useEffect ( ( ) => {
6869 if ( ! clerkUser ) return ;
6970
70- if ( ! user ?. passwordItems ) return ;
71+ if ( ! user ?. passwordItems || ! passwordItems ) return ;
7172
72- const decryptedPasswords = user . passwordItems
73+ const decryptedPasswords = passwordItems
7374 . map ( ( item ) => ( {
7475 id : item . id ,
7576 name : decrypt ( item . username , clerkUser ) ,
@@ -85,7 +86,7 @@ export const VaultPage: React.FC<VaultPageProps> = ({ user }) => {
8586 ) ;
8687
8788 setPasswords ( decryptedPasswords ) ;
88- } , [ user ?. passwordItems , clerkUser ] ) ;
89+ } , [ user ?. passwordItems , clerkUser , passwordItems ] ) ;
8990
9091 const handleSearchChange = ( e : React . ChangeEvent < HTMLInputElement > ) => {
9192 setSearchQuery ( e . target . value ) ;
@@ -211,8 +212,8 @@ export const VaultPage: React.FC<VaultPageProps> = ({ user }) => {
211212 onClick = { async ( ) => {
212213 try {
213214 await deletePasswordItem ( password . id ) ;
214- router . refresh ( ) ;
215-
215+ const updatedItems = await getPasswords ( user ?. id as string )
216+ setPasswordItems ( updatedItems ?. passwordItems ) ;
216217 if ( selectedEntry ?. id === password . id ) {
217218 setSelectedEntry ( null ) ;
218219 }
@@ -281,10 +282,11 @@ export const VaultPage: React.FC<VaultPageProps> = ({ user }) => {
281282 ) }
282283 < CreatePasswordDialog
283284 open = { isCreateDialogOpen }
284- onClose = { ( ) => {
285+ onClose = { async ( ) => {
285286 setIsCreateDialogOpen ( false ) ;
286- router . refresh ( ) ;
287287 setSelectedEntry ( null ) ;
288+ const userWithPasswords = await getPasswords ( user ?. id as string )
289+ setPasswordItems ( userWithPasswords ?. passwordItems )
288290 } }
289291 />
290292 </ div >
0 commit comments