mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-03 11:17:32 +01:00
* chore: open post detail from reply button; closes #214 * chore: indicate author of comments/posts; closes #205
This commit is contained in:
parent
255a5a802c
commit
b6b3468847
@ -625,12 +625,16 @@ class CommunityDetailScreen(
|
||||
)
|
||||
}
|
||||
},
|
||||
onReply = rememberCallback(model) {
|
||||
onReply = rememberCallback {
|
||||
if (uiState.isLogged && !isOnOtherInstance) {
|
||||
val screen = CreateCommentScreen(
|
||||
originalPost = post,
|
||||
model.reduce(
|
||||
CommunityDetailMviModel.Intent.MarkAsRead(
|
||||
post.id
|
||||
)
|
||||
)
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
}
|
||||
},
|
||||
onImageClick = rememberCallbackArgs(model) { url ->
|
||||
|
@ -41,6 +41,8 @@ interface CreateCommentMviModel :
|
||||
val loading: Boolean = false,
|
||||
val section: CreatePostSection = CreatePostSection.Edit,
|
||||
val autoLoadImages: Boolean = true,
|
||||
val currentInstance: String = "",
|
||||
val currentUser: String = "",
|
||||
)
|
||||
|
||||
sealed interface Effect {
|
||||
|
@ -3,6 +3,7 @@ package com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.heightIn
|
||||
import androidx.compose.foundation.layout.padding
|
||||
@ -39,6 +40,7 @@ import androidx.compose.ui.focus.focusRequester
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import androidx.compose.ui.text.style.TextDecoration
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
@ -269,19 +271,43 @@ class CreateCommentScreen(
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (uiState.currentUser.isNotEmpty()) {
|
||||
Row(
|
||||
modifier = Modifier.padding(
|
||||
vertical = Spacing.xs,
|
||||
horizontal = Spacing.l,
|
||||
)
|
||||
) {
|
||||
Text(
|
||||
text = buildString {
|
||||
append(stringResource(MR.strings.post_reply_source_account))
|
||||
append(" ")
|
||||
append(uiState.currentUser)
|
||||
if (uiState.currentInstance.isNotEmpty()) {
|
||||
append("@")
|
||||
append(uiState.currentInstance)
|
||||
}
|
||||
},
|
||||
color = MaterialTheme.colorScheme.onBackground,
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
textDecoration = TextDecoration.Underline,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
) { padding ->
|
||||
val referenceModifier = Modifier.padding(
|
||||
horizontal = Spacing.s,
|
||||
vertical = Spacing.xxs,
|
||||
)
|
||||
LazyColumn(
|
||||
modifier = Modifier.padding(padding),
|
||||
) {
|
||||
val referenceModifier = Modifier.padding(
|
||||
horizontal = Spacing.s,
|
||||
vertical = Spacing.xxs,
|
||||
)
|
||||
when {
|
||||
originalComment != null -> {
|
||||
item {
|
||||
item {
|
||||
when {
|
||||
originalComment != null -> {
|
||||
CommentCard(
|
||||
modifier = referenceModifier,
|
||||
comment = originalComment,
|
||||
@ -302,10 +328,8 @@ class CreateCommentScreen(
|
||||
)
|
||||
Divider()
|
||||
}
|
||||
}
|
||||
|
||||
originalPost != null -> {
|
||||
item {
|
||||
originalPost != null -> {
|
||||
PostCard(
|
||||
modifier = referenceModifier,
|
||||
postLayout = uiState.postLayout,
|
||||
|
@ -9,6 +9,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.Sett
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.CommentRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.PostRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR.strings.message_missing_field
|
||||
import dev.icerock.moko.resources.desc.desc
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -25,6 +26,7 @@ class CreateCommentViewModel(
|
||||
private val identityRepository: IdentityRepository,
|
||||
private val commentRepository: CommentRepository,
|
||||
private val postRepository: PostRepository,
|
||||
private val siteRepository: SiteRepository,
|
||||
private val themeRepository: ThemeRepository,
|
||||
private val settingsRepository: SettingsRepository,
|
||||
private val notificationCenter: NotificationCenter,
|
||||
@ -37,6 +39,18 @@ class CreateCommentViewModel(
|
||||
themeRepository.postLayout.onEach { layout ->
|
||||
mvi.updateState { it.copy(postLayout = layout) }
|
||||
}.launchIn(this)
|
||||
if (uiState.value.currentUser.isEmpty()) {
|
||||
val auth = identityRepository.authToken.value.orEmpty()
|
||||
val currentUser = siteRepository.getCurrentUser(auth)
|
||||
if (currentUser != null) {
|
||||
mvi.updateState {
|
||||
it.copy(
|
||||
currentUser = currentUser.name,
|
||||
currentInstance = currentUser.host,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
settingsRepository.currentSettings.onEach { settings ->
|
||||
mvi.updateState {
|
||||
it.copy(
|
||||
|
@ -68,6 +68,8 @@ interface CreatePostMviModel :
|
||||
val fullHeightImages: Boolean = true,
|
||||
val voteFormat: VoteFormat = VoteFormat.Aggregated,
|
||||
val autoLoadImages: Boolean = true,
|
||||
val currentInstance: String = "",
|
||||
val currentUser: String = "",
|
||||
)
|
||||
|
||||
sealed interface Effect {
|
||||
|
@ -47,6 +47,7 @@ import androidx.compose.ui.text.font.FontFamily
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import androidx.compose.ui.text.style.TextDecoration
|
||||
import androidx.compose.ui.unit.dp
|
||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
@ -462,6 +463,30 @@ class CreatePostScreen(
|
||||
autoLoadImages = uiState.autoLoadImages,
|
||||
)
|
||||
}
|
||||
|
||||
if (uiState.currentUser.isNotEmpty()) {
|
||||
Row(
|
||||
modifier = Modifier.padding(
|
||||
vertical = Spacing.xs,
|
||||
horizontal = Spacing.l,
|
||||
)
|
||||
) {
|
||||
Text(
|
||||
text = buildString {
|
||||
append(stringResource(MR.strings.post_reply_source_account))
|
||||
append(" ")
|
||||
append(uiState.currentUser)
|
||||
if (uiState.currentInstance.isNotEmpty()) {
|
||||
append("@")
|
||||
append(uiState.currentInstance)
|
||||
}
|
||||
},
|
||||
color = MaterialTheme.colorScheme.onBackground,
|
||||
style = MaterialTheme.typography.labelSmall,
|
||||
textDecoration = TextDecoration.Underline,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.persistence.repository.Sett
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.utils.StringUtils.isValidUrl
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.identity.repository.IdentityRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.PostRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.repository.SiteRepository
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR.strings.message_invalid_field
|
||||
import com.github.diegoberaldin.raccoonforlemmy.resources.MR.strings.message_missing_field
|
||||
import dev.icerock.moko.resources.desc.desc
|
||||
@ -21,6 +22,7 @@ class CreatePostViewModel(
|
||||
private val mvi: DefaultMviModel<CreatePostMviModel.Intent, CreatePostMviModel.UiState, CreatePostMviModel.Effect>,
|
||||
private val identityRepository: IdentityRepository,
|
||||
private val postRepository: PostRepository,
|
||||
private val siteRepository: SiteRepository,
|
||||
private val themeRepository: ThemeRepository,
|
||||
private val settingsRepository: SettingsRepository,
|
||||
) : CreatePostMviModel,
|
||||
@ -41,6 +43,18 @@ class CreatePostViewModel(
|
||||
)
|
||||
}
|
||||
}.launchIn(this)
|
||||
if (uiState.value.currentUser.isEmpty()) {
|
||||
val auth = identityRepository.authToken.value.orEmpty()
|
||||
val currentUser = siteRepository.getCurrentUser(auth)
|
||||
if (currentUser != null) {
|
||||
mvi.updateState {
|
||||
it.copy(
|
||||
currentUser = currentUser.name,
|
||||
currentInstance = currentUser.host,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,6 +129,7 @@ val commonUiModule = module {
|
||||
identityRepository = get(),
|
||||
commentRepository = get(),
|
||||
postRepository = get(),
|
||||
siteRepository = get(),
|
||||
themeRepository = get(),
|
||||
settingsRepository = get(),
|
||||
notificationCenter = get(),
|
||||
@ -140,6 +141,7 @@ val commonUiModule = module {
|
||||
editedPostId = params[0],
|
||||
identityRepository = get(),
|
||||
postRepository = get(),
|
||||
siteRepository = get(),
|
||||
themeRepository = get(),
|
||||
settingsRepository = get(),
|
||||
)
|
||||
|
@ -73,6 +73,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.notifications.di.getNotific
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
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.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.CommentModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.PostModel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.SortType
|
||||
@ -168,34 +169,30 @@ class SavedItemsScreen : Screen {
|
||||
targetOffsetY = { it * 2 },
|
||||
),
|
||||
) {
|
||||
FloatingActionButtonMenu(
|
||||
items = buildList {
|
||||
this += FloatingActionButtonMenuItem(
|
||||
icon = Icons.Default.ExpandLess,
|
||||
text = stringResource(MR.strings.action_back_to_top),
|
||||
onSelected = rememberCallback {
|
||||
scope.launch {
|
||||
lazyListState.scrollToItem(0)
|
||||
topAppBarState.heightOffset = 0f
|
||||
topAppBarState.contentOffset = 0f
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
)
|
||||
FloatingActionButtonMenu(items = buildList {
|
||||
this += FloatingActionButtonMenuItem(
|
||||
icon = Icons.Default.ExpandLess,
|
||||
text = stringResource(MR.strings.action_back_to_top),
|
||||
onSelected = rememberCallback {
|
||||
scope.launch {
|
||||
lazyListState.scrollToItem(0)
|
||||
topAppBarState.heightOffset = 0f
|
||||
topAppBarState.contentOffset = 0f
|
||||
}
|
||||
},
|
||||
)
|
||||
})
|
||||
}
|
||||
},
|
||||
) { paddingValues ->
|
||||
Column(
|
||||
modifier = Modifier.padding(paddingValues)
|
||||
.let {
|
||||
if (settings.hideNavigationBarWhileScrolling) {
|
||||
it.nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
modifier = Modifier.padding(paddingValues).let {
|
||||
if (settings.hideNavigationBarWhileScrolling) {
|
||||
it.nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
.nestedScroll(fabNestedScrollConnection),
|
||||
}.nestedScroll(fabNestedScrollConnection),
|
||||
verticalArrangement = Arrangement.spacedBy(Spacing.s),
|
||||
) {
|
||||
SectionSelector(
|
||||
@ -223,8 +220,7 @@ class SavedItemsScreen : Screen {
|
||||
},
|
||||
)
|
||||
Box(
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
.pullRefresh(pullRefreshState),
|
||||
modifier = Modifier.fillMaxWidth().pullRefresh(pullRefreshState),
|
||||
) {
|
||||
LazyColumn(
|
||||
state = lazyListState,
|
||||
@ -239,22 +235,22 @@ class SavedItemsScreen : Screen {
|
||||
voteFormat = uiState.voteFormat,
|
||||
autoLoadImages = uiState.autoLoadImages,
|
||||
blurNsfw = uiState.blurNsfw,
|
||||
onClick = {
|
||||
onClick = rememberCallback {
|
||||
navigatorCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
},
|
||||
onOpenCommunity = { community ->
|
||||
onOpenCommunity = rememberCallbackArgs { community ->
|
||||
navigatorCoordinator.pushScreen(
|
||||
CommunityDetailScreen(community),
|
||||
)
|
||||
},
|
||||
onOpenCreator = { u ->
|
||||
onOpenCreator = rememberCallbackArgs { u ->
|
||||
if (u.id != uiState.user?.id) {
|
||||
navigatorCoordinator.pushScreen(UserDetailScreen(u))
|
||||
}
|
||||
},
|
||||
onUpVote = {
|
||||
onUpVote = rememberCallback(model) {
|
||||
model.reduce(
|
||||
SavedItemsMviModel.Intent.UpVotePost(
|
||||
id = post.id,
|
||||
@ -262,7 +258,7 @@ class SavedItemsScreen : Screen {
|
||||
),
|
||||
)
|
||||
},
|
||||
onDownVote = {
|
||||
onDownVote = rememberCallback(model) {
|
||||
model.reduce(
|
||||
SavedItemsMviModel.Intent.DownVotePost(
|
||||
id = post.id,
|
||||
@ -270,7 +266,7 @@ class SavedItemsScreen : Screen {
|
||||
),
|
||||
)
|
||||
},
|
||||
onSave = {
|
||||
onSave = rememberCallback(model) {
|
||||
model.reduce(
|
||||
SavedItemsMviModel.Intent.SavePost(
|
||||
id = post.id,
|
||||
@ -278,13 +274,12 @@ class SavedItemsScreen : Screen {
|
||||
),
|
||||
)
|
||||
},
|
||||
onReply = {
|
||||
val screen = CreateCommentScreen(
|
||||
originalPost = post,
|
||||
onReply = rememberCallback {
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
navigatorCoordinator.showBottomSheet(screen)
|
||||
},
|
||||
onImageClick = { url ->
|
||||
onImageClick = rememberCallbackArgs { url ->
|
||||
navigatorCoordinator.pushScreen(
|
||||
ZoomableImageScreen(url),
|
||||
)
|
||||
@ -483,8 +478,7 @@ class SavedItemsScreen : Screen {
|
||||
if (rawContent != null) {
|
||||
when (val content = rawContent) {
|
||||
is PostModel -> {
|
||||
RawContentDialog(
|
||||
title = content.title,
|
||||
RawContentDialog(title = content.title,
|
||||
date = content.publishDate,
|
||||
url = content.url,
|
||||
text = content.text,
|
||||
@ -494,44 +488,32 @@ class SavedItemsScreen : Screen {
|
||||
onQuote = { quotation ->
|
||||
rawContent = null
|
||||
if (quotation != null) {
|
||||
val screen =
|
||||
CreateCommentScreen(
|
||||
originalPost = content,
|
||||
initialText = buildString {
|
||||
append("> ")
|
||||
append(quotation)
|
||||
append("\n\n")
|
||||
}
|
||||
)
|
||||
val screen = CreateCommentScreen(originalPost = content,
|
||||
initialText = buildString {
|
||||
append("> ")
|
||||
append(quotation)
|
||||
append("\n\n")
|
||||
})
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
is CommentModel -> {
|
||||
RawContentDialog(
|
||||
text = content.text,
|
||||
date = content.publishDate,
|
||||
onDismiss = {
|
||||
rawContent = null
|
||||
},
|
||||
onQuote = { quotation ->
|
||||
rawContent = null
|
||||
if (quotation != null) {
|
||||
val screen =
|
||||
CreateCommentScreen(
|
||||
originalComment = content,
|
||||
initialText = buildString {
|
||||
append("> ")
|
||||
append(quotation)
|
||||
append("\n\n")
|
||||
}
|
||||
)
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
}
|
||||
RawContentDialog(text = content.text, date = content.publishDate, onDismiss = {
|
||||
rawContent = null
|
||||
}, onQuote = { quotation ->
|
||||
rawContent = null
|
||||
if (quotation != null) {
|
||||
val screen = CreateCommentScreen(originalComment = content,
|
||||
initialText = buildString {
|
||||
append("> ")
|
||||
append(quotation)
|
||||
append("\n\n")
|
||||
})
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -523,10 +523,9 @@ class UserDetailScreen(
|
||||
null
|
||||
} else {
|
||||
rememberCallback {
|
||||
val screen = CreateCommentScreen(
|
||||
originalPost = post,
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
}
|
||||
},
|
||||
onImageClick = rememberCallbackArgs { url ->
|
||||
|
@ -421,9 +421,10 @@ class PostListScreen : Screen {
|
||||
},
|
||||
onReply = rememberCallback(model) {
|
||||
if (uiState.isLogged) {
|
||||
val screen =
|
||||
CreateCommentScreen(originalPost = post)
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
model.reduce(PostListMviModel.Intent.MarkAsRead(post.id))
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
}
|
||||
},
|
||||
onImageClick = rememberCallbackArgs(model, post) { url ->
|
||||
|
@ -217,6 +217,11 @@ internal object ProfileLoggedScreen : Tab {
|
||||
)
|
||||
)
|
||||
},
|
||||
onReply = rememberCallback {
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
},
|
||||
options = buildList {
|
||||
add(
|
||||
Option(
|
||||
@ -341,6 +346,14 @@ internal object ProfileLoggedScreen : Tab {
|
||||
)
|
||||
)
|
||||
},
|
||||
onReply = rememberCallback {
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(
|
||||
post = PostModel(id = comment.postId),
|
||||
highlightCommentId = comment.id,
|
||||
),
|
||||
)
|
||||
},
|
||||
options = buildList {
|
||||
add(
|
||||
Option(
|
||||
|
@ -425,10 +425,9 @@ class ExploreScreen : Screen {
|
||||
},
|
||||
onReply = rememberCallback {
|
||||
if (uiState.isLogged) {
|
||||
val screen = CreateCommentScreen(
|
||||
originalPost = result.model,
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(result.model),
|
||||
)
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
}
|
||||
},
|
||||
onImageClick = rememberCallbackArgs { url ->
|
||||
|
@ -65,7 +65,6 @@ import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.OptionI
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.PostCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.PostCardPlaceholder
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.components.SwipeableCard
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createcomment.CreateCommentScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.createreport.CreateReportScreen
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.di.getFabNestedScrollConnection
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.commonui.image.ZoomableImageScreen
|
||||
@ -79,6 +78,7 @@ import com.github.diegoberaldin.raccoonforlemmy.core.persistence.data.MultiCommu
|
||||
import com.github.diegoberaldin.raccoonforlemmy.core.persistence.di.getSettingsRepository
|
||||
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.compose.rememberCallbackArgs
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.getAdditionalLabel
|
||||
import com.github.diegoberaldin.raccoonforlemmy.domain.lemmy.data.toIcon
|
||||
import com.github.diegoberaldin.raccoonforlemmy.feature.search.di.getMultiCommunityViewModel
|
||||
@ -302,7 +302,7 @@ class MultiCommunityScreen(
|
||||
voteFormat = uiState.voteFormat,
|
||||
autoLoadImages = uiState.autoLoadImages,
|
||||
blurNsfw = uiState.blurNsfw,
|
||||
onClick = {
|
||||
onClick = rememberCallback {
|
||||
model.reduce(MultiCommunityMviModel.Intent.MarkAsRead(post.id))
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
@ -320,17 +320,17 @@ class MultiCommunityScreen(
|
||||
)
|
||||
}
|
||||
},
|
||||
onOpenCommunity = { community ->
|
||||
onOpenCommunity = rememberCallbackArgs { community ->
|
||||
navigationCoordinator.pushScreen(
|
||||
CommunityDetailScreen(community),
|
||||
)
|
||||
},
|
||||
onOpenCreator = { user ->
|
||||
onOpenCreator = rememberCallbackArgs { user ->
|
||||
navigationCoordinator.pushScreen(
|
||||
UserDetailScreen(user),
|
||||
)
|
||||
},
|
||||
onUpVote = {
|
||||
onUpVote = rememberCallback(model) {
|
||||
model.reduce(
|
||||
MultiCommunityMviModel.Intent.UpVotePost(
|
||||
id = post.id,
|
||||
@ -338,7 +338,7 @@ class MultiCommunityScreen(
|
||||
),
|
||||
)
|
||||
},
|
||||
onDownVote = {
|
||||
onDownVote = rememberCallback(model) {
|
||||
model.reduce(
|
||||
MultiCommunityMviModel.Intent.DownVotePost(
|
||||
id = post.id,
|
||||
@ -346,7 +346,7 @@ class MultiCommunityScreen(
|
||||
),
|
||||
)
|
||||
},
|
||||
onSave = {
|
||||
onSave = rememberCallback(model) {
|
||||
model.reduce(
|
||||
MultiCommunityMviModel.Intent.SavePost(
|
||||
id = post.id,
|
||||
@ -354,13 +354,12 @@ class MultiCommunityScreen(
|
||||
),
|
||||
)
|
||||
},
|
||||
onReply = {
|
||||
val screen = CreateCommentScreen(
|
||||
originalPost = post,
|
||||
onReply = rememberCallback {
|
||||
navigationCoordinator.pushScreen(
|
||||
PostDetailScreen(post),
|
||||
)
|
||||
navigationCoordinator.showBottomSheet(screen)
|
||||
},
|
||||
onImageClick = { url ->
|
||||
onImageClick = rememberCallbackArgs { url ->
|
||||
model.reduce(MultiCommunityMviModel.Intent.MarkAsRead(post.id))
|
||||
navigationCoordinator.pushScreen(
|
||||
ZoomableImageScreen(url),
|
||||
|
@ -249,4 +249,5 @@
|
||||
<string name="settings_vote_format_separated">متفرق</string>
|
||||
<string name="settings_vote_format_percentage">نسبة مئوية</string>
|
||||
<string name="settings_font_family_default">نظام</string>
|
||||
<string name="post_reply_source_account">بواسطة:</string>
|
||||
</resources>
|
@ -280,4 +280,5 @@
|
||||
<string name="settings_vote_format_separated">Separate</string>
|
||||
<string name="settings_vote_format_percentage">Percentage</string>
|
||||
<string name="settings_font_family_default">System</string>
|
||||
<string name="post_reply_source_account">by:</string>
|
||||
</resources>
|
@ -259,4 +259,5 @@
|
||||
<string name="settings_vote_format_separated">Отделно</string>
|
||||
<string name="settings_vote_format_percentage">Процент</string>
|
||||
<string name="settings_font_family_default">Система</string>
|
||||
<string name="post_reply_source_account">от:</string>
|
||||
</resources>
|
@ -251,4 +251,5 @@
|
||||
<string name="settings_vote_format_separated">Samostatný</string>
|
||||
<string name="settings_vote_format_percentage">Procento</string>
|
||||
<string name="settings_font_family_default">Systém</string>
|
||||
<string name="post_reply_source_account">podle:</string>
|
||||
</resources>
|
@ -251,4 +251,5 @@
|
||||
<string name="settings_vote_format_separated">Adskille</string>
|
||||
<string name="settings_vote_format_percentage">Procent</string>
|
||||
<string name="settings_font_family_default">System</string>
|
||||
<string name="post_reply_source_account">ved:</string>
|
||||
</resources>
|
@ -257,4 +257,5 @@
|
||||
<string name="settings_vote_format_separated">Separate</string>
|
||||
<string name="settings_vote_format_percentage">Prozentsatz</string>
|
||||
<string name="settings_font_family_default">System</string>
|
||||
<string name="post_reply_source_account">von:</string>
|
||||
</resources>
|
@ -260,4 +260,5 @@
|
||||
<string name="settings_vote_format_separated">Ξεχωριστό</string>
|
||||
<string name="settings_vote_format_percentage">Ποσοστό</string>
|
||||
<string name="settings_font_family_default">Σύστημα</string>
|
||||
<string name="post_reply_source_account">από:</string>
|
||||
</resources>
|
@ -250,4 +250,5 @@
|
||||
<string name="settings_vote_format_separated">Apartigite</string>
|
||||
<string name="settings_vote_format_percentage">Procento</string>
|
||||
<string name="settings_font_family_default">Sistemo</string>
|
||||
<string name="post_reply_source_account">de:</string>
|
||||
</resources>
|
@ -255,4 +255,5 @@
|
||||
<string name="settings_vote_format_separated">Separado</string>
|
||||
<string name="settings_vote_format_percentage">Porcentaje</string>
|
||||
<string name="settings_font_family_default">Sistema</string>
|
||||
<string name="post_reply_source_account">por:</string>
|
||||
</resources>
|
@ -251,4 +251,5 @@
|
||||
<string name="settings_vote_format_separated">Eraldi</string>
|
||||
<string name="settings_vote_format_percentage">Protsent</string>
|
||||
<string name="settings_font_family_default">Süsteem</string>
|
||||
<string name="post_reply_source_account">kõrval:</string>
|
||||
</resources>
|
@ -251,4 +251,5 @@
|
||||
<string name="settings_vote_format_separated">Erillinen</string>
|
||||
<string name="settings_vote_format_percentage">Prosenttiosuus</string>
|
||||
<string name="settings_font_family_default">Järjestelmä</string>
|
||||
<string name="post_reply_source_account">kirjoittaja:</string>
|
||||
</resources>
|
@ -254,4 +254,5 @@
|
||||
<string name="settings_vote_format_separated">Séparé</string>
|
||||
<string name="settings_vote_format_percentage">Pourcentage</string>
|
||||
<string name="settings_font_family_default">Système</string>
|
||||
<string name="post_reply_source_account">par:</string>
|
||||
</resources>
|
@ -260,4 +260,5 @@
|
||||
<string name="settings_vote_format_separated">Scartha</string>
|
||||
<string name="settings_vote_format_percentage">Céatadán</string>
|
||||
<string name="settings_font_family_default">Córas</string>
|
||||
<string name="post_reply_source_account">le:</string>
|
||||
</resources>
|
@ -256,4 +256,5 @@
|
||||
<string name="settings_vote_format_separated">Odvojeni</string>
|
||||
<string name="settings_vote_format_percentage">Postotak</string>
|
||||
<string name="settings_font_family_default">Sustav</string>
|
||||
<string name="post_reply_source_account">po:</string>
|
||||
</resources>
|
@ -255,4 +255,5 @@
|
||||
<string name="settings_vote_format_separated">Különálló</string>
|
||||
<string name="settings_vote_format_percentage">Százalék</string>
|
||||
<string name="settings_font_family_default">Rendszer</string>
|
||||
<string name="post_reply_source_account">által:</string>
|
||||
</resources>
|
@ -255,4 +255,5 @@
|
||||
<string name="settings_vote_format_separated">Separato</string>
|
||||
<string name="settings_vote_format_percentage">Percentuale</string>
|
||||
<string name="settings_font_family_default">Sistema</string>
|
||||
<string name="post_reply_source_account">da:</string>
|
||||
</resources>
|
@ -253,4 +253,5 @@
|
||||
<string name="settings_vote_format_separated">Atskirai</string>
|
||||
<string name="settings_vote_format_percentage">Procentas</string>
|
||||
<string name="settings_font_family_default">Sistema</string>
|
||||
<string name="post_reply_source_account">pateikė:</string>
|
||||
</resources>
|
@ -255,4 +255,5 @@
|
||||
<string name="settings_vote_format_separated">Atsevišķi</string>
|
||||
<string name="settings_vote_format_percentage">Procenti</string>
|
||||
<string name="settings_font_family_default">Sistēma</string>
|
||||
<string name="post_reply_source_account">autors:</string>
|
||||
</resources>
|
@ -256,4 +256,5 @@
|
||||
<string name="settings_vote_format_separated">Separati</string>
|
||||
<string name="settings_vote_format_percentage">Persentaġġ</string>
|
||||
<string name="settings_font_family_default">Sistema</string>
|
||||
<string name="post_reply_source_account">minn:</string>
|
||||
</resources>
|
@ -254,4 +254,5 @@
|
||||
<string name="settings_vote_format_separated">Verschillend</string>
|
||||
<string name="settings_vote_format_percentage">Percentage</string>
|
||||
<string name="settings_font_family_default">Systeem</string>
|
||||
<string name="post_reply_source_account">door:</string>
|
||||
</resources>
|
@ -253,4 +253,5 @@
|
||||
<string name="settings_vote_format_separated">Skille</string>
|
||||
<string name="settings_vote_format_percentage">Prosentdel</string>
|
||||
<string name="settings_font_family_default">System</string>
|
||||
<string name="post_reply_source_account">av:</string>
|
||||
</resources>
|
@ -254,4 +254,5 @@
|
||||
<string name="settings_vote_format_separated">Oddzielny</string>
|
||||
<string name="settings_vote_format_percentage">Odsetek</string>
|
||||
<string name="settings_font_family_default">System</string>
|
||||
<string name="post_reply_source_account">przez:</string>
|
||||
</resources>
|
@ -253,4 +253,5 @@
|
||||
<string name="settings_vote_format_separated">Separado</string>
|
||||
<string name="settings_vote_format_percentage">Percentagem</string>
|
||||
<string name="settings_font_family_default">Sistema</string>
|
||||
<string name="post_reply_source_account">por:</string>
|
||||
</resources>
|
@ -252,4 +252,5 @@
|
||||
<string name="settings_vote_format_separated">Separat</string>
|
||||
<string name="settings_vote_format_percentage">Procent</string>
|
||||
<string name="settings_font_family_default">Sistem</string>
|
||||
<string name="post_reply_source_account">de:</string>
|
||||
</resources>
|
@ -254,4 +254,5 @@
|
||||
<string name="settings_vote_format_separated">Отдельно</string>
|
||||
<string name="settings_vote_format_percentage">Процент</string>
|
||||
<string name="settings_font_family_default">Система</string>
|
||||
<string name="post_reply_source_account">к:</string>
|
||||
</resources>
|
@ -252,4 +252,5 @@
|
||||
<string name="settings_vote_format_separated">Separat</string>
|
||||
<string name="settings_vote_format_percentage">Procentsats</string>
|
||||
<string name="settings_font_family_default">Systemet</string>
|
||||
<string name="post_reply_source_account">förbi:</string>
|
||||
</resources>
|
@ -253,4 +253,5 @@
|
||||
<string name="settings_vote_format_separated">Samostatné</string>
|
||||
<string name="settings_vote_format_percentage">Percento</string>
|
||||
<string name="settings_font_family_default">Systém</string>
|
||||
<string name="post_reply_source_account">od:</string>
|
||||
</resources>
|
@ -251,4 +251,5 @@
|
||||
<string name="settings_vote_format_separated">Ločeno</string>
|
||||
<string name="settings_vote_format_percentage">Odstotek</string>
|
||||
<string name="settings_font_family_default">Sistem</string>
|
||||
<string name="post_reply_source_account">avtor:</string>
|
||||
</resources>
|
@ -257,4 +257,5 @@
|
||||
<string name="settings_vote_format_separated">Të ndara</string>
|
||||
<string name="settings_vote_format_percentage">Përqindje</string>
|
||||
<string name="settings_font_family_default">Sistemi</string>
|
||||
<string name="post_reply_source_account">nga:</string>
|
||||
</resources>
|
@ -254,4 +254,5 @@
|
||||
<string name="settings_vote_format_separated">Ayırmak</string>
|
||||
<string name="settings_vote_format_percentage">Yüzde</string>
|
||||
<string name="settings_font_family_default">Sistem</string>
|
||||
<string name="post_reply_source_account">ile:</string>
|
||||
</resources>
|
@ -253,4 +253,5 @@
|
||||
<string name="settings_vote_format_separated">Відокремлення</string>
|
||||
<string name="settings_vote_format_percentage">Відсотки</string>
|
||||
<string name="settings_font_family_default">Система</string>
|
||||
<string name="post_reply_source_account">від:</string>
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user