diff --git a/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt b/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt index 60be0f60b..c150dd6dd 100644 --- a/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/account/ServerSelectionActivity.kt @@ -12,7 +12,6 @@ import android.accounts.Account import android.annotation.SuppressLint import android.content.Intent import android.content.pm.ActivityInfo -import android.net.Uri import android.os.Bundle import android.security.KeyChain import android.text.TextUtils @@ -22,22 +21,24 @@ import android.view.View import android.view.inputmethod.EditorInfo import android.widget.TextView import androidx.activity.OnBackPressedCallback +import androidx.core.net.toUri import autodagger.AutoInjector import com.nextcloud.talk.R import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication +import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.databinding.ActivityServerSelectionBinding import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall import com.nextcloud.talk.models.json.generic.Status import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.AccountUtils import com.nextcloud.talk.utils.ApiUtils +import com.nextcloud.talk.utils.CapabilitiesUtil import com.nextcloud.talk.utils.UriUtils import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys.ADD_ADDITIONAL_ACCOUNT import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT -import com.nextcloud.talk.utils.CapabilitiesUtil import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers @@ -45,7 +46,6 @@ import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import java.security.cert.CertificateException import javax.inject.Inject -import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication @AutoInjector(NextcloudTalkApplication::class) class ServerSelectionActivity : BaseActivity() { @@ -198,10 +198,7 @@ class ServerSelectionActivity : BaseActivity() { binding.importOrChooseProviderText.setOnClickListener { val browserIntent = Intent( Intent.ACTION_VIEW, - Uri.parse( - resources!! - .getString(R.string.nc_providers_url) - ) + resources!!.getString(R.string.nc_providers_url).toUri() ) startActivity(browserIntent) } diff --git a/app/src/main/java/com/nextcloud/talk/account/SwitchAccountActivity.kt b/app/src/main/java/com/nextcloud/talk/account/SwitchAccountActivity.kt index ea2e51c26..6b137c2d0 100644 --- a/app/src/main/java/com/nextcloud/talk/account/SwitchAccountActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/account/SwitchAccountActivity.kt @@ -12,8 +12,8 @@ import android.accounts.Account import android.annotation.SuppressLint import android.content.Intent import android.content.pm.ActivityInfo -import android.graphics.drawable.ColorDrawable import android.os.Bundle +import androidx.core.graphics.drawable.toDrawable import androidx.preference.PreferenceManager import androidx.recyclerview.widget.LinearLayoutManager import autodagger.AutoInjector @@ -21,6 +21,7 @@ import com.nextcloud.talk.R import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.adapters.items.AdvancedUserItem import com.nextcloud.talk.application.NextcloudTalkApplication +import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.databinding.ActivitySwitchAccountBinding import com.nextcloud.talk.models.ImportAccount @@ -38,7 +39,6 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import org.osmdroid.config.Configuration import java.net.CookieManager import javax.inject.Inject -import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication /** * Parts related to account import were either copied from or inspired by the great work done by David Luhmer at: @@ -108,7 +108,7 @@ class SwitchAccountActivity : BaseActivity() { } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) supportActionBar?.title = resources!!.getString(R.string.nc_select_an_account) } diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt index 7a4fecb25..9880a8eb9 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt @@ -49,6 +49,9 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.DrawableRes import androidx.appcompat.app.AlertDialog import androidx.core.graphics.drawable.DrawableCompat +import androidx.core.graphics.toColorInt +import androidx.core.net.toUri +import androidx.core.view.isVisible import androidx.lifecycle.ViewModelProvider import autodagger.AutoInjector import com.bluelinelabs.logansquare.LoganSquare @@ -1262,7 +1265,7 @@ class CallActivity : CallBaseActivity() { .subHeadingTvColor(resources.getColor(R.color.bg_default, null)) .subHeadingTvSize(SPOTLIGHT_SUBHEADING_SIZE) .subHeadingTvText(resources.getString(R.string.nc_push_to_talk_desc)) - .maskColor(Color.parseColor("#dc000000")) + .maskColor("#dc000000".toColorInt()) .target(binding!!.microphoneButton) .lineAnimDuration(FADE_IN_ANIMATION_DURATION) .enableDismissAfterShown(true) @@ -2532,7 +2535,7 @@ class CallActivity : CallBaseActivity() { val screenWidthPx = displayMetrics.widthPixels val screenWidthDp = DisplayUtils.convertPixelToDp(screenWidthPx.toFloat(), applicationContext).toInt() var newXafterRotate = 0f - val newYafterRotate: Float = if (binding!!.callInfosLinearLayout.visibility == View.VISIBLE) { + val newYafterRotate: Float = if (binding!!.callInfosLinearLayout.isVisible) { Y_POS_CALL_INFO } else { Y_POS_NO_CALL_INFO @@ -2825,7 +2828,7 @@ class CallActivity : CallBaseActivity() { val ringtoneUri: Uri? = if (isIncomingCallFromNotification) { getCallRingtoneUri(applicationContext, appPreferences) } else { - Uri.parse("android.resource://" + applicationContext.packageName + "/raw/tr110_1_kap8_3_freiton1") + ("android.resource://" + applicationContext.packageName + "/raw/tr110_1_kap8_3_freiton1").toUri() } if (ringtoneUri != null) { mediaPlayer = MediaPlayer() diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.kt index 193d55b39..a69735505 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.kt @@ -8,9 +8,9 @@ package com.nextcloud.talk.adapters.items import android.accounts.Account -import android.net.Uri import android.text.TextUtils import android.view.View +import androidx.core.net.toUri import androidx.recyclerview.widget.RecyclerView import com.nextcloud.talk.R import com.nextcloud.talk.adapters.items.AdvancedUserItem.UserItemViewHolder @@ -75,9 +75,9 @@ class AdvancedUserItem( holder.binding.userName.text = model.displayName } if (user != null && !TextUtils.isEmpty(user.baseUrl)) { - val host = Uri.parse(user.baseUrl).host + val host = user.baseUrl!!.toUri().host if (!TextUtils.isEmpty(host)) { - holder.binding.account.text = Uri.parse(user.baseUrl).host + holder.binding.account.text = user.baseUrl!!.toUri().host } else { holder.binding.account.text = user.baseUrl } diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingDeckCardViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingDeckCardViewHolder.kt index dbadc85d4..281ab0698 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingDeckCardViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingDeckCardViewHolder.kt @@ -10,11 +10,11 @@ package com.nextcloud.talk.adapters.messages import android.annotation.SuppressLint import android.content.Context import android.content.Intent -import android.net.Uri import android.util.Log import android.view.View import android.widget.ImageView import androidx.core.content.ContextCompat +import androidx.core.net.toUri import autodagger.AutoInjector import coil.load import com.nextcloud.android.common.ui.theme.utils.ColorRole @@ -100,7 +100,7 @@ class IncomingDeckCardViewHolder(incomingView: View, payload: Any) : MessageHold } binding.cardView.setOnClickListener { - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(cardLink)) + val browserIntent = Intent(Intent.ACTION_VIEW, cardLink!!.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(browserIntent) } 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 d90badf03..00e113b96 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 @@ -12,13 +12,13 @@ package com.nextcloud.talk.adapters.messages import android.annotation.SuppressLint import android.content.Context import android.content.Intent -import android.net.Uri import android.util.Log import android.util.TypedValue import android.view.MotionEvent import android.view.View import android.webkit.WebView import android.webkit.WebViewClient +import androidx.core.net.toUri import autodagger.AutoInjector import coil.load import com.google.android.material.snackbar.Snackbar @@ -223,7 +223,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { return if (url != null && UriUtils.hasHttpProtocolPrefixed(url) ) { - view?.context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) + view?.context?.startActivity(Intent(Intent.ACTION_VIEW, url.toUri())) true } else { false @@ -259,7 +259,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) : private fun openGeoLink() { if (!locationGeoLink.isNullOrEmpty()) { val geoLinkWithMarker = addMarkerToGeoLink(locationGeoLink!!) - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(geoLinkWithMarker)) + val browserIntent = Intent(Intent.ACTION_VIEW, geoLinkWithMarker.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(browserIntent) } else { diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/LinkPreview.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/LinkPreview.kt index b9e791219..bd6384f73 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/LinkPreview.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/LinkPreview.kt @@ -8,13 +8,13 @@ package com.nextcloud.talk.adapters.messages import android.content.Context import android.content.Intent -import android.net.Uri import android.util.Log import android.view.View +import androidx.core.net.toUri import coil.load import com.nextcloud.talk.api.NcApi -import com.nextcloud.talk.databinding.ReferenceInsideMessageBinding import com.nextcloud.talk.chat.data.model.ChatMessage +import com.nextcloud.talk.databinding.ReferenceInsideMessageBinding import com.nextcloud.talk.models.json.opengraph.OpenGraphOverall import com.nextcloud.talk.utils.ApiUtils import io.reactivex.Observer @@ -82,7 +82,7 @@ class LinkPreview { } binding.referenceWrapper.setOnClickListener { - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(referenceLink)) + val browserIntent = Intent(Intent.ACTION_VIEW, referenceLink!!.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(browserIntent) } diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingDeckCardViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingDeckCardViewHolder.kt index c6c355e92..3a89c4fe3 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingDeckCardViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingDeckCardViewHolder.kt @@ -11,12 +11,12 @@ package com.nextcloud.talk.adapters.messages import android.annotation.SuppressLint import android.content.Context import android.content.Intent -import android.net.Uri import android.util.Log import android.view.View import android.widget.ImageView import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.ContextCompat +import androidx.core.net.toUri import autodagger.AutoInjector import coil.load import com.nextcloud.android.common.ui.theme.utils.ColorRole @@ -121,7 +121,7 @@ class OutcomingDeckCardViewHolder( binding.checkMark.contentDescription = readStatusContentDescriptionString binding.cardView.setOnClickListener { - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(cardLink)) + val browserIntent = Intent(Intent.ACTION_VIEW, cardLink!!.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(browserIntent) } 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 5d756c383..d911f5d04 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 @@ -11,7 +11,6 @@ package com.nextcloud.talk.adapters.messages import android.annotation.SuppressLint import android.content.Context import android.content.Intent -import android.net.Uri import android.util.Log import android.util.TypedValue import android.view.MotionEvent @@ -19,6 +18,7 @@ import android.view.View import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.content.res.AppCompatResources +import androidx.core.net.toUri import autodagger.AutoInjector import coil.load import com.google.android.flexbox.FlexboxLayout @@ -160,7 +160,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { return if (url != null && UriUtils.hasHttpProtocolPrefixed(url) ) { - view?.context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) + view?.context?.startActivity(Intent(Intent.ACTION_VIEW, url.toUri())) true } else { false @@ -259,7 +259,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) : private fun openGeoLink() { if (!locationGeoLink.isNullOrEmpty()) { val geoLinkWithMarker = addMarkerToGeoLink(locationGeoLink!!) - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(geoLinkWithMarker)) + val browserIntent = Intent(Intent.ACTION_VIEW, geoLinkWithMarker.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(browserIntent) } else { diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt index a5df1b3a7..fa276362c 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt @@ -13,7 +13,6 @@ import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.graphics.drawable.Drawable -import android.net.Uri import android.os.Handler import android.util.Base64 import android.util.Log @@ -21,6 +20,7 @@ import android.view.View import android.widget.ImageView import android.widget.ProgressBar import androidx.core.content.ContextCompat +import androidx.core.net.toUri import androidx.emoji2.widget.EmojiTextView import autodagger.AutoInjector import com.google.android.material.card.MaterialCardView @@ -29,12 +29,12 @@ import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication import com.nextcloud.talk.chat.data.model.ChatMessage -import com.nextcloud.talk.filebrowser.models.BrowserFile -import com.nextcloud.talk.filebrowser.webdav.ReadFilesystemOperation import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.databinding.ReactionsInsideMessageBinding import com.nextcloud.talk.extensions.loadChangelogBotAvatar import com.nextcloud.talk.extensions.loadFederatedUserAvatar +import com.nextcloud.talk.filebrowser.models.BrowserFile +import com.nextcloud.talk.filebrowser.webdav.ReadFilesystemOperation import com.nextcloud.talk.ui.theme.ViewThemeUtils import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.DateUtils @@ -140,7 +140,7 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) : } else { if (message.messageType == ChatMessage.MessageType.SINGLE_LINK_IMAGE_MESSAGE.name) { clickView!!.setOnClickListener { - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(message.imageUrl)) + val browserIntent = Intent(Intent.ACTION_VIEW, message.imageUrl!!.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context!!.startActivity(browserIntent) } diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/SystemMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/SystemMessageViewHolder.kt index 9b02850e6..89789683f 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/SystemMessageViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/SystemMessageViewHolder.kt @@ -9,7 +9,6 @@ package com.nextcloud.talk.adapters.messages import android.annotation.SuppressLint import android.content.Context import android.content.Intent -import android.net.Uri import android.text.Spannable import android.text.SpannableString import android.text.TextPaint @@ -18,13 +17,14 @@ import android.text.style.ClickableSpan import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.net.toUri import androidx.core.view.ViewCompat import autodagger.AutoInjector import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication -import com.nextcloud.talk.databinding.ItemSystemMessageBinding import com.nextcloud.talk.chat.data.model.ChatMessage +import com.nextcloud.talk.databinding.ItemSystemMessageBinding import com.nextcloud.talk.utils.DateUtils import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew @@ -96,7 +96,7 @@ class SystemMessageViewHolder(itemView: View) : MessageHolders if (newStartIndex != -1) { val clickableSpan = object : ClickableSpan() { override fun onClick(widget: View) { - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(link)) + val browserIntent = Intent(Intent.ACTION_VIEW, link.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context?.startActivity(browserIntent) } diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index cbbcde937..6b8df2beb 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -24,8 +24,6 @@ import android.content.Intent import android.content.pm.PackageManager import android.content.res.AssetFileDescriptor import android.database.Cursor -import android.graphics.drawable.BitmapDrawable -import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.net.Uri import android.os.Build @@ -58,6 +56,8 @@ import androidx.core.content.PermissionChecker import androidx.core.content.PermissionChecker.PERMISSION_GRANTED import androidx.core.graphics.ColorUtils import androidx.core.graphics.drawable.toBitmap +import androidx.core.graphics.drawable.toDrawable +import androidx.core.net.toUri import androidx.core.os.bundleOf import androidx.core.text.bold import androidx.emoji2.text.EmojiCompat @@ -1022,24 +1022,20 @@ class ChatActivity : } if (uiState.userAbsence.replacementUserDisplayName != null) { - var imageUri = Uri.parse( - ApiUtils.getUrlForAvatar( + var imageUri = ApiUtils.getUrlForAvatar( + conversationUser?.baseUrl, + uiState.userAbsence + .replacementUserId, + false + ).toUri() + if (DisplayUtils.isDarkModeOn(context)) { + imageUri = ApiUtils.getUrlForAvatarDarkTheme( conversationUser?.baseUrl, - uiState.userAbsence + uiState + .userAbsence .replacementUserId, false - ) - ) - if (DisplayUtils.isDarkModeOn(context)) { - imageUri = Uri.parse( - ApiUtils.getUrlForAvatarDarkTheme( - conversationUser?.baseUrl, - uiState - .userAbsence - .replacementUserId, - false - ) - ) + ).toUri() } binding.outOfOfficeContainer.findViewById(R.id.absenceReplacement).text = context.resources.getString(R.string.user_absence_replacement) @@ -1168,7 +1164,7 @@ class ChatActivity : } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) setActionBarTitle() viewThemeUtils.material.themeToolbar(binding.chatToolbar) } @@ -1511,7 +1507,7 @@ class ChatActivity : ) viewThemeUtils.talk.themeStatusDrawable(context, status) binding.chatToolbar.findViewById(R.id.chat_toolbar_avatar) - .setImageDrawable(BitmapDrawable(resources, bitmap)) + .setImageDrawable(bitmap.toDrawable(resources)) binding.chatToolbar.findViewById(R.id.chat_toolbar_status) .setImageDrawable(status) binding.chatToolbar.findViewById(R.id.chat_toolbar_status).contentDescription = @@ -1967,7 +1963,7 @@ class ChatActivity : val filenamesWithLineBreaks = StringBuilder("\n") for (file in filesToUpload) { - val filename = FileUtils.getFileName(Uri.parse(file), context) + val filename = FileUtils.getFileName(file.toUri(), context) filenamesWithLineBreaks.append(filename).append("\n") } @@ -2043,7 +2039,7 @@ class ChatActivity : val filenamesWithLineBreaks = StringBuilder("\n") for (file in filesToUpload) { - val filename = FileUtils.getFileName(Uri.parse(file), context) + val filename = FileUtils.getFileName(file.toUri(), context) filenamesWithLineBreaks.append(filename).append("\n") } diff --git a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt index 5c9e8534a..a9f9b30e3 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt @@ -8,7 +8,6 @@ package com.nextcloud.talk.chat import android.content.res.Resources -import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.os.Build import android.os.Bundle @@ -40,6 +39,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.view.ContextThemeWrapper import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.toDrawable +import androidx.core.view.isVisible import androidx.core.widget.doAfterTextChanged import androidx.emoji2.widget.EmojiTextView import androidx.fragment.app.Fragment @@ -476,7 +477,7 @@ class MessageInputFragment : Fragment() { binding.fragmentMessageInputView.messageSendButton.visibility = if (binding.fragmentMessageInputView.inputEditText.text.isEmpty() || - binding.fragmentEditView.editMessageView.visibility == View.VISIBLE + binding.fragmentEditView.editMessageView.isVisible ) { View.GONE } else { @@ -608,7 +609,7 @@ class MessageInputFragment : Fragment() { private fun setupMentionAutocomplete() { val elevation = MENTION_AUTO_COMPLETE_ELEVATION resources.let { - val backgroundDrawable = ColorDrawable(it.getColor(R.color.bg_default, null)) + val backgroundDrawable = it.getColor(R.color.bg_default, null).toDrawable() val presenter = MentionAutocompletePresenter( requireContext(), chatActivity.roomToken, diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index b4909ff6f..dde55d7a1 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -13,7 +13,6 @@ package com.nextcloud.talk.conversationinfo import android.annotation.SuppressLint import android.app.Activity import android.content.Intent -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.text.TextUtils import android.util.Log @@ -27,6 +26,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.DrawableRes import androidx.appcompat.app.AlertDialog import androidx.core.content.res.ResourcesCompat +import androidx.core.graphics.drawable.toDrawable import androidx.fragment.app.FragmentTransaction import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope @@ -321,7 +321,7 @@ class ConversationInfoActivity : } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable()) supportActionBar?.title = if (hasAvatarSpacing) { " " + resources!!.getString(R.string.nc_conversation_menu_conversation_info) } else { diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt index c9f30f91b..ae333d955 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfoedit/ConversationInfoEditActivity.kt @@ -8,7 +8,6 @@ package com.nextcloud.talk.conversationinfoedit import android.app.Activity -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.text.InputFilter import android.text.TextUtils @@ -18,6 +17,7 @@ import android.view.MenuItem import android.view.View import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.graphics.drawable.toDrawable import androidx.core.net.toFile import androidx.core.view.ViewCompat import androidx.lifecycle.ViewModelProvider @@ -252,7 +252,7 @@ class ConversationInfoEditActivity : BaseActivity() { } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable()) supportActionBar?.title = resources!!.getString(R.string.nc_conversation_menu_conversation_info) viewThemeUtils.material.themeToolbar(binding.conversationInfoEditToolbar) @@ -319,7 +319,7 @@ class ConversationInfoEditActivity : BaseActivity() { conversation!!.name ) ) { - conversation!!.name?.let { binding.avatarImage.loadUserAvatar(conversationUser, it, true, false) } + conversation!!.name.let { binding.avatarImage.loadUserAvatar(conversationUser, it, true, false) } } ConversationEnums.ConversationType.ROOM_GROUP_CALL, ConversationEnums.ConversationType.ROOM_PUBLIC_CALL -> { diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index eaf024c5a..3f77d28e7 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -19,9 +19,7 @@ import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable -import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Handler @@ -42,6 +40,8 @@ import androidx.annotation.OptIn import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.SearchView import androidx.compose.ui.platform.ViewCompositionStrategy +import androidx.core.graphics.drawable.toDrawable +import androidx.core.net.toUri import androidx.core.view.MenuItemCompat import androidx.core.view.isVisible import androidx.fragment.app.DialogFragment @@ -638,7 +638,7 @@ class ConversationsListActivity : } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) supportActionBar?.title = resources!!.getString(R.string.nc_app_product_name) viewThemeUtils.material.themeToolbar(binding.conversationListToolbar) } @@ -1473,7 +1473,7 @@ class ConversationsListActivity : if (platformPermissionUtil.isFilesPermissionGranted()) { val fileNamesWithLineBreaks = StringBuilder("\n") for (file in filesToShare!!) { - val filename = FileUtils.getFileName(Uri.parse(file), context) + val filename = FileUtils.getFileName(file.toUri(), context) fileNamesWithLineBreaks.append(filename).append("\n") } val confirmationQuestion: String = if (filesToShare!!.size == 1) { @@ -1900,11 +1900,11 @@ class ConversationsListActivity : .setPositiveButton(R.string.nc_dialog_outdated_client_option_update) { _, _ -> try { startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(CLIENT_UPGRADE_MARKET_LINK + packageName)) + Intent(Intent.ACTION_VIEW, (CLIENT_UPGRADE_MARKET_LINK + packageName).toUri()) ) } catch (e: ActivityNotFoundException) { startActivity( - Intent(Intent.ACTION_VIEW, Uri.parse(CLIENT_UPGRADE_GPLAY_LINK + packageName)) + Intent(Intent.ACTION_VIEW, (CLIENT_UPGRADE_GPLAY_LINK + packageName).toUri()) ) } } diff --git a/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt b/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt index a3067178b..191507ac1 100644 --- a/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/diagnose/DiagnoseActivity.kt @@ -10,7 +10,6 @@ import android.annotation.SuppressLint import android.content.ClipData import android.content.ClipboardManager import android.content.Intent -import android.net.Uri import android.os.Build import android.os.Build.MANUFACTURER import android.os.Build.MODEL @@ -28,6 +27,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.Modifier import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.stringResource +import androidx.core.net.toUri import autodagger.AutoInjector import com.nextcloud.talk.BuildConfig import com.nextcloud.talk.R @@ -35,8 +35,8 @@ import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager -import com.nextcloud.talk.components.StandardAppBar import com.nextcloud.talk.components.SetupSystemBars +import com.nextcloud.talk.components.StandardAppBar import com.nextcloud.talk.users.UserManager import com.nextcloud.talk.utils.BrandingUtils import com.nextcloud.talk.utils.ClosedInterfaceImpl @@ -151,7 +151,7 @@ class DiagnoseActivity : BaseActivity() { val intent = Intent(Intent.ACTION_SENDTO).apply { val appName = context.resources.getString(R.string.nc_app_product_name) - data = Uri.parse("mailto:") + data = "mailto:".toUri() putExtra(Intent.EXTRA_SUBJECT, appName) putExtra(Intent.EXTRA_TEXT, text) } @@ -166,7 +166,7 @@ class DiagnoseActivity : BaseActivity() { startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(resources!!.getString(R.string.nc_talk_android_issues_url)) + resources!!.getString(R.string.nc_talk_android_issues_url).toUri() ) ) } diff --git a/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt b/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt index a989359bd..ae058621e 100644 --- a/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt +++ b/app/src/main/java/com/nextcloud/talk/extensions/ImageViewExtensions.kt @@ -11,18 +11,17 @@ package com.nextcloud.talk.extensions import android.content.Context -import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint -import android.graphics.drawable.BitmapDrawable -import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable import android.util.Log import android.widget.ImageView import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat +import androidx.core.graphics.createBitmap +import androidx.core.graphics.drawable.toDrawable import coil.annotation.ExperimentalCoilApi import coil.imageLoader import coil.load @@ -326,7 +325,7 @@ fun ImageView.loadChangelogBotAvatar(): io.reactivex.disposables.Disposable { fun ImageView.loadBotsAvatar(): io.reactivex.disposables.Disposable { val layers = arrayOfNulls(2) - layers[0] = ColorDrawable(context.getColor(R.color.black)) + layers[0] = context.getColor(R.color.black).toDrawable() layers[1] = TextDrawable(context, ">") val layerDrawable = LayerDrawable(layers) val data: Any = layerDrawable @@ -386,7 +385,7 @@ fun ImageView.loadGuestAvatar(baseUrl: String, name: String, big: Boolean): io.r @Suppress("MagicNumber") private fun createTextDrawable(context: Context, letter: String): Drawable { val size = 100 - val bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888) + val bitmap = createBitmap(size, size) val canvas = Canvas(bitmap) val paint = Paint().apply { @@ -406,7 +405,7 @@ private fun createTextDrawable(context: Context, letter: String): Drawable { val yPos = (canvas.height / 2 - (textPaint.descent() + textPaint.ascent()) / 2) canvas.drawText(letter.take(1), xPos, yPos, textPaint) - return BitmapDrawable(context.resources, bitmap) + return bitmap.toDrawable(context.resources) } private class DisposableWrapper(private val disposable: coil.request.Disposable) : io.reactivex.disposables diff --git a/app/src/main/java/com/nextcloud/talk/invitation/InvitationsActivity.kt b/app/src/main/java/com/nextcloud/talk/invitation/InvitationsActivity.kt index b0ec75f28..3f1c60650 100644 --- a/app/src/main/java/com/nextcloud/talk/invitation/InvitationsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/invitation/InvitationsActivity.kt @@ -7,10 +7,10 @@ package com.nextcloud.talk.invitation import android.content.Intent -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.View import androidx.activity.OnBackPressedCallback +import androidx.core.graphics.drawable.toDrawable import androidx.lifecycle.ViewModelProvider import autodagger.AutoInjector import com.google.android.material.snackbar.Snackbar @@ -168,7 +168,7 @@ class InvitationsActivity : BaseActivity() { } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) viewThemeUtils.material.themeToolbar(binding.invitationsToolbar) } } diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt index 02780dce2..f3b30a5ee 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt @@ -15,7 +15,6 @@ import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.graphics.Bitmap -import android.net.Uri import android.os.Build import android.os.Bundle import android.os.Handler @@ -33,6 +32,7 @@ import androidx.core.app.Person import androidx.core.app.RemoteInput import androidx.core.content.ContextCompat import androidx.core.graphics.drawable.toBitmap +import androidx.core.net.toUri import androidx.emoji2.text.EmojiCompat import androidx.work.Data import androidx.work.Worker @@ -272,7 +272,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor val soundUri = getCallRingtoneUri(applicationContext, appPreferences) val notificationChannelId = NotificationUtils.NotificationChannels.NOTIFICATION_CHANNEL_CALLS_V4.name - val uri = Uri.parse(signatureVerification.user!!.baseUrl!!) + val uri = signatureVerification.user!!.baseUrl!!.toUri() val baseUrl = uri.host val notification = @@ -499,7 +499,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor 0 } val pendingIntent = PendingIntent.getActivity(context, requestCode, intent, intentFlag) - val uri = Uri.parse(signatureVerification.user!!.baseUrl!!) + val uri = signatureVerification.user!!.baseUrl!!.toUri() val baseUrl = uri.host var contentTitle: CharSequence? = "" 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 709e44473..0161003f3 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -19,6 +19,7 @@ import android.os.Bundle import android.os.SystemClock import android.util.Log import androidx.core.app.NotificationCompat +import androidx.core.net.toUri import androidx.work.Data import androidx.work.ExistingWorkPolicy import androidx.work.OneTimeWorkRequest @@ -110,7 +111,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa require(sourceFile.isNotEmpty()) checkNotNull(roomToken) - val sourceFileUri = Uri.parse(sourceFile) + val sourceFileUri = sourceFile.toUri() fileName = FileUtils.getFileName(sourceFileUri, context) file = FileUtils.getFileFromUri(context, sourceFileUri) val remotePath = getRemotePath(currentUser) diff --git a/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt b/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt index 8d218f194..33605a6ea 100644 --- a/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/GeocodingActivity.kt @@ -9,7 +9,6 @@ package com.nextcloud.talk.location import android.app.SearchManager import android.content.Context import android.content.Intent -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.text.InputType import android.util.Log @@ -17,6 +16,7 @@ import android.view.Menu import android.view.MenuItem import android.view.inputmethod.EditorInfo import androidx.appcompat.widget.SearchView +import androidx.core.graphics.drawable.toDrawable import androidx.lifecycle.ViewModelProvider import androidx.preference.PreferenceManager import androidx.recyclerview.widget.LinearLayoutManager @@ -132,7 +132,7 @@ class GeocodingActivity : } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) supportActionBar?.title = "" viewThemeUtils.material.themeToolbar(binding.geocodingToolbar) } diff --git a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt index 9c2a60e3f..569a1a269 100644 --- a/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/location/LocationPickerActivity.kt @@ -13,7 +13,6 @@ import android.app.SearchManager import android.content.Context import android.content.Intent import android.content.pm.PackageManager -import android.graphics.drawable.ColorDrawable import android.location.Location import android.location.LocationListener import android.location.LocationManager @@ -28,6 +27,7 @@ import androidx.activity.OnBackPressedCallback import androidx.appcompat.widget.SearchView import androidx.core.content.PermissionChecker import androidx.core.content.res.ResourcesCompat +import androidx.core.graphics.drawable.toDrawable import androidx.core.view.MenuItemCompat import androidx.preference.PreferenceManager import autodagger.AutoInjector @@ -178,7 +178,7 @@ class LocationPickerActivity : } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable()) supportActionBar?.title = context.getString(R.string.nc_share_location) viewThemeUtils.material.themeToolbar(binding.locationPickerToolbar) } diff --git a/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt b/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt index 10380f941..e9663398c 100644 --- a/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt @@ -7,9 +7,9 @@ package com.nextcloud.talk.openconversations import android.content.Intent -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.View +import androidx.core.graphics.drawable.toDrawable import androidx.core.widget.doOnTextChanged import androidx.lifecycle.ViewModelProvider import autodagger.AutoInjector @@ -143,7 +143,7 @@ class ListOpenConversationsActivity : BaseActivity() { } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) viewThemeUtils.material.themeToolbar(binding.openConversationsToolbar) } } diff --git a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt index 678604f1b..1333178fc 100644 --- a/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/profile/ProfileActivity.kt @@ -11,8 +11,6 @@ package com.nextcloud.talk.profile import android.app.Activity import android.content.pm.PackageManager -import android.graphics.drawable.ColorDrawable -import android.net.Uri import android.os.Bundle import android.text.Editable import android.text.TextUtils @@ -27,7 +25,9 @@ import androidx.activity.result.ActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.toDrawable import androidx.core.net.toFile +import androidx.core.net.toUri import androidx.core.view.ViewCompat import androidx.recyclerview.widget.RecyclerView import autodagger.AutoInjector @@ -208,7 +208,7 @@ class ProfileActivity : BaseActivity() { } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable()) supportActionBar?.title = context.getString(R.string.nc_profile_personal_info_title) viewThemeUtils.material.themeToolbar(binding.profileToolbar) } @@ -313,7 +313,7 @@ class ProfileActivity : BaseActivity() { private fun showUserProfile() { if (currentUser!!.baseUrl != null) { - binding.userinfoBaseurl.text = Uri.parse(currentUser!!.baseUrl!!).host + binding.userinfoBaseurl.text = currentUser!!.baseUrl!!.toUri().host } DisplayUtils.loadAvatarImage(currentUser, binding.avatarImage, false) if (!TextUtils.isEmpty(userInfo?.displayName)) { diff --git a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt index bf0873cde..73b88bbfb 100644 --- a/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/settings/SettingsActivity.kt @@ -20,7 +20,6 @@ import android.content.DialogInterface import android.content.Intent import android.content.pm.PackageManager import android.graphics.PorterDuff -import android.graphics.drawable.ColorDrawable import android.media.RingtoneManager import android.net.Uri import android.os.Build @@ -35,6 +34,8 @@ import android.widget.Toast import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat +import androidx.core.graphics.drawable.toDrawable +import androidx.core.net.toUri import androidx.core.view.ViewCompat import androidx.lifecycle.lifecycleScope import androidx.work.OneTimeWorkRequest @@ -199,7 +200,7 @@ class SettingsActivity : registerChangeListeners() if (currentUser != null) { - binding.domainText.text = Uri.parse(currentUser!!.baseUrl).host + binding.domainText.text = currentUser!!.baseUrl!!.toUri().host setupServerAgeWarning() if (currentUser!!.displayName != null) { binding.nameText.text = currentUser!!.displayName @@ -260,7 +261,7 @@ class SettingsActivity : } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable()) supportActionBar?.title = context.getString(R.string.nc_settings) viewThemeUtils.material.themeToolbar(binding.settingsToolbar) } @@ -441,7 +442,7 @@ class SettingsActivity : startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(resources.getString(R.string.notification_checklist_url)) + resources.getString(R.string.notification_checklist_url).toUri() ) ) } @@ -449,7 +450,7 @@ class SettingsActivity : startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(resources.getString(R.string.dontkillmyapp_url)) + resources.getString(R.string.dontkillmyapp_url).toUri() ) ) } @@ -503,7 +504,7 @@ class SettingsActivity : startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(resources!!.getString(R.string.nc_source_code_url)) + resources!!.getString(R.string.nc_source_code_url).toUri() ) ) } @@ -525,7 +526,7 @@ class SettingsActivity : startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(resources!!.getString(R.string.nc_privacy_url)) + resources!!.getString(R.string.nc_privacy_url).toUri() ) ) } @@ -540,7 +541,7 @@ class SettingsActivity : startActivity( Intent( Intent.ACTION_VIEW, - Uri.parse(resources!!.getString(R.string.nc_gpl3_url)) + resources!!.getString(R.string.nc_gpl3_url).toUri() ) ) } diff --git a/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt index d306aec83..42b67db99 100644 --- a/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/shareditems/repositories/SharedItemsRepositoryImpl.kt @@ -7,8 +7,8 @@ */ package com.nextcloud.talk.shareditems.repositories -import android.net.Uri import android.util.Log +import androidx.core.net.toUri import com.nextcloud.talk.R import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication @@ -135,7 +135,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr actorParameters["id"]!!, actorParameters["name"]!!, dateTime, - Uri.parse(objectParameters["id"]!!.replace("geo:", "geo:0,0?z=11&q=")) + objectParameters["id"]!!.replace("geo:", "geo:0,0?z=11&q=").toUri() ) } @@ -146,7 +146,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr actorParameters["id"]!!, actorParameters["name"]!!, dateTime, - Uri.parse(objectParameters["link"]!!) + objectParameters["link"]!!.toUri() ) } @@ -168,7 +168,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr return ncApi.getSharedItemsOverview( credentials, - ApiUtils.getUrlForChatSharedItemsOverview(1, parameters.baseUrl!!, parameters.roomToken), + ApiUtils.getUrlForChatSharedItemsOverview(1, parameters.baseUrl, parameters.roomToken), 1 ).map { val types = mutableSetOf() diff --git a/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt b/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt index 186a90e26..04758b847 100644 --- a/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/translate/ui/TranslateActivity.kt @@ -11,13 +11,13 @@ import android.app.AlertDialog import android.content.ClipData import android.content.ClipboardManager import android.content.Context -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.text.method.ScrollingMovementMethod import android.util.Log import android.view.View import android.widget.AdapterView import android.widget.ArrayAdapter +import androidx.core.graphics.drawable.toDrawable import androidx.lifecycle.ViewModelProvider import autodagger.AutoInjector import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -130,7 +130,7 @@ class TranslateActivity : BaseActivity() { } supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowHomeEnabled(true) - supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null))) + supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable()) supportActionBar?.title = resources!!.getString(R.string.translation) viewThemeUtils.material.themeToolbar(binding.translationToolbar) } diff --git a/app/src/main/java/com/nextcloud/talk/ui/WaveformSeekBar.kt b/app/src/main/java/com/nextcloud/talk/ui/WaveformSeekBar.kt index 0ee23c1da..06e566197 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/WaveformSeekBar.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/WaveformSeekBar.kt @@ -14,16 +14,17 @@ import android.graphics.Paint import android.util.AttributeSet import androidx.annotation.ColorInt import androidx.appcompat.widget.AppCompatSeekBar +import androidx.core.graphics.toColorInt import com.nextcloud.talk.utils.AudioUtils import kotlin.math.roundToInt class WaveformSeekBar : AppCompatSeekBar { @ColorInt - private var primary: Int = Color.parseColor("#679ff5") + private var primary: Int = "#679ff5".toColorInt() @ColorInt - private var secondary: Int = Color.parseColor("#a6c6f7") + private var secondary: Int = "#a6c6f7".toColorInt() private var rawData: FloatArray = floatArrayOf() private var waveData: FloatArray = floatArrayOf() private var savedMeasure: Int = 0 diff --git a/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt b/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt index 5684e9ff1..6f561ef2d 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt @@ -12,16 +12,17 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.util.Log +import androidx.core.net.toUri import com.afollestad.materialdialogs.LayoutMode import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.bottomsheets.BottomSheet import com.nextcloud.talk.R import com.nextcloud.talk.api.NcApi -import com.nextcloud.talk.chat.ChatActivity import com.nextcloud.talk.bottomsheet.items.BasicListItemWithImage import com.nextcloud.talk.bottomsheet.items.listItemsWithImage -import com.nextcloud.talk.data.user.model.User +import com.nextcloud.talk.chat.ChatActivity import com.nextcloud.talk.chat.data.model.ChatMessage +import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.conversations.RoomOverall import com.nextcloud.talk.models.json.hovercard.HoverCardAction import com.nextcloud.talk.models.json.hovercard.HoverCardOverall @@ -161,14 +162,14 @@ class ProfileBottomSheet(val ncApi: NcApi, val userModel: User, val viewThemeUti private fun composeEmail(address: String, context: Context) { val addresses = arrayListOf(address) val intent = Intent(Intent.ACTION_SENDTO).apply { - data = Uri.parse("mailto:") // only email apps should handle this + data = "mailto:".toUri() // only email apps should handle this putExtra(Intent.EXTRA_EMAIL, addresses) } context.startActivity(intent) } private fun openProfile(hyperlink: String, context: Context) { - val webpage: Uri = Uri.parse(hyperlink) + val webpage: Uri = hyperlink.toUri() val intent = Intent(Intent.ACTION_VIEW, webpage) context.startActivity(intent) } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ChooseAccountShareToDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ChooseAccountShareToDialogFragment.kt index 80ab44487..30abf19bb 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ChooseAccountShareToDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ChooseAccountShareToDialogFragment.kt @@ -10,11 +10,11 @@ package com.nextcloud.talk.ui.dialog import android.annotation.SuppressLint import android.app.Dialog -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.net.toUri import androidx.fragment.app.DialogFragment import androidx.recyclerview.widget.LinearLayoutManager import autodagger.AutoInjector @@ -78,7 +78,7 @@ class ChooseAccountShareToDialogFragment : DialogFragment() { if (user != null) { binding!!.currentAccount.userName.text = user.displayName binding!!.currentAccount.ticker.visibility = View.GONE - binding!!.currentAccount.account.text = Uri.parse(user.baseUrl!!).host + binding!!.currentAccount.account.text = user.baseUrl!!.toUri().host viewThemeUtils!!.platform.colorImageView(binding!!.currentAccount.accountMenu, ColorRole.PRIMARY) if (user.baseUrl != null && (user.baseUrl!!.startsWith("http://") || user.baseUrl!!.startsWith("https://")) diff --git a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt index 5d7249915..c0c3741fd 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.kt @@ -20,7 +20,6 @@ import android.graphics.Canvas import android.graphics.Color import android.graphics.Typeface import android.graphics.drawable.Drawable -import android.net.Uri import android.text.Spannable import android.text.SpannableString import android.text.Spanned @@ -46,7 +45,9 @@ import androidx.annotation.XmlRes import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.ColorUtils +import androidx.core.graphics.createBitmap import androidx.core.graphics.drawable.DrawableCompat +import androidx.core.net.toUri import androidx.emoji2.text.EmojiCompat import coil.Coil.imageLoader import coil.request.ImageRequest @@ -87,12 +88,12 @@ object DisplayUtils { return currentNightMode == Configuration.UI_MODE_NIGHT_YES } - fun setClickableString(string: String, url: String?, textView: TextView) { + fun setClickableString(string: String, url: String, textView: TextView) { val spannableString = SpannableString(string) spannableString.setSpan( object : ClickableSpan() { override fun onClick(widget: View) { - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + val browserIntent = Intent(Intent.ACTION_VIEW, url.toUri()) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) sharedApplication!!.applicationContext.startActivity(browserIntent) } @@ -111,11 +112,7 @@ object DisplayUtils { } fun getBitmap(drawable: Drawable): Bitmap { - val bitmap = Bitmap.createBitmap( - drawable.intrinsicWidth, - drawable.intrinsicHeight, - Bitmap.Config.ARGB_8888 - ) + val bitmap = createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight) val canvas = Canvas(bitmap) drawable.setBounds(0, 0, canvas.width, canvas.height) drawable.draw(canvas) diff --git a/app/src/main/java/com/nextcloud/talk/utils/FileViewerUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/FileViewerUtils.kt index c7630f6ec..40a301f65 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/FileViewerUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/FileViewerUtils.kt @@ -16,6 +16,7 @@ import android.view.View import android.widget.ImageView import android.widget.ProgressBar import androidx.core.content.FileProvider +import androidx.core.net.toUri import androidx.emoji2.widget.EmojiTextView import androidx.work.Data import androidx.work.OneTimeWorkRequest @@ -23,13 +24,13 @@ import androidx.work.WorkInfo import androidx.work.WorkManager import com.google.android.material.snackbar.Snackbar import com.nextcloud.talk.R +import com.nextcloud.talk.adapters.messages.PreviewMessageViewHolder +import com.nextcloud.talk.chat.data.model.ChatMessage +import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.fullscreenfile.FullScreenImageActivity import com.nextcloud.talk.fullscreenfile.FullScreenMediaActivity import com.nextcloud.talk.fullscreenfile.FullScreenTextViewerActivity -import com.nextcloud.talk.adapters.messages.PreviewMessageViewHolder -import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.jobs.DownloadFileToCacheWorker -import com.nextcloud.talk.chat.data.model.ChatMessage import com.nextcloud.talk.utils.AccountUtils.canWeOpenFilesApp import com.nextcloud.talk.utils.Mimetype.AUDIO_MPEG import com.nextcloud.talk.utils.Mimetype.AUDIO_OGG @@ -212,7 +213,7 @@ class FileViewerUtils(private val context: Context, private val user: User) { } else { val browserIntent = Intent( Intent.ACTION_VIEW, - Uri.parse(link) + link.toUri() ) browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(browserIntent) 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 64efd89b1..a0f6ec5f7 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/NotificationUtils.kt @@ -18,6 +18,7 @@ import android.service.notification.StatusBarNotification import android.text.TextUtils import android.util.Log import androidx.core.graphics.drawable.IconCompat +import androidx.core.net.toUri import coil.executeBlocking import coil.imageLoader import coil.request.ImageRequest @@ -287,14 +288,14 @@ object NotificationUtils { // Ringtone uris are required to register the notification channels -> get uri from preferences. return if (TextUtils.isEmpty(ringtonePreferencesString)) { - Uri.parse(defaultRingtoneUri) + defaultRingtoneUri.toUri() } else { try { val ringtoneSettings = LoganSquare.parse(ringtonePreferencesString, RingtoneSettings::class.java) ringtoneSettings.ringtoneUri } catch (exception: IOException) { - Uri.parse(defaultRingtoneUri) + defaultRingtoneUri.toUri() } } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt index 9e50d741b..103150894 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ShareUtils.kt @@ -9,7 +9,7 @@ package com.nextcloud.talk.utils import android.annotation.SuppressLint import android.app.Activity import android.content.Intent -import android.net.Uri +import androidx.core.net.toUri import com.nextcloud.talk.R object ShareUtils { @@ -26,7 +26,7 @@ object ShareUtils { return } - val uriBuilder = Uri.parse(baseUrl) + val uriBuilder = baseUrl.toUri() .buildUpon() if (!canGeneratePrettyURL) { 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 a6e57b099..6ea788fa9 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/UriUtils.kt @@ -7,7 +7,7 @@ */ package com.nextcloud.talk.utils -import android.net.Uri +import androidx.core.net.toUri class UriUtils { companion object { @@ -17,7 +17,7 @@ class UriUtils { fun extractInstanceInternalFileFileId(url: String): String { // https://cloud.nextcloud.com/apps/files/?dir=/Engineering&fileid=41 - return Uri.parse(url).getQueryParameter("fileid").toString() + return url.toUri().getQueryParameter("fileid").toString() } fun isInstanceInternalFileShareUrl(baseUrl: String, url: String): Boolean { @@ -35,12 +35,12 @@ class UriUtils { fun extractInstanceInternalFileShareFileId(url: String): String { // https://cloud.nextcloud.com/f/41 - return Uri.parse(url).lastPathSegment ?: "" + return url.toUri().lastPathSegment ?: "" } fun extractRoomTokenFromTalkUrl(url: String): String { // https://cloud.nextcloud.com/call/123456789 - return Uri.parse(url).lastPathSegment ?: "" + return url.toUri().lastPathSegment ?: "" } fun isInstanceInternalFileUrl(baseUrl: String, url: String): Boolean { @@ -49,7 +49,7 @@ class UriUtils { url.startsWith("$baseUrl/apps/files/") || url.startsWith("$baseUrl/index.php/apps/files/") ) && - Uri.parse(url).queryParameterNames.contains("fileid") && + url.toUri().queryParameterNames.contains("fileid") && Regex(""".*fileid=\d*""").matches(url) } @@ -61,7 +61,7 @@ class UriUtils { fun extractInstanceInternalFileFileIdNew(url: String): String { // https://cloud.nextcloud.com/apps/files/files/41?dir=/ - return Uri.parse(url).lastPathSegment ?: "" + return url.toUri().lastPathSegment ?: "" } } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt index 2081517b5..3e4d43696 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/message/MessageUtils.kt @@ -9,13 +9,13 @@ package com.nextcloud.talk.utils.message import android.content.Context import android.content.Intent import android.graphics.Typeface -import android.net.Uri import android.text.SpannableString import android.text.SpannableStringBuilder import android.text.Spanned import android.text.style.StyleSpan import android.util.Log import android.view.View +import androidx.core.net.toUri import com.nextcloud.talk.R import com.nextcloud.talk.chat.data.model.ChatMessage import com.nextcloud.talk.ui.theme.ViewThemeUtils @@ -139,7 +139,7 @@ class MessageUtils(val context: Context) { "file" -> { itemView.setOnClickListener { v -> - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(individualHashMap["link"])) + val browserIntent = Intent(Intent.ACTION_VIEW, individualHashMap["link"]!!.toUri()) context.startActivity(browserIntent) } }