Migrate from iOS 17 Observation to iOS 16-compatible Combine architecture.
Lower deployment target to iOS 16, replace @Observable with ObservableObject, add navigation and UI compatibility shims, and include login smoke UI tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
31
suixinkan/App/Navigation/NavigationCompatibility.swift
Normal file
31
suixinkan/App/Navigation/NavigationCompatibility.swift
Normal file
@ -0,0 +1,31 @@
|
||||
//
|
||||
// NavigationCompatibility.swift
|
||||
// suixinkan
|
||||
//
|
||||
// Created by Codex on 2026/6/26.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
extension View {
|
||||
/// iOS 16 compatible replacement for iOS 17's navigationDestination(item:).
|
||||
func appNavigationDestination<Item, Destination: View>(
|
||||
item: Binding<Item?>,
|
||||
@ViewBuilder destination: @escaping (Item) -> Destination
|
||||
) -> some View {
|
||||
navigationDestination(
|
||||
isPresented: Binding(
|
||||
get: { item.wrappedValue != nil },
|
||||
set: { isPresented in
|
||||
if !isPresented {
|
||||
item.wrappedValue = nil
|
||||
}
|
||||
}
|
||||
)
|
||||
) {
|
||||
if let value = item.wrappedValue {
|
||||
destination(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user