Skip to content

Commit a5bde35

Browse files
committed
adding zoom image in details
1 parent a29ad74 commit a5bde35

File tree

7 files changed

+82
-9
lines changed

7 files changed

+82
-9
lines changed

.idea/deploymentTargetDropDown.xml

+33
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

+4
Original file line numberDiff line numberDiff line change
@@ -159,5 +159,9 @@ dependencies {
159159
implementation 'com.github.CanHub:Android-Image-Cropper:4.3.2'
160160

161161

162+
implementation("io.coil-kt:coil:2.2.2")
163+
implementation 'com.jsibbold:zoomage:1.3.1'
164+
165+
162166
}
163167

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.nullpointer.blogcompose.ui.screens
2+
3+
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
4+
import android.widget.LinearLayout
5+
import androidx.compose.runtime.Composable
6+
import androidx.compose.ui.viewinterop.AndroidView
7+
import coil.load
8+
import com.jsibbold.zoomage.ZoomageView
9+
import com.nullpointer.blogcompose.ui.navigation.MainNavGraph
10+
import com.ramcosta.composedestinations.annotation.Destination
11+
12+
@MainNavGraph
13+
@Destination
14+
@Composable
15+
fun ZoomScreen(
16+
urlImg: String
17+
) {
18+
AndroidView(factory = {
19+
ZoomageView(it).apply {
20+
layoutParams = LinearLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
21+
load(urlImg)
22+
}
23+
})
24+
25+
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.nullpointer.blogcompose.ui.screens.details
22

33
enum class ActionDetails {
4-
LIKE_THIS_POST, GET_MORE_COMMENTS, RELOAD_COMMENTS, ACTION_BACK, SEND_COMMENT
4+
LIKE_THIS_POST, GET_MORE_COMMENTS, RELOAD_COMMENTS, ACTION_BACK, SEND_COMMENT, ZOOM_IMAGE
55
}

app/src/main/java/com/nullpointer/blogcompose/ui/screens/details/PostDetails.kt

+11-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.nullpointer.blogcompose.presentation.LikeViewModel
2626
import com.nullpointer.blogcompose.presentation.PostDetailsViewModel
2727
import com.nullpointer.blogcompose.ui.interfaces.ActionRootDestinations
2828
import com.nullpointer.blogcompose.ui.navigation.MainNavGraph
29+
import com.nullpointer.blogcompose.ui.screens.destinations.ZoomScreenDestination
2930
import com.nullpointer.blogcompose.ui.screens.details.ActionDetails.*
3031
import com.nullpointer.blogcompose.ui.screens.details.componets.items.post.ErrorDetailsPost
3132
import com.nullpointer.blogcompose.ui.screens.details.componets.items.post.LoadDetailsPost
@@ -103,9 +104,14 @@ fun PostDetails(
103104
RELOAD_COMMENTS -> postDetailsViewModel.requestsComments()
104105
GET_MORE_COMMENTS -> postDetailsViewModel.concatenateComments()
105106
SEND_COMMENT -> postDetailsViewModel.addComment(postDetailsState::scrollToLastItem)
107+
ZOOM_IMAGE -> {
108+
(postState as? Resource.Success)?.let { postState ->
109+
actionRootDestinations.changeRoot(ZoomScreenDestination(postState.data.urlImage))
110+
}
111+
}
106112
LIKE_THIS_POST -> {
107-
(postState as? Resource.Success)?.let { state ->
108-
likeViewModel.likePost(simplePost = state.data)
113+
(postState as? Resource.Success)?.let { postState ->
114+
likeViewModel.likePost(simplePost = postState.data)
109115
}
110116
}
111117
}
@@ -164,7 +170,9 @@ fun PostDetails(
164170
Resource.Loading -> LoadDetailsPost(shimmer = shimmer)
165171
is Resource.Success -> SuccessDetailsPost(
166172
blog = statePostDetails.data,
167-
actionLike = { actionPostDetails(LIKE_THIS_POST) })
173+
actionLike = { actionPostDetails(LIKE_THIS_POST) },
174+
actionZoomImage = { actionPostDetails(ZOOM_IMAGE) }
175+
)
168176
}
169177
}
170178
}

app/src/main/java/com/nullpointer/blogcompose/ui/screens/details/componets/items/post/SuccessDetailsPost.kt

+6-3
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ import com.nullpointer.blogcompose.ui.share.SimpleImage
2020
@Composable
2121
fun SuccessDetailsPost(
2222
blog: Post,
23-
modifier: Modifier = Modifier,
24-
actionLike: () -> Unit
23+
actionLike: () -> Unit,
24+
actionZoomImage: () -> Unit,
25+
modifier: Modifier = Modifier
2526
) {
2627
BoxWithConstraints {
2728
val width = this.maxWidth
@@ -38,7 +39,9 @@ fun SuccessDetailsPost(
3839
sizeImage = width,
3940
image = blog.urlImage,
4041
contentDescription = stringResource(id = R.string.description_img_post),
41-
isCircular = false
42+
isCircular = false,
43+
modifier = Modifier
44+
.clickable { actionZoomImage() }
4245
)
4346
ActionDetailsBlog(
4447
isLiked = blog.ownerLike,

build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ buildscript {
44
}
55
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
66
plugins {
7-
id 'com.android.application' version '7.3.0' apply false
8-
id 'com.android.library' version '7.3.0' apply false
7+
id 'com.android.application' version '7.3.1' apply false
8+
id 'com.android.library' version '7.3.1' apply false
99
id 'org.jetbrains.kotlin.android' version '1.7.0' apply false
1010
id 'com.google.gms.google-services' version '4.3.14' apply false
1111
}

0 commit comments

Comments
 (0)