diff --git a/README.md b/README.md index d4c28d2..e5b0bb9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Regélő – Android alkalmazás (v1.3.5) +# Regélő – Android alkalmazás (v1.3.6) Magyar írói és olvasói platform (Wattpad / Inkitt jellegű), Kotlin + Jetpack Compose. @@ -23,7 +23,7 @@ Google Playre aláírt Android App Bundle-t (AAB) tölts fel, ne fejlesztői deb 4. Készítsd el az AAB-t, ellenőrizd a Play Console belső tesztcsatornáján, majd csak sikeres ellenőrzés után indítsd a szélesebb körű kiadást. 5. Minden új feltöltés előtt növeld az `app/build.gradle.kts` fájlban a `versionCode` értékét. Jelenlegi értéke - `135`; ez azonos vagy kisebb értékkel nem tölthető fel frissítésként. + `136`; ez azonos vagy kisebb értékkel nem tölthető fel frissítésként. ### Parancssoros/CI aláírás Biztonságos build/CI titokként add meg mind a négy környezeti változót: @@ -93,6 +93,8 @@ Hivatalos e-mail: regeloapp@gmail.com · Hivatalos profil az appban: @regelohiva - **1.3.5 – Saját művek a Profilon** – A saját profil új „Műveim” részén külön választhatók a publikált művek, piszkozatok és sorozatok. A saját történetek megnyithatók vagy szerkeszthetők, a sorozatok adatlapja és kezelése közvetlenül elérhető; mások profilján privát írói tartalom nem jelenik meg. +- **1.3.6 – Személyes olvasás a Kezdőlapon** – Az olvasási kihívás és az „Olvasás folytatása” szekció a + Kezdőlap tetejére került, az új és felkapott történetek felfedezése elé. - **v1.4 backend-kiegészítés** – A könyv befejezésének mentése szerveroldali, idempotens művelet, amely a budapesti naptári évet és az adatbázisban szereplő publikált/befejezett állapotot használja. A rate limit párhuzamos kéréseknél is atomikusan érvényesül. A kliens nem ment tokent titkosítatlanul, diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3b8101b..9481f61 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,8 +26,8 @@ android { applicationId = "hu.regelo.app" minSdk = 26 targetSdk = 37 - versionCode = 135 - versionName = "1.3.5" + versionCode = 136 + versionName = "1.3.6" buildConfigField("String", "SUPABASE_URL", "\"https://pqmfezkvaslqedalwwnn.supabase.co\"") // Nyilvános (publishable) kulcs – a sorszintű jogosultságok (RLS) védik az adatokat. diff --git a/app/src/main/java/hu/regelo/app/ui/screens/LibraryScreen.kt b/app/src/main/java/hu/regelo/app/ui/screens/LibraryScreen.kt index 56fd27d..61f6be8 100644 --- a/app/src/main/java/hu/regelo/app/ui/screens/LibraryScreen.kt +++ b/app/src/main/java/hu/regelo/app/ui/screens/LibraryScreen.kt @@ -161,25 +161,10 @@ fun LibraryScreen(nav: Navigator) { if (data == null) { item { hu.regelo.app.ui.components.LoadingBox(Modifier.height(240.dp)) } } else { - if (data.newest.isNotEmpty()) { - item { SectionTitle("Új történetek", action = "Felfedezés", onAction = { nav.select(Tab.DISCOVER) }) } - item { Shelf(data.newest) { nav.push(Route.BookDetail(it)) } } - } - if (data.recentAuthors.isNotEmpty()) { - item { SectionTitle("Friss szerzők", action = "Keresés", onAction = { nav.open(Tab.DISCOVER, Route.Search(people = true)) }) } - items(data.recentAuthors, key = { "home-author-${it.userId}" }) { author -> - hu.regelo.app.ui.components.PersonRow(author, onClick = { nav.push(Route.Profile(author.userId)) }) - } - } - if (data.popular.isNotEmpty()) { - item { SectionTitle("Felkapott történetek", action = "Mind", onAction = { nav.select(Tab.DISCOVER) }) } - item { Shelf(data.popular) { nav.push(Route.BookDetail(it)) } } - } - // Olvasási kihívás (éves cél) + // A személyes olvasási cél és a folytatás legyen az első felfedezési tartalom. data.challenge?.let { ch -> item { Spacer(Modifier.height(4.dp)); hu.regelo.app.ui.components.ReadingChallengeCard(ch, onClick = { challengeDialog = true }) } } - // Olvasás folytatása if (data.continueItems.isNotEmpty()) { item { SectionTitle("Olvasás folytatása") } val first = data.continueItems.first() @@ -206,6 +191,20 @@ fun LibraryScreen(nav: Navigator) { } } } + if (data.newest.isNotEmpty()) { + item { SectionTitle("Új történetek", action = "Felfedezés", onAction = { nav.select(Tab.DISCOVER) }) } + item { Shelf(data.newest) { nav.push(Route.BookDetail(it)) } } + } + if (data.recentAuthors.isNotEmpty()) { + item { SectionTitle("Friss szerzők", action = "Keresés", onAction = { nav.open(Tab.DISCOVER, Route.Search(people = true)) }) } + items(data.recentAuthors, key = { "home-author-${it.userId}" }) { author -> + hu.regelo.app.ui.components.PersonRow(author, onClick = { nav.push(Route.Profile(author.userId)) }) + } + } + if (data.popular.isNotEmpty()) { + item { SectionTitle("Felkapott történetek", action = "Mind", onAction = { nav.select(Tab.DISCOVER) }) } + item { Shelf(data.popular) { nav.push(Route.BookDetail(it)) } } + } // A Regélőtől: hivatalos kiadványok (összecsukható, elrejthető sáv) if (showStrip && data.official.isNotEmpty()) { item(key = "official-strip") {