mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-09-10 20:01:57 +02:00
WIP
This commit is contained in:
@@ -2,9 +2,202 @@
|
||||
// Demo
|
||||
// Copyright © 2020 John Rommel Estropia, Inc. All rights reserved.
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
|
||||
// MARK: - Menu
|
||||
|
||||
enum Menu {}
|
||||
enum Menu {
|
||||
|
||||
// MARK: - Section
|
||||
|
||||
enum Section: String, CaseIterable, Hashable {
|
||||
|
||||
case modern = "Modern (CoreStoreObject subclasses)"
|
||||
case classic = "Classic (NSManagedObject subclasses)"
|
||||
case advanced = "Advanced"
|
||||
|
||||
var routes: [Route] {
|
||||
switch self {
|
||||
|
||||
case .modern:
|
||||
return [
|
||||
.placemarks,
|
||||
.timeZones,
|
||||
.colorsUIKit,
|
||||
.colorsSwiftUI,
|
||||
.pokedex
|
||||
]
|
||||
|
||||
case .classic:
|
||||
return [
|
||||
.classicColors
|
||||
]
|
||||
|
||||
case .advanced:
|
||||
return [
|
||||
.accounts,
|
||||
.evolution,
|
||||
.logger
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Route
|
||||
|
||||
enum Route: String, CaseIterable, Hashable, Identifiable {
|
||||
|
||||
case placemarks
|
||||
case timeZones
|
||||
case colorsUIKit
|
||||
case colorsSwiftUI
|
||||
case pokedex
|
||||
case classicColors
|
||||
case accounts
|
||||
case evolution
|
||||
case logger
|
||||
|
||||
var id: Self {
|
||||
self
|
||||
}
|
||||
|
||||
var title: String {
|
||||
|
||||
switch self {
|
||||
case .placemarks:
|
||||
"Placemarks"
|
||||
|
||||
case .timeZones:
|
||||
"Time Zones"
|
||||
|
||||
case .colorsUIKit:
|
||||
"Colors (UIKit)"
|
||||
|
||||
case .colorsSwiftUI:
|
||||
"Colors (SwiftUI)"
|
||||
|
||||
case .pokedex:
|
||||
"Pokedex API"
|
||||
|
||||
case .classicColors:
|
||||
"Colors"
|
||||
|
||||
case .accounts:
|
||||
"Accounts"
|
||||
|
||||
case .evolution:
|
||||
"Evolution"
|
||||
|
||||
case .logger:
|
||||
"Logger"
|
||||
}
|
||||
}
|
||||
|
||||
var subtitle: String {
|
||||
|
||||
switch self {
|
||||
case .placemarks:
|
||||
"Making changes using Transactions"
|
||||
|
||||
case .timeZones:
|
||||
"Fetching objects and Querying raw values"
|
||||
|
||||
case .colorsUIKit:
|
||||
"Observing list changes and single-object changes using DiffableDataSources"
|
||||
|
||||
case .colorsSwiftUI:
|
||||
"Observing list changes and single-object changes using SwiftUI bindings"
|
||||
|
||||
case .pokedex:
|
||||
"Importing JSON data from external source"
|
||||
|
||||
case .classicColors:
|
||||
"Observing list changes and single-object changes using ListMonitor"
|
||||
|
||||
case .accounts:
|
||||
"Switching between multiple persistent stores"
|
||||
|
||||
case .evolution:
|
||||
"Migrating and reverse-migrating stores"
|
||||
|
||||
case .logger:
|
||||
"Implementing a custom logger"
|
||||
}
|
||||
}
|
||||
|
||||
var isEnabled: Bool {
|
||||
|
||||
switch self {
|
||||
|
||||
case .placemarks,
|
||||
.timeZones,
|
||||
.colorsUIKit,
|
||||
.colorsSwiftUI,
|
||||
.pokedex,
|
||||
.classicColors,
|
||||
.evolution:
|
||||
return true
|
||||
|
||||
case .accounts,
|
||||
.logger:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
@ViewBuilder
|
||||
var destination: some View {
|
||||
|
||||
switch self {
|
||||
case .placemarks:
|
||||
Modern.PlacemarksDemo.MainView()
|
||||
|
||||
case .timeZones:
|
||||
Modern.TimeZonesDemo.MainView()
|
||||
|
||||
case .colorsUIKit:
|
||||
Modern.ColorsDemo.MainView(
|
||||
listView: { listPublisher, onPaletteTapped in
|
||||
Modern.ColorsDemo.UIKit.ListView(
|
||||
listPublisher: listPublisher,
|
||||
onPaletteTapped: onPaletteTapped
|
||||
)
|
||||
.ignoresSafeArea()
|
||||
},
|
||||
detailView: { objectPublisher in
|
||||
Modern.ColorsDemo.UIKit.DetailView(objectPublisher)
|
||||
}
|
||||
)
|
||||
|
||||
case .colorsSwiftUI:
|
||||
Modern.ColorsDemo.MainView(
|
||||
listView: { listPublisher, onPaletteTapped in
|
||||
Modern.ColorsDemo.SwiftUI.ListView(
|
||||
listPublisher: listPublisher,
|
||||
onPaletteTapped: onPaletteTapped
|
||||
)
|
||||
},
|
||||
detailView: { objectPublisher in
|
||||
Modern.ColorsDemo.SwiftUI.DetailView(objectPublisher)
|
||||
}
|
||||
)
|
||||
|
||||
case .pokedex:
|
||||
Modern.PokedexDemo.MainView(
|
||||
listView: Modern.PokedexDemo.UIKit.ListView.init
|
||||
)
|
||||
|
||||
case .classicColors:
|
||||
Classic.ColorsDemo.MainView()
|
||||
|
||||
case .accounts, .logger:
|
||||
EmptyView()
|
||||
|
||||
case .evolution:
|
||||
Advanced.EvolutionDemo.MainView()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user