Преглед изворни кода

Merge pull request #1973 from nextcloud/bugfix/noid/reduce-number-of-detekt-issues

Reduce number of Detekt issues
Tim Krueger пре 3 година
родитељ
комит
04abd84d52

+ 76 - 70
app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt

@@ -213,7 +213,7 @@ class LocationPickerController(args: Bundle) :
         return true
     }
 
-    @Suppress("Detekt.TooGenericExceptionCaught")
+    @Suppress("Detekt.TooGenericExceptionCaught", "Detekt.ComplexMethod")
     private fun initMap() {
         binding.map.setTileSource(TileSourceFactory.MAPNIK)
         binding.map.onResume()
@@ -223,43 +223,7 @@ class LocationPickerController(args: Bundle) :
         if (!isLocationPermissionsGranted()) {
             requestLocationPermissions()
         } else {
-            try {
-                when {
-                    locationManager!!.isProviderEnabled(LocationManager.NETWORK_PROVIDER) -> {
-                        locationManager!!.requestLocationUpdates(
-                            LocationManager.NETWORK_PROVIDER,
-                            MIN_LOCATION_UPDATE_TIME,
-                            MIN_LOCATION_UPDATE_DISTANCE,
-                            this
-                        )
-                    }
-                    locationManager!!.isProviderEnabled(LocationManager.GPS_PROVIDER) -> {
-                        locationManager!!.requestLocationUpdates(
-                            LocationManager.GPS_PROVIDER,
-                            MIN_LOCATION_UPDATE_TIME,
-                            MIN_LOCATION_UPDATE_DISTANCE,
-                            this
-                        )
-                        Log.d(TAG, "LocationManager.NETWORK_PROVIDER falling back to LocationManager.GPS_PROVIDER")
-                    }
-                    else -> {
-                        Log.e(
-                            TAG,
-                            "Error requesting location updates. Probably this is a phone without google services" +
-                                " and there is no alternative like UnifiedNlp installed. Furthermore no GPS is " +
-                                "supported."
-                        )
-                        Toast.makeText(context, context?.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG)
-                            .show()
-                    }
-                }
-            } catch (e: SecurityException) {
-                Log.e(TAG, "Error when requesting location updates. Permissions may be missing.", e)
-                Toast.makeText(context, context?.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG).show()
-            } catch (e: Exception) {
-                Log.e(TAG, "Error when requesting location updates.", e)
-                Toast.makeText(context, context?.getString(R.string.nc_common_error_sorry), Toast.LENGTH_LONG).show()
-            }
+            requestLocationUpdates()
         }
 
         val copyrightOverlay = CopyrightOverlay(context)
@@ -317,39 +281,82 @@ class LocationPickerController(args: Bundle) :
         }
 
         binding.map.addMapListener(
-            DelayedMapListener(
-                object : MapListener {
-                    @Suppress("Detekt.TooGenericExceptionCaught")
-                    override fun onScroll(paramScrollEvent: ScrollEvent): Boolean {
-                        try {
-                            when {
-                                moveToCurrentLocationWasClicked -> {
-                                    setLocationDescription(isGpsLocation = true, isGeocodedResult = false)
-                                    moveToCurrentLocationWasClicked = false
-                                }
-                                receivedChosenGeocodingResult -> {
-                                    binding.shareLocation.isClickable = true
-                                    setLocationDescription(isGpsLocation = false, isGeocodedResult = true)
-                                    receivedChosenGeocodingResult = false
-                                }
-                                else -> {
-                                    binding.shareLocation.isClickable = true
-                                    setLocationDescription(isGpsLocation = false, isGeocodedResult = false)
-                                }
-                            }
-                        } catch (e: NullPointerException) {
-                            Log.d(TAG, "UI already closed")
-                        }
+            delayedMapListener()
+        )
+    }
 
-                        readyToShareLocation = true
-                        return true
+    private fun delayedMapListener() = DelayedMapListener(
+        object : MapListener {
+            @Suppress("Detekt.TooGenericExceptionCaught")
+            override fun onScroll(paramScrollEvent: ScrollEvent): Boolean {
+                try {
+                    when {
+                        moveToCurrentLocationWasClicked -> {
+                            setLocationDescription(isGpsLocation = true, isGeocodedResult = false)
+                            moveToCurrentLocationWasClicked = false
+                        }
+                        receivedChosenGeocodingResult -> {
+                            binding.shareLocation.isClickable = true
+                            setLocationDescription(isGpsLocation = false, isGeocodedResult = true)
+                            receivedChosenGeocodingResult = false
+                        }
+                        else -> {
+                            binding.shareLocation.isClickable = true
+                            setLocationDescription(isGpsLocation = false, isGeocodedResult = false)
+                        }
                     }
+                } catch (e: NullPointerException) {
+                    Log.d(TAG, "UI already closed")
+                }
 
-                    override fun onZoom(event: ZoomEvent): Boolean {
-                        return false
-                    }
-                })
-        )
+                readyToShareLocation = true
+                return true
+            }
+
+            override fun onZoom(event: ZoomEvent): Boolean {
+                return false
+            }
+        })
+
+    @Suppress("Detekt.TooGenericExceptionCaught")
+    private fun requestLocationUpdates() {
+        try {
+            when {
+                locationManager!!.isProviderEnabled(LocationManager.NETWORK_PROVIDER) -> {
+                    locationManager!!.requestLocationUpdates(
+                        LocationManager.NETWORK_PROVIDER,
+                        MIN_LOCATION_UPDATE_TIME,
+                        MIN_LOCATION_UPDATE_DISTANCE,
+                        this
+                    )
+                }
+                locationManager!!.isProviderEnabled(LocationManager.GPS_PROVIDER) -> {
+                    locationManager!!.requestLocationUpdates(
+                        LocationManager.GPS_PROVIDER,
+                        MIN_LOCATION_UPDATE_TIME,
+                        MIN_LOCATION_UPDATE_DISTANCE,
+                        this
+                    )
+                    Log.d(TAG, "LocationManager.NETWORK_PROVIDER falling back to LocationManager.GPS_PROVIDER")
+                }
+                else -> {
+                    Log.e(
+                        TAG,
+                        "Error requesting location updates. Probably this is a phone without google services" +
+                            " and there is no alternative like UnifiedNlp installed. Furthermore no GPS is " +
+                            "supported."
+                    )
+                    Toast.makeText(context, context?.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG)
+                        .show()
+                }
+            }
+        } catch (e: SecurityException) {
+            Log.e(TAG, "Error when requesting location updates. Permissions may be missing.", e)
+            Toast.makeText(context, context?.getString(R.string.nc_location_unknown), Toast.LENGTH_LONG).show()
+        } catch (e: Exception) {
+            Log.e(TAG, "Error when requesting location updates.", e)
+            Toast.makeText(context, context?.getString(R.string.nc_common_error_sorry), Toast.LENGTH_LONG).show()
+        }
     }
 
     private fun setLocationDescription(isGpsLocation: Boolean, isGeocodedResult: Boolean) {
@@ -467,11 +474,10 @@ class LocationPickerController(args: Bundle) :
         grantResults: IntArray
     ) {
         fun areAllGranted(grantResults: IntArray): Boolean {
-            if (grantResults.isEmpty()) return false
             grantResults.forEach {
                 if (it == PackageManager.PERMISSION_DENIED) return false
             }
-            return true
+            return grantResults.isNotEmpty()
         }
 
         if (requestCode == REQUEST_PERMISSIONS_REQUEST_CODE && areAllGranted(grantResults)) {

+ 25 - 15
app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt

@@ -5,6 +5,8 @@
  * Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
  * @author Marcel Hibbe
  * Copyright (C) 2021 Marcel Hibbe <dev@mhibbe.de>
+ * @author Tim Krüger
+ * Copyright (C) 2022 Tim Krüger <t@timkrueger.me>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -26,24 +28,32 @@ class ChatUtils {
     companion object {
         fun getParsedMessage(message: String?, messageParameters: HashMap<String?, HashMap<String?, String?>>?):
             String? {
-            var resultMessage = message
             if (messageParameters != null && messageParameters.size > 0) {
-                for (key in messageParameters.keys) {
-                    val individualHashMap = messageParameters[key]
-                    val type = individualHashMap?.get("type")
-                    if (type == "user" || type == "guest" || type == "call") {
-                        resultMessage = resultMessage?.replace("{$key}", "@" + individualHashMap["name"])
-                    } else if (type == "geo-location") {
-                        resultMessage = individualHashMap.get("name")
-                    } else if (individualHashMap?.containsKey("link") == true) {
-                        resultMessage = if (type == "file") {
-                            resultMessage?.replace("{$key}", individualHashMap["name"].toString())
-                        } else {
-                            individualHashMap["link"].toString()
-                        }
+                return parse(messageParameters, message)
+            }
+            return message
+        }
+
+        private fun parse(
+            messageParameters: HashMap<String?, HashMap<String?, String?>>,
+            message: String?
+        ): String? {
+            var resultMessage = message
+            for (key in messageParameters.keys) {
+                val individualHashMap = messageParameters[key]
+                val type = individualHashMap?.get("type")
+                if (type == "user" || type == "guest" || type == "call") {
+                    resultMessage = resultMessage?.replace("{$key}", "@" + individualHashMap["name"])
+                } else if (type == "geo-location") {
+                    resultMessage = individualHashMap.get("name")
+                } else if (individualHashMap?.containsKey("link") == true) {
+                    resultMessage = if (type == "file") {
+                        resultMessage?.replace("{$key}", individualHashMap["name"].toString())
                     } else {
-                        resultMessage = individualHashMap?.get("name")?.let { resultMessage?.replace("{$key}", it) }
+                        individualHashMap["link"].toString()
                     }
+                } else {
+                    resultMessage = individualHashMap?.get("name")?.let { resultMessage?.replace("{$key}", it) }
                 }
             }
             return resultMessage

+ 6 - 5
detekt.yml

@@ -69,7 +69,8 @@ complexity:
     excludes: ['**/androidTest/**']
   LongParameterList:
     active: true
-    threshold: 6
+    functionThreshold: 6
+    constructorThreshold: 7
     ignoreDefaultParameters: false
   MethodOverloading:
     active: false
@@ -333,7 +334,7 @@ potential-bugs:
     active: false
   LateinitUsage:
     active: false
-    excludeAnnotatedProperties: ""
+    ignoreAnnotated: []
     ignoreOnClassesPattern: ""
   UnconditionalJumpStatementInLoop:
     active: false
@@ -439,10 +440,10 @@ style:
     active: false
   UnderscoresInNumericLiterals:
     active: false
-    acceptableDecimalLength: 5
+    acceptableLength: 5
   UnnecessaryAbstractClass:
     active: false
-    excludeAnnotatedClasses: "dagger.Module"
+    ignoreAnnotated: ["dagger.Module"]
   UnnecessaryApply:
     active: false
   UnnecessaryInheritance:
@@ -462,7 +463,7 @@ style:
     allowedNames: "(_|ignored|expected|serialVersionUID)"
   UseDataClass:
     active: false
-    excludeAnnotatedClasses: ""
+    ignoreAnnotated: []
   UtilityClassWithPublicConstructor:
     active: false
   VarCouldBeVal: