mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-10 00:50:49 +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 {
|
private fun parseDesktopUserAgent(userAgent: String): DeviceExtendedInfo {
|
||||||
val browserSegments = userAgent.split(" ")
|
val browserInfo = parseBrowserInfoFromDesktopUserAgent(userAgent)
|
||||||
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 deviceOperatingSystemSegments = userAgent.substringAfter("(").substringBefore(")").split("; ")
|
val deviceOperatingSystemSegments = userAgent.substringAfter("(").substringBefore(")").split("; ")
|
||||||
val deviceOperatingSystem = if (deviceOperatingSystemSegments.getOrNull(1)?.startsWith("Android").orFalse()) {
|
val deviceOperatingSystem = if (deviceOperatingSystemSegments.getOrNull(1)?.startsWith("Android").orFalse()) {
|
||||||
@ -120,11 +86,51 @@ class ParseDeviceUserAgentUseCase @Inject constructor() {
|
|||||||
deviceType = DeviceType.DESKTOP,
|
deviceType = DeviceType.DESKTOP,
|
||||||
deviceModel = null,
|
deviceModel = null,
|
||||||
deviceOperatingSystem = deviceOperatingSystem,
|
deviceOperatingSystem = deviceOperatingSystem,
|
||||||
clientName = browserName,
|
clientName = browserInfo.name,
|
||||||
clientVersion = browserVersion,
|
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 {
|
private fun parseWebUserAgent(userAgent: String): DeviceExtendedInfo {
|
||||||
return parseDesktopUserAgent(userAgent).copy(
|
return parseDesktopUserAgent(userAgent).copy(
|
||||||
deviceType = DeviceType.WEB
|
deviceType = DeviceType.WEB
|
||||||
|
Loading…
x
Reference in New Issue
Block a user