Fixed issue where serialized terminal working directories would be lost in complex interactions

Mikayla Maki , Kay , and Julia created

Co-authored-by: Kay <kay@zed.dev>
Co-authored-by: Julia <julia@zed.dev>

Change summary

crates/terminal_view/src/persistence.rs   | 6 +++---
crates/terminal_view/src/terminal_view.rs | 3 +--
2 files changed, 4 insertions(+), 5 deletions(-)

Detailed changes

crates/terminal_view/src/persistence.rs 🔗

@@ -42,10 +42,10 @@ impl TerminalDb {
     }
 
     query! {
-        pub async fn take_working_directory(item_id: ItemId, workspace_id: WorkspaceId) -> Result<Option<PathBuf>> {
-            DELETE FROM terminals
+        pub fn get_working_directory(item_id: ItemId, workspace_id: WorkspaceId) -> Result<Option<PathBuf>> {
+            SELECT working_directory
+            FROM terminals
             WHERE item_id = ? AND workspace_id = ?
-            RETURNING working_directory
         }
     }
 }

crates/terminal_view/src/terminal_view.rs 🔗

@@ -706,8 +706,7 @@ impl Item for TerminalView {
         let window_id = cx.window_id();
         cx.spawn(|pane, mut cx| async move {
             let cwd = TERMINAL_DB
-                .take_working_directory(item_id, workspace_id)
-                .await
+                .get_working_directory(item_id, workspace_id)
                 .log_err()
                 .flatten();