Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions Examples/CaseStudies/Internal/CaseStudy.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import SwiftUI
import UIKitNavigation

@MainActor

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All demos are default main actor isolation so a lot of these can go away.

protocol CaseStudy {
var readMe: String { get }
var caseStudyTitle: String { get }
Expand All @@ -17,7 +16,6 @@ extension CaseStudy {
}

@resultBuilder
@MainActor
enum CaseStudyViewBuilder {
@ViewBuilder
static func buildBlock() -> some View {}
Expand Down
1 change: 0 additions & 1 deletion Examples/CaseStudies/ObservableModelDemo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ struct ObservableModelDemo: SwiftUICaseStudy {
}

@Observable
@MainActor
private class Model {
@ObservationIgnored
@FetchAll(Fact.order { $0.id.desc() }, animation: .default)
Expand Down
29 changes: 28 additions & 1 deletion Examples/Examples.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objectVersion = 100;

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gotta revert this before merging...

objects = {

/* Begin PBXBuildFile section */
CA0923FC3037ED040053D2D7 /* DebugSnapshots in Frameworks */ = {isa = PBXBuildFile; productRef = CA0923FB3037ED040053D2D7 /* DebugSnapshots */; };
CA0923FE3037ED040053D2D7 /* DebugSnapshots in Frameworks */ = {isa = PBXBuildFile; productRef = CA0923FD3037ED040053D2D7 /* DebugSnapshots */; };
CA14DBC92DA884C400E36852 /* CasePaths in Frameworks */ = {isa = PBXBuildFile; productRef = CA14DBC82DA884C400E36852 /* CasePaths */; };
CA2908C92D4AF70E003F165F /* UIKitNavigation in Frameworks */ = {isa = PBXBuildFile; productRef = CA2908C82D4AF70E003F165F /* UIKitNavigation */; };
CA2BDE2A2E71C469000974D3 /* SQLiteData in Frameworks */ = {isa = PBXBuildFile; productRef = CA2BDE292E71C469000974D3 /* SQLiteData */; };
Expand Down Expand Up @@ -197,6 +199,7 @@
CAF836D52D4735AB0047AEB5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
files = (
CA0923FC3037ED040053D2D7 /* DebugSnapshots in Frameworks */,
DCB8AD5030363F2600ACF09E /* SQLiteData in Frameworks */,
CA14DBC92DA884C400E36852 /* CasePaths in Frameworks */,
CA5E46912DEBB8570069E0F8 /* SwiftUINavigation in Frameworks */,
Expand All @@ -216,6 +219,7 @@
DC5FA7482D4C63D60082743E /* DependenciesMacros in Frameworks */,
DCB8AD5230363F2A00ACF09E /* SQLiteData in Frameworks */,
DCBE8A142D4842BF0071F499 /* CasePaths in Frameworks */,
CA0923FE3037ED040053D2D7 /* DebugSnapshots in Frameworks */,
);
};
/* End PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -397,6 +401,7 @@
CA14DBC82DA884C400E36852 /* CasePaths */,
CA5E46902DEBB8570069E0F8 /* SwiftUINavigation */,
DCB8AD4F30363F2600ACF09E /* SQLiteData */,
CA0923FB3037ED040053D2D7 /* DebugSnapshots */,
);
productName = Reminders;
productReference = CAF836D82D4735AB0047AEB5 /* Reminders.app */;
Expand Down Expand Up @@ -443,6 +448,7 @@
DCF267382D48437300B680BE /* SwiftUINavigation */,
DC5FA7472D4C63D60082743E /* DependenciesMacros */,
DCB8AD5130363F2A00ACF09E /* SQLiteData */,
CA0923FD3037ED040053D2D7 /* DebugSnapshots */,
);
productName = SyncUps;
productReference = DCBE89CC2D483FB90071F499 /* SyncUps.app */;
Expand Down Expand Up @@ -502,6 +508,7 @@
DC5FA7462D4C63D60082743E /* XCRemoteSwiftPackageReference "swift-dependencies" */,
CA5E47052DECEF0F0069E0F8 /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */,
DCB8AD4830363D3800ACF09E /* XCLocalSwiftPackageReference "../../sqlite-data" */,
CA0923FA3037ED040053D2D7 /* XCRemoteSwiftPackageReference "swift-debug-snapshots" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = CAF836992D4735620047AEB5 /* Products */;
Expand Down Expand Up @@ -1243,6 +1250,16 @@
/* End XCLocalSwiftPackageReference section */

/* Begin XCRemoteSwiftPackageReference section */
CA0923FA3037ED040053D2D7 /* XCRemoteSwiftPackageReference "swift-debug-snapshots" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/pointfreeco/swift-debug-snapshots.git";
requirement = {
branch = "even-better-inference";
kind = branch;
};
traits = (
);
};
CA5E47052DECEF0F0069E0F8 /* XCRemoteSwiftPackageReference "swift-snapshot-testing" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/pointfreeco/swift-snapshot-testing.git";
Expand Down Expand Up @@ -1278,6 +1295,16 @@
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
CA0923FB3037ED040053D2D7 /* DebugSnapshots */ = {
isa = XCSwiftPackageProductDependency;
package = CA0923FA3037ED040053D2D7 /* XCRemoteSwiftPackageReference "swift-debug-snapshots" */;
productName = DebugSnapshots;
};
CA0923FD3037ED040053D2D7 /* DebugSnapshots */ = {
isa = XCSwiftPackageProductDependency;
package = CA0923FA3037ED040053D2D7 /* XCRemoteSwiftPackageReference "swift-debug-snapshots" */;
productName = DebugSnapshots;
};
CA14DBC82DA884C400E36852 /* CasePaths */ = {
isa = XCSwiftPackageProductDependency;
package = DCBE8A122D4842BF0071F499 /* XCRemoteSwiftPackageReference "swift-case-paths" */;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC1584A530363595009DD95C"
BuildableName = "Integration.app"
BlueprintName = "Integration"
ReferencedContainer = "container:Examples.xcodeproj">
</BuildableReference>
</BuildActionEntry>
Expand Down Expand Up @@ -46,6 +47,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC1584A530363595009DD95C"
BuildableName = "Integration.app"
BlueprintName = "Integration"
ReferencedContainer = "container:Examples.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
Expand All @@ -62,6 +64,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "DC1584A530363595009DD95C"
BuildableName = "Integration.app"
BlueprintName = "Integration"
ReferencedContainer = "container:Examples.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
Expand Down
8 changes: 4 additions & 4 deletions Examples/Reminders/Helpers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ extension Color {
public var hexValue: Int64? {
guard let components = UIColor(queryOutput).cgColor.components
else { return nil }
let r = Int64(components[0] * 0xFF) << 24
let g = Int64(components[1] * 0xFF) << 16
let b = Int64(components[2] * 0xFF) << 8
let a = Int64((components.indices.contains(3) ? components[3] : 1) * 0xFF)
let r = Int64((components[0] * 0xFF).rounded()) << 24
let g = Int64((components[1] * 0xFF).rounded()) << 16
let b = Int64((components[2] * 0xFF).rounded()) << 8
let a = Int64(((components.indices.contains(3) ? components[3] : 1) * 0xFF).rounded())
return r | g | b | a
}

Expand Down
13 changes: 7 additions & 6 deletions Examples/Reminders/RemindersDetail.swift
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import CasePaths
import CloudKit
import DebugSnapshots
import SQLiteData
import Sharing
import SwiftUI
import SwiftUINavigation

@MainActor
@DebugSnapshot
@Observable
class RemindersDetailModel: HashableObject {
@ObservationIgnored @FetchAll var reminderRows: [Row]
Expand Down Expand Up @@ -165,11 +166,11 @@ class RemindersDetailModel: HashableObject {
@Selection
struct Row: Identifiable {
var id: Reminder.ID { reminder.id }
let reminder: Reminder
let remindersList: RemindersList
let isPastDue: Bool
let notes: String
let tags: String
var reminder: Reminder
var remindersList: RemindersList
var isPastDue: Bool
var notes: String
var tags: String
}
}

Expand Down
13 changes: 8 additions & 5 deletions Examples/Reminders/RemindersLists.swift
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import CloudKit
import DebugSnapshots
import SQLiteData
import SwiftUI
import SwiftUINavigation
import TipKit

@MainActor
@DebugSnapshot
@Observable
class RemindersListsModel {
@ObservationIgnored
Expand Down Expand Up @@ -49,8 +50,8 @@ class RemindersListsModel {
)
var stats = Stats()

var destination: Destination?
var searchRemindersModel = SearchRemindersModel()
@DebugSnapshotConvertible var destination: Destination?
@DebugSnapshotConvertible var searchRemindersModel = SearchRemindersModel()
var seedDatabaseTip: SeedDatabaseTip?

@ObservationIgnored
Expand Down Expand Up @@ -131,8 +132,8 @@ class RemindersListsModel {
let (first, rest) = (ids.first!, ids.dropFirst())
$0.position =
rest
.reduce(Case($0.id).when(first.element, then: first.offset)) { cases, id in
cases.when(id.element, then: id.offset)
.reduce(Case($0.id).when(first.element, then: first.offset + 1)) { cases, id in
cases.when(id.element, then: id.offset + 1)
}
.else($0.position)
}
Expand All @@ -150,7 +151,9 @@ class RemindersListsModel {
#endif

@CasePathable
@DebugSnapshot
enum Destination {
@DebugSnapshotConvertible
case detail(RemindersDetailModel)
case reminderForm(Reminder.Draft, remindersList: RemindersList)
case remindersListForm(RemindersList.Draft)
Expand Down
14 changes: 10 additions & 4 deletions Examples/Reminders/Schema.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,18 @@ nonisolated struct RemindersList: Hashable, Identifiable {
var position = 0
var title = ""

static var defaultColor: Color { Color(red: 0x4a / 255, green: 0x99 / 255, blue: 0xef / 255) }
static var defaultColor: Color { .personal }
static var defaultTitle: String { "Personal" }
}

extension RemindersList.Draft: Identifiable {}

nonisolated extension Color {
static let personal = Color(red: 0x4a / 255, green: 0x99 / 255, blue: 0xef / 255)
static let family = Color(red: 0xed / 255, green: 0x89 / 255, blue: 0x35 / 255)
static let business = Color(red: 0xb2 / 255, green: 0x5d / 255, blue: 0xd3 / 255)
}

@Table
nonisolated struct RemindersListAsset: Hashable, Identifiable {
@Column(primaryKey: true)
Expand Down Expand Up @@ -424,17 +430,17 @@ nonisolated private let logger = Logger(subsystem: "Reminders", category: "Datab
try db.seed {
RemindersList(
id: remindersListIDs[0],
color: Color(red: 0x4a / 255, green: 0x99 / 255, blue: 0xef / 255),
color: .personal,
title: "Personal"
)
RemindersList(
id: remindersListIDs[1],
color: Color(red: 0xed / 255, green: 0x89 / 255, blue: 0x35 / 255),
color: .family,
title: "Family"
)
RemindersList(
id: remindersListIDs[2],
color: Color(red: 0xb2 / 255, green: 0x5d / 255, blue: 0xd3 / 255),
color: .business,
title: "Business"
)
Reminder(
Expand Down
16 changes: 9 additions & 7 deletions Examples/Reminders/SearchReminders.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import DebugSnapshots
import IssueReporting
import SQLiteData
import SwiftUI

@MainActor
@DebugSnapshot
@Observable
class SearchRemindersModel {
var showCompletedInSearchResults = false {
Expand Down Expand Up @@ -40,6 +41,7 @@ class SearchRemindersModel {
!searchText.isEmpty || !searchTokens.isEmpty
}

@DebugSnapshotIgnored
var searchTask: Task<Void, any Error>? {
willSet {
searchTask?.cancel()
Expand Down Expand Up @@ -115,12 +117,12 @@ class SearchRemindersModel {
@Selection
struct Row: Identifiable {
var id: Reminder.ID { reminder.id }
let isPastDue: Bool
let notes: String
let reminder: Reminders.Reminder
let remindersList: RemindersList
let tags: String
let title: String
var isPastDue: Bool
var notes: String
var reminder: Reminders.Reminder
var remindersList: RemindersList
var tags: String
var title: String
}

struct SearchRequest: FetchKeyRequest {
Expand Down
4 changes: 2 additions & 2 deletions Examples/RemindersTests/Internal.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import Testing
.dependency(\.date.now, Date(timeIntervalSince1970: 1_234_567_890)),
.dependency(\.uuid, .incrementing),
.dependencies {
try $0.bootstrapDatabase()
try await $0.bootstrapDatabase()
try await $0.defaultSyncEngine.start()
try $0.defaultDatabase.seedSampleData()
try await $0.defaultDatabase.seedTestData()
try await $0.defaultSyncEngine.sendChanges()
},
.snapshots(record: .missing)
Expand Down
Loading
Loading