From 93752973fc524336be2e92e86ee25436c05f68a8 Mon Sep 17 00:00:00 2001 From: "m.zargarov" Date: Tue, 5 Dec 2023 23:51:25 +0400 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 17 ++++++ .../shortbooks/book/composeui/BookText.kt | 16 +++--- .../shortbooks/database/AppDatabase.kt | 10 ++-- .../favorite/composeui/FavoriteList.kt | 2 +- .../favorite/composeui/FavoriteText.kt | 54 ------------------- .../shortbooks/favorite/dao/UserBookDao.kt | 6 ++- .../favorite/model/UserBookCrossRef.kt | 1 + .../shortbooks/navigation/MainNavbar.kt | 12 +---- .../example/shortbooks/user/dao/UserDao.kt | 1 - 9 files changed, 39 insertions(+), 80 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteText.kt diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..a4a9f03 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/shortbooks/book/composeui/BookText.kt b/app/src/main/java/com/example/shortbooks/book/composeui/BookText.kt index 79e8044..c2f3d8e 100644 --- a/app/src/main/java/com/example/shortbooks/book/composeui/BookText.kt +++ b/app/src/main/java/com/example/shortbooks/book/composeui/BookText.kt @@ -38,16 +38,16 @@ fun BookText(id: Int) { setBook(AppDatabase.getInstance(context).bookDao().getByUid(id)) } } - val textContent: String = assetManager.open(book?.text ?: "").bufferedReader().use { it.readText() } + val textContent: String = if (book != null) { + assetManager.open(book.text).bufferedReader().use { it.readText() } + } else { + "Текст отсутствует" + } Column( verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.verticalScroll(rememberScrollState()) + horizontalAlignment = Alignment.CenterHorizontally ) { - Button(onClick = { }) { - Text(text = "Добавить в избранное") - } - Text(text = textContent) + Text(text = textContent, modifier = Modifier.verticalScroll(rememberScrollState())) } } @@ -59,7 +59,7 @@ fun BookTextPreview() { Surface( color = MaterialTheme.colorScheme.background ) { - BookText(id = 0) + BookText(id = 1) } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/shortbooks/database/AppDatabase.kt b/app/src/main/java/com/example/shortbooks/database/AppDatabase.kt index c476a8a..f005096 100644 --- a/app/src/main/java/com/example/shortbooks/database/AppDatabase.kt +++ b/app/src/main/java/com/example/shortbooks/database/AppDatabase.kt @@ -29,6 +29,7 @@ abstract class AppDatabase : RoomDatabase() { private suspend fun populateDatabase() { INSTANCE?.let { database -> + // Books val bookDao = database.bookDao() val book1 = Book("Книга 1", "Автор 1", 18, "booktexts/dostoevskiy_besy.txt", "images/dostoevskiy_besy.jpg") @@ -36,11 +37,13 @@ abstract class AppDatabase : RoomDatabase() { val book3 = Book("Книга 3", "Автор 3", 12, "booktexts/dostoevskiy_besy.txt", "images/dostoevskiy_besy.jpg") val book4 = Book("Книга 4", "Автор 4", 12, "booktexts/dostoevskiy_besy.txt", "images/dostoevskiy_besy.jpg") val book5 = Book("Книга 5", "Автор 5", 12, "booktexts/dostoevskiy_besy.txt", "images/dostoevskiy_besy.jpg") + val book6 = Book("Книга 6", "Автор 5", 12, "booktexts/dostoevskiy_besy.txt", "images/dostoevskiy_besy.jpg") bookDao.insert(book1) bookDao.insert(book2) bookDao.insert(book3) bookDao.insert(book4) bookDao.insert(book5) + bookDao.insert(book6) // Users val userDao = database.userDao() @@ -54,8 +57,8 @@ abstract class AppDatabase : RoomDatabase() { val userBook1= UserBookCrossRef(1,2) val userBook2= UserBookCrossRef(1,3) val userBook3= UserBookCrossRef(1,4) - val userBook4= UserBookCrossRef(2,0) - val userBook5= UserBookCrossRef(2,1) + val userBook4= UserBookCrossRef(2,1) + val userBook5= UserBookCrossRef(2,2) val userBook6= UserBookCrossRef(2,4) userBookDao.insert(userBook1) @@ -64,7 +67,6 @@ abstract class AppDatabase : RoomDatabase() { userBookDao.insert(userBook4) userBookDao.insert(userBook5) userBookDao.insert(userBook6) - } } @@ -88,4 +90,4 @@ abstract class AppDatabase : RoomDatabase() { } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteList.kt b/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteList.kt index 8e4ed88..dd42623 100644 --- a/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteList.kt +++ b/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteList.kt @@ -118,7 +118,7 @@ fun BookListPreview() { Surface( color = MaterialTheme.colorScheme.background ) { - FavoriteList(navController = null,uid=0) + FavoriteList(navController = null,uid=1) } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteText.kt b/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteText.kt deleted file mode 100644 index 60fdefc..0000000 --- a/app/src/main/java/com/example/shortbooks/favorite/composeui/FavoriteText.kt +++ /dev/null @@ -1,54 +0,0 @@ -//package com.example.shortbooks.favorite.composeui -// -//import android.content.res.AssetManager -//import android.content.res.Configuration -//import androidx.compose.foundation.layout.Arrangement -//import androidx.compose.foundation.layout.Column -//import androidx.compose.foundation.rememberScrollState -//import androidx.compose.foundation.verticalScroll -//import androidx.compose.material3.Button -//import androidx.compose.material3.ExperimentalMaterial3Api -//import androidx.compose.material3.MaterialTheme -//import androidx.compose.material3.Surface -//import androidx.compose.material3.Text -//import androidx.compose.runtime.Composable -//import androidx.compose.ui.Alignment -//import androidx.compose.ui.Modifier -//import androidx.compose.ui.platform.LocalContext -//import androidx.compose.ui.tooling.preview.Preview -//import com.example.shortbooks.favorite.model.getFavorites -//import com.example.shortbooks.ui.theme.ShortBooksTheme -// -//@OptIn(ExperimentalMaterial3Api::class) -//@Composable -//fun FavoriteText(id: Int) { -// -// val context = LocalContext.current -// val assetManager: AssetManager = context.assets -// -// -// val favorite = getFavorites()[id] -// val textContent: String = assetManager.open(favorite.text).bufferedReader().use { it.readText() } -// Column( -// verticalArrangement = Arrangement.Center, -// horizontalAlignment = Alignment.CenterHorizontally -// ) { -// Button(onClick = { }) { -// Text(text = "Удалить из избранного") -// } -// Text(text = textContent, modifier = Modifier.verticalScroll(rememberScrollState())) -// } -//} -// -//@Preview(name = "Light Mode", showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_NO) -//@Preview(name = "Dark Mode", showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES) -//@Composable -//fun BookTextPreview() { -// ShortBooksTheme { -// Surface( -// color = MaterialTheme.colorScheme.background -// ) { -// FavoriteText(id = 0) -// } -// } -//} \ No newline at end of file diff --git a/app/src/main/java/com/example/shortbooks/favorite/dao/UserBookDao.kt b/app/src/main/java/com/example/shortbooks/favorite/dao/UserBookDao.kt index 664153c..47c3f3c 100644 --- a/app/src/main/java/com/example/shortbooks/favorite/dao/UserBookDao.kt +++ b/app/src/main/java/com/example/shortbooks/favorite/dao/UserBookDao.kt @@ -3,8 +3,10 @@ package com.example.shortbooks.favorite.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert +import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update +import com.example.shortbooks.book.model.Book import kotlinx.coroutines.flow.Flow import com.example.shortbooks.favorite.model.UserBookCrossRef import com.example.shortbooks.favorite.model.UserWithBooks @@ -14,10 +16,10 @@ interface UserBookDao { @Query("select * from user_books") fun getAll(): Flow> - @Query("select * from users where user_uid==:uid") + @Query("select * from users where user_uid=:uid") suspend fun getByUid(uid: Int): UserWithBooks - @Insert + @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insert(userBookCrossRef: UserBookCrossRef) @Update diff --git a/app/src/main/java/com/example/shortbooks/favorite/model/UserBookCrossRef.kt b/app/src/main/java/com/example/shortbooks/favorite/model/UserBookCrossRef.kt index 9756b4f..7241ad3 100644 --- a/app/src/main/java/com/example/shortbooks/favorite/model/UserBookCrossRef.kt +++ b/app/src/main/java/com/example/shortbooks/favorite/model/UserBookCrossRef.kt @@ -1,5 +1,6 @@ package com.example.shortbooks.favorite.model +import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/com/example/shortbooks/navigation/MainNavbar.kt b/app/src/main/java/com/example/shortbooks/navigation/MainNavbar.kt index 8ee35af..3ffa1f0 100644 --- a/app/src/main/java/com/example/shortbooks/navigation/MainNavbar.kt +++ b/app/src/main/java/com/example/shortbooks/navigation/MainNavbar.kt @@ -70,16 +70,8 @@ fun Navhost( modifier.padding(innerPadding) ) { composable(Screen.BookList.route) { BookList(navController) } - composable(Screen.FavoriteList.route, - arguments = listOf(navArgument("id") { type = NavType.IntType })) - { backStackEntry -> - backStackEntry.arguments?.let { FavoriteList(navController,it.getInt("id")) } - } - composable(Screen.UserInfo.route, - arguments = listOf(navArgument("id") { type = NavType.IntType })) - { backStackEntry -> - backStackEntry.arguments?.let { UserInfo(it.getInt("id")) } - } + composable(Screen.FavoriteList.route) { FavoriteList(navController,1) } + composable(Screen.UserInfo.route){ UserInfo(1)} composable( Screen.BookText.route, arguments = listOf(navArgument("id") { type = NavType.IntType }) diff --git a/app/src/main/java/com/example/shortbooks/user/dao/UserDao.kt b/app/src/main/java/com/example/shortbooks/user/dao/UserDao.kt index d533e02..1e82c67 100644 --- a/app/src/main/java/com/example/shortbooks/user/dao/UserDao.kt +++ b/app/src/main/java/com/example/shortbooks/user/dao/UserDao.kt @@ -20,7 +20,6 @@ interface UserDao { @Update suspend fun update(user: User) - @Delete suspend fun delete(user: User) } \ No newline at end of file