mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-11 13:59:13 +00:00

* Switch license file to AGPL * Update file copyright headers * Update the default project file header
64 lines
2.1 KiB
Swift
64 lines
2.1 KiB
Swift
//
|
|
// Copyright 2022-2024 New Vector Ltd.
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
// Please see LICENSE in the repository root for full details.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
#if !os(OSX)
|
|
import DeviceKit
|
|
#endif
|
|
|
|
enum UserAgentBuilder {
|
|
static func makeASCIIUserAgent() -> String {
|
|
makeUserAgent()?.asciified() ?? "unknown"
|
|
}
|
|
|
|
static func makeUserAgent() -> String? {
|
|
let clientName = InfoPlistReader.app.bundleDisplayName
|
|
let clientVersion = InfoPlistReader.app.bundleShortVersionString
|
|
|
|
#if os(iOS)
|
|
let scale = UIScreen.main.scale
|
|
return if ProcessInfo.processInfo.isiOSAppOnMac {
|
|
String(format: "%@/%@ (Mac; macOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
ProcessInfo.processInfo.operatingSystemVersionString,
|
|
scale)
|
|
} else {
|
|
String(format: "%@/%@ (%@; iOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
Device.current.safeDescription,
|
|
UIDevice.current.systemVersion,
|
|
scale)
|
|
}
|
|
#elseif os(tvOS)
|
|
return String(format: "%@/%@ (%@; tvOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
Device.current.safeDescription,
|
|
UIDevice.current.systemVersion,
|
|
UIScreen.main.scale)
|
|
#elseif os(watchOS)
|
|
return String(format: "%@/%@ (%@; watchOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
Device.current.safeDescription,
|
|
WKInterfaceDevice.current.systemVersion,
|
|
WKInterfaceDevice.currentDevice.screenScale)
|
|
#elseif os(OSX)
|
|
return String(format: "%@/%@ (Mac; macOS %@)",
|
|
clientName,
|
|
clientVersion,
|
|
NSProcessInfo.processInfo.operatingSystemVersionString)
|
|
#else
|
|
return nil
|
|
#endif
|
|
}
|
|
}
|