import Foundation #if canImport(ActivityKit) && os(iOS) import ActivityKit #endif struct ApprovalActivityPayload: Codable, Hashable { let requestID: String let title: String let appName: String let source: String let handle: String let location: String let createdAt: Date } extension ApprovalRequest { var activityAppName: String { source .replacingOccurrences(of: "auth.", with: "") .replacingOccurrences(of: ".idp.global", with: ".idp.global") } var activityLocation: String { "Berlin, DE" } var activityExpiryDate: Date { createdAt.addingTimeInterval(risk == .elevated ? 180 : 300) } func activityPayload(handle: String) -> ApprovalActivityPayload { ApprovalActivityPayload( requestID: id.uuidString, title: title, appName: activityAppName, source: source, handle: handle, location: activityLocation, createdAt: createdAt ) } } #if canImport(ActivityKit) && os(iOS) struct ApprovalActivityAttributes: ActivityAttributes { struct ContentState: Codable, Hashable { let requestID: String let title: String let appName: String let source: String let handle: String let location: String } let requestID: String let createdAt: Date } #endif