60 lines
1.4 KiB
Swift
60 lines
1.4 KiB
Swift
|
|
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
|