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