LALivenessStore.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // LALivenessStore.swift
  3. // LoopFollow
  4. //
  5. // Created by Philippe Achkar on 2026-04-01.
  6. // Copyright © 2026 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. enum LALivenessStore {
  10. private static let defaults = UserDefaults(suiteName: AppGroupID.baseBundleID)
  11. private enum Key {
  12. static let lastExtensionSeenAt = "la.liveness.lastExtensionSeenAt"
  13. static let lastExtensionSeq = "la.liveness.lastExtensionSeq"
  14. static let lastExtensionProducedAt = "la.liveness.lastExtensionProducedAt"
  15. }
  16. static func markExtensionRender(seq: Int, producedAt: Date) {
  17. defaults?.set(Date().timeIntervalSince1970, forKey: Key.lastExtensionSeenAt)
  18. defaults?.set(seq, forKey: Key.lastExtensionSeq)
  19. defaults?.set(producedAt.timeIntervalSince1970, forKey: Key.lastExtensionProducedAt)
  20. }
  21. static var lastExtensionSeenAt: TimeInterval {
  22. defaults?.double(forKey: Key.lastExtensionSeenAt) ?? 0
  23. }
  24. static var lastExtensionSeq: Int {
  25. defaults?.integer(forKey: Key.lastExtensionSeq) ?? 0
  26. }
  27. static var lastExtensionProducedAt: TimeInterval {
  28. defaults?.double(forKey: Key.lastExtensionProducedAt) ?? 0
  29. }
  30. static func clear() {
  31. defaults?.removeObject(forKey: Key.lastExtensionSeenAt)
  32. defaults?.removeObject(forKey: Key.lastExtensionSeq)
  33. defaults?.removeObject(forKey: Key.lastExtensionProducedAt)
  34. }
  35. }