Skip to content

Commit 42f7b0a

Browse files
committed
Fix concurrency warnings
1 parent a22dccd commit 42f7b0a

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

Sources/PulseUI/Features/Search/Services/ConsoleSearchOccurrence.swift

+14-2
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,32 @@ import CoreData
1010
import Combine
1111

1212
@available(iOS 15, visionOS 1.0, *)
13-
final class ConsoleSearchOccurrence: Identifiable, Equatable, Hashable {
13+
final class ConsoleSearchOccurrence: Identifiable, Equatable, Hashable, Sendable {
1414
let id = ConsoleSearchOccurrenceId()
1515
let scope: ConsoleSearchScope
1616
let match: ConsoleSearchMatch
1717
var line: Int { match.lineNumber }
1818
var range: NSRange { NSRange(match.range, in: match.line) }
19-
@MainActor lazy var preview = ConsoleSearchOccurrence.makePreview(for: match, attributes: previewAttibutes)
19+
let preview: OccurencePreview
2020
let searchContext: RichTextViewModel.SearchContext
2121

22+
final class OccurencePreview: @unchecked Sendable {
23+
let match: ConsoleSearchMatch
24+
25+
init(match: ConsoleSearchMatch) {
26+
self.match = match
27+
}
28+
29+
@MainActor
30+
lazy var preview = ConsoleSearchOccurrence.makePreview(for: match, attributes: previewAttibutes)
31+
}
32+
2233
init(scope: ConsoleSearchScope,
2334
match: ConsoleSearchMatch,
2435
searchContext: RichTextViewModel.SearchContext) {
2536
self.scope = scope
2637
self.match = match
38+
self.preview = OccurencePreview(match: match)
2739
self.searchContext = searchContext
2840
}
2941

Sources/PulseUI/Features/Search/Services/ConsoleSearchOperation.swift

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import CoreData
1010
import Combine
1111

1212
@available(iOS 15, visionOS 1.0, *)
13-
protocol ConsoleSearchOperationDelegate: AnyObject {
13+
@MainActor protocol ConsoleSearchOperationDelegate: AnyObject {
1414
func searchOperation(_ operation: ConsoleSearchOperation, didAddResults results: [ConsoleSearchResultViewModel])
1515
func searchOperationDidFinish(_ operation: ConsoleSearchOperation, hasMore: Bool)
1616
}
1717

1818
@available(iOS 15, visionOS 1.0, *)
19-
final class ConsoleSearchOperation {
19+
final class ConsoleSearchOperation: @unchecked Sendable {
2020
private let parameters: ConsoleSearchParameters
2121
private var entities: [NSManagedObject]
2222
private var objectIDs: [NSManagedObjectID]
@@ -30,6 +30,7 @@ final class ConsoleSearchOperation {
3030
private let hasLogFilters: Bool
3131
private let hasNetworkFilers: Bool
3232

33+
@MainActor
3334
weak var delegate: ConsoleSearchOperationDelegate?
3435

3536
init(entities: [NSManagedObject],
@@ -77,7 +78,7 @@ final class ConsoleSearchOperation {
7778
}
7879
index += 1
7980
}
80-
DispatchQueue.main.async {
81+
DispatchQueue.main.async { [hasMore] in
8182
self.delegate?.searchOperationDidFinish(self, hasMore: hasMore)
8283
if self.cutoff < 1000 {
8384
self.cutoff *= 2

Sources/PulseUI/Features/Search/Views/ConsoleSearchResultsSectionView.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ struct ConsoleSearchResultView: View {
6161
@ViewBuilder
6262
private func makeCell(for occurrence: ConsoleSearchOccurrence) -> some View {
6363
let contents = VStack(alignment: .leading, spacing: 4) {
64-
Text(occurrence.preview)
64+
Text(occurrence.preview.preview)
6565
.lineLimit(3)
6666
Text(occurrence.scope.title + " (\(occurrence.line):\(occurrence.range.lowerBound + 1))")
6767
.font(ConsoleConstants.fontInfo)

0 commit comments

Comments
 (0)