Skip to content

Commit c3e1e1a

Browse files
authored
Develop (#36)
* fix gradle * refactor main screen vm
1 parent 2749747 commit c3e1e1a

File tree

25 files changed

+432
-198
lines changed

25 files changed

+432
-198
lines changed

.idea/compiler.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
2-
id("com.google.devtools.ksp") version "1.7.0-1.0.6"
3-
id("com.android.library") version "7.2.0" apply false
4-
id("org.jetbrains.kotlin.android") version "1.7.0" apply false
2+
id("com.google.devtools.ksp") version "1.7.20-1.0.8"
3+
id("com.android.library") version "7.3.1" apply false
4+
id("org.jetbrains.kotlin.android") version "1.7.20" apply false
55
id("com.github.ben-manes.versions") version "0.41.0"
66
id("nl.littlerobots.version-catalog-update") version "0.5.1"
77
}

core-model/src/main/java/com/stslex/core_model/model/NoteDynamicUI.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.stslex.core_model.model
33
import androidx.compose.runtime.MutableState
44
import androidx.compose.runtime.State
55
import androidx.compose.runtime.mutableStateOf
6+
import androidx.compose.runtime.snapshots.SnapshotStateList
67

78
data class NoteDynamicUI(
89
val id: Int,
@@ -16,4 +17,11 @@ data class NoteDynamicUI(
1617
}
1718

1819
fun isSelect(): State<Boolean> = select
20+
21+
fun selectNotes(notes: SnapshotStateList<NoteDynamicUI>) {
22+
setSelect(!isSelect().value)
23+
if (notes.contains(this)) {
24+
notes.remove(this)
25+
} else notes.add(this)
26+
}
1927
}

feature-auth-code/src/main/java/com/stslex/feature_auth_code/ui/components/CodeInputField.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import androidx.compose.ui.Modifier
1313
import androidx.compose.ui.text.input.KeyboardType
1414
import androidx.compose.ui.unit.dp
1515

16+
@OptIn(ExperimentalMaterial3Api::class)
1617
@Composable
1718
fun CodeInputField(
1819
modifier: Modifier = Modifier,

feature-auth-phonenumber/src/main/java/com/stslex/feature_auth_phonenumber/ui/PhoneNumberField.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.ui.Modifier
1414
import androidx.compose.ui.text.input.KeyboardType
1515
import androidx.compose.ui.unit.dp
1616

17+
@OptIn(ExperimentalMaterial3Api::class)
1718
@Composable
1819
fun PhoneNumberField(
1920
modifier: Modifier = Modifier,

feature-main/src/main/java/st/slex/feature_main/ui/MainActivity.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,11 @@ import st.slex.feature_main.ui.components.AppCreator
2323

2424
class MainActivity : ComponentActivity() {
2525

26-
private val firebaseAppInitialisationUtil: FirebaseAppInitialisationUtil by inject()
2726
private val shortcutBuilder: ShortcutBuilder by inject()
2827
private val activityComponent: ActivityComponent by inject()
2928

3029
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class, ExperimentalAnimationApi::class)
3130
override fun onCreate(savedInstanceState: Bundle?) {
32-
firebaseAppInitialisationUtil()
3331
shortcutBuilder()
3432
super.onCreate(savedInstanceState)
3533
WindowCompat.setDecorFitsSystemWindows(window, false)

feature-note-list/src/main/java/com/stslex/feature_note_list/navigation/NoteListGraph.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.windowInsetsPadding
77
import androidx.compose.material.icons.Icons
88
import androidx.compose.material.icons.filled.List
99
import androidx.compose.material.icons.outlined.List
10+
import androidx.compose.material3.ExperimentalMaterial3Api
1011
import androidx.compose.ui.Modifier
1112
import androidx.navigation.NavGraphBuilder
1213
import com.google.accompanist.navigation.animation.composable
@@ -16,7 +17,7 @@ import com.stslex.core_navigation.destinations.NoteListDestination
1617
import com.stslex.feature_note_list.R
1718
import com.stslex.feature_note_list.ui.NotesScreen
1819

19-
@OptIn(ExperimentalAnimationApi::class)
20+
@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterial3Api::class)
2021
fun NavGraphBuilder.noteListGraph(
2122
nestedGraphs: NavGraphBuilder.() -> Unit
2223
) {

feature-note-list/src/main/java/com/stslex/feature_note_list/ui/NotesScreen.kt

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,8 @@ import androidx.compose.foundation.layout.padding
55
import androidx.compose.foundation.lazy.LazyColumn
66
import androidx.compose.foundation.lazy.LazyListState
77
import androidx.compose.foundation.lazy.rememberLazyListState
8-
import androidx.compose.material3.ExperimentalMaterial3Api
9-
import androidx.compose.material3.FabPosition
10-
import androidx.compose.material3.Scaffold
11-
import androidx.compose.material3.Surface
8+
import androidx.compose.material3.*
129
import androidx.compose.material3.TopAppBarDefaults.enterAlwaysScrollBehavior
13-
import androidx.compose.material3.TopAppBarScrollState
14-
import androidx.compose.material3.rememberTopAppBarScrollState
1510
import androidx.compose.runtime.Composable
1611
import androidx.compose.runtime.collectAsState
1712
import androidx.compose.ui.Modifier
@@ -31,51 +26,64 @@ fun NotesScreen(
3126
modifier: Modifier = Modifier,
3227
viewModel: NotesViewModel = getViewModel(),
3328
lazyListState: LazyListState = rememberLazyListState(),
34-
scrollState: TopAppBarScrollState = rememberTopAppBarScrollState()
29+
scrollState: TopAppBarState = rememberTopAppBarState()
3530
) {
31+
viewModel.isCreateButtonVisible.value = true
3632
val pagingItems = viewModel.allNotes.collectAsLazyPagingItems()
37-
val scrollBehavior = enterAlwaysScrollBehavior(scrollState) { pagingItems.itemCount >= 6 }
33+
val scrollBehavior = enterAlwaysScrollBehavior(
34+
state = scrollState,
35+
canScroll = { pagingItems.itemCount >= 6 }
36+
)
3837
//TODO Add Error drawing
3938
val errorState = viewModel.errorState.collectAsState()
4039
Scaffold(
4140
modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
4241
floatingActionButton = {
43-
AnimatedVisibility(visible = viewModel.isCreateButtonVisible.value) {
42+
AnimatedVisibility(
43+
visible = viewModel.isCreateButtonVisible.value
44+
) {
4445
NotesFab(
4546
lazyListState = lazyListState,
46-
viewModel = viewModel
47+
selectedNotes = viewModel.selectedNotes,
48+
onCreateButtonClicked = viewModel::onCreateButtonClicked
4749
)
4850
}
4951
},
5052
topBar = {
5153
NoteMediumTopAppBar(
5254
scrollBehavior = scrollBehavior,
53-
viewModel = viewModel
55+
selectedNotes = viewModel.selectedNotes,
56+
onProfileButtonClicked = viewModel::onProfileButtonClicked
5457
)
5558
},
5659
floatingActionButtonPosition = FabPosition.End
5760
) { paddingValues ->
58-
59-
Surface(
60-
modifier = Modifier.padding(paddingValues)
61+
LazyColumn(
62+
modifier = Modifier.padding(paddingValues),
63+
state = lazyListState
6164
) {
62-
LazyColumn(
63-
state = lazyListState
64-
) {
65-
items(pagingItems, key = { it.id }) { item ->
66-
item?.let {
67-
NotePagingItem(
68-
note = item,
69-
viewModel = viewModel
70-
)
71-
}
65+
items(
66+
items = pagingItems,
67+
key = { it.id }
68+
) { item ->
69+
item?.let {
70+
NotePagingItem(
71+
note = item,
72+
onNoteClick = {
73+
viewModel.onSingleNoteClick(item)
74+
},
75+
onNoteLongClick = {
76+
viewModel.onNotesSelect(item)
77+
}
78+
)
7279
}
7380
}
7481
}
7582
}
7683
}
7784

7885

86+
@OptIn(ExperimentalMaterial3Api::class)
7987
@Preview
8088
@Composable
8189
fun NotesPreview() {

0 commit comments

Comments
 (0)