mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-02 12:16:55 +01:00
Extracting parsing of browser info into dedicated method
This commit is contained in:
parent
b7190c2bfe
commit
11f816868b
@ -74,41 +74,7 @@ class ParseDeviceUserAgentUseCase @Inject constructor() {
|
||||
}
|
||||
|
||||
private fun parseDesktopUserAgent(userAgent: String): DeviceExtendedInfo {
|
||||
val browserSegments = userAgent.split(" ")
|
||||
val (browserName, browserVersion) = when {
|
||||
isFirefox(browserSegments) -> {
|
||||
Pair("Firefox", getBrowserVersion(browserSegments, "Firefox"))
|
||||
}
|
||||
isEdge(browserSegments) -> {
|
||||
Pair("Edge", getBrowserVersion(browserSegments, "Edge"))
|
||||
}
|
||||
isMobile(browserSegments) -> {
|
||||
when (val name = getMobileBrowserName(browserSegments)) {
|
||||
null -> {
|
||||
Pair(null, null)
|
||||
}
|
||||
"Safari" -> {
|
||||
Pair(name, getBrowserVersion(browserSegments, "Version"))
|
||||
}
|
||||
else -> {
|
||||
Pair(name, getBrowserVersion(browserSegments, name))
|
||||
}
|
||||
}
|
||||
}
|
||||
isSafari(browserSegments) -> {
|
||||
Pair("Safari", getBrowserVersion(browserSegments, "Version"))
|
||||
}
|
||||
else -> {
|
||||
when (val name = getRegularBrowserName(browserSegments)) {
|
||||
null -> {
|
||||
Pair(null, null)
|
||||
}
|
||||
else -> {
|
||||
Pair(name, getBrowserVersion(browserSegments, name))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
val browserInfo = parseBrowserInfoFromDesktopUserAgent(userAgent)
|
||||
|
||||
val deviceOperatingSystemSegments = userAgent.substringAfter("(").substringBefore(")").split("; ")
|
||||
val deviceOperatingSystem = if (deviceOperatingSystemSegments.getOrNull(1)?.startsWith("Android").orFalse()) {
|
||||
@ -120,11 +86,51 @@ class ParseDeviceUserAgentUseCase @Inject constructor() {
|
||||
deviceType = DeviceType.DESKTOP,
|
||||
deviceModel = null,
|
||||
deviceOperatingSystem = deviceOperatingSystem,
|
||||
clientName = browserName,
|
||||
clientVersion = browserVersion,
|
||||
clientName = browserInfo.name,
|
||||
clientVersion = browserInfo.version,
|
||||
)
|
||||
}
|
||||
|
||||
private data class BrowserInfo(val name: String? = null, val version: String? = null)
|
||||
|
||||
private fun parseBrowserInfoFromDesktopUserAgent(userAgent: String): BrowserInfo {
|
||||
val browserSegments = userAgent.split(" ")
|
||||
return when {
|
||||
isFirefox(browserSegments) -> {
|
||||
BrowserInfo("Firefox", getBrowserVersion(browserSegments, "Firefox"))
|
||||
}
|
||||
isEdge(browserSegments) -> {
|
||||
BrowserInfo("Edge", getBrowserVersion(browserSegments, "Edge"))
|
||||
}
|
||||
isMobile(browserSegments) -> {
|
||||
when (val name = getMobileBrowserName(browserSegments)) {
|
||||
null -> {
|
||||
BrowserInfo()
|
||||
}
|
||||
"Safari" -> {
|
||||
BrowserInfo(name, getBrowserVersion(browserSegments, "Version"))
|
||||
}
|
||||
else -> {
|
||||
BrowserInfo(name, getBrowserVersion(browserSegments, name))
|
||||
}
|
||||
}
|
||||
}
|
||||
isSafari(browserSegments) -> {
|
||||
BrowserInfo("Safari", getBrowserVersion(browserSegments, "Version"))
|
||||
}
|
||||
else -> {
|
||||
when (val name = getRegularBrowserName(browserSegments)) {
|
||||
null -> {
|
||||
BrowserInfo()
|
||||
}
|
||||
else -> {
|
||||
BrowserInfo(name, getBrowserVersion(browserSegments, name))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun parseWebUserAgent(userAgent: String): DeviceExtendedInfo {
|
||||
return parseDesktopUserAgent(userAgent).copy(
|
||||
deviceType = DeviceType.WEB
|
||||
|
Loading…
x
Reference in New Issue
Block a user