55import burp .api .montoya .ui .editor .HttpResponseEditor ;
66import burp .gui .ToastNotification .MessageType ;
77import burp .models .RequestBin ;
8+ import burp .util .StorageFileUtils ;
89import interactsh .InteractshEntry ;
910
1011import javax .swing .*;
@@ -630,7 +631,7 @@ private List<InteractshEntry> getPersistedInteractionsFromStorage() {
630631
631632 String userHome = System .getProperty ("user.home" );
632633 java .io .File storageDir = new java .io .File (userHome , ".requestbin-collaborator" );
633- java .io .File dataFile = new java . io . File (storageDir , "interactions-" + bin .getUniqueId () + ".json" );
634+ java .io .File dataFile = StorageFileUtils . interactionsFile (storageDir , bin .getUniqueId ());
634635
635636 if (!dataFile .exists ()) {
636637 api .logging ().logToOutput ("[BinTab] No persisted interactions file for bin: " + bin .getName ());
@@ -824,7 +825,7 @@ private void updateViewedStatusInStorage(java.util.Set<String> entryKeys) {
824825
825826 String userHome = System .getProperty ("user.home" );
826827 java .io .File storageDir = new java .io .File (userHome , ".requestbin-collaborator" );
827- java .io .File dataFile = new java . io . File (storageDir , "interactions-" + bin .getUniqueId () + ".json" );
828+ java .io .File dataFile = StorageFileUtils . interactionsFile (storageDir , bin .getUniqueId ());
828829
829830 if (!dataFile .exists ()) {
830831 return ;
@@ -999,40 +1000,57 @@ private void clearLog() {
9991000 // Update empty state (switch to empty view)
10001001 updateEmptyState ();
10011002
1002- // Delete persistence file
1003- deletePersistenceFile ();
1004-
1005- ToastNotification .showToast (this , "✓ Log cleared and persistence file deleted" , MessageType .SUCCESS );
1003+ // Delete persistence file in background to avoid blocking EDT
1004+ deletePersistenceFileAsync ();
10061005 }
10071006 }
10081007
10091008 /**
10101009 * Delete the persistence file for this bin
10111010 */
1012- private void deletePersistenceFile () {
1011+ private void deletePersistenceFileAsync () {
1012+ Thread deletionThread = new Thread (() -> {
1013+ boolean deleted = deletePersistenceFile ();
1014+ SwingUtilities .invokeLater (() -> {
1015+ if (deleted ) {
1016+ ToastNotification .showToast (this , "✓ Log cleared and persistence file deleted" , MessageType .SUCCESS );
1017+ } else {
1018+ ToastNotification .showToast (this , "✓ Log cleared (persistence file was unchanged)" , MessageType .WARNING );
1019+ }
1020+ });
1021+ }, "requestbin-delete-persistence" );
1022+ deletionThread .setDaemon (true );
1023+ deletionThread .start ();
1024+ }
1025+
1026+ private boolean deletePersistenceFile () {
10131027 try {
10141028 if (bin .getUniqueId () == null || bin .getUniqueId ().isEmpty ()) {
10151029 api .logging ().logToError ("Cannot delete persistence file: bin has no unique ID" );
1016- return ;
1030+ return false ;
10171031 }
10181032
10191033 // Use same path as updateViewedStatusInStorage method
10201034 String userHome = System .getProperty ("user.home" );
10211035 File storageDir = new File (userHome , ".requestbin-collaborator" );
1022- File persistenceFile = new File (storageDir , "interactions-" + bin .getUniqueId () + ".json" );
1036+ File persistenceFile = StorageFileUtils . interactionsFile (storageDir , bin .getUniqueId ());
10231037
10241038 if (persistenceFile .exists ()) {
10251039 boolean deleted = persistenceFile .delete ();
10261040 if (deleted ) {
10271041 api .logging ().logToOutput ("Deleted persistence file: " + persistenceFile .getAbsolutePath ());
1042+ return true ;
10281043 } else {
10291044 api .logging ().logToError ("Failed to delete persistence file: " + persistenceFile .getAbsolutePath ());
1045+ return false ;
10301046 }
10311047 } else {
10321048 api .logging ().logToOutput ("Persistence file does not exist: " + persistenceFile .getAbsolutePath ());
1049+ return false ;
10331050 }
10341051 } catch (Exception e ) {
10351052 api .logging ().logToError ("Error deleting persistence file: " + e .getMessage ());
1053+ return false ;
10361054 }
10371055 }
10381056
@@ -1268,4 +1286,4 @@ public void addInteraction(Object interaction) {
12681286 });
12691287 }
12701288 }
1271- }
1289+ }
0 commit comments