mirror of
https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy.git
synced 2025-02-08 15:28:42 +01:00
chore(deps): update Compose Multiplatform from 1.6.11 to 1.7.0 (#42)
* update README * update compose multiplatform from 1.6.11 to 1.7.0 * fix breaking changes * migrate to Material3 PullToRefreshBox * remove unwanted background from modal bottom sheet items
This commit is contained in:
parent
75c9e62909
commit
543bafd8ba
18
README.md
18
README.md
@ -1,17 +1,17 @@
|
||||
<div align="center">
|
||||
<img src="https://img.shields.io/badge/Kotlin-2.0.21-7F52FF?logo=kotlin" />
|
||||
<img src="https://img.shields.io/badge/Gradle-8.8-02303A?logo=gradle" />
|
||||
<img src="https://img.shields.io/badge/Android-26+-34A853?logo=android" />
|
||||
<img src="https://img.shields.io/badge/Compose-1.6.7-4285F4?logo=jetpackcompose" />
|
||||
<img src="https://img.shields.io/github/license/LiveFastEatTrashRaccoon/RaccoonForLemmy" />
|
||||
<img src="https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy/actions/workflows/build.yml/badge.svg" />
|
||||
<img src="https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy/actions/workflows/unit_tests.yml/badge.svg" />
|
||||
<img alt="badge for Kotlin" src="https://img.shields.io/badge/Kotlin-2.0.21-7F52FF?logo=kotlin" />
|
||||
<img alt="badge for Gradle" src="https://img.shields.io/badge/Gradle-8.8-02303A?logo=gradle" />
|
||||
<img alt="badge for Android" src="https://img.shields.io/badge/Android-26+-34A853?logo=android" />
|
||||
<img alt="badge for Compose Multiplatform" src="https://img.shields.io/badge/Compose-1.7.0-4285F4?logo=jetpackcompose" />
|
||||
<img alt="badge for project license" src="https://img.shields.io/github/license/LiveFastEatTrashRaccoon/RaccoonForLemmy" />
|
||||
<img alt="badge for build status" src="https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy/actions/workflows/build.yml/badge.svg" />
|
||||
<img alt="badge for unit test status" src="https://github.com/LiveFastEatTrashRaccoon/RaccoonForLemmy/actions/workflows/unit_tests.yml/badge.svg" />
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/user-attachments/assets/47265cc3-2bb0-4c9b-8dfa-4923dea22571" width="250" height="auto" />
|
||||
<img alt="application icon" src="https://github.com/user-attachments/assets/47265cc3-2bb0-4c9b-8dfa-4923dea22571" width="250" height="auto" />
|
||||
</div>
|
||||
|
||||
# Raccoon for Lemmy
|
||||
@ -154,7 +154,7 @@ Here are some options to install the application on your device.
|
||||
|
||||
<div align="center">
|
||||
<div style="display: flex; flex-flow: row wrap; justify-content: center; align-items: center;">
|
||||
<a href="https://github.com/ImranR98/Obtainium/releases"><img width="200" src="https://github.com/user-attachments/assets/377575fe-a651-4420-afad-8dee21618c44" /></a>
|
||||
<a href="https://github.com/ImranR98/Obtainium/releases"><img alt="Get it on Obtainium banner" width="200" src="https://github.com/user-attachments/assets/377575fe-a651-4420-afad-8dee21618c44" /></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.livefast.eattrash.raccoonforlemmy.core.commonui.components
|
||||
|
||||
import androidx.compose.animation.core.exponentialDecay
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.background
|
||||
@ -58,7 +59,8 @@ fun DraggableSideMenu(
|
||||
},
|
||||
positionalThreshold = { distance: Float -> distance * 0.5f },
|
||||
velocityThreshold = { with(density) { 100.dp.toPx() } },
|
||||
animationSpec = tween(),
|
||||
snapAnimationSpec = tween(),
|
||||
decayAnimationSpec = exponentialDecay(),
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
@ -17,13 +16,13 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.SheetState
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import com.livefast.eattrash.raccoonforlemmy.core.appearance.theme.CornerSize
|
||||
@ -55,7 +54,6 @@ fun CustomModalBottomSheet(
|
||||
|
||||
ModalBottomSheet(
|
||||
sheetState = sheetState,
|
||||
windowInsets = WindowInsets(0, 0, 0, 0),
|
||||
onDismissRequest = {
|
||||
onSelected?.invoke(null)
|
||||
},
|
||||
@ -73,20 +71,19 @@ fun CustomModalBottomSheet(
|
||||
Spacer(modifier = Modifier.height(Spacing.xs))
|
||||
LazyColumn {
|
||||
itemsIndexed(items = items) { idx, item ->
|
||||
Surface(
|
||||
shape = RoundedCornerShape(CornerSize.xl),
|
||||
) {
|
||||
Row(
|
||||
modifier =
|
||||
Modifier
|
||||
.fillMaxWidth()
|
||||
.combinedClickable(
|
||||
onClick = {
|
||||
sheetScope.launch {
|
||||
.clip(shape = RoundedCornerShape(CornerSize.xl))
|
||||
.combinedClickable(
|
||||
onClick = {
|
||||
sheetScope
|
||||
.launch {
|
||||
sheetState.hide()
|
||||
}.invokeOnCompletion {
|
||||
onSelected?.invoke(idx)
|
||||
}
|
||||
}.invokeOnCompletion {
|
||||
onSelected?.invoke(idx)
|
||||
}
|
||||
},
|
||||
onLongClick =
|
||||
if (onLongPress != null) {
|
||||
@ -133,7 +130,6 @@ fun CustomModalBottomSheet(
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ androidx-work = "2.9.1"
|
||||
android-gradle = "8.5.2"
|
||||
coil = "2.7.0"
|
||||
colorpicker = "1.1.2"
|
||||
compose = "1.6.11"
|
||||
compose = "1.7.0"
|
||||
detekt = "1.23.6"
|
||||
kamel = "1.0.1"
|
||||
koin = "4.0.0"
|
||||
|
@ -2,7 +2,6 @@ package com.livefast.eattrash.raccoonforlemmy.unit.acknowledgements
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
@ -10,12 +9,8 @@ import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
@ -24,12 +19,12 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.platform.LocalUriHandler
|
||||
@ -44,7 +39,7 @@ import com.livefast.eattrash.raccoonforlemmy.unit.acknowledgements.components.Ac
|
||||
import com.livefast.eattrash.raccoonforlemmy.unit.acknowledgements.components.AcknoledgementItemPlaceholder
|
||||
|
||||
class AcknowledgementsScreen : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<AcknowledgementsMviModel>()
|
||||
@ -86,21 +81,17 @@ class AcknowledgementsScreen : Screen {
|
||||
)
|
||||
},
|
||||
) { padding ->
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(AcknowledgementsMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(
|
||||
top = padding.calculateTopPadding(),
|
||||
).nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
.fillMaxSize()
|
||||
.pullRefresh(pullRefreshState),
|
||||
.fillMaxSize(),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(AcknowledgementsMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier =
|
||||
@ -144,14 +135,6 @@ class AcknowledgementsScreen : Screen {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.statusBars
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.automirrored.filled.Reply
|
||||
@ -38,9 +37,6 @@ import androidx.compose.material.icons.filled.SyncDisabled
|
||||
import androidx.compose.material.icons.outlined.AddCircleOutline
|
||||
import androidx.compose.material.icons.outlined.CheckCircle
|
||||
import androidx.compose.material.icons.outlined.Pending
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
@ -57,6 +53,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -148,7 +145,7 @@ class CommunityDetailScreen(
|
||||
override val key: ScreenKey
|
||||
get() = super.key + communityId.toString()
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model =
|
||||
@ -760,14 +757,7 @@ class CommunityDetailScreen(
|
||||
)
|
||||
}
|
||||
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(CommunityDetailMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
@ -778,8 +768,11 @@ class CommunityDetailScreen(
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(fabNestedScrollConnection)
|
||||
.nestedScroll(keyboardScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
.nestedScroll(keyboardScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(CommunityDetailMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -1425,14 +1418,6 @@ class CommunityDetailScreen(
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
|
||||
if (uiState.asyncInProgress) {
|
||||
ProgressHud()
|
||||
}
|
||||
|
@ -14,12 +14,8 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
@ -32,6 +28,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
@ -61,7 +58,7 @@ import com.livefast.eattrash.raccoonforlemmy.unit.drafts.components.DraftCard
|
||||
import com.livefast.eattrash.raccoonforlemmy.unit.drafts.components.DraftCardPlaceHolder
|
||||
|
||||
class DraftsScreen : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<DraftsMviModel>()
|
||||
@ -71,13 +68,6 @@ class DraftsScreen : Screen {
|
||||
val settingsRepository = remember { getSettingsRepository() }
|
||||
val settings by settingsRepository.currentSettings.collectAsState()
|
||||
val lazyListState = rememberLazyListState()
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(DraftsMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
val detailOpener = remember { getDetailOpener() }
|
||||
var itemToDelete by remember { mutableStateOf<DraftModel?>(null) }
|
||||
|
||||
@ -147,7 +137,7 @@ class DraftsScreen : Screen {
|
||||
},
|
||||
)
|
||||
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.then(
|
||||
@ -156,7 +146,11 @@ class DraftsScreen : Screen {
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).pullRefresh(pullRefreshState),
|
||||
),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(DraftsMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier =
|
||||
@ -317,13 +311,6 @@ class DraftsScreen : Screen {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +1,19 @@
|
||||
package com.livefast.eattrash.raccoonforlemmy.unit.drawer
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Settings
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.ModalDrawerSheet
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -25,7 +22,6 @@ import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.scale
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
@ -67,7 +63,7 @@ object ModalDrawerContent : Tab {
|
||||
return TabOptions(0u, "")
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<ModalDrawerMviModel>()
|
||||
@ -136,19 +132,15 @@ object ModalDrawerContent : Tab {
|
||||
)
|
||||
|
||||
if (uiState.user != null) {
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ModalDrawerMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.weight(1f)
|
||||
.nestedScroll(keyboardScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
.nestedScroll(keyboardScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ModalDrawerMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize().padding(horizontal = Spacing.xxs),
|
||||
@ -296,13 +288,6 @@ object ModalDrawerContent : Tab {
|
||||
)
|
||||
}
|
||||
}
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
Text(
|
||||
|
@ -13,15 +13,11 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.Reply
|
||||
import androidx.compose.material.icons.filled.ArrowCircleDown
|
||||
import androidx.compose.material.icons.filled.ArrowCircleUp
|
||||
import androidx.compose.material.icons.filled.Bookmark
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
@ -33,6 +29,7 @@ import androidx.compose.material3.SnackbarHost
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -91,7 +88,7 @@ import org.koin.core.parameter.parametersOf
|
||||
class ExploreScreen(
|
||||
private val otherInstance: String = "",
|
||||
) : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model =
|
||||
@ -260,12 +257,7 @@ class ExploreScreen(
|
||||
},
|
||||
)
|
||||
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
uiState.refreshing,
|
||||
{ model.reduce(ExploreMviModel.Intent.Refresh) },
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(top = Spacing.xs)
|
||||
@ -281,8 +273,9 @@ class ExploreScreen(
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(keyboardScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
).nestedScroll(keyboardScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = { model.reduce(ExploreMviModel.Intent.Refresh) },
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -761,14 +754,6 @@ class ExploreScreen(
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.automirrored.filled.Reply
|
||||
@ -27,9 +26,6 @@ import androidx.compose.material.icons.filled.ArrowCircleUp
|
||||
import androidx.compose.material.icons.filled.Bookmark
|
||||
import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.icons.filled.Menu
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
@ -43,6 +39,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -106,7 +103,7 @@ import kotlin.math.roundToInt
|
||||
class FilteredContentsScreen(
|
||||
private val type: Int,
|
||||
) : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<FilteredContentsMviModel>(parameters = { parametersOf(type) })
|
||||
@ -120,13 +117,6 @@ class FilteredContentsScreen(
|
||||
val settingsRepository = remember { getSettingsRepository() }
|
||||
val settings by settingsRepository.currentSettings.collectAsState()
|
||||
val lazyListState = rememberLazyListState()
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(FilteredContentsMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
val detailOpener = remember { getDetailOpener() }
|
||||
var rawContent by remember { mutableStateOf<Any?>(null) }
|
||||
val themeRepository = remember { getThemeRepository() }
|
||||
@ -306,7 +296,7 @@ class FilteredContentsScreen(
|
||||
}
|
||||
},
|
||||
) { padding ->
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(
|
||||
@ -324,8 +314,11 @@ class FilteredContentsScreen(
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(fabNestedScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
).nestedScroll(fabNestedScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(FilteredContentsMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -997,14 +990,6 @@ class FilteredContentsScreen(
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
|
||||
if (rawContent != null) {
|
||||
|
@ -2,7 +2,6 @@ package com.livefast.eattrash.raccoonforlemmy.unit.instanceinfo
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
@ -11,12 +10,8 @@ import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
@ -25,6 +20,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -56,10 +52,7 @@ import org.koin.core.parameter.parametersOf
|
||||
class InstanceInfoScreen(
|
||||
private val url: String,
|
||||
) : Screen {
|
||||
@OptIn(
|
||||
ExperimentalMaterial3Api::class,
|
||||
ExperimentalMaterialApi::class,
|
||||
)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val instanceName = url.replace("https://", "")
|
||||
@ -154,14 +147,7 @@ class InstanceInfoScreen(
|
||||
)
|
||||
},
|
||||
) { padding ->
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InstanceInfoMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.then(
|
||||
@ -172,7 +158,11 @@ class InstanceInfoScreen(
|
||||
},
|
||||
).padding(
|
||||
top = padding.calculateTopPadding(),
|
||||
).pullRefresh(pullRefreshState),
|
||||
),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InstanceInfoMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.padding(top = Spacing.xs, start = Spacing.s, end = Spacing.s),
|
||||
@ -240,14 +230,6 @@ class InstanceInfoScreen(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import androidx.compose.animation.slideInVertically
|
||||
import androidx.compose.animation.slideOutVertically
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
@ -14,14 +13,10 @@ import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.filled.AddCircle
|
||||
import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
@ -33,6 +28,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -42,7 +38,6 @@ import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.input.nestedscroll.NestedScrollConnection
|
||||
@ -74,7 +69,7 @@ import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class ManageBanScreen : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<ManageBanMviModel>()
|
||||
@ -221,13 +216,6 @@ class ManageBanScreen : Screen {
|
||||
}
|
||||
},
|
||||
) { padding ->
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ManageBanMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Column(
|
||||
modifier =
|
||||
Modifier
|
||||
@ -278,7 +266,7 @@ class ManageBanScreen : Screen {
|
||||
},
|
||||
)
|
||||
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.then(
|
||||
@ -287,8 +275,11 @@ class ManageBanScreen : Screen {
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(keyboardScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
).nestedScroll(keyboardScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ManageBanMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -566,14 +557,6 @@ class ManageBanScreen : Screen {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,14 +16,10 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.filled.AddCircle
|
||||
import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
@ -38,6 +34,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -79,7 +76,7 @@ import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class ManageSubscriptionsScreen : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<ManageSubscriptionsMviModel>()
|
||||
@ -219,21 +216,17 @@ class ManageSubscriptionsScreen : Screen {
|
||||
},
|
||||
)
|
||||
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ManageSubscriptionsMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
.nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
.nestedScroll(fabNestedScrollConnection)
|
||||
.nestedScroll(keyboardScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
.nestedScroll(keyboardScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ManageSubscriptionsMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -415,16 +408,6 @@ class ManageSubscriptionsScreen : Screen {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!uiState.initial) {
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,12 +11,8 @@ import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
@ -31,6 +27,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -58,7 +55,7 @@ import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
|
||||
class MediaListScreen : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<MediaListMviModel>()
|
||||
@ -122,21 +119,17 @@ class MediaListScreen : Screen {
|
||||
}
|
||||
},
|
||||
) { padding ->
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(MediaListMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(
|
||||
top = padding.calculateTopPadding(),
|
||||
).nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
.fillMaxSize()
|
||||
.pullRefresh(pullRefreshState),
|
||||
.fillMaxSize(),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(MediaListMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -209,14 +202,6 @@ class MediaListScreen : Screen {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,20 +10,18 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.ArrowCircleDown
|
||||
import androidx.compose.material.icons.filled.ArrowCircleUp
|
||||
import androidx.compose.material.icons.filled.MarkChatRead
|
||||
import androidx.compose.material.icons.filled.MarkChatUnread
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -61,7 +59,7 @@ class InboxMentionsScreen : Tab {
|
||||
return TabOptions(1u, "")
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<InboxMentionsMviModel>()
|
||||
@ -104,15 +102,11 @@ class InboxMentionsScreen : Tab {
|
||||
}.launchIn(this)
|
||||
}
|
||||
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InboxMentionsMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
modifier = Modifier.pullRefresh(pullRefreshState),
|
||||
PullToRefreshBox(
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InboxMentionsMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -313,14 +307,6 @@ class InboxMentionsScreen : Tab {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,13 +10,11 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -47,7 +45,7 @@ class InboxMessagesScreen : Tab {
|
||||
return TabOptions(2u, "")
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<InboxMessagesMviModel>()
|
||||
@ -83,15 +81,11 @@ class InboxMessagesScreen : Tab {
|
||||
}.launchIn(this)
|
||||
}
|
||||
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InboxMessagesMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
modifier = Modifier.pullRefresh(pullRefreshState),
|
||||
PullToRefreshBox(
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InboxMessagesMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -157,14 +151,6 @@ class InboxMessagesScreen : Tab {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package com.livefast.eattrash.raccoonforlemmy.unit.modlog
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
@ -12,12 +11,9 @@ import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.IconButton
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.Icon
|
||||
@ -26,6 +22,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -67,7 +64,7 @@ import org.koin.core.parameter.parametersOf
|
||||
class ModlogScreen(
|
||||
private val communityId: Long? = null,
|
||||
) : Screen {
|
||||
@OptIn(ExperimentalMaterialApi::class, ExperimentalMaterial3Api::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<ModlogMviModel> { parametersOf(communityId) }
|
||||
@ -78,13 +75,6 @@ class ModlogScreen(
|
||||
val settingsRepository = remember { getSettingsRepository() }
|
||||
val settings by settingsRepository.currentSettings.collectAsState()
|
||||
val lazyListState = rememberLazyListState()
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ModlogMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
val detailOpener = remember { getDetailOpener() }
|
||||
|
||||
LaunchedEffect(model) {
|
||||
@ -146,7 +136,7 @@ class ModlogScreen(
|
||||
),
|
||||
verticalArrangement = Arrangement.spacedBy(Spacing.s),
|
||||
) {
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.then(
|
||||
@ -155,7 +145,11 @@ class ModlogScreen(
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).pullRefresh(pullRefreshState),
|
||||
),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ModlogMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
|
@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.automirrored.filled.Reply
|
||||
@ -26,9 +25,6 @@ import androidx.compose.material.icons.filled.ArrowCircleUp
|
||||
import androidx.compose.material.icons.filled.Bookmark
|
||||
import androidx.compose.material.icons.filled.ClearAll
|
||||
import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
@ -40,6 +36,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -100,7 +97,7 @@ import kotlin.math.roundToInt
|
||||
class MultiCommunityScreen(
|
||||
private val communityId: Long,
|
||||
) : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<MultiCommunityMviModel>(parameters = { parametersOf(communityId) })
|
||||
@ -265,14 +262,7 @@ class MultiCommunityScreen(
|
||||
}
|
||||
},
|
||||
) { padding ->
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(MultiCommunityMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(
|
||||
@ -283,8 +273,11 @@ class MultiCommunityScreen(
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(fabNestedScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
).nestedScroll(fabNestedScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(MultiCommunityMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -606,14 +599,6 @@ class MultiCommunityScreen(
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,17 +16,14 @@ import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.foundation.text.ClickableText
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -36,6 +33,7 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.LinkAnnotation
|
||||
import androidx.compose.ui.text.SpanStyle
|
||||
import androidx.compose.ui.text.buildAnnotatedString
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@ -75,7 +73,6 @@ import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
|
||||
private object AuthIssueAnnotations {
|
||||
const val ANNOTATION_ACTION = "action"
|
||||
const val ACTION_REFRESH = "refresh"
|
||||
const val ACTION_LOGIN = "login"
|
||||
}
|
||||
@ -86,7 +83,7 @@ object ProfileLoggedScreen : Tab {
|
||||
return TabOptions(0u, "")
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<ProfileLoggedMviModel>()
|
||||
@ -135,15 +132,11 @@ object ProfileLoggedScreen : Tab {
|
||||
verticalArrangement = Arrangement.spacedBy(Spacing.s),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
) {
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
modifier = Modifier.pullRefresh(pullRefreshState),
|
||||
PullToRefreshBox(
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -169,18 +162,28 @@ object ProfileLoggedScreen : Tab {
|
||||
withStyle(SpanStyle(color = MaterialTheme.colorScheme.onBackground)) {
|
||||
append(LocalStrings.current.messageAuthIssueSegue0)
|
||||
append("\n• ")
|
||||
pushStringAnnotation(
|
||||
AuthIssueAnnotations.ANNOTATION_ACTION,
|
||||
AuthIssueAnnotations.ACTION_REFRESH,
|
||||
pushLink(
|
||||
LinkAnnotation.Clickable(
|
||||
tag = AuthIssueAnnotations.ACTION_REFRESH,
|
||||
linkInteractionListener = {
|
||||
model.reduce(ProfileLoggedMviModel.Intent.Refresh)
|
||||
},
|
||||
),
|
||||
)
|
||||
withStyle(linkStyle) {
|
||||
append(LocalStrings.current.messageAuthIssueSegue1)
|
||||
}
|
||||
pop()
|
||||
append("\n• ")
|
||||
pushStringAnnotation(
|
||||
AuthIssueAnnotations.ANNOTATION_ACTION,
|
||||
AuthIssueAnnotations.ACTION_LOGIN,
|
||||
pushLink(
|
||||
LinkAnnotation.Clickable(
|
||||
tag = AuthIssueAnnotations.ACTION_LOGIN,
|
||||
linkInteractionListener = {
|
||||
notificationCenter.send(
|
||||
NotificationCenterEvent.ProfileSideMenuAction.Logout,
|
||||
)
|
||||
},
|
||||
),
|
||||
)
|
||||
withStyle(linkStyle) {
|
||||
append(LocalStrings.current.messageAuthIssueSegue2)
|
||||
@ -205,31 +208,11 @@ object ProfileLoggedScreen : Tab {
|
||||
horizontal = Spacing.m,
|
||||
),
|
||||
) {
|
||||
ClickableText(
|
||||
Text(
|
||||
modifier =
|
||||
Modifier.fillMaxWidth(),
|
||||
text = annotatedString,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
onClick = { offset ->
|
||||
val annotation =
|
||||
annotatedString
|
||||
.getStringAnnotations(
|
||||
tag = AuthIssueAnnotations.ANNOTATION_ACTION,
|
||||
start = offset,
|
||||
end = offset,
|
||||
).firstOrNull()
|
||||
if (annotation != null) {
|
||||
when (annotation.item) {
|
||||
AuthIssueAnnotations.ACTION_REFRESH ->
|
||||
model.reduce(ProfileLoggedMviModel.Intent.Refresh)
|
||||
|
||||
AuthIssueAnnotations.ACTION_LOGIN ->
|
||||
notificationCenter.send(
|
||||
NotificationCenterEvent.ProfileSideMenuAction.Logout,
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -677,14 +660,6 @@ object ProfileLoggedScreen : Tab {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,6 @@ import androidx.compose.foundation.layout.statusBars
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.automirrored.filled.NavigateBefore
|
||||
@ -42,9 +41,6 @@ import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.icons.filled.KeyboardArrowDown
|
||||
import androidx.compose.material.icons.filled.KeyboardArrowUp
|
||||
import androidx.compose.material.icons.filled.MoreVert
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
@ -61,6 +57,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.material3.surfaceColorAtElevation
|
||||
import androidx.compose.runtime.Composable
|
||||
@ -154,11 +151,7 @@ class PostDetailScreen(
|
||||
override val key: ScreenKey
|
||||
get() = super.key + postId.toString()
|
||||
|
||||
@OptIn(
|
||||
ExperimentalMaterial3Api::class,
|
||||
ExperimentalMaterialApi::class,
|
||||
ExperimentalLayoutApi::class,
|
||||
)
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model =
|
||||
@ -784,15 +777,8 @@ class PostDetailScreen(
|
||||
},
|
||||
)
|
||||
}
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(PostDetailMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.then(
|
||||
@ -802,8 +788,11 @@ class PostDetailScreen(
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(fabNestedScrollConnection)
|
||||
.nestedScroll(keyboardScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
.nestedScroll(keyboardScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(PostDetailMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -1796,14 +1785,6 @@ class PostDetailScreen(
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,6 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.Reply
|
||||
import androidx.compose.material.icons.filled.ArrowCircleDown
|
||||
@ -33,9 +32,6 @@ import androidx.compose.material.icons.filled.Edit
|
||||
import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.icons.filled.Sync
|
||||
import androidx.compose.material.icons.filled.SyncDisabled
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.AlertDialog
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
@ -46,6 +42,7 @@ import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -107,7 +104,7 @@ import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class PostListScreen : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<PostListMviModel>()
|
||||
@ -319,14 +316,7 @@ class PostListScreen : Screen {
|
||||
},
|
||||
) { padding ->
|
||||
if (uiState.currentUserId != null) {
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(PostListMviModel.Intent.Refresh())
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(
|
||||
@ -343,8 +333,11 @@ class PostListScreen : Screen {
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).nestedScroll(fabNestedScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
).nestedScroll(fabNestedScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(PostListMviModel.Intent.Refresh())
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -774,14 +767,6 @@ class PostListScreen : Screen {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
} else if (!uiState.initial) {
|
||||
Column(
|
||||
|
@ -10,21 +10,18 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.ArrowCircleDown
|
||||
import androidx.compose.material.icons.filled.ArrowCircleUp
|
||||
import androidx.compose.material.icons.filled.MarkChatRead
|
||||
import androidx.compose.material.icons.filled.MarkChatUnread
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
@ -62,7 +59,7 @@ class InboxRepliesScreen : Tab {
|
||||
return TabOptions(0u, "")
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class, ExperimentalMaterial3Api::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<InboxRepliesMviModel>()
|
||||
@ -105,15 +102,11 @@ class InboxRepliesScreen : Tab {
|
||||
}.launchIn(this)
|
||||
}
|
||||
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InboxRepliesMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
modifier = Modifier.pullRefresh(pullRefreshState),
|
||||
PullToRefreshBox(
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(InboxRepliesMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -312,14 +305,6 @@ class InboxRepliesScreen : Tab {
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,14 +14,10 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.filled.Report
|
||||
import androidx.compose.material.icons.filled.ReportOff
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
@ -32,6 +28,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -76,7 +73,7 @@ import org.koin.core.parameter.parametersOf
|
||||
class ReportListScreen(
|
||||
private val communityId: Long? = null,
|
||||
) : Screen {
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model = getScreenModel<ReportListMviModel> { parametersOf(communityId) }
|
||||
@ -88,13 +85,6 @@ class ReportListScreen(
|
||||
val settingsRepository = remember { getSettingsRepository() }
|
||||
val settings by settingsRepository.currentSettings.collectAsState()
|
||||
val lazyListState = rememberLazyListState()
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ReportListMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
val detailOpener = remember { getDetailOpener() }
|
||||
val defaultResolveColor = MaterialTheme.colorScheme.secondary
|
||||
|
||||
@ -195,7 +185,7 @@ class ReportListScreen(
|
||||
},
|
||||
)
|
||||
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.then(
|
||||
@ -204,7 +194,11 @@ class ReportListScreen(
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
).pullRefresh(pullRefreshState),
|
||||
),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(ReportListMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -464,13 +458,6 @@ class ReportListScreen(
|
||||
if (uiState.asyncInProgress) {
|
||||
ProgressHud()
|
||||
}
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.ExperimentalMaterialApi
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||
import androidx.compose.material.icons.automirrored.filled.Chat
|
||||
@ -28,9 +27,6 @@ import androidx.compose.material.icons.filled.ArrowCircleUp
|
||||
import androidx.compose.material.icons.filled.Bookmark
|
||||
import androidx.compose.material.icons.filled.ExpandLess
|
||||
import androidx.compose.material.icons.filled.MoreVert
|
||||
import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||
import androidx.compose.material.pullrefresh.pullRefresh
|
||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.DropdownMenuItem
|
||||
@ -46,6 +42,7 @@ import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
|
||||
import androidx.compose.material3.rememberTopAppBarState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
@ -129,7 +126,7 @@ class UserDetailScreen(
|
||||
override val key: ScreenKey
|
||||
get() = super.key + userId.toString()
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val model =
|
||||
@ -446,14 +443,7 @@ class UserDetailScreen(
|
||||
}
|
||||
},
|
||||
) { padding ->
|
||||
val pullRefreshState =
|
||||
rememberPullRefreshState(
|
||||
refreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(UserDetailMviModel.Intent.Refresh)
|
||||
},
|
||||
)
|
||||
Box(
|
||||
PullToRefreshBox(
|
||||
modifier =
|
||||
Modifier
|
||||
.padding(
|
||||
@ -465,8 +455,11 @@ class UserDetailScreen(
|
||||
Modifier
|
||||
},
|
||||
).navigationBarsPadding()
|
||||
.nestedScroll(fabNestedScrollConnection)
|
||||
.pullRefresh(pullRefreshState),
|
||||
.nestedScroll(fabNestedScrollConnection),
|
||||
isRefreshing = uiState.refreshing,
|
||||
onRefresh = {
|
||||
model.reduce(UserDetailMviModel.Intent.Refresh)
|
||||
},
|
||||
) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
@ -1145,13 +1138,6 @@ class UserDetailScreen(
|
||||
Spacer(modifier = Modifier.height(Spacing.xxxl))
|
||||
}
|
||||
}
|
||||
PullRefreshIndicator(
|
||||
refreshing = uiState.refreshing,
|
||||
state = pullRefreshState,
|
||||
modifier = Modifier.align(Alignment.TopCenter),
|
||||
backgroundColor = MaterialTheme.colorScheme.background,
|
||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||
)
|
||||
|
||||
if (uiState.asyncInProgress) {
|
||||
ProgressHud()
|
||||
|
Loading…
x
Reference in New Issue
Block a user