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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="deploymentTargetDropDown"> + <runningDeviceTargetSelectedWithDropDown> + <Target> + <type value="RUNNING_DEVICE_TARGET" /> + <deviceKey> + <Key> + <type value="VIRTUAL_DEVICE_PATH" /> + <value value="C:\Users\Marat\.android\avd\Pixel_5_API_30.avd" /> + </Key> + </deviceKey> + </Target> + </runningDeviceTargetSelectedWithDropDown> + <timeTargetWasSelectedWithDropDown value="2023-12-05T17:47:31.084874500Z" /> + </component> +</project> \ 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<List<UserBookCrossRef>> - @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