diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index 60feae8..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a86231d..6bfce58 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -36,6 +36,14 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/MyFileProvider.kt b/app/src/main/java/com/isolaatti/MyFileProvider.kt
new file mode 100644
index 0000000..91bfc0c
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/MyFileProvider.kt
@@ -0,0 +1,7 @@
+package com.isolaatti
+
+import androidx.core.content.FileProvider
+
+class MyFileProvider : FileProvider() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/home/FeedFragment.kt b/app/src/main/java/com/isolaatti/home/FeedFragment.kt
index fef7654..c06bea4 100644
--- a/app/src/main/java/com/isolaatti/home/FeedFragment.kt
+++ b/app/src/main/java/com/isolaatti/home/FeedFragment.kt
@@ -197,7 +197,7 @@ class FeedFragment : Fragment(), OnUserInteractedWithPostCallback {
image?.load(UrlGen.userProfileImage(it.userId), imageLoader)
image?.setOnClickListener {_ ->
- PictureViewerActivity.startActivityWithUrls(requireContext(), arrayOf(UrlGen.userProfileImageFullQuality(it.userId)))
+ //PictureViewerActivity.startActivityWithImages(requireContext(), arrayOf(UrlGen.userProfileImageFullQuality(it.userId)))
}
textViewName?.text = it.name
diff --git a/app/src/main/java/com/isolaatti/images/Module.kt b/app/src/main/java/com/isolaatti/images/Module.kt
index 62fbc6c..04c6759 100644
--- a/app/src/main/java/com/isolaatti/images/Module.kt
+++ b/app/src/main/java/com/isolaatti/images/Module.kt
@@ -2,6 +2,8 @@ package com.isolaatti.images
import com.isolaatti.connectivity.RetrofitClient
import com.isolaatti.images.image_list.data.remote.ImagesApi
+import com.isolaatti.images.image_list.data.repository.ImagesRepositoryImpl
+import com.isolaatti.images.image_list.domain.repository.ImagesRepository
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -14,4 +16,9 @@ class Module {
fun provideImagesApi(retrofitClient: RetrofitClient): ImagesApi {
return retrofitClient.client.create(ImagesApi::class.java)
}
+
+ @Provides
+ fun provideImagesRepository(imagesApi: ImagesApi): ImagesRepository {
+ return ImagesRepositoryImpl(imagesApi)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImageDto.kt b/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImageDto.kt
index 08f3420..020082d 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImageDto.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImageDto.kt
@@ -5,5 +5,6 @@ data class ImageDto(
val userId: Int,
val name: String,
val squadId: String?,
+ val username: String,
val idOnFirebase: String
)
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesApi.kt b/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesApi.kt
index b385415..e3d0430 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesApi.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesApi.kt
@@ -13,9 +13,9 @@ import retrofit2.http.Path
import retrofit2.http.Query
interface ImagesApi {
- @POST("images/of_user/{userId}")
+ @GET("images/of_user/{userId}")
fun getImagesOfUser(@Path("userId") userId: Int,
- @Query("lastId") lastId: String?): Call>
+ @Query("lastId") lastId: String?): Call
@POST("images/create")
@Multipart
diff --git a/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesDto.kt b/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesDto.kt
new file mode 100644
index 0000000..dd77315
--- /dev/null
+++ b/app/src/main/java/com/isolaatti/images/image_list/data/remote/ImagesDto.kt
@@ -0,0 +1,5 @@
+package com.isolaatti.images.image_list.data.remote
+
+data class ImagesDto(
+ val data: List
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/image_list/data/repository/ImagesRepositoryImpl.kt b/app/src/main/java/com/isolaatti/images/image_list/data/repository/ImagesRepositoryImpl.kt
index 945cf6d..a53228c 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/data/repository/ImagesRepositoryImpl.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/data/repository/ImagesRepositoryImpl.kt
@@ -15,7 +15,7 @@ class ImagesRepositoryImpl @Inject constructor(private val imagesApi: ImagesApi)
val response = imagesApi.getImagesOfUser(userId, lastId).awaitResponse()
if(response.isSuccessful) {
val imagesDto = response.body()
- val images = imagesDto?.map { Image.fromDto(it) }
+ val images = imagesDto?.data?.map { Image.fromDto(it) }
emit(Resource.Success(images))
diff --git a/app/src/main/java/com/isolaatti/images/image_list/domain/entity/Image.kt b/app/src/main/java/com/isolaatti/images/image_list/domain/entity/Image.kt
index 8b88dc9..748701e 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/domain/entity/Image.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/domain/entity/Image.kt
@@ -2,17 +2,19 @@ package com.isolaatti.images.image_list.domain.entity
import com.isolaatti.images.image_list.data.remote.ImageDto
import com.isolaatti.utils.UrlGen
+import java.io.Serializable
data class Image(
val id: String,
val userId: Int,
- val name: String
-) {
+ val name: String,
+ val username: String
+): Serializable {
val imageUrl: String get() = UrlGen.imageUrl(id)
val smallImageUrl : String get() = UrlGen.imageUrl(id, UrlGen.IMAGE_MODE_SMALL)
val reducedImageUrl: String get() = UrlGen.imageUrl(id, UrlGen.IMAGE_MODE_REDUCED)
companion object {
- fun fromDto(imageDto: ImageDto) = Image(imageDto.id, imageDto.userId, imageDto.name)
+ fun fromDto(imageDto: ImageDto) = Image(imageDto.id, imageDto.userId, imageDto.name, imageDto.username)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/image_list/presentation/ImageListViewModel.kt b/app/src/main/java/com/isolaatti/images/image_list/presentation/ImageListViewModel.kt
index e6f204e..921ae6c 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/presentation/ImageListViewModel.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/presentation/ImageListViewModel.kt
@@ -1,12 +1,29 @@
package com.isolaatti.images.image_list.presentation
+import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewModelScope
+import com.isolaatti.images.image_list.domain.entity.Image
import com.isolaatti.images.image_list.domain.repository.ImagesRepository
+import com.isolaatti.utils.Resource
import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.launch
import javax.inject.Inject
@HiltViewModel
class ImageListViewModel @Inject constructor(private val imagesRepository: ImagesRepository) : ViewModel() {
+ val list: MutableLiveData>> = MutableLiveData()
+ fun loadNext(userId: Int) {
+ viewModelScope.launch {
+ imagesRepository.getImagesOfUser(userId, null).onEach {
+ list.postValue(it)
+ }.flowOn(Dispatchers.IO).launchIn(this)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/image_list/presentation/ImagesAdapter.kt b/app/src/main/java/com/isolaatti/images/image_list/presentation/ImagesAdapter.kt
index de712a7..deed3d4 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/presentation/ImagesAdapter.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/presentation/ImagesAdapter.kt
@@ -1,4 +1,44 @@
package com.isolaatti.images.image_list.presentation
-class ImagesAdapter {
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import android.widget.LinearLayout
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.Adapter
+import coil.load
+import com.isolaatti.common.CoilImageLoader.imageLoader
+import com.isolaatti.databinding.ImageItemBinding
+import com.isolaatti.images.image_list.domain.entity.Image
+
+class ImagesAdapter(private val imageOnClick: ((images: List, position: Int) -> Unit), private val itemWidth: Int) : Adapter(){
+
+ private var data: List = listOf()
+
+ inner class ImageViewHolder(val imageItemBinding: ImageItemBinding) : RecyclerView.ViewHolder(imageItemBinding.root)
+
+ fun setData(data: List) {
+ this.data = data
+ notifyDataSetChanged()
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ImageViewHolder {
+ val inflater = LayoutInflater.from(parent.context)
+ val binding = ImageItemBinding.inflate(inflater)
+
+ binding.root.layoutParams = LinearLayout.LayoutParams(itemWidth, itemWidth)
+ return ImageViewHolder(binding)
+ }
+
+ override fun getItemCount(): Int {
+ return data.size
+ }
+
+ override fun onBindViewHolder(holder: ImageViewHolder, position: Int) {
+ val image = data[position]
+
+ holder.imageItemBinding.image.load(image.smallImageUrl, imageLoader)
+ holder.imageItemBinding.root.setOnClickListener {
+ imageOnClick(data, position)
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/image_list/ui/ImagesFragment.kt b/app/src/main/java/com/isolaatti/images/image_list/ui/ImagesFragment.kt
index 931fb9c..eaf1bac 100644
--- a/app/src/main/java/com/isolaatti/images/image_list/ui/ImagesFragment.kt
+++ b/app/src/main/java/com/isolaatti/images/image_list/ui/ImagesFragment.kt
@@ -1,17 +1,57 @@
package com.isolaatti.images.image_list.ui
+import android.content.res.Resources
+import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.activity.result.PickVisualMediaRequest
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.widget.PopupMenu
+import androidx.core.content.FileProvider
import androidx.fragment.app.Fragment
+import androidx.fragment.app.viewModels
+import androidx.navigation.fragment.findNavController
+import androidx.navigation.fragment.navArgs
+import androidx.recyclerview.widget.GridLayoutManager
+import com.isolaatti.MyApplication
+import com.isolaatti.R
import com.isolaatti.databinding.FragmentImagesBinding
+import com.isolaatti.images.image_list.domain.entity.Image
+import com.isolaatti.images.image_list.presentation.ImageListViewModel
+import com.isolaatti.images.image_list.presentation.ImagesAdapter
+import com.isolaatti.images.picture_viewer.ui.PictureViewerActivity
+import com.isolaatti.utils.Resource
import dagger.hilt.android.AndroidEntryPoint
-import dagger.hilt.android.lifecycle.HiltViewModel
+import java.io.File
+import java.util.Calendar
@AndroidEntryPoint
class ImagesFragment : Fragment() {
lateinit var viewBinding: FragmentImagesBinding
+ lateinit var adapter: ImagesAdapter
+ private val viewModel: ImageListViewModel by viewModels()
+ private val arguments: ImagesFragmentArgs by navArgs()
+
+ private var cameraPhotoUri: Uri? = null
+
+ private val imageOnClick: (images: List, position: Int) -> Unit = { images, position ->
+ PictureViewerActivity.startActivityWithImages(requireContext(), images.toTypedArray(), position)
+ }
+
+ private val choosePictureLauncher = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) {
+ // use uri
+ }
+
+ private val takePhotoLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) {
+ // use cameraPhotoUri if success
+ }
+
+ private fun makePhotoUri(): Uri {
+ val cacheFile = File(requireContext().filesDir, "temp_picture_${Calendar.getInstance().timeInMillis}")
+ return FileProvider.getUriForFile(requireContext(), "${MyApplication.myApp.packageName}.provider", cacheFile)
+ }
override fun onCreateView(
inflater: LayoutInflater,
@@ -25,5 +65,72 @@ class ImagesFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+
+ when(arguments.source) {
+ SOURCE_SQUAD -> {}
+ SOURCE_PROFILE -> {
+ viewModel.loadNext(arguments.sourceId.toInt())
+ }
+ }
+
+ setupAdapter()
+ setupObservers()
+ setupListeners()
+
+ viewBinding.topAppBar.inflateMenu(R.menu.images_menu)
+ }
+
+ private fun setupListeners() {
+ viewBinding.topAppBar.setNavigationOnClickListener {
+ findNavController().popBackStack()
+ }
+ viewBinding.newPictureButton.setOnClickListener {
+ val popup = PopupMenu(requireContext(), it)
+ popup.menuInflater.inflate(R.menu.add_picture_menu, popup.menu)
+
+ popup.setOnMenuItemClickListener {
+ when(it.itemId) {
+ R.id.take_a_photo_menu_item -> {
+ cameraPhotoUri = makePhotoUri()
+ takePhotoLauncher.launch(cameraPhotoUri)
+ true
+ }
+ R.id.upload_a_picture_item -> {
+ choosePictureLauncher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
+ true
+ }
+ else -> false
+ }
+ }
+
+ popup.show()
+ }
+ }
+
+ private fun setupAdapter() {
+ adapter = ImagesAdapter(imageOnClick, Resources.getSystem().displayMetrics.widthPixels/3)
+ viewBinding.recyclerView.layoutManager =
+ GridLayoutManager(requireContext(), 3, GridLayoutManager.VERTICAL, false)
+ viewBinding.recyclerView.adapter = adapter
+ }
+
+ private fun setupObservers() {
+
+ viewModel.list.observe(viewLifecycleOwner) { resource ->
+ when(resource) {
+ is Resource.Error -> {}
+ is Resource.Loading -> {}
+ is Resource.Success -> {
+ resource.data?.let {
+ adapter.setData(it)
+ }
+ }
+ }
+ }
+ }
+
+ companion object {
+ const val SOURCE_PROFILE = "source_profile"
+ const val SOURCE_SQUAD = "source_squads"
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/isolaatti/images/picture_viewer/presentation/PictureViewerViewPagerAdapter.kt b/app/src/main/java/com/isolaatti/images/picture_viewer/presentation/PictureViewerViewPagerAdapter.kt
index 14d4d78..4ef8d5e 100644
--- a/app/src/main/java/com/isolaatti/images/picture_viewer/presentation/PictureViewerViewPagerAdapter.kt
+++ b/app/src/main/java/com/isolaatti/images/picture_viewer/presentation/PictureViewerViewPagerAdapter.kt
@@ -2,9 +2,10 @@ package com.isolaatti.images.picture_viewer.presentation
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
+import com.isolaatti.images.image_list.domain.entity.Image
import com.isolaatti.images.picture_viewer.ui.PictureViewerImageWrapperFragment
-class PictureViewerViewPagerAdapter(fragment: Fragment, private val images: Array) : FragmentStateAdapter(fragment) {
+class PictureViewerViewPagerAdapter(fragment: Fragment, private val images: Array) : FragmentStateAdapter(fragment) {
override fun getItemCount(): Int {
return images.size
}
diff --git a/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerActivity.kt b/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerActivity.kt
index 832468b..dcc05c1 100644
--- a/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerActivity.kt
+++ b/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerActivity.kt
@@ -5,6 +5,7 @@ import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.isolaatti.databinding.ActivityPictureViewerBinding
+import com.isolaatti.images.image_list.domain.entity.Image
import com.isolaatti.images.picture_viewer.presentation.PictureViewerViewPagerAdapter
class PictureViewerActivity : AppCompatActivity() {
@@ -21,12 +22,16 @@ class PictureViewerActivity : AppCompatActivity() {
companion object {
- const val EXTRA_URLS = "urls"
- const val EXTRA_PROFILE_ID = "profileId"
+ const val EXTRA_IMAGES = "images"
+ const val EXTRA_IMAGE_POSITiON = "position"
- fun startActivityWithUrls(context: Context, urls: Array) {
+ fun startActivityWithImages(context: Context, images: Array, position: Int = 0) {
+ if(images.isEmpty()) {
+ return
+ }
val intent = Intent(context, PictureViewerActivity::class.java)
- intent.putExtra(EXTRA_URLS, urls)
+ intent.putExtra(EXTRA_IMAGES, images)
+ intent.putExtra(EXTRA_IMAGE_POSITiON, position)
context.startActivity(intent)
}
}
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 abd311e..b0d31d5 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
@@ -8,13 +8,14 @@ import androidx.fragment.app.Fragment
import coil.load
import com.isolaatti.common.CoilImageLoader.imageLoader
import com.isolaatti.databinding.FragmentTouchImageViewWrapperBinding
+import com.isolaatti.images.image_list.domain.entity.Image
import com.ortiz.touchview.OnTouchImageViewListener
class PictureViewerImageWrapperFragment : Fragment() {
private lateinit var binding: FragmentTouchImageViewWrapperBinding
- private var url: String? = null
+ private var image: Image? = null
override fun onCreateView(
inflater: LayoutInflater,
@@ -23,7 +24,7 @@ class PictureViewerImageWrapperFragment : Fragment() {
): View {
binding = FragmentTouchImageViewWrapperBinding.inflate(inflater)
- url = arguments?.getString(ARGUMENT_URL)
+ image = arguments?.getSerializable(ARGUMENT_IMAGE) as Image
return binding.root
}
@@ -42,17 +43,17 @@ class PictureViewerImageWrapperFragment : Fragment() {
- url?.let {
- binding.touchImageView.load(it, imageLoader)
+ image?.let {
+ binding.touchImageView.load(it.imageUrl, imageLoader)
}
}
companion object {
- const val ARGUMENT_URL = "url"
- fun getInstance(url: String): PictureViewerImageWrapperFragment {
+ const val ARGUMENT_IMAGE = "image"
+ fun getInstance(image: Image): PictureViewerImageWrapperFragment {
val fragment = PictureViewerImageWrapperFragment()
fragment.arguments = Bundle().apply {
- putString(ARGUMENT_URL, url)
+ putSerializable(ARGUMENT_IMAGE, image)
}
return fragment
diff --git a/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerMainFragment.kt b/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerMainFragment.kt
index 6a952fe..26024cd 100644
--- a/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerMainFragment.kt
+++ b/app/src/main/java/com/isolaatti/images/picture_viewer/ui/PictureViewerMainFragment.kt
@@ -5,12 +5,25 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
+import androidx.viewpager2.widget.ViewPager2
import com.isolaatti.databinding.FragmentMainPictureViewerBinding
+import com.isolaatti.images.image_list.domain.entity.Image
import com.isolaatti.images.picture_viewer.presentation.PictureViewerViewPagerAdapter
class PictureViewerMainFragment : Fragment() {
private lateinit var binding: FragmentMainPictureViewerBinding
+
+ lateinit var images: Array
+
+ private val onPageChangeCallback = object: ViewPager2.OnPageChangeCallback() {
+ override fun onPageSelected(position: Int) {
+ super.onPageSelected(position)
+ binding.imageAuthor.text = images[position].username
+ binding.imageDescription.text = images[position].name
+ }
+ }
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -24,12 +37,19 @@ class PictureViewerMainFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- val url = requireActivity().intent.extras?.getStringArray(PictureViewerActivity.EXTRA_URLS)
+ images = requireActivity().intent.extras?.getSerializable(PictureViewerActivity.EXTRA_IMAGES) as Array
+ val position = requireActivity().intent.extras?.getInt(PictureViewerActivity.EXTRA_IMAGE_POSITiON) ?: 0
+ val adapter = PictureViewerViewPagerAdapter(this, images)
+ binding.viewpager.adapter = adapter
+ binding.viewpager.setCurrentItem(position, false)
+ binding.viewpager.registerOnPageChangeCallback(onPageChangeCallback)
+ binding.imageDescription.text = images[position].name
+ binding.imageAuthor.text = images[position].username
+ }
- url?.let {
- val adapter = PictureViewerViewPagerAdapter(this, it)
- binding.viewpager.adapter = adapter
- }
+ override fun onDestroyView() {
+ super.onDestroyView()
+ binding.viewpager.unregisterOnPageChangeCallback(onPageChangeCallback)
}
fun enableViewPagerUserInput(enabled: Boolean) {
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 6a47125..96edd49 100644
--- a/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt
+++ b/app/src/main/java/com/isolaatti/profile/ui/ProfileMainFragment.kt
@@ -31,6 +31,7 @@ import com.isolaatti.common.options_bottom_sheet.domain.OptionClicked
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.images.image_list.ui.ImagesFragment
import com.isolaatti.images.picture_viewer.ui.PictureViewerActivity
import com.isolaatti.posting.posts.domain.entity.Post
import com.isolaatti.posting.posts.presentation.CreatePostContract
@@ -149,7 +150,7 @@ class ProfileMainFragment : Fragment() {
Options.Option.OPTION_PROFILE_PHOTO_VIEW_PHOTO -> {
val profilePictureUrl = profile?.profilePictureUrl
if(profilePictureUrl != null) {
- PictureViewerActivity.startActivityWithUrls(requireContext(), arrayOf(profilePictureUrl))
+ //PictureViewerActivity.startActivityWithUrls(requireContext(), arrayOf(profilePictureUrl))
}
}
}
@@ -217,8 +218,14 @@ class ProfileMainFragment : Fragment() {
true
}
R.id.images_menu_item -> {
- findNavController().navigate(ProfileMainFragmentDirections.actionDiscussionsFragmentToImagesFragment())
- true
+ if(userId != null) {
+ findNavController().navigate(
+ ProfileMainFragmentDirections.actionDiscussionsFragmentToImagesFragment(ImagesFragment.SOURCE_PROFILE, userId.toString())
+ )
+ true
+ } else {
+ false
+ }
}
else -> { false }
}
diff --git a/app/src/main/res/drawable/baseline_delete_24.xml b/app/src/main/res/drawable/baseline_delete_24.xml
index de011dd..fd1fea8 100644
--- a/app/src/main/res/drawable/baseline_delete_24.xml
+++ b/app/src/main/res/drawable/baseline_delete_24.xml
@@ -1,4 +1,4 @@
-
diff --git a/app/src/main/res/layout/activity_picture_viewer.xml b/app/src/main/res/layout/activity_picture_viewer.xml
index 35d12f5..4337600 100644
--- a/app/src/main/res/layout/activity_picture_viewer.xml
+++ b/app/src/main/res/layout/activity_picture_viewer.xml
@@ -2,6 +2,7 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main_picture_viewer.xml b/app/src/main/res/layout/fragment_main_picture_viewer.xml
index af3c6c2..7eef447 100644
--- a/app/src/main/res/layout/fragment_main_picture_viewer.xml
+++ b/app/src/main/res/layout/fragment_main_picture_viewer.xml
@@ -1,5 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/image_item.xml b/app/src/main/res/layout/image_item.xml
new file mode 100644
index 0000000..7df31c7
--- /dev/null
+++ b/app/src/main/res/layout/image_item.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/add_picture_menu.xml b/app/src/main/res/menu/add_picture_menu.xml
new file mode 100644
index 0000000..814c597
--- /dev/null
+++ b/app/src/main/res/menu/add_picture_menu.xml
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/images_menu.xml b/app/src/main/res/menu/images_menu.xml
new file mode 100644
index 0000000..a875604
--- /dev/null
+++ b/app/src/main/res/menu/images_menu.xml
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/profile_navigation.xml b/app/src/main/res/navigation/profile_navigation.xml
index fdf9b06..bbe70d7 100644
--- a/app/src/main/res/navigation/profile_navigation.xml
+++ b/app/src/main/res/navigation/profile_navigation.xml
@@ -36,7 +36,14 @@
+ android:label="ImagesFragment" >
+
+
+
#000000
#BA0606
#000000
+ #9A000000
\ 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 2073788..537be7a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -115,4 +115,6 @@
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
+ Upload a picture
+ Take a photo
\ No newline at end of file
diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml
new file mode 100644
index 0000000..1e00e77
--- /dev/null
+++ b/app/src/main/res/xml/provider_paths.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file