Skip to content

Commit 8bd8edc

Browse files
authored
Git fetch improvement (#1511)
1 parent ae78fff commit 8bd8edc

File tree

2 files changed

+15
-33
lines changed

2 files changed

+15
-33
lines changed

CodeEdit/Features/Git/SourceControlManager.swift

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ final class SourceControlManager: ObservableObject {
1818
let editorManager: EditorManager
1919
weak var fileManager: CEWorkspaceFileManager?
2020

21-
// Timer for periodic fetch
22-
private var fetchTimer: Timer?
23-
2421
/// A list of changed files
2522
@Published var changedFiles: [CEWorkspaceFile] = []
2623

@@ -116,27 +113,10 @@ final class SourceControlManager: ObservableObject {
116113
fileManager.notifyObservers(updatedItems: updatedStatusFor)
117114
}
118115

119-
/// Start periodic fetch with a specified interval
120-
func startPeriodicFetch(interval: TimeInterval) {
121-
fetchTimer?.invalidate() // Invalidate any existing timer
122-
fetch()
123-
fetchTimer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in
124-
self?.fetch()
125-
}
126-
}
127-
128116
/// Fetch from remote
129-
func fetch() {
130-
Task {
131-
try await gitClient.fetchFromRemote()
132-
await self.refreshNumberOfUnsyncedCommits()
133-
}
134-
}
135-
136-
/// Stops the periodic fetch
137-
func stopPeriodicFetch() {
138-
fetchTimer?.invalidate()
139-
fetchTimer = nil
117+
func fetch() async throws {
118+
try await gitClient.fetchFromRemote()
119+
await self.refreshNumberOfUnsyncedCommits()
140120
}
141121

142122
/// Refresh current branch
@@ -314,11 +294,9 @@ final class SourceControlManager: ObservableObject {
314294

315295
/// Validate repository
316296
func validate() async throws {
317-
Task {
318-
let isGitRepository = try await gitClient.validate()
319-
await MainActor.run {
320-
self.isGitRepository = isGitRepository
321-
}
297+
let isGitRepository = await gitClient.validate()
298+
await MainActor.run {
299+
self.isGitRepository = isGitRepository
322300
}
323301
}
324302

CodeEdit/Features/NavigatorArea/SourceControlNavigator/Views/SourceControlNavigatorView.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@ struct SourceControlNavigatorView: View {
1515
VStack(spacing: 0) {
1616
SourcControlNavigatorTabs()
1717
.environmentObject(sourceControlManager)
18-
.onAppear {
19-
sourceControlManager.startPeriodicFetch(interval: 10)
20-
}
21-
.onDisappear {
22-
sourceControlManager.stopPeriodicFetch()
18+
.task {
19+
do {
20+
while true {
21+
try await sourceControlManager.fetch()
22+
try await Task.sleep(for: .seconds(10))
23+
}
24+
} catch {
25+
// TODO: if source fetching fails, display message
26+
}
2327
}
2428
}
2529
.safeAreaInset(edge: .bottom, spacing: 0) {

0 commit comments

Comments
 (0)