From 2102f0fbc8635141b80c79fcf7edef2a2faac9ea Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 10 Mar 2022 18:38:27 +0100 Subject: [PATCH 01/11] document empty blocks Signed-off-by: Andy Scherzinger --- .../firebase/MagicFirebaseMessagingService.kt | 1 + .../talk/utils/ClosedInterfaceImpl.kt | 2 ++ .../AccountVerificationController.kt | 24 ++++++++++++----- .../talk/controllers/ChatController.kt | 5 +++- .../controllers/SwitchAccountController.kt | 12 ++++++--- .../bottomsheet/EntryMenuController.kt | 8 ++++-- .../talk/jobs/ContactAddressBookWorker.kt | 2 ++ .../talk/jobs/UploadAndShareFilesWorker.kt | 2 ++ .../talk/ui/dialog/SetStatusDialogFragment.kt | 27 ++++++++++++++----- 9 files changed, 65 insertions(+), 18 deletions(-) diff --git a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt index 6c0e0bffe..f7d24f54c 100644 --- a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt +++ b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt @@ -283,6 +283,7 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() { .subscribeOn(Schedulers.io()) .subscribe(object : Observer { override fun onSubscribe(d: Disposable) { + // unused atm } override fun onNext(participantsOverall: ParticipantsOverall) { diff --git a/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt b/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt index 83edacd4a..1a4d25ccb 100644 --- a/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt +++ b/app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt @@ -52,9 +52,11 @@ class ClosedInterfaceImpl : ClosedInterface, ProviderInstaller.ProviderInstallLi } override fun onProviderInstalled() { + // unused atm } override fun onProviderInstallFailed(p0: Int, p1: Intent?) { + // unused atm } private fun isGPlayServicesAvailable(): Boolean { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt index 9380395b4..2f5b050f9 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt @@ -176,7 +176,9 @@ class AccountVerificationController(args: Bundle? = null) : } } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } @@ -231,7 +233,9 @@ class AccountVerificationController(args: Bundle? = null) : abortVerification() } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } @@ -275,7 +279,9 @@ class AccountVerificationController(args: Bundle? = null) : abortVerification() } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } @@ -328,7 +334,9 @@ class AccountVerificationController(args: Bundle? = null) : abortVerification() } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } @@ -457,12 +465,16 @@ class AccountVerificationController(args: Bundle? = null) : if (!isAccountImport) { if (internalAccountId != -1L) { userUtils.deleteUserWithId(internalAccountId).subscribe(object : CompletableObserver { - override fun onSubscribe(d: Disposable) {} + override fun onSubscribe(d: Disposable) { + // unused atm + } override fun onComplete() { activity?.runOnUiThread { Handler().postDelayed({ router.popToRoot() }, 7500) } } - override fun onError(e: Throwable) {} + override fun onError(e: Throwable) { + // unused atm + } }) } else { activity?.runOnUiThread { Handler().postDelayed({ router.popToRoot() }, 7500) } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 185d23acd..a53cd8e48 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -433,7 +433,9 @@ class ChatController(args: Bundle) : } } - override fun onFailureImpl(dataSource: DataSource>) {} + override fun onFailureImpl(dataSource: DataSource>) { + // unused atm + } }, UiThreadImmediateExecutorService.getInstance() ) @@ -630,6 +632,7 @@ class ChatController(args: Bundle) : binding.messageInputView.inputEditText?.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + // unused atm } @Suppress("Detekt.TooGenericExceptionCaught") diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt index d613ce8cc..dbf071560 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/SwitchAccountController.kt @@ -94,7 +94,9 @@ class SwitchAccountController(args: Bundle? = null) : null, java.lang.Boolean.TRUE, null, userEntity.id, null, null, null ) .subscribe(object : Observer { - override fun onSubscribe(d: Disposable) {} + override fun onSubscribe(d: Disposable) { + // unused atm + } override fun onNext(userEntity: UserEntity) { cookieManager.cookieStore.removeAll() userUtils.disableAllUsersWithoutId(userEntity.id) @@ -103,8 +105,12 @@ class SwitchAccountController(args: Bundle? = null) : } } - override fun onError(e: Throwable) {} - override fun onComplete() {} + override fun onError(e: Throwable) { + // unused atm + } + override fun onComplete() { + // unused atm + } }) } true diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt index 711011cb2..e37718594 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt @@ -114,8 +114,12 @@ class EntryMenuController(args: Bundle) : } binding.textEdit.addTextChangedListener(object : TextWatcher { - override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} - override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + // unused atm + } + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + // unused atm + } override fun afterTextChanged(s: Editable) { if (!TextUtils.isEmpty(s)) { if (operation === ConversationOperationEnum.OPS_CODE_RENAME_ROOM) { diff --git a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt index 7ac98967f..c1c96472b 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/ContactAddressBookWorker.kt @@ -129,9 +129,11 @@ class ContactAddressBookWorker(val context: Context, workerParameters: WorkerPar .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Observer { override fun onComplete() { + // unused atm } override fun onSubscribe(d: Disposable) { + // unused atm } override fun onNext(foundContacts: ContactsByNumberOverall) { diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index ee7f29db1..ebd77fdac 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -145,9 +145,11 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Observer> { override fun onSubscribe(d: Disposable) { + // unused atm } override fun onNext(t: Response) { + // unused atm } override fun onError(e: Throwable) { diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt index 306f3df13..30271b244 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/SetStatusDialogFragment.kt @@ -122,6 +122,7 @@ class SetStatusDialogFragment : .subscribe(object : Observer { override fun onSubscribe(d: Disposable) { + // unused atm } override fun onNext(responseBody: ResponseBody) { @@ -136,9 +137,12 @@ class SetStatusDialogFragment : } override fun onError(e: Throwable) { + // unused atm } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } } @@ -322,8 +326,12 @@ class SetStatusDialogFragment : ncApi.statusDeleteMessage(credentials, ApiUtils.getUrlForStatusMessage(currentUser?.baseUrl)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()).subscribe(object : Observer { - override fun onSubscribe(d: Disposable) {} - override fun onNext(statusOverall: GenericOverall) {} + override fun onSubscribe(d: Disposable) { + // unused atm + } + override fun onNext(statusOverall: GenericOverall) { + // unused atm + } override fun onError(e: Throwable) { Log.e(logTag, "Failed to clear status", e) } @@ -343,7 +351,9 @@ class SetStatusDialogFragment : .io() ) .observeOn(AndroidSchedulers.mainThread()).subscribe(object : Observer { - override fun onSubscribe(d: Disposable) {} + override fun onSubscribe(d: Disposable) { + // unused atm + } override fun onNext(statusOverall: GenericOverall) { Log.d(logTag, "statusType successfully set") } @@ -353,7 +363,9 @@ class SetStatusDialogFragment : clearTopStatus() } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } @@ -417,6 +429,7 @@ class SetStatusDialogFragment : ?.subscribe(object : Observer { override fun onSubscribe(d: Disposable) { + // unused atm } override fun onNext(t: GenericOverall) { @@ -428,7 +441,9 @@ class SetStatusDialogFragment : Log.e(logTag, "failed to set CustomStatusMessage", e) } - override fun onComplete() {} + override fun onComplete() { + // unused atm + } }) } From 86f8f1d5cd28780da3abdc8099a3a2a7abcf98a6 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 10 Mar 2022 18:40:09 +0100 Subject: [PATCH 02/11] make constant a constant Signed-off-by: Andy Scherzinger --- .../talk/services/firebase/MagicFirebaseMessagingService.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt index f7d24f54c..2bc6c4670 100644 --- a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt +++ b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt @@ -81,7 +81,9 @@ import javax.inject.Inject @SuppressLint("LongLogTag") @AutoInjector(NextcloudTalkApplication::class) class MagicFirebaseMessagingService : FirebaseMessagingService() { - private val TAG = "MagicFirebaseMessagingService" + companion object { + const val TAG = "MagicFirebaseMessagingService" + } @JvmField @Inject From a10b67456c8e706af651f02d1fc030615631f68e Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 10 Mar 2022 18:44:37 +0100 Subject: [PATCH 03/11] ignore generic exception handling Signed-off-by: Andy Scherzinger --- .../talk/services/firebase/MagicFirebaseMessagingService.kt | 1 + app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt | 1 + .../com/nextcloud/talk/controllers/LocationPickerController.kt | 1 + .../java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt | 1 + app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt | 1 + app/src/main/java/com/nextcloud/talk/utils/ImageEmojiEditText.kt | 1 + 6 files changed, 6 insertions(+) diff --git a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt index 2bc6c4670..6a24dab79 100644 --- a/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt +++ b/app/src/gplay/java/com/nextcloud/talk/services/firebase/MagicFirebaseMessagingService.kt @@ -149,6 +149,7 @@ class MagicFirebaseMessagingService : FirebaseMessagingService() { } } + @Suppress("Detekt.TooGenericExceptionCaught") private fun decryptMessage(subject: String, signature: String) { try { val base64DecodedSubject = Base64.decode(subject, Base64.DEFAULT) diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index 231082239..c46d755e8 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -87,6 +87,7 @@ class MainActivity : BaseActivity(), ActionBarProvider { private var router: Router? = null + @Suppress("Detekt.TooGenericExceptionCaught") override fun onCreate(savedInstanceState: Bundle?) { Log.d(TAG, "onCreate: Activity: " + System.identityHashCode(this).toString()) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt b/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt index a4654d3f8..87618c774 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/LocationPickerController.kt @@ -213,6 +213,7 @@ class LocationPickerController(args: Bundle) : return true } + @Suppress("Detekt.TooGenericExceptionCaught") private fun initMap() { binding.map.setTileSource(TileSourceFactory.MAPNIK) binding.map.onResume() diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index ebd77fdac..ed1084b91 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -114,6 +114,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa return Result.success() } + @Suppress("Detekt.TooGenericExceptionCaught") private fun createRequestBody(sourcefileUri: Uri): RequestBody? { var requestBody: RequestBody? = null try { diff --git a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt index d6cbd1c68..947844e90 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt @@ -139,6 +139,7 @@ object AccountUtils { return false } + @Suppress("Detekt.TooGenericExceptionCaught") fun getInformationFromAccount(account: Account): ImportAccount { val lastAtPos = account.name.lastIndexOf("@") var urlString = account.name.substring(lastAtPos + 1) diff --git a/app/src/main/java/com/nextcloud/talk/utils/ImageEmojiEditText.kt b/app/src/main/java/com/nextcloud/talk/utils/ImageEmojiEditText.kt index 6a7c1b764..154565903 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ImageEmojiEditText.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ImageEmojiEditText.kt @@ -43,6 +43,7 @@ class ImageEmojiEditText : EmojiEditText { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet) : super(context, attrs) + @Suppress("Detekt.TooGenericExceptionCaught") override fun onCreateInputConnection(editorInfo: EditorInfo): InputConnection { val ic: InputConnection = super.onCreateInputConnection(editorInfo) From 9223727e009da85f8ccd455f26e1d377991e6340 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Thu, 10 Mar 2022 18:45:13 +0100 Subject: [PATCH 04/11] adapt to new detekt score Signed-off-by: Andy Scherzinger --- detekt.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detekt.yml b/detekt.yml index 36a91e080..8ff4e4e66 100644 --- a/detekt.yml +++ b/detekt.yml @@ -1,5 +1,5 @@ build: - maxIssues: 217 + maxIssues: 157 weights: # complexity: 2 # LongParameterList: 1 From 454dbc5db2f9508d2f895ca72c03e9432671af38 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 11 Mar 2022 14:30:44 +0100 Subject: [PATCH 05/11] unify http(s) protocoll prefix check on urls Signed-off-by: Andy Scherzinger --- .../messages/IncomingLocationMessageViewHolder.kt | 3 ++- .../messages/OutcomingLocationMessageViewHolder.kt | 3 ++- .../talk/controllers/AccountVerificationController.kt | 4 ++-- .../talk/controllers/ServerSelectionController.kt | 3 ++- .../talk/controllers/bottomsheet/EntryMenuController.kt | 8 ++++---- .../main/java/com/nextcloud/talk/utils/AccountUtils.kt | 5 +---- app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt | 5 +++++ 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt index b55017140..3c1d70d53 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingLocationMessageViewHolder.kt @@ -53,6 +53,7 @@ import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.ui.bottom.sheet.ProfileBottomSheet import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.DisplayUtils +import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.preferences.AppPreferences import com.stfalcon.chatkit.messages.MessageHolders import java.net.URLEncoder @@ -218,7 +219,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : Mess binding.webview.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { - return if (url != null && (url.startsWith("http://") || url.startsWith("https://")) + return if (url != null && UriUtils.hasHttpProtocollPrefixed(url) ) { view?.context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) true diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingLocationMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingLocationMessageViewHolder.kt index 6ef0c283b..3a0fe3a6a 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingLocationMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingLocationMessageViewHolder.kt @@ -47,6 +47,7 @@ import com.nextcloud.talk.models.json.chat.ChatMessage import com.nextcloud.talk.models.json.chat.ReadStatus import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.DisplayUtils +import com.nextcloud.talk.utils.UriUtils import com.stfalcon.chatkit.messages.MessageHolders import java.net.URLEncoder import javax.inject.Inject @@ -131,7 +132,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : MessageHolders binding.webview.webViewClient = object : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { - return if (url != null && (url.startsWith("http://") || url.startsWith("https://")) + return if (url != null && UriUtils.hasHttpProtocollPrefixed(url) ) { view?.context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) true diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt index 2f5b050f9..97241d178 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt @@ -48,6 +48,7 @@ import com.nextcloud.talk.models.json.generic.Status import com.nextcloud.talk.models.json.userprofile.UserProfileOverall import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.ClosedInterfaceImpl +import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_BASE_URL import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT @@ -113,8 +114,7 @@ class AccountVerificationController(args: Bundle? = null) : actionBar?.hide() if (isAccountImport && - !baseUrl!!.startsWith("http://") && - !baseUrl!!.startsWith("https://") || + !UriUtils.hasHttpProtocollPrefixed(baseUrl!!) || !TextUtils.isEmpty(originalProtocol!!) && !baseUrl!!.startsWith(originalProtocol!!) ) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt index bd5d228a1..7b5fa77c4 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt @@ -48,6 +48,7 @@ import com.nextcloud.talk.utils.AccountUtils.findAccounts import com.nextcloud.talk.utils.AccountUtils.getAppNameBasedOnPackage import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.DisplayUtils +import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder @@ -197,7 +198,7 @@ class ServerSelectionController : NewBaseController(R.layout.controller_server_s url = url.substring(0, url.length - 1) } val queryUrl = url + ApiUtils.getUrlPostfixForStatus() - if (url.startsWith("http://") || url.startsWith("https://")) { + if (UriUtils.hasHttpProtocollPrefixed(url)) { checkServer(queryUrl, false) } else { checkServer("https://$queryUrl", true) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt index e37718594..319033fa1 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt @@ -46,6 +46,7 @@ import com.nextcloud.talk.controllers.util.viewBinding import com.nextcloud.talk.databinding.ControllerEntryMenuBinding import com.nextcloud.talk.models.json.conversations.Conversation import com.nextcloud.talk.utils.ShareUtils +import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder @@ -117,9 +118,11 @@ class EntryMenuController(args: Bundle) : override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { // unused atm } + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { // unused atm } + override fun afterTextChanged(s: Editable) { if (!TextUtils.isEmpty(s)) { if (operation === ConversationOperationEnum.OPS_CODE_RENAME_ROOM) { @@ -143,10 +146,7 @@ class EntryMenuController(args: Bundle) : } binding.textInputLayout.isErrorEnabled = false } else if ( - ( - binding.textEdit.text.toString().startsWith("http://") || - binding.textEdit.text.toString().startsWith("https://") - ) && + UriUtils.hasHttpProtocollPrefixed(binding.textEdit.text.toString()) && binding.textEdit.text.toString().contains("/call/") ) { if (!binding.okButton.isEnabled) { diff --git a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt index 947844e90..34c66d86c 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/AccountUtils.kt @@ -55,10 +55,7 @@ object AccountUtils { internalUserEntity = userEntitiesList[i] importAccount = getInformationFromAccount(account) if (importAccount.token != null) { - if ( - importAccount.baseUrl.startsWith("http://") || - importAccount.baseUrl.startsWith("https://") - ) { + if (UriUtils.hasHttpProtocollPrefixed(importAccount.baseUrl)) { if ( internalUserEntity.username == importAccount.username && internalUserEntity.baseUrl == importAccount.baseUrl diff --git a/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt index 1397e7714..d668c8521 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt @@ -24,6 +24,7 @@ import android.content.Context import android.database.Cursor import android.net.Uri import android.provider.OpenableColumns +import android.text.TextUtils import android.util.Log class UriUtils { @@ -50,5 +51,9 @@ class UriUtils { } return filename } + + fun hasHttpProtocollPrefixed(uri: String): Boolean { + return uri.startsWith("http://") || uri.startsWith("https://") + } } } From 6206e4910d5b31d28e446c6003fdd47a779b2c77 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 11 Mar 2022 15:18:12 +0100 Subject: [PATCH 06/11] simplify complex conditions for readability Signed-off-by: Andy Scherzinger --- .../AccountVerificationController.kt | 10 +++++-- .../talk/controllers/ChatController.kt | 28 ++++++++++++------- .../controllers/ServerSelectionController.kt | 8 ++++-- .../bottomsheet/EntryMenuController.kt | 18 ++++++++---- detekt.yml | 2 +- 5 files changed, 44 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt index 97241d178..f00ad3af7 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt @@ -113,10 +113,10 @@ class AccountVerificationController(args: Bundle? = null) : actionBar?.hide() - if (isAccountImport && + if ( + isAccountImport && !UriUtils.hasHttpProtocollPrefixed(baseUrl!!) || - !TextUtils.isEmpty(originalProtocol!!) && - !baseUrl!!.startsWith(originalProtocol!!) + isSameProtocol(baseUrl!!, originalProtocol!!) ) { determineBaseUrlProtocol(true) } else { @@ -124,6 +124,10 @@ class AccountVerificationController(args: Bundle? = null) : } } + private fun isSameProtocol(baseUrl: String, originalProtocol: String ) : Boolean { + return !TextUtils.isEmpty(originalProtocol) && !baseUrl.startsWith(originalProtocol) + } + private fun checkEverything() { val credentials = ApiUtils.getCredentials(username, token) cookieManager.cookieStore.removeAll() diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index a53cd8e48..5781e69f9 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -1605,12 +1605,7 @@ class ChatController(args: Bundle) : activity?.findViewById(R.id.toolbar)?.setOnClickListener(null) } - if (conversationUser != null && - activity != null && - !activity?.isChangingConfigurations!! && - !ApplicationWideCurrentRoomHolder.getInstance().isInCall && - !ApplicationWideCurrentRoomHolder.getInstance().isDialing - ) { + if (conversationUser != null && isActivityNotChangingConfigurations() && isNotInCall()) { ApplicationWideCurrentRoomHolder.getInstance().clear() if (inConversation && validSessionId()) { leaveRoom() @@ -1622,6 +1617,15 @@ class ChatController(args: Bundle) : } } + private fun isActivityNotChangingConfigurations(): Boolean { + return activity != null && !activity?.isChangingConfigurations!! + } + + private fun isNotInCall(): Boolean { + return !ApplicationWideCurrentRoomHolder.getInstance().isInCall && + !ApplicationWideCurrentRoomHolder.getInstance().isDialing + } + override val title: String get() = if (currentConversation?.displayName != null) { @@ -2118,11 +2122,9 @@ class ChatController(args: Bundle) : for (i in chatMessageList.indices) { if (chatMessageList.size > i + 1) { - if (TextUtils.isEmpty(chatMessageList[i].systemMessage) && - TextUtils.isEmpty(chatMessageList[i + 1].systemMessage) && + if (isSameDayNonSystemMessages(chatMessageList[i], chatMessageList[i + 1]) && chatMessageList[i + 1].actorId == chatMessageList[i].actorId && - countGroupedMessages < 4 && - DateFormatter.isSameDay(chatMessageList[i].createdAt, chatMessageList[i + 1].createdAt) + countGroupedMessages < 4 ) { chatMessageList[i].isGrouped = true countGroupedMessages++ @@ -2254,6 +2256,12 @@ class ChatController(args: Bundle) : } } + private fun isSameDayNonSystemMessages(messageLeft: ChatMessage, messageRight: ChatMessage): Boolean { + return TextUtils.isEmpty(messageLeft.systemMessage) && + TextUtils.isEmpty(messageRight.systemMessage) && + DateFormatter.isSameDay(messageLeft.createdAt,messageRight.createdAt) + } + override fun onLoadMore(page: Int, totalItemsCount: Int) { if (!historyRead && inConversation) { pullChatMessages(0) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt index 7b5fa77c4..2058a6a1b 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ServerSelectionController.kt @@ -213,9 +213,7 @@ class ServerSelectionController : NewBaseController(R.layout.controller_server_s val productName = resources!!.getString(R.string.nc_server_product_name) val versionString: String = status.getVersion().substring(0, status.getVersion().indexOf(".")) val version: Int = versionString.toInt() - if (status.isInstalled && !status.isMaintenance && - !status.isNeedsUpgrade && version >= 13 - ) { + if (isServerStatusQueryable(status) && version >= 13) { router.pushController( RouterTransaction.with( WebViewLoginController( @@ -285,6 +283,10 @@ class ServerSelectionController : NewBaseController(R.layout.controller_server_s } } + private fun isServerStatusQueryable(status: Status): Boolean { + return status.isInstalled && !status.isMaintenance && !status.isNeedsUpgrade + } + private fun setErrorText(text: String) { binding.errorText.text = text binding.errorText.visibility = View.VISIBLE diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt index 319033fa1..1aaf44e0a 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.kt @@ -51,6 +51,7 @@ import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.database.user.UserUtils import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder import com.vanniktech.emoji.EmojiPopup +import okhttp3.internal.immutableListOf import org.greenrobot.eventbus.EventBus import org.parceler.Parcels import org.parceler.Parcels.unwrap @@ -215,15 +216,12 @@ class EntryMenuController(args: Bundle) : else -> { } } - if (operation === ConversationOperationEnum.OPS_CODE_JOIN_ROOM || - operation === ConversationOperationEnum.OPS_CODE_CHANGE_PASSWORD || - operation === ConversationOperationEnum.OPS_CODE_SET_PASSWORD || - operation === ConversationOperationEnum.OPS_CODE_SHARE_LINK - ) { + if (PASSWORD_ENTRY_OPERATIONS.contains(operation)) { binding.textInputLayout.endIconMode = TextInputLayout.END_ICON_PASSWORD_TOGGLE } else { binding.textInputLayout.endIconMode = TextInputLayout.END_ICON_NONE } + binding.textInputLayout.hint = labelText binding.textInputLayout.requestFocus() @@ -327,4 +325,14 @@ class EntryMenuController(args: Bundle) : packageName = args.getString(BundleKeys.KEY_APP_ITEM_PACKAGE_NAME, "") callUrl = args.getString(BundleKeys.KEY_CALL_URL, "") } + + companion object { + private val PASSWORD_ENTRY_OPERATIONS: List = + immutableListOf( + ConversationOperationEnum.OPS_CODE_JOIN_ROOM, + ConversationOperationEnum.OPS_CODE_CHANGE_PASSWORD, + ConversationOperationEnum.OPS_CODE_SET_PASSWORD, + ConversationOperationEnum.OPS_CODE_SHARE_LINK + ) + } } diff --git a/detekt.yml b/detekt.yml index 8ff4e4e66..6ebac51e2 100644 --- a/detekt.yml +++ b/detekt.yml @@ -1,5 +1,5 @@ build: - maxIssues: 157 + maxIssues: 151 weights: # complexity: 2 # LongParameterList: 1 From 6e02c5de41663a5f1211510d71a1b1210d3f9a08 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 11 Mar 2022 18:16:51 +0100 Subject: [PATCH 07/11] reformat kotlin Signed-off-by: Andy Scherzinger --- .../talk/controllers/AccountVerificationController.kt | 2 +- .../main/java/com/nextcloud/talk/controllers/ChatController.kt | 2 +- app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt index f00ad3af7..3074aaa9d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.kt @@ -124,7 +124,7 @@ class AccountVerificationController(args: Bundle? = null) : } } - private fun isSameProtocol(baseUrl: String, originalProtocol: String ) : Boolean { + private fun isSameProtocol(baseUrl: String, originalProtocol: String): Boolean { return !TextUtils.isEmpty(originalProtocol) && !baseUrl.startsWith(originalProtocol) } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 5781e69f9..2343f89da 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -2259,7 +2259,7 @@ class ChatController(args: Bundle) : private fun isSameDayNonSystemMessages(messageLeft: ChatMessage, messageRight: ChatMessage): Boolean { return TextUtils.isEmpty(messageLeft.systemMessage) && TextUtils.isEmpty(messageRight.systemMessage) && - DateFormatter.isSameDay(messageLeft.createdAt,messageRight.createdAt) + DateFormatter.isSameDay(messageLeft.createdAt, messageRight.createdAt) } override fun onLoadMore(page: Int, totalItemsCount: Int) { diff --git a/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt index d668c8521..71d0e05ff 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt @@ -1,7 +1,9 @@ /* * Nextcloud Talk application * + * @author Andy Scherzinger * @author Marcel Hibbe + * Copyright (C) 2022 Andy Scherzinger * Copyright (C) 2021 Marcel Hibbe * * This program is free software: you can redistribute it and/or modify @@ -24,7 +26,6 @@ import android.content.Context import android.database.Cursor import android.net.Uri import android.provider.OpenableColumns -import android.text.TextUtils import android.util.Log class UriUtils { From ba3e24bbc79a1c05d6216c4684027b17431490b2 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 11 Mar 2022 18:29:39 +0100 Subject: [PATCH 08/11] replace too long paramter lists with data classes Signed-off-by: Andy Scherzinger --- .../talk/jobs/UploadAndShareFilesWorker.kt | 38 ++++++++++++------- .../nextcloud/talk/utils/NotificationUtils.kt | 32 ++++++++++------ 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index ed1084b91..3a5f24afb 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -99,10 +99,18 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa checkNotNull(roomToken) for (index in sourcefiles.indices) { - val sourcefileUri = Uri.parse(sourcefiles[index]) - val filename = UriUtils.getFileName(sourcefileUri, context) - val requestBody = createRequestBody(sourcefileUri) - uploadFile(currentUser, ncTargetpath, filename, roomToken, requestBody, sourcefileUri, metaData) + val sourceFileUri = Uri.parse(sourcefiles[index]) + uploadFile( + currentUser!!, + UploadItem( + sourceFileUri, + UriUtils.getFileName(sourceFileUri, context), + createRequestBody(sourceFileUri) + ), + ncTargetpath, + roomToken, + metaData + ) } } catch (e: IllegalStateException) { Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) @@ -130,17 +138,15 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa private fun uploadFile( currentUser: UserEntity, - ncTargetpath: String?, - filename: String, + uploadItem: UploadItem, + ncTargetPath: String?, roomToken: String?, - requestBody: RequestBody?, - sourcefileUri: Uri, metaData: String? ) { ncApi.uploadFile( ApiUtils.getCredentials(currentUser.username, currentUser.token), - ApiUtils.getUrlForFileUpload(currentUser.baseUrl, currentUser.userId, ncTargetpath, filename), - requestBody + ApiUtils.getUrlForFileUpload(currentUser.baseUrl, currentUser.userId, ncTargetPath, uploadItem.fileName), + uploadItem.requestBody ) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -154,12 +160,12 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa } override fun onError(e: Throwable) { - Log.e(TAG, "failed to upload file $filename") + Log.e(TAG, "failed to upload file ${uploadItem.fileName}") } override fun onComplete() { - shareFile(roomToken, currentUser, ncTargetpath, filename, metaData) - copyFileToCache(sourcefileUri, filename) + shareFile(roomToken, currentUser, ncTargetPath, uploadItem.fileName, metaData) + copyFileToCache(uploadItem.uri, uploadItem.fileName) } }) } @@ -274,4 +280,10 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa } } } + + private data class UploadItem( + val uri: Uri, + val fileName: String, + val requestBody: RequestBody?, + ) } diff --git a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt index af769a3d7..f01c98773 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt @@ -2,6 +2,8 @@ * Nextcloud Talk application * * @author Mario Danic + * @author Andy Scherzinger + * Copyright (C) 2021 Andy Scherzinger * Copyright (C) 2017 Mario Danic * * This program is free software: you can redistribute it and/or modify @@ -62,9 +64,7 @@ object NotificationUtils { @TargetApi(Build.VERSION_CODES.O) private fun createNotificationChannel( context: Context, - channelId: String, - channelName: String, - channelDescription: String, + notificationChannel: Channel, sound: Uri?, audioAttributes: AudioAttributes ) { @@ -73,14 +73,14 @@ object NotificationUtils { if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && - notificationManager.getNotificationChannel(channelId) == null + notificationManager.getNotificationChannel(notificationChannel.id) == null ) { val channel = NotificationChannel( - channelId, channelName, + notificationChannel.id, notificationChannel.name, NotificationManager.IMPORTANCE_HIGH ) - channel.description = channelDescription + channel.description = notificationChannel.description channel.enableLights(true) channel.lightColor = R.color.colorPrimary channel.setSound(sound, audioAttributes) @@ -103,9 +103,10 @@ object NotificationUtils { createNotificationChannel( context, - NOTIFICATION_CHANNEL_CALLS_V4, - context.resources.getString(R.string.nc_notification_channel_calls), - context.resources.getString(R.string.nc_notification_channel_calls_description), + Channel( + NOTIFICATION_CHANNEL_CALLS_V4, + context.resources.getString(R.string.nc_notification_channel_calls), + context.resources.getString(R.string.nc_notification_channel_calls_description)), soundUri, audioAttributes ) @@ -124,9 +125,10 @@ object NotificationUtils { createNotificationChannel( context, - NOTIFICATION_CHANNEL_MESSAGES_V4, - context.resources.getString(R.string.nc_notification_channel_messages), - context.resources.getString(R.string.nc_notification_channel_messages_description), + Channel( + NOTIFICATION_CHANNEL_MESSAGES_V4, + context.resources.getString(R.string.nc_notification_channel_messages), + context.resources.getString(R.string.nc_notification_channel_messages_description)), soundUri, audioAttributes ) @@ -322,4 +324,10 @@ object NotificationUtils { appPreferences.messageRingtoneUri, DEFAULT_MESSAGE_RINGTONE_URI, NOTIFICATION_CHANNEL_MESSAGES_V4 ) } + + private data class Channel( + val id: String, + val name: String, + val description: String + ) } From 1ef8acb153cf4f6be75a9aa5ffc255129c0f8e2a Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 11 Mar 2022 18:30:15 +0100 Subject: [PATCH 09/11] lower detekt score Signed-off-by: Andy Scherzinger --- detekt.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detekt.yml b/detekt.yml index 6ebac51e2..7465a5835 100644 --- a/detekt.yml +++ b/detekt.yml @@ -1,5 +1,5 @@ build: - maxIssues: 151 + maxIssues: 149 weights: # complexity: 2 # LongParameterList: 1 From f36b7750de5c794933c0d0869105c447abcaae54 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Fri, 11 Mar 2022 23:57:12 +0100 Subject: [PATCH 10/11] format kotlin code Signed-off-by: Andy Scherzinger --- .../main/java/com/nextcloud/talk/utils/NotificationUtils.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt index f01c98773..61941f251 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt @@ -106,7 +106,8 @@ object NotificationUtils { Channel( NOTIFICATION_CHANNEL_CALLS_V4, context.resources.getString(R.string.nc_notification_channel_calls), - context.resources.getString(R.string.nc_notification_channel_calls_description)), + context.resources.getString(R.string.nc_notification_channel_calls_description) + ), soundUri, audioAttributes ) @@ -128,7 +129,8 @@ object NotificationUtils { Channel( NOTIFICATION_CHANNEL_MESSAGES_V4, context.resources.getString(R.string.nc_notification_channel_messages), - context.resources.getString(R.string.nc_notification_channel_messages_description)), + context.resources.getString(R.string.nc_notification_channel_messages_description) + ), soundUri, audioAttributes ) From 306e522b00314f39aa0f2a807e29c095e3269d0d Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Sat, 12 Mar 2022 00:07:13 +0100 Subject: [PATCH 11/11] bump lint Signed-off-by: Andy Scherzinger --- scripts/analysis/lint-results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt index 2445b0e58..8146c9978 100644 --- a/scripts/analysis/lint-results.txt +++ b/scripts/analysis/lint-results.txt @@ -1,2 +1,2 @@ DO NOT TOUCH; GENERATED BY DRONE - Lint Report: 1 error and 171 warnings + Lint Report: 1 error and 172 warnings