diff --git a/core-appearance/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/appearance/theme/Spacing.kt b/core-appearance/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/appearance/theme/Spacing.kt
index cd8bc2509..dced83832 100644
--- a/core-appearance/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/appearance/theme/Spacing.kt
+++ b/core-appearance/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/appearance/theme/Spacing.kt
@@ -26,6 +26,7 @@ object IconSize {
val s = 20.dp
val m = 26.dp
val l = 30.dp
+ val xl = 46.dp
val xxl = 60.dp
}
diff --git a/core-commonui/components/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/FloatingActionButtonMenu.kt b/core-commonui/components/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/FloatingActionButtonMenu.kt
index 2aeb77d25..c4c513876 100644
--- a/core-commonui/components/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/FloatingActionButtonMenu.kt
+++ b/core-commonui/components/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/FloatingActionButtonMenu.kt
@@ -97,7 +97,7 @@ fun FloatingActionButtonMenu(
) {
Row(
modifier = Modifier.onClick(
- rememberCallback {
+ onClick = rememberCallback {
fabExpanded = false
item.onSelected?.invoke()
},
diff --git a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/chat/InboxChatScreen.kt b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/chat/InboxChatScreen.kt
index 2c2693a47..6b3bc2c63 100644
--- a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/chat/InboxChatScreen.kt
+++ b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/chat/InboxChatScreen.kt
@@ -111,8 +111,8 @@ class InboxChatScreen(
navigationIcon = {
Image(
modifier = Modifier.onClick(
- rememberCallback {
- navigationCoordinator.getRootNavigator()?.pop()
+ onClick = rememberCallback {
+ navigationCoordinator.popScreen()
},
),
imageVector = Icons.Default.ArrowBack,
diff --git a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailMviModel.kt b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailMviModel.kt
index 1dc03427a..e291c251c 100644
--- a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailMviModel.kt
+++ b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailMviModel.kt
@@ -46,6 +46,7 @@ interface CommunityDetailMviModel :
val blurNsfw: Boolean = true,
val currentUserId: Int? = null,
val swipeActionsEnabled: Boolean = true,
+ val doubleTapActionEnabled: Boolean = false,
val postLayout: PostLayout = PostLayout.Card,
val fullHeightImages: Boolean = true,
val separateUpAndDownVotes: Boolean = false,
diff --git a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailScreen.kt b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailScreen.kt
index 411df1f2d..3ab359cd4 100644
--- a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailScreen.kt
+++ b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailScreen.kt
@@ -237,7 +237,7 @@ class CommunityDetailScreen(
if (!isOnOtherInstance && uiState.isLogged) {
Image(
modifier = Modifier.onClick(
- rememberCallback {
+ onClick = rememberCallback {
when (uiState.community.subscribed) {
true -> model.reduce(CommunityDetailMviModel.Intent.Unsubscribe)
false -> model.reduce(CommunityDetailMviModel.Intent.Subscribe)
@@ -259,11 +259,11 @@ class CommunityDetailScreen(
// sort button
Image(
modifier = Modifier.onClick(
- rememberCallback {
+ onClick = rememberCallback {
val sheet = SortBottomSheet(
expandTop = true,
)
- navigationCoordinator.getBottomNavigator()?.show(sheet)
+ navigationCoordinator.showBottomSheet(sheet)
},
),
imageVector = uiState.sortType.toIcon(),
@@ -297,7 +297,7 @@ class CommunityDetailScreen(
modifier = Modifier.onGloballyPositioned {
optionsOffset = it.positionInParent()
}.padding(start = Spacing.s).onClick(
- rememberCallback {
+ onClick = rememberCallback {
optionsExpanded = true
},
),
@@ -321,7 +321,7 @@ class CommunityDetailScreen(
horizontal = Spacing.m,
vertical = Spacing.s,
).onClick(
- rememberCallback {
+ onClick = rememberCallback {
optionsExpanded = false
when (option.id) {
OptionId.BlockInstance -> model.reduce(
@@ -333,19 +333,17 @@ class CommunityDetailScreen(
)
OptionId.InfoInstance -> {
- navigationCoordinator.getRootNavigator()
- ?.push(
- InstanceInfoScreen(
- url = uiState.community.instanceUrl,
- ),
- )
+ navigationCoordinator.pushScreen(
+ InstanceInfoScreen(
+ url = uiState.community.instanceUrl,
+ ),
+ )
}
OptionId.Info -> {
- navigationCoordinator.getBottomNavigator()
- ?.show(
- CommunityInfoScreen(uiState.community),
- )
+ navigationCoordinator.showBottomSheet(
+ CommunityInfoScreen(uiState.community),
+ )
}
else -> Unit
@@ -359,12 +357,11 @@ class CommunityDetailScreen(
}
},
navigationIcon = {
- val navigator = navigationCoordinator.getRootNavigator()
- if (navigator?.canPop == true) {
+ if (navigationCoordinator.canPop) {
Image(
modifier = Modifier.onClick(
- rememberCallback {
- navigator.pop()
+ onClick = rememberCallback {
+ navigationCoordinator.popScreen()
},
),
imageVector = Icons.Default.ArrowBack,
@@ -437,7 +434,7 @@ class CommunityDetailScreen(
val screen = CreatePostScreen(
communityId = uiState.community.id,
)
- navigationCoordinator.getBottomNavigator()?.show(screen)
+ navigationCoordinator.showBottomSheet(screen)
},
)
}
@@ -476,8 +473,7 @@ class CommunityDetailScreen(
community = uiState.community,
autoLoadImages = uiState.autoLoadImages,
onOpenImage = rememberCallbackArgs { url ->
- navigationCoordinator.getRootNavigator()
- ?.push(ZoomableImageScreen(url))
+ navigationCoordinator.pushScreen(ZoomableImageScreen(url))
},
)
Spacer(modifier = Modifier.height(Spacing.m))
@@ -559,15 +555,27 @@ class CommunityDetailScreen(
post.id
)
)
- navigationCoordinator.getRootNavigator()?.push(
+ navigationCoordinator.pushScreen(
PostDetailScreen(
post = post,
otherInstance = otherInstanceName,
),
)
},
+ onDoubleClick = if (!uiState.doubleTapActionEnabled || !uiState.isLogged || isOnOtherInstance) {
+ null
+ } else {
+ rememberCallback(model) {
+ model.reduce(
+ CommunityDetailMviModel.Intent.UpVotePost(
+ id = post.id,
+ feedback = true,
+ ),
+ )
+ }
+ },
onOpenCreator = rememberCallbackArgs { user ->
- navigationCoordinator.getRootNavigator()?.push(
+ navigationCoordinator.pushScreen(
UserDetailScreen(
user = user,
otherInstance = otherInstanceName,
@@ -609,8 +617,7 @@ class CommunityDetailScreen(
val screen = CreateCommentScreen(
originalPost = post,
)
- navigationCoordinator.getBottomNavigator()
- ?.show(screen)
+ navigationCoordinator.showBottomSheet(screen)
}
},
onImageClick = rememberCallbackArgs(model) { url ->
@@ -619,7 +626,7 @@ class CommunityDetailScreen(
post.id
)
)
- navigationCoordinator.getRootNavigator()?.push(
+ navigationCoordinator.pushScreen(
ZoomableImageScreen(url),
)
},
@@ -680,24 +687,21 @@ class CommunityDetailScreen(
)
OptionId.Edit -> {
- navigationCoordinator.getBottomNavigator()
- ?.show(
- CreatePostScreen(editedPost = post)
- )
+ navigationCoordinator.showBottomSheet(
+ CreatePostScreen(editedPost = post)
+ )
}
OptionId.Report -> {
- navigationCoordinator.getBottomNavigator()
- ?.show(
- CreateReportScreen(postId = post.id)
- )
+ navigationCoordinator.showBottomSheet(
+ CreateReportScreen(postId = post.id)
+ )
}
OptionId.CrossPost -> {
- navigationCoordinator.getBottomNavigator()
- ?.show(
- CreatePostScreen(crossPost = post)
- )
+ navigationCoordinator.showBottomSheet(
+ CreatePostScreen(crossPost = post)
+ )
}
OptionId.SeeRaw -> {
diff --git a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailViewModel.kt b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailViewModel.kt
index efa407148..5fc2efe1b 100644
--- a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailViewModel.kt
+++ b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/communitydetail/CommunityDetailViewModel.kt
@@ -66,6 +66,7 @@ class CommunityDetailViewModel(
it.copy(
blurNsfw = settings.blurNsfw,
swipeActionsEnabled = settings.enableSwipeActions,
+ doubleTapActionEnabled = settings.enableDoubleTapAction,
sortType = settings.defaultPostSortType.toSortType(),
fullHeightImages = settings.fullHeightImages,
separateUpAndDownVotes = settings.separateUpAndDownVotes,
diff --git a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/CommentCard.kt b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/CommentCard.kt
index 325a1fe1e..cb894e07e 100644
--- a/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/CommentCard.kt
+++ b/core-commonui/src/commonMain/kotlin/com/github/diegoberaldin/raccoonforlemmy/core/commonui/components/CommentCard.kt
@@ -21,7 +21,6 @@ import com.github.diegoberaldin.raccoonforlemmy.core.appearance.di.getThemeRepos
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.IconSize
import com.github.diegoberaldin.raccoonforlemmy.core.appearance.theme.Spacing
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
-import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.rememberCallback
import com.github.diegoberaldin.raccoonforlemmy.core.utils.toLocalDp
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommunityModel
@@ -42,6 +41,7 @@ fun CommentCard(
autoLoadImages: Boolean = true,
options: List