From 401c7aadf17830ec79269624c0beca74f22c284b Mon Sep 17 00:00:00 2001 From: erik Date: Sun, 19 Nov 2023 19:24:45 -0600 Subject: [PATCH] WIP: * correccion de errores al iniciar sesion * cambio a Coil --- .idea/deploymentTargetDropDown.xml | 4 +-- app/build.gradle | 9 +++++-- .../main/java/com/isolaatti/MainActivity.kt | 1 - app/src/main/java/com/isolaatti/MainModule.kt | 4 --- .../main/java/com/isolaatti/MyApplication.kt | 5 ++++ .../com/isolaatti/common/CoilImageLoader.kt | 16 ++++++++++++ .../common/UserListRecyclerViewAdapter.kt | 5 ++-- .../connectivity/AuthenticationInterceptor.kt | 4 +-- .../java/com/isolaatti/home/FeedFragment.kt | 9 ++++--- .../ui/PictureViewerImageWrapperFragment.kt | 8 +++--- .../CommentsRecyclerViewAdapter.kt | 8 +++--- .../comments/ui/BottomSheetPostComments.kt | 5 ++-- .../comments/ui/EditCommentDialogFragment.kt | 12 ++++----- .../presentation/PostsRecyclerViewAdapter.kt | 5 ++-- .../posts/viewer/ui/PostViewerActivity.kt | 12 ++++----- .../profile/ui/ProfileMainFragment.kt | 13 ++++------ .../sign_up/ui/MakeAccountFragment.kt | 25 ++++++++++++++++--- .../isolaatti/utils/PicassoImagesPluginDef.kt | 19 -------------- app/src/main/res/values/strings.xml | 2 ++ build.gradle | 4 +-- 20 files changed, 94 insertions(+), 76 deletions(-) create mode 100644 app/src/main/java/com/isolaatti/common/CoilImageLoader.kt delete mode 100644 app/src/main/java/com/isolaatti/utils/PicassoImagesPluginDef.kt diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 07ae0ed..60feae8 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b3284ce..4a67d14 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ plugins { android { namespace 'com.isolaatti' - compileSdk 33 + compileSdk 34 viewBinding { enabled = true } @@ -90,10 +90,14 @@ dependencies { // Customtabs implementation 'androidx.browser:browser:1.5.0' + implementation 'io.coil-kt:coil:2.5.0' + implementation 'io.coil-kt:coil-svg:2.5.0' + + implementation "io.noties.markwon:core:$markwon_version" implementation "io.noties.markwon:editor:$markwon_version" - implementation "io.noties.markwon:image-picasso:$markwon_version" implementation "io.noties.markwon:linkify:$markwon_version" + implementation "io.noties.markwon:image-coil:$markwon_version" @@ -112,4 +116,5 @@ dependencies { implementation "androidx.preference:preference-ktx:1.2.1" implementation 'com.github.MikeOrtiz:TouchImageView:3.5' + } \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/MainActivity.kt b/app/src/main/java/com/isolaatti/MainActivity.kt index afcb8e0..1a49a52 100644 --- a/app/src/main/java/com/isolaatti/MainActivity.kt +++ b/app/src/main/java/com/isolaatti/MainActivity.kt @@ -36,7 +36,6 @@ class MainActivity : ComponentActivity() { if(currentToken == null) { val loginIntent = Intent(this@MainActivity, LogInActivity::class.java) - loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) signInActivityResult.launch(loginIntent) } else { val homeActivityIntent = Intent(this@MainActivity, HomeActivity::class.java) diff --git a/app/src/main/java/com/isolaatti/MainModule.kt b/app/src/main/java/com/isolaatti/MainModule.kt index a06d544..19da5ab 100644 --- a/app/src/main/java/com/isolaatti/MainModule.kt +++ b/app/src/main/java/com/isolaatti/MainModule.kt @@ -3,14 +3,10 @@ package com.isolaatti import com.isolaatti.auth.domain.AuthRepository import com.isolaatti.connectivity.AuthenticationInterceptor import com.isolaatti.connectivity.RetrofitClient -import com.squareup.picasso.Picasso -import com.squareup.picasso.RequestCreator import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import io.noties.markwon.image.AsyncDrawable -import io.noties.markwon.image.picasso.PicassoImagesPlugin @Module @InstallIn(SingletonComponent::class) diff --git a/app/src/main/java/com/isolaatti/MyApplication.kt b/app/src/main/java/com/isolaatti/MyApplication.kt index db5cff4..dac6db3 100644 --- a/app/src/main/java/com/isolaatti/MyApplication.kt +++ b/app/src/main/java/com/isolaatti/MyApplication.kt @@ -8,11 +8,16 @@ import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class MyApplication : Application() { + companion object { + lateinit var myApp: MyApplication + } + private val activityLifecycleCallbacks = ActivityLifecycleCallbacks() lateinit var connectivityCallbackImpl: ConnectivityCallbackImpl override fun onCreate() { super.onCreate() + myApp = this registerActivityLifecycleCallbacks(activityLifecycleCallbacks) connectivityCallbackImpl = ConnectivityCallbackImpl() getSystemService(ConnectivityManager::class.java).registerDefaultNetworkCallback(connectivityCallbackImpl) diff --git a/app/src/main/java/com/isolaatti/common/CoilImageLoader.kt b/app/src/main/java/com/isolaatti/common/CoilImageLoader.kt new file mode 100644 index 0000000..d44af38 --- /dev/null +++ b/app/src/main/java/com/isolaatti/common/CoilImageLoader.kt @@ -0,0 +1,16 @@ +package com.isolaatti.common + +import android.content.Context +import coil.ImageLoader +import coil.decode.SvgDecoder +import com.isolaatti.MyApplication + +object CoilImageLoader { + val imageLoader by lazy { + ImageLoader + .Builder(MyApplication.myApp) + .components { + add(SvgDecoder.Factory()) + }.build() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/isolaatti/common/UserListRecyclerViewAdapter.kt b/app/src/main/java/com/isolaatti/common/UserListRecyclerViewAdapter.kt index 902de95..dba9af3 100644 --- a/app/src/main/java/com/isolaatti/common/UserListRecyclerViewAdapter.kt +++ b/app/src/main/java/com/isolaatti/common/UserListRecyclerViewAdapter.kt @@ -6,11 +6,12 @@ import androidx.core.content.res.ResourcesCompat import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView.ViewHolder +import coil.load import com.isolaatti.R +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.databinding.ItemUserListBinding import com.isolaatti.profile.domain.entity.ProfileListItem import com.isolaatti.utils.UrlGen -import com.squareup.picasso.Picasso class UserListRecyclerViewAdapter(private val callback: UserItemCallback) : ListAdapter(diffCallback) { @@ -28,7 +29,7 @@ class UserListRecyclerViewAdapter(private val callback: UserItemCallback) : List callback.itemClick(user.id) } holder.item.name.text = user.name - Picasso.get().load(UrlGen.userProfileImage(user.id)).into(holder.item.image) + holder.item.image.load(UrlGen.userProfileImage(user.id), imageLoader) if(user.following == true) { holder.item.followButton.text = context.getText(R.string.unfollow) holder.item.followButton.setTextColor(ResourcesCompat.getColor(context.resources, R.color.danger, null)) diff --git a/app/src/main/java/com/isolaatti/connectivity/AuthenticationInterceptor.kt b/app/src/main/java/com/isolaatti/connectivity/AuthenticationInterceptor.kt index 8bdeb50..ee48e76 100644 --- a/app/src/main/java/com/isolaatti/connectivity/AuthenticationInterceptor.kt +++ b/app/src/main/java/com/isolaatti/connectivity/AuthenticationInterceptor.kt @@ -6,8 +6,8 @@ import okhttp3.Response class AuthenticationInterceptor(private val authRepository: dagger.Lazy) : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { - val url = chain.request().url() - val path = url.url().path + val url = chain.request().url + val path = url.toUrl().path if(RetrofitClient.excludedUrlsFromAuthentication.contains(path)){ return chain.proceed(chain.request()) } diff --git a/app/src/main/java/com/isolaatti/home/FeedFragment.kt b/app/src/main/java/com/isolaatti/home/FeedFragment.kt index ec33184..fef7654 100644 --- a/app/src/main/java/com/isolaatti/home/FeedFragment.kt +++ b/app/src/main/java/com/isolaatti/home/FeedFragment.kt @@ -16,9 +16,11 @@ import androidx.lifecycle.Observer import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.LinearLayoutManager +import coil.load import com.isolaatti.BuildConfig import com.isolaatti.R import com.isolaatti.about.AboutActivity +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.common.Dialogs import com.isolaatti.common.ErrorMessageViewModel import com.isolaatti.databinding.FragmentFeedBinding @@ -39,13 +41,12 @@ import com.isolaatti.posting.posts.presentation.EditPostContract import com.isolaatti.posting.posts.presentation.PostsRecyclerViewAdapter import com.isolaatti.profile.ui.ProfileActivity import com.isolaatti.settings.ui.SettingsActivity -import com.isolaatti.utils.PicassoImagesPluginDef import com.isolaatti.utils.UrlGen -import com.squareup.picasso.Picasso import dagger.hilt.android.AndroidEntryPoint import io.noties.markwon.AbstractMarkwonPlugin import io.noties.markwon.Markwon import io.noties.markwon.MarkwonConfiguration +import io.noties.markwon.image.coil.CoilImagesPlugin import io.noties.markwon.image.destination.ImageDestinationProcessorRelativeToAbsolute import io.noties.markwon.linkify.LinkifyPlugin import kotlinx.coroutines.launch @@ -162,7 +163,7 @@ class FeedFragment : Fragment(), OnUserInteractedWithPostCallback { .create(BuildConfig.backend)) } }) - .usePlugin(PicassoImagesPluginDef.picassoImagePlugin) + .usePlugin(CoilImagesPlugin.create(requireContext(), imageLoader)) .usePlugin(LinkifyPlugin.create()) .build() adapter = PostsRecyclerViewAdapter(markwon, this) @@ -194,7 +195,7 @@ class FeedFragment : Fragment(), OnUserInteractedWithPostCallback { val textViewName: TextView? = header?.findViewById(R.id.textViewName) val textViewEmail: TextView? = header?.findViewById(R.id.textViewEmail) - Picasso.get().load(UrlGen.userProfileImage(it.userId)).into(image) + image?.load(UrlGen.userProfileImage(it.userId), imageLoader) image?.setOnClickListener {_ -> PictureViewerActivity.startActivityWithUrls(requireContext(), arrayOf(UrlGen.userProfileImageFullQuality(it.userId))) } diff --git a/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerImageWrapperFragment.kt b/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerImageWrapperFragment.kt index e8b1df9..abd311e 100644 --- a/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerImageWrapperFragment.kt +++ b/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerImageWrapperFragment.kt @@ -1,15 +1,15 @@ package com.isolaatti.images.picture_viewer.ui import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import coil.load +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.databinding.FragmentTouchImageViewWrapperBinding import com.ortiz.touchview.OnTouchImageViewListener -import com.squareup.picasso.Picasso -import java.lang.NullPointerException + class PictureViewerImageWrapperFragment : Fragment() { @@ -43,7 +43,7 @@ class PictureViewerImageWrapperFragment : Fragment() { url?.let { - Picasso.get().load(it).into(binding.touchImageView) + binding.touchImageView.load(it, imageLoader) } } diff --git a/app/src/main/java/com/isolaatti/posting/comments/presentation/CommentsRecyclerViewAdapter.kt b/app/src/main/java/com/isolaatti/posting/comments/presentation/CommentsRecyclerViewAdapter.kt index 805b313..4a95d47 100644 --- a/app/src/main/java/com/isolaatti/posting/comments/presentation/CommentsRecyclerViewAdapter.kt +++ b/app/src/main/java/com/isolaatti/posting/comments/presentation/CommentsRecyclerViewAdapter.kt @@ -4,11 +4,12 @@ import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import coil.load +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.databinding.CommentLayoutBinding import com.isolaatti.posting.comments.domain.model.Comment import com.isolaatti.common.OnUserInteractedCallback import com.isolaatti.utils.UrlGen -import com.squareup.picasso.Picasso import io.noties.markwon.Markwon class CommentsRecyclerViewAdapter(private var list: List, private val markwon: Markwon, private val callback: OnUserInteractedCallback) : RecyclerView.Adapter() { @@ -45,9 +46,8 @@ class CommentsRecyclerViewAdapter(private var list: List, private val m holder.viewBinding.moreButton.setOnClickListener { callback.onOptions(comment) } - Picasso.get() - .load(UrlGen.userProfileImage(comment.userId)) - .into(holder.viewBinding.avatarPicture) + + holder.viewBinding.avatarPicture.load(UrlGen.userProfileImage(comment.userId), imageLoader) val totalItems = list.size if(totalItems > 0 && !requestedNewContent) { diff --git a/app/src/main/java/com/isolaatti/posting/comments/ui/BottomSheetPostComments.kt b/app/src/main/java/com/isolaatti/posting/comments/ui/BottomSheetPostComments.kt index 70b5615..1876ab7 100644 --- a/app/src/main/java/com/isolaatti/posting/comments/ui/BottomSheetPostComments.kt +++ b/app/src/main/java/com/isolaatti/posting/comments/ui/BottomSheetPostComments.kt @@ -17,6 +17,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDE import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.isolaatti.R +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.common.Dialogs import com.isolaatti.common.ErrorMessageViewModel import com.isolaatti.databinding.BottomSheetPostCommentsBinding @@ -31,11 +32,11 @@ import com.isolaatti.common.options_bottom_sheet.domain.Options import com.isolaatti.common.options_bottom_sheet.presentation.BottomSheetPostOptionsViewModel import com.isolaatti.common.options_bottom_sheet.ui.BottomSheetPostOptionsFragment import com.isolaatti.profile.ui.ProfileActivity -import com.isolaatti.utils.PicassoImagesPluginDef import dagger.hilt.android.AndroidEntryPoint import io.noties.markwon.AbstractMarkwonPlugin import io.noties.markwon.Markwon import io.noties.markwon.MarkwonConfiguration +import io.noties.markwon.image.coil.CoilImagesPlugin import io.noties.markwon.image.destination.ImageDestinationProcessorRelativeToAbsolute import io.noties.markwon.linkify.LinkifyPlugin import kotlinx.coroutines.launch @@ -186,7 +187,7 @@ class BottomSheetPostComments() : BottomSheetDialogFragment(), OnUserInteractedC .create("https://isolaatti.com/")) } }) - .usePlugin(PicassoImagesPluginDef.picassoImagePlugin) + .usePlugin(CoilImagesPlugin.create(requireContext(), imageLoader)) .usePlugin(LinkifyPlugin.create()) .build() diff --git a/app/src/main/java/com/isolaatti/posting/comments/ui/EditCommentDialogFragment.kt b/app/src/main/java/com/isolaatti/posting/comments/ui/EditCommentDialogFragment.kt index 10bebbe..c7d6e84 100644 --- a/app/src/main/java/com/isolaatti/posting/comments/ui/EditCommentDialogFragment.kt +++ b/app/src/main/java/com/isolaatti/posting/comments/ui/EditCommentDialogFragment.kt @@ -1,24 +1,22 @@ package com.isolaatti.posting.comments.ui -import android.app.Dialog import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.core.widget.doOnTextChanged import androidx.fragment.app.DialogFragment -import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels +import coil.load import com.isolaatti.R +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.databinding.FragmentEditCommentBinding import com.isolaatti.posting.comments.presentation.CommentsViewModel -import com.isolaatti.utils.PicassoImagesPluginDef import com.isolaatti.utils.UrlGen -import com.squareup.picasso.Picasso import io.noties.markwon.AbstractMarkwonPlugin import io.noties.markwon.Markwon import io.noties.markwon.MarkwonConfiguration +import io.noties.markwon.image.coil.CoilImagesPlugin import io.noties.markwon.image.destination.ImageDestinationProcessorRelativeToAbsolute import io.noties.markwon.linkify.LinkifyPlugin @@ -53,7 +51,7 @@ class EditCommentDialogFragment : DialogFragment() { .create("https://isolaatti.com/")) } }) - .usePlugin(PicassoImagesPluginDef.picassoImagePlugin) + .usePlugin(CoilImagesPlugin.create(requireContext(), imageLoader)) .usePlugin(LinkifyPlugin.create()) .build() @@ -77,7 +75,7 @@ class EditCommentDialogFragment : DialogFragment() { binding.comment.also { it.textViewUsername.text = comment.username markwon.setMarkdown(it.postContent, comment.textContent) - Picasso.get().load(UrlGen.userProfileImage(comment.userId)).into(it.avatarPicture) + it.avatarPicture.load(UrlGen.userProfileImage(comment.userId), imageLoader) } binding.newCommentTextField.editText?.setText(comment.textContent) } diff --git a/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt b/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt index 4a1e6ae..cead8b3 100644 --- a/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt +++ b/app/src/main/java/com/isolaatti/posting/posts/presentation/PostsRecyclerViewAdapter.kt @@ -9,13 +9,14 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ViewHolder +import coil.load import com.google.android.material.button.MaterialButton import com.google.android.material.card.MaterialCardView import com.isolaatti.R +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.common.OnUserInteractedWithPostCallback import com.isolaatti.posting.posts.domain.entity.Post import com.isolaatti.utils.UrlGen.userProfileImage -import com.squareup.picasso.Picasso import io.noties.markwon.Markwon class PostsRecyclerViewAdapter (private val markwon: Markwon, private val callback: OnUserInteractedWithPostCallback) : RecyclerView.Adapter(){ @@ -64,7 +65,7 @@ class PostsRecyclerViewAdapter (private val markwon: Markwon, private val callba } val profileImageView: ImageView = itemView.findViewById(R.id.avatar_picture) - Picasso.get().load(userProfileImage(postDto.userId)).into(profileImageView) + profileImageView.load(userProfileImage(postDto.userId), imageLoader) val dateTextView: TextView = itemView.findViewById(R.id.text_view_date) dateTextView.text = postDto.date diff --git a/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt b/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt index 00effe9..643855c 100644 --- a/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt +++ b/app/src/main/java/com/isolaatti/posting/posts/viewer/ui/PostViewerActivity.kt @@ -2,25 +2,23 @@ package com.isolaatti.posting.posts.viewer.ui import android.content.Context import android.content.Intent -import android.content.res.ColorStateList import android.os.Bundle import androidx.activity.viewModels -import androidx.core.content.ContentProviderCompat.requireContext import androidx.core.content.res.ResourcesCompat +import coil.imageLoader +import coil.load import com.isolaatti.BuildConfig import com.isolaatti.R -import com.isolaatti.common.ErrorMessageViewModel import com.isolaatti.common.IsolaattiBaseActivity import com.isolaatti.databinding.ActivityPostViewerBinding import com.isolaatti.posting.comments.ui.BottomSheetPostComments import com.isolaatti.posting.posts.viewer.presentation.PostViewerViewModel import com.isolaatti.profile.ui.ProfileActivity -import com.isolaatti.utils.PicassoImagesPluginDef import com.isolaatti.utils.UrlGen -import com.squareup.picasso.Picasso import io.noties.markwon.AbstractMarkwonPlugin import io.noties.markwon.Markwon import io.noties.markwon.MarkwonConfiguration +import io.noties.markwon.image.coil.CoilImagesPlugin import io.noties.markwon.image.destination.ImageDestinationProcessorRelativeToAbsolute import io.noties.markwon.linkify.LinkifyPlugin import kotlinx.coroutines.CoroutineScope @@ -62,7 +60,7 @@ class PostViewerActivity : IsolaattiBaseActivity() { viewModel.post.observe(this) { markwon.setMarkdown(binding.markwonContainer, it.textContent) binding.author.text = it.userName - Picasso.get().load(UrlGen.userProfileImage(it.userId)).into(binding.profileImageView) + binding.profileImageView.load(UrlGen.userProfileImage(it.userId), imageLoader) binding.commentsInfo.text = getString(R.string.comments_info, it.numberOfComments) binding.likesInfo.text = getString(R.string.likes_info, it.numberOfLikes) binding.author.setOnClickListener {_ -> @@ -122,7 +120,7 @@ class PostViewerActivity : IsolaattiBaseActivity() { .create(BuildConfig.backend)) } }) - .usePlugin(PicassoImagesPluginDef.picassoImagePlugin) + .usePlugin(CoilImagesPlugin.create(this, imageLoader)) .usePlugin(LinkifyPlugin.create()) .build() diff --git a/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt b/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt index 7452e35..6a47125 100644 --- a/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt +++ b/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt @@ -16,13 +16,14 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager +import coil.load import com.isolaatti.BuildConfig import com.isolaatti.R +import com.isolaatti.common.CoilImageLoader.imageLoader import com.isolaatti.common.Dialogs import com.isolaatti.common.ErrorMessageViewModel import com.isolaatti.databinding.FragmentDiscussionsBinding import com.isolaatti.followers.domain.FollowingState -import com.isolaatti.home.FeedFragment import com.isolaatti.posting.posts.viewer.ui.PostViewerActivity import com.isolaatti.posting.comments.ui.BottomSheetPostComments import com.isolaatti.common.Ownable @@ -37,16 +38,14 @@ import com.isolaatti.posting.posts.presentation.EditPostContract import com.isolaatti.posting.posts.presentation.PostListingRecyclerViewAdapterWiring import com.isolaatti.posting.posts.presentation.PostsRecyclerViewAdapter import com.isolaatti.posting.posts.presentation.UpdateEvent -import com.isolaatti.profile.data.remote.UserProfileDto import com.isolaatti.profile.domain.entity.UserProfile import com.isolaatti.profile.presentation.ProfileViewModel -import com.isolaatti.utils.PicassoImagesPluginDef import com.isolaatti.utils.UrlGen -import com.squareup.picasso.Picasso import dagger.hilt.android.AndroidEntryPoint import io.noties.markwon.AbstractMarkwonPlugin import io.noties.markwon.Markwon import io.noties.markwon.MarkwonConfiguration +import io.noties.markwon.image.coil.CoilImagesPlugin import io.noties.markwon.image.destination.ImageDestinationProcessorRelativeToAbsolute import io.noties.markwon.linkify.LinkifyPlugin import kotlinx.coroutines.launch @@ -79,9 +78,7 @@ class ProfileMainFragment : Fragment() { } private val profileObserver = Observer { profile -> - Picasso.get() - .load(UrlGen.userProfileImage(profile.userId)) - .into(viewBinding.profileImageView) + viewBinding.profileImageView.load(UrlGen.userProfileImage(profile.userId), imageLoader) title = profile.name viewBinding.textViewUsername.text = profile.name @@ -274,7 +271,7 @@ class ProfileMainFragment : Fragment() { .create(BuildConfig.backend)) } }) - .usePlugin(PicassoImagesPluginDef.picassoImagePlugin) + .usePlugin(CoilImagesPlugin.create(requireContext(), imageLoader)) .usePlugin(LinkifyPlugin.create()) .build() diff --git a/app/src/main/java/com/isolaatti/sign_up/ui/MakeAccountFragment.kt b/app/src/main/java/com/isolaatti/sign_up/ui/MakeAccountFragment.kt index 76916d0..91ec910 100644 --- a/app/src/main/java/com/isolaatti/sign_up/ui/MakeAccountFragment.kt +++ b/app/src/main/java/com/isolaatti/sign_up/ui/MakeAccountFragment.kt @@ -13,6 +13,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.isolaatti.BuildConfig import com.isolaatti.R import com.isolaatti.databinding.FragmentMakeAccountBinding @@ -145,10 +146,26 @@ class MakeAccountFragment : Fragment() { } } - private fun showNotAvailableEmailMessage() {} - private fun showValidationProblemsMessage() {} - private fun showErrorMessage() {} - private fun showUnavailableMessage() {} + private fun showNotAvailableEmailMessage() { + MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.email_used) + .show() + } + private fun showValidationProblemsMessage() { + MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.validation_error) + .show() + } + private fun showErrorMessage() { + MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.unknown_error) + .show() + } + private fun showUnavailableMessage() { + MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.username_invalid_feedback) + .show() + } private fun goToHome() { val intent = Intent(requireContext(), HomeActivity::class.java) diff --git a/app/src/main/java/com/isolaatti/utils/PicassoImagesPluginDef.kt b/app/src/main/java/com/isolaatti/utils/PicassoImagesPluginDef.kt deleted file mode 100644 index 74a1704..0000000 --- a/app/src/main/java/com/isolaatti/utils/PicassoImagesPluginDef.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.isolaatti.utils - -import com.squareup.picasso.Picasso -import com.squareup.picasso.RequestCreator -import io.noties.markwon.image.AsyncDrawable -import io.noties.markwon.image.picasso.PicassoImagesPlugin - -object PicassoImagesPluginDef { - val picassoImagePlugin = PicassoImagesPlugin.create(object: PicassoImagesPlugin.PicassoStore { - override fun load(drawable: AsyncDrawable): RequestCreator { - return Picasso.get().load(drawable.destination).tag(drawable) - } - - override fun cancel(drawable: AsyncDrawable) { - Picasso.get().cancelTag(drawable) - } - - }) -} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c604bdf..2073788 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -113,4 +113,6 @@ Username is not available or is invalid Password must be at least 8 characters long Please provide a name. This does not have to be unique and can be your real name or not. + Validation error + Email is in use already \ No newline at end of file diff --git a/build.gradle b/build.gradle index 85111fd..2a4b205 100644 --- a/build.gradle +++ b/build.gradle @@ -12,8 +12,8 @@ buildscript { } } plugins { - id 'com.android.application' version '8.1.1' apply false - id 'com.android.library' version '8.1.1' apply false + id 'com.android.application' version '8.1.2' apply false + id 'com.android.library' version '8.1.2' apply false id 'org.jetbrains.kotlin.android' version '1.8.0' apply false id 'com.google.dagger.hilt.android' version '2.47' apply false } \ No newline at end of file