mirror of https://github.com/garrytan/gstack.git
39 lines
1.3 KiB
Plaintext
39 lines
1.3 KiB
Plaintext
// AUTO-GENERATED from gstack/ios-qa/templates/StateAccessor.swift.template
|
|
// Regenerated by `swift run gen-accessors`. DO NOT EDIT.
|
|
//
|
|
// This file is a TEMPLATE that gen-accessors-tool fills in. The placeholders
|
|
// are filled per-class from swift-syntax AST inspection of the app's
|
|
// @Observable types. Only properties marked with @Snapshotable are emitted.
|
|
//
|
|
// {{CLASS_NAME}} — the canonical AppState struct name
|
|
// {{APP_BUILD_ID}} — bundle short version + git SHA at codegen time
|
|
// {{ACCESSOR_HASH}} — sha256 of accessor signatures (snapshot schema fingerprint)
|
|
// {{ACCESSORS}} — generated register/read/write blocks per @Snapshotable field
|
|
|
|
#if DEBUG
|
|
|
|
import Foundation
|
|
|
|
@MainActor
|
|
public enum {{CLASS_NAME}}Accessor {
|
|
|
|
public static func register(_ state: {{CLASS_NAME}}) {
|
|
StateServer.shared.register(
|
|
buildId: "{{APP_BUILD_ID}}",
|
|
accessorHash: "{{ACCESSOR_HASH}}",
|
|
atomicRestore: { keys in
|
|
// Validate every key + type FIRST, then apply in one struct
|
|
// assignment so SwiftUI observers see exactly one change.
|
|
var snapshot = state.snapshotable
|
|
{{VALIDATION_BLOCK}}
|
|
// Apply atomically.
|
|
state.snapshotable = snapshot
|
|
return .ok
|
|
}
|
|
)
|
|
{{REGISTER_BLOCK}}
|
|
}
|
|
}
|
|
|
|
#endif // DEBUG
|