Skip to content

Commit ce97396

Browse files
committed
Update SettingsScreen UI
Add Export and Import notes functional
1 parent 3050c4d commit ce97396

File tree

15 files changed

+345
-167
lines changed

15 files changed

+345
-167
lines changed

.idea/gradle.xml

Lines changed: 0 additions & 21 deletions
This file was deleted.

app/build.gradle.kts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
applicationId = "com.vladshurakov.jetnotesapp"
1414
minSdk = 26
1515
targetSdk = 34
16-
versionCode = 5
17-
versionName = "1.1.2"
16+
versionCode = 6
17+
versionName = "1.2.0"
1818
resourceConfigurations += listOf("en")
1919

2020
vectorDrawables {
@@ -71,6 +71,9 @@ dependencies {
7171
// Pretty Time
7272
implementation ("org.ocpsoft.prettytime:prettytime:5.0.4.Final")
7373

74+
// Gson
75+
implementation("com.google.code.gson:gson:2.10.1")
76+
7477
implementation("androidx.core:core-ktx:1.12.0")
7578
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
7679
implementation("androidx.activity:activity-compose:1.8.1")

app/src/main/java/com/vladshurakov/jetnotesapp/MainActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import androidx.navigation.compose.composable
1818
import androidx.navigation.compose.rememberNavController
1919
import androidx.navigation.navArgument
2020
import com.google.accompanist.systemuicontroller.rememberSystemUiController
21-
import com.vladshurakov.jetnotesapp.feature_notes.presenter.screen.EditScreen
2221
import com.vladshurakov.jetnotesapp.feature_notes.presenter.screen.ArchivedScreen
2322
import com.vladshurakov.jetnotesapp.feature_notes.presenter.screen.DeletedScreen
23+
import com.vladshurakov.jetnotesapp.feature_notes.presenter.screen.EditScreen
2424
import com.vladshurakov.jetnotesapp.feature_notes.presenter.screen.NotesScreen
2525
import com.vladshurakov.jetnotesapp.feature_settings.presenter.screen.SettingsScreen
2626
import com.vladshurakov.jetnotesapp.feature_settings.presenter.viewmodel.SettingsEvent
@@ -92,7 +92,7 @@ class MainActivity : ComponentActivity() {
9292
composable(route = Screen.Settings.route) {
9393
SettingsScreen(
9494
navController = navController,
95-
settingsBundle = settingsBundle,
95+
settingsViewModel = settingsViewModel,
9696
onSettingsChanged = { newSettingsBundle ->
9797
settingsBundle = newSettingsBundle
9898
settingsViewModel.onEvent(SettingsEvent.SaveSettings(settingsBundle))

app/src/main/java/com/vladshurakov/jetnotesapp/di/AppModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import com.vladshurakov.jetnotesapp.feature_notes.data.data_source.NoteDatabase
66
import com.vladshurakov.jetnotesapp.feature_notes.data.repository.NotesRepositoryImpl
77
import com.vladshurakov.jetnotesapp.feature_notes.domain.repository.NotesRepository
88
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.DeleteNote
9+
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.GetAllNotes
910
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.GetNote
1011
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.GetNotes
12+
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.InsertNotes
1113
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.InsertNote
1214
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.MoveNoteToFolder
1315
import com.vladshurakov.jetnotesapp.feature_notes.domain.usecase.NotesUseCases
@@ -50,6 +52,8 @@ object AppModule {
5052
fun provideNotesUseCases(notesRepository: NotesRepository): NotesUseCases {
5153
return NotesUseCases(
5254
insertNote = InsertNote(notesRepository),
55+
insertNotes = InsertNotes(notesRepository),
56+
getAllNotes = GetAllNotes(notesRepository),
5357
getNote = GetNote(notesRepository),
5458
deleteNote = DeleteNote(notesRepository),
5559
moveTo = MoveNoteToFolder(notesRepository),

app/src/main/java/com/vladshurakov/jetnotesapp/feature_notes/data/data_source/NoteDao.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ interface NoteDao {
1414
@Insert(onConflict = OnConflictStrategy.REPLACE)
1515
suspend fun insert(noteEntity: NoteEntity): Long
1616

17+
@Insert(onConflict = OnConflictStrategy.IGNORE)
18+
suspend fun insert(noteEntities: List<NoteEntity>): List<Long>
19+
20+
@Query("SELECT * FROM note")
21+
fun getAll(): List<NoteEntity>
22+
1723
@Query("SELECT * FROM note WHERE id = :id")
1824
suspend fun get(id: Long): NoteEntity?
1925

app/src/main/java/com/vladshurakov/jetnotesapp/feature_notes/data/repository/NotesRepositoryImpl.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,17 @@ import kotlinx.coroutines.flow.map
1111

1212
class NotesRepositoryImpl(private val noteDao: NoteDao) : NotesRepository {
1313
override suspend fun insert(note: Note): Long {
14-
1514
return noteDao.insert(note.toNoteEntity())
1615
}
1716

17+
override suspend fun insert(notes: List<Note>): List<Long> {
18+
return noteDao.insert(notes.map { it.toNoteEntity() })
19+
}
20+
21+
override fun getAll(): List<Note> {
22+
return noteDao.getAll().map { it.toNote() }
23+
}
24+
1825
override suspend fun get(id: Long): Note? {
1926
return noteDao.get(id)?.toNote()
2027
}

app/src/main/java/com/vladshurakov/jetnotesapp/feature_notes/domain/repository/NotesRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import kotlinx.coroutines.flow.Flow
66

77
interface NotesRepository {
88
suspend fun insert(note: Note): Long?
9+
suspend fun insert(notes: List<Note>): List<Long?>
10+
fun getAll(): List<Note>
911
suspend fun get(id: Long): Note?
1012
suspend fun delete(note: Note)
1113
suspend fun moveTo(id: Long, folder: Folder)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.vladshurakov.jetnotesapp.feature_notes.domain.usecase
2+
3+
import com.vladshurakov.jetnotesapp.feature_notes.domain.models.Note
4+
import com.vladshurakov.jetnotesapp.feature_notes.domain.repository.NotesRepository
5+
6+
class GetAllNotes(private val repository: NotesRepository) {
7+
operator fun invoke(): List<Note> {
8+
return repository.getAll()
9+
}
10+
}

app/src/main/java/com/vladshurakov/jetnotesapp/feature_notes/domain/usecase/InsertNote.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class InsertNote(private val repository: NotesRepository){
77

88
suspend operator fun invoke(note: Note): Long?{
99
if (note.title.isBlank() && (note.content.isBlank() || note.content.startsWith(' '))){
10-
return null
10+
return -1
1111
}
1212
if (note.title.isBlank() && note.content.isNotBlank()){
1313
note.title = "Title"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.vladshurakov.jetnotesapp.feature_notes.domain.usecase
2+
3+
import com.vladshurakov.jetnotesapp.feature_notes.domain.models.Note
4+
import com.vladshurakov.jetnotesapp.feature_notes.domain.repository.NotesRepository
5+
6+
class InsertNotes(private val repository: NotesRepository) {
7+
suspend operator fun invoke(notes: List<Note>): List<Long?> {
8+
return repository.insert(notes)
9+
}
10+
}

0 commit comments

Comments
 (0)