Commit 2d0bc98
committed
SMB/MTP: Listing updates after mutations and external changes
Unified change notification system for all volume types. Fixes "listing doesn't update after create/delete/rename" on SMB and MTP shares.
- Add `notify_directory_changed` unified entry point with `DirectoryChange` enum (Added/Removed/Modified/Renamed/FullRefresh) for incremental listing cache patches
- Add `notify_mutation` on `Volume` trait — called after each successful mutation, triggers instant listing update via the volume's own protocol (smb2/MTP), not `std::fs`
- Add smb2 background watcher (dedicated connection, `CHANGE_NOTIFY` long-poll) for external changes with 200ms debounce and 50-event threshold
- Fix `handle_directory_change` to use `Volume::list_directory` instead of raw `std::fs::read_dir` — works for all volume types now
- Move sequence counter from `WatchedDirectory` to `CachedListing` so `directory-diff` events emit for non-FSEvents volumes
- Add `volume_id` field to `SmbVolume` and `MtpVolume` for notification routing
- Add `find_listings_for_path_on_volume` with volume_id filtering
- Fix rename having no listing notification on any volume type (pre-existing bug)
- Run watcher event processing via `spawn_blocking` to avoid `block_on`-from-async panics
- `SmbVolume::supports_local_fs_access` returns `false` (skips legacy `std::fs` synthetic diff path)1 parent 156a30e commit 2d0bc98
17 files changed
Lines changed: 1674 additions & 110 deletions
File tree
- apps/desktop/src-tauri/src
- commands
- file_system
- listing
- volume
- docs/specs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
873 | 873 | | |
874 | 874 | | |
875 | 875 | | |
876 | | - | |
| 876 | + | |
877 | 877 | | |
878 | 878 | | |
879 | 879 | | |
| |||
901 | 901 | | |
902 | 902 | | |
903 | 903 | | |
904 | | - | |
905 | | - | |
906 | | - | |
907 | | - | |
908 | | - | |
909 | | - | |
910 | | - | |
911 | | - | |
912 | | - | |
913 | | - | |
914 | | - | |
915 | | - | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
916 | 907 | | |
917 | 908 | | |
918 | 909 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
110 | 112 | | |
111 | 113 | | |
112 | 114 | | |
| |||
131 | 133 | | |
132 | 134 | | |
133 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
134 | 139 | | |
135 | 140 | | |
136 | 141 | | |
| |||
143 | 148 | | |
144 | 149 | | |
145 | 150 | | |
146 | | - | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
147 | 196 | | |
148 | 197 | | |
149 | 198 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
| 49 | + | |
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
87 | 90 | | |
88 | 91 | | |
89 | 92 | | |
| |||
105 | 108 | | |
106 | 109 | | |
107 | 110 | | |
| 111 | + | |
108 | 112 | | |
109 | 113 | | |
110 | 114 | | |
111 | 115 | | |
112 | 116 | | |
113 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
114 | 131 | | |
115 | 132 | | |
116 | 133 | | |
| |||
0 commit comments