Skip to content

Commit 982c15b

Browse files
thieso2claude
andcommitted
Extract EditHandlers ViewModifier to fix Release type-check timeout
The .toggleSourceEdit / .saveFile / .openInExternalEditor onReceive blocks on webViewLayer (already a long modifier chain) pushed Release-mode type-checking past its budget. Pull them into a dedicated EditHandlers ViewModifier alongside the existing ZoomHandlers / FindHandlers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent bcca4d7 commit 982c15b

1 file changed

Lines changed: 32 additions & 12 deletions

File tree

Sources/FileBrowser/DirectoryWindowView.swift

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -256,18 +256,15 @@ struct DirectoryWindowView: View {
256256
guard isKeyWindow, selectedFile != nil else { return }
257257
webViewStore.exportPDF()
258258
}
259-
.onReceive(NotificationCenter.default.publisher(for: .openInExternalEditor)) { _ in
260-
guard isKeyWindow, let file = selectedFile, !isAutoIndex(file) else { return }
261-
openInExternalEditor(file.absolutePath)
262-
}
263-
.onReceive(NotificationCenter.default.publisher(for: .toggleSourceEdit)) { _ in
264-
guard isKeyWindow else { return }
265-
toggleSourceEdit()
266-
}
267-
.onReceive(NotificationCenter.default.publisher(for: .saveFile)) { _ in
268-
guard isKeyWindow, isEditing else { return }
269-
saveEditorText()
270-
}
259+
.modifier(EditHandlers(
260+
isKeyWindow: isKeyWindow,
261+
onExternal: {
262+
guard let file = selectedFile, !isAutoIndex(file) else { return }
263+
openInExternalEditor(file.absolutePath)
264+
},
265+
onToggleSource: { toggleSourceEdit() },
266+
onSave: { if isEditing { saveEditorText() } }
267+
))
271268
.onReceive(NotificationCenter.default.publisher(for: .settingsChanged)) { _ in
272269
handleSettingsChanged()
273270
}
@@ -1293,3 +1290,26 @@ struct FindHandlers: ViewModifier {
12931290
}
12941291
}
12951292
}
1293+
1294+
struct EditHandlers: ViewModifier {
1295+
let isKeyWindow: Bool
1296+
let onExternal: () -> Void
1297+
let onToggleSource: () -> Void
1298+
let onSave: () -> Void
1299+
1300+
func body(content: Content) -> some View {
1301+
content
1302+
.onReceive(NotificationCenter.default.publisher(for: .openInExternalEditor)) { _ in
1303+
guard isKeyWindow else { return }
1304+
onExternal()
1305+
}
1306+
.onReceive(NotificationCenter.default.publisher(for: .toggleSourceEdit)) { _ in
1307+
guard isKeyWindow else { return }
1308+
onToggleSource()
1309+
}
1310+
.onReceive(NotificationCenter.default.publisher(for: .saveFile)) { _ in
1311+
guard isKeyWindow else { return }
1312+
onSave()
1313+
}
1314+
}
1315+
}

0 commit comments

Comments
 (0)