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:
@ -6,31 +6,30 @@
|
||||
//
|
||||
|
||||
import AVFoundation
|
||||
import Observation
|
||||
import Combine
|
||||
import SwiftUI
|
||||
import UIKit
|
||||
|
||||
@MainActor
|
||||
@Observable
|
||||
/// 排队运行时,页面外按开关短轮询当前打卡点并语音播报队列变化。
|
||||
final class ScenicQueueRuntime {
|
||||
private(set) var isMonitoring = false
|
||||
private(set) var lastPollText = "--"
|
||||
private(set) var lastSpokenText = ""
|
||||
private(set) var lastQueueCount = 0
|
||||
private(set) var lastError: String?
|
||||
final class ScenicQueueRuntime: ObservableObject {
|
||||
@Published private(set) var isMonitoring = false
|
||||
@Published private(set) var lastPollText = "--"
|
||||
@Published private(set) var lastSpokenText = ""
|
||||
@Published private(set) var lastQueueCount = 0
|
||||
@Published private(set) var lastError: String?
|
||||
|
||||
@ObservationIgnored private let speaker = ScenicQueueSpeechService()
|
||||
@ObservationIgnored private weak var api: (any ScenicQueueServing)?
|
||||
@ObservationIgnored private var userId: String?
|
||||
@ObservationIgnored private var scenicId: Int?
|
||||
@ObservationIgnored private var scenePhase: ScenePhase = .active
|
||||
@ObservationIgnored private var pollTask: Task<Void, Never>?
|
||||
@ObservationIgnored private var backgroundTaskId: UIBackgroundTaskIdentifier = .invalid
|
||||
@ObservationIgnored private var announcementState = ScenicQueueAnnouncementState()
|
||||
@ObservationIgnored private var lastScenicId: Int?
|
||||
@ObservationIgnored private var lastSpotId: Int?
|
||||
@ObservationIgnored private var suspendedByQueueScreen = false
|
||||
private let speaker = ScenicQueueSpeechService()
|
||||
private weak var api: (any ScenicQueueServing)?
|
||||
@Published private var userId: String?
|
||||
@Published private var scenicId: Int?
|
||||
@Published private var scenePhase: ScenePhase = .active
|
||||
@Published private var pollTask: Task<Void, Never>?
|
||||
@Published private var backgroundTaskId: UIBackgroundTaskIdentifier = .invalid
|
||||
@Published private var announcementState = ScenicQueueAnnouncementState()
|
||||
@Published private var lastScenicId: Int?
|
||||
@Published private var lastSpotId: Int?
|
||||
@Published private var suspendedByQueueScreen = false
|
||||
|
||||
/// 语音播报是否开启。
|
||||
var voiceEnabled: Bool {
|
||||
|
||||
Reference in New Issue
Block a user