mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit.git
synced 2026-02-05 05:45:35 +00:00
Continue implementing copying multireddits.
This commit is contained in:
@ -5,29 +5,31 @@ import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.WindowInsetsSides
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.only
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.safeDrawing
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.windowInsetsPadding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.text.input.rememberTextFieldState
|
||||
import androidx.compose.foundation.text.input.setTextAndPlaceCursorAtEnd
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.OutlinedTextFieldDefaults.contentPadding
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.TopAppBarDefaults.enterAlwaysScrollBehavior
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
@ -60,6 +62,7 @@ import ml.docilealligator.infinityforreddit.customviews.compose.LocalAppTheme
|
||||
import ml.docilealligator.infinityforreddit.customviews.compose.PrimaryIcon
|
||||
import ml.docilealligator.infinityforreddit.customviews.compose.PrimaryText
|
||||
import ml.docilealligator.infinityforreddit.customviews.compose.SwitchRow
|
||||
import ml.docilealligator.infinityforreddit.customviews.compose.ThemedTopAppBar
|
||||
import ml.docilealligator.infinityforreddit.customviews.compose.ToolbarIcon
|
||||
import ml.docilealligator.infinityforreddit.multireddit.ExpandedSubredditInMultiReddit
|
||||
import ml.docilealligator.infinityforreddit.repositories.CopyMultiRedditActivityRepositoryImpl
|
||||
@ -70,10 +73,6 @@ import java.util.concurrent.Executor
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
||||
fun startCopyMultiRedditActivity(context: Context) {
|
||||
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
class CopyMultiRedditActivity : BaseActivity() {
|
||||
@Inject
|
||||
@ -109,6 +108,8 @@ class CopyMultiRedditActivity : BaseActivity() {
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
enableEdgeToEdge()
|
||||
|
||||
val multipath = intent.getStringExtra(EXTRA_MULTIPATH) ?: ""
|
||||
|
||||
copyMultiRedditActivityViewModel = ViewModelProvider.create(
|
||||
@ -119,41 +120,26 @@ class CopyMultiRedditActivity : BaseActivity() {
|
||||
copyMultiRedditActivityViewModel.fetchMultiRedditInfo()
|
||||
|
||||
setContent {
|
||||
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()
|
||||
val multiRedditState by copyMultiRedditActivityViewModel.multiRedditState.collectAsStateWithLifecycle()
|
||||
val name = rememberTextFieldState()
|
||||
val description = rememberTextFieldState()
|
||||
var isPrivate by remember { mutableStateOf(true) }
|
||||
|
||||
LaunchedEffect(multiRedditState) {
|
||||
if (multiRedditState is DataLoadState.Success) {
|
||||
val multiReddit = (multiRedditState as DataLoadState.Success).data
|
||||
name.setTextAndPlaceCursorAtEnd(multiReddit.name)
|
||||
description.setTextAndPlaceCursorAtEnd(multiReddit.description)
|
||||
}
|
||||
}
|
||||
|
||||
AppTheme(customThemeWrapper.themeType) {
|
||||
val scrollBehavior = enterAlwaysScrollBehavior()
|
||||
val multiRedditState by copyMultiRedditActivityViewModel.multiRedditState.collectAsStateWithLifecycle()
|
||||
val name = rememberTextFieldState()
|
||||
val description = rememberTextFieldState()
|
||||
var isPrivate by remember { mutableStateOf(true) }
|
||||
|
||||
LaunchedEffect(multiRedditState) {
|
||||
if (multiRedditState is DataLoadState.Success) {
|
||||
val multiReddit = (multiRedditState as DataLoadState.Success).data
|
||||
name.setTextAndPlaceCursorAtEnd(multiReddit.name)
|
||||
description.setTextAndPlaceCursorAtEnd(multiReddit.description)
|
||||
}
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
colors = TopAppBarDefaults.topAppBarColors(
|
||||
containerColor = Color(LocalAppTheme.current.colorPrimary),
|
||||
scrolledContainerColor = Color(LocalAppTheme.current.colorPrimary),
|
||||
titleContentColor = Color(LocalAppTheme.current.toolbarPrimaryTextAndIconColor),
|
||||
),
|
||||
title = {
|
||||
Text(stringResource(R.string.copy_multireddit_activity_label))
|
||||
},
|
||||
navigationIcon = {
|
||||
IconButton(onClick = {
|
||||
finish()
|
||||
}) {
|
||||
ToolbarIcon(
|
||||
contentDescription = stringResource(R.string.action_back_content_description)
|
||||
)
|
||||
}
|
||||
},
|
||||
ThemedTopAppBar(
|
||||
titleStringResId = R.string.copy_multireddit_activity_label,
|
||||
scrollBehavior = scrollBehavior,
|
||||
actions = {
|
||||
IconButton(onClick = {
|
||||
|
||||
@ -163,13 +149,16 @@ class CopyMultiRedditActivity : BaseActivity() {
|
||||
contentDescription = stringResource(R.string.action_copy_multi_reddit)
|
||||
)
|
||||
}
|
||||
},
|
||||
scrollBehavior = scrollBehavior
|
||||
)
|
||||
}
|
||||
) {
|
||||
finish()
|
||||
}
|
||||
},
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.nestedScroll(scrollBehavior.nestedScrollConnection)
|
||||
.windowInsetsPadding(WindowInsets.safeDrawing.only(
|
||||
WindowInsetsSides.Horizontal))
|
||||
) { innerPadding ->
|
||||
when(multiRedditState) {
|
||||
is DataLoadState.Loading -> {
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
package ml.docilealligator.infinityforreddit.customviews.compose
|
||||
|
||||
import androidx.compose.foundation.layout.RowScope
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.material3.TopAppBarScrollBehavior
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.lerp
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import ml.docilealligator.infinityforreddit.R
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun ThemedTopAppBar(
|
||||
titleStringResId: Int,
|
||||
scrollBehavior: TopAppBarScrollBehavior,
|
||||
actions: @Composable RowScope.() -> Unit = {},
|
||||
onBack: () -> Unit
|
||||
) {
|
||||
val appBarColor = lerp(
|
||||
start = Color(LocalAppTheme.current.colorPrimary),
|
||||
stop = Color.Transparent,
|
||||
fraction = scrollBehavior.state.collapsedFraction
|
||||
)
|
||||
|
||||
TopAppBar(
|
||||
colors = TopAppBarDefaults.topAppBarColors(
|
||||
containerColor = appBarColor,
|
||||
scrolledContainerColor = appBarColor,
|
||||
titleContentColor = Color(LocalAppTheme.current.toolbarPrimaryTextAndIconColor),
|
||||
),
|
||||
title = {
|
||||
Text(stringResource(titleStringResId))
|
||||
},
|
||||
navigationIcon = {
|
||||
IconButton(onClick = onBack) {
|
||||
ToolbarIcon(
|
||||
contentDescription = stringResource(R.string.action_back_content_description)
|
||||
)
|
||||
}
|
||||
},
|
||||
actions = actions,
|
||||
scrollBehavior = scrollBehavior
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user