Skip to content

Commit

Permalink
Merge branch 'Acclorite:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
irbox authored Dec 29, 2024
2 parents dc7e159 + 6bcfe72 commit b6b4194
Show file tree
Hide file tree
Showing 95 changed files with 1,415 additions and 783 deletions.
106 changes: 51 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
<!------------ Header ------------>

<div align="center">

<img src="https://github.com/Acclorite/book-story/blob/master/assets/readme/app_icon.png" width="120" />
<img src="https://github.com/Acclorite/book-story/blob/master/fastlane/metadata/android/en-US/images/icon_2.png" width="120" />
<h1>Book's Story</h1>
<h3>Material You eBook Reader for Android</h3>
<p>Dive into the world of adventure as you discover your favorite book's story!</p>
</div>

# <p align="center">Book's Story</p>
### <p align="center">Material3 Book Reader for Android</p>
<p align="center">Dive into the world of adventure as you discover your favorite book's story!</p>
---

<!------------ Badges ------------>

<div align="center">


<a href="">[![Latest Stable Release](https://img.shields.io/github/release/Acclorite/book-story.svg?labelColor=27303D&color=3f719b&label=Release&logo=GitHub)](https://github.com/Acclorite/book-story/releases)</a>
<a href="">[![F-Droid Release](https://img.shields.io/f-droid/v/ua.acclorite.book_story?labelColor=27303D&color=3f9b5a&label=F-Droid&logo=f-droid)](https://f-droid.org/packages/ua.acclorite.book_story/)</a>
<a href="">[![IzzyOnDroid Release](https://img.shields.io/endpoint?url=https://apt.izzysoft.de/fdroid/api/v1/shield/ua.acclorite.book_story&labelColor=27303D&color=3f9b84&label=IzzyOnDroid&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAADAFBMVEUA0////wAA0v8A0v8A0////wD//wAFz/QA0/8A0/8A0/8A0/8A0v///wAA0/8A0/8A0/8A0/8A0//8/gEA0/8A0/8B0/4A0/8A0/8A0/+j5QGAwwIA0//C9yEA0/8A0/8A0/8A0/8A0/8A0/+n4SAA0/8A0/8A0/+o6gCw3lKt7QCv5SC+422b3wC19AC36zAA0/+d1yMA0/8A0/+W2gEA0/+w8ACz8gCKzgG7+QC+9CFLfwkA0/8A0////wAA0/8A0/8A0/8A0/+f2xym3iuHxCGq5BoA1P+m2joI0vONyiCz3mLO7oYA0/8M1Piq3Ei78CbB8EPe8LLj9Ly751G77zWQ1AC96UYC0fi37CL//wAA0/8A0////wD//wCp3jcA0/+j3SGj2i/I72Sx4zHE8FLB8zak1kYeycDI6nRl3qEA0/7V7psA0v6WzTa95mGi2RvB5XkPy9zH5YJ3uwGV1yxVihRLiwdxtQ1ZkAf//wD//wD//wD//wD//wCn5gf//wD//wD//wD//wD//wAA0/+h4A3R6p8A0/+X1w565OD6/ARg237n9csz2vPz+gNt37V/vifO8HW68B/L6ZOCwxXY8KRQsWRzhExAtG/E612a1Rd/pTBpmR9qjysduKVhmxF9mTY51aUozK+CsDSA52T//wD//wAA0////wD//wBJ1JRRxFWjzlxDyXRc0pGT1wCG0CWB3VGUzSTh8h6c0TSr5CCJ5FFxvl6s4H3m8xML0/DA5CvK51EX1N+Y2gSt4Dag3ChE3fax2ki68yO57NF10FRZnUPl88eJxhuCxgCz5EOLwEGf1DFutmahzGW98x0W1PGk3R154MHE6bOn69qv3gy92oG90o+Hn07B7rhCmiyMwECv1nO+0pQfwrCo57xF2daXsVhKrEdenQAduaee1Bsjr42z5D9RoCXy+QNovXpy2Z5MtWDO/TiSukaF3UtE1K6j3B4YwLc5wXlzpyIK0u5zy3uJqg4pu5RTpkZmpVKyAP8A0wBHcExHcEyBUSeEAAABAHRSTlP///9F9wjAAxD7FCEGzBjd08QyEL39abMd6///8P/ZWAnipIv/cC6B//7////////L/1Dz/0D///////86/vYnquY3/v///5T//v///17///////////////84S3QNB/8L/////////////7r/////NP////9l/////wPD4yis/x7Ym2lWSP+em////0n////////v///////////////////7//7pdGN3Urr6/+v/6aT////+//H/o2P/1v+7r7jp4PM/3p4g////g///K///481LxO///v////9w////8v/////9/p3J///a+P9v/5KR/+n///+p/xf//8P//wAAe7FyaAAABCZJREFUSMdj+E8iYKBUgwIHnwQ3N7cEHxcH+///VayoAE0Dh41qR7aBnCIQ8MsJKHH9/99czYYMWlA0cIkJGjMgAKfq//9RNYzIgLcBWYOTiCgDMhDn+B9bh6LebiWyH6L5UZQzONoAHWSHoqEpDkkDsyKqelv1//9rG1HUN9YihZK9AKp6BkG+/6xNqA5ajhSsCkrIipmYGGRa//9vQXVQXSySBnkWJOUMfn5Myuz/G3hR1NdEIUUchwiy+bkTsg4dbW/fu6W/e1c3XMMy5JiOZkFxUFZo74mgKTqaKXu0+2HqVwkja3BH9kFu361JwcHTfPJD4mdfe8ULAdVRyGlJAcVFfg+CQOozZ4XrJ85+JgwBsVXIGriQw5Tp4ZScezd8JiWnBupru30qwJZa+ZAjmWlC8fUZM4qB6kPnLNSPLMWqQQ5ZQ5aOzs1HmamBaQHzFs6y+qAmJCTE8f9/QgKSBg4DJPWc6zVDQkIC09JkZSPD38kukpExFpT4z67uYI/QwCOOCCK/izvu5CWl6AcEWMnKWml7LWbKZfH9/99UkknQHhGsynDz+65eWXv3/JmJrq5eXienVlRUfH/z8VvCf45soKQIH1yDEQsszrp6gwq9C73T87xcXadKl5TkFev4A/2tygmSBqYXqAYJmK+ZuoJydDR1vP09DA0NOy2kpdML81+U/heCpH1JU3jig7lJ5nKOT4i/t6ZHkqGzs4lJmIVHfrj+JR4HqLQSD0yDkCNEpGNn5ix9D03/eJdElTZdKV2TpNOhkwt8YUlNUgimgV0dLMBvf1gz1MolPd5FRcVNSkpDQ8owJeBCDyIhrIDnOD5QcuIU+3/2QKSs9laQ+noNLS0zLWdtqyP7mBAFAw88TwsJgMuJYweBGjYngtWbmeuZOW+bvNQToUFOAlFqOBk4Ov3/L7Z60/aN0p1tUhpa5nqWlub7C3p2I9QzyAghlUvczOz/1fhzPT3XSIfpSmmYAdVbmm1gV0dSz8DSilpUQsqCddIWIA3meuZaJqdMJZEzl6gRqgZIWZAxUdoizERXN8yi5MltcZTChzMaRQM3JNUWHS8rL/+yaPGvMmvr5ywoGoxtkDWwQ+Pb89ycBeWfGSJeL/la+RS1eOPnRtbQKgMRjZg+t8x6PkP273nWQAoFOPAgaeAThKXAmXMrK39Kmr5fsuBlBqoXfJGLe3VbmHjG9Mczi9T//3h7vygXtcDlQtJg44iQiIjIBRbGPO7gghPJy0ZIxT2HOLIUgwxQzsgYrUR350HSIMaJLidhgKY+mw+pflBDrX8E7OGBjPCAPc76gQFSTqAIiYrb/8dRP4CyosJ/rmwU5XIxHMilt4QBJwsSkBMClxOQULBlkRRwEONmR2kJcDGjADX2/+xO8r5iqjExqmLyrWpcPFRta1BfAwCtyN3XpuJ4RgAAAABJRU5ErkJggg==
Expand All @@ -32,8 +31,11 @@

# <p align="center">Overview</p>

<img src="https://github.com/Acclorite/book-story/blob/master/assets/readme/github_overview.png">
Built using Jetpack Compose and Kotlin.
<img src="https://github.com/Acclorite/book-story/blob/master/fastlane/metadata/android/en-US/images/featureGraphic.png">

Enjoy a sleek, customizable **reading app** with modern design, built with Jetpack Compose. It’s open-source, offering you a personalized, ad-free journey through your favorite books!

---

<!------------ Screenshots ------------>

Expand All @@ -42,16 +44,24 @@ Built using Jetpack Compose and Kotlin.
<div>
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" width="30%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png" width="30%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/9.png" width="30%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png" width="30%" />
<hr width=91%>
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png" width="30%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png" width="30%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png" width="30%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png" width="45%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" width="45%" />
<img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" width="30%" />
</div>
</br>

_You can find more screenshots in [assets](https://github.com/Acclorite/book-story/tree/master/assets) folder._
---

<!------------ Features ------------>

## ✨ Features
- 8 supported file formats(.pdf, .txt, .epub, .fb2, .zip, .html, .htm, .md)
- Material You design with unique themes and color presets
- Organized Library with categories and chapters in Reader
- Highly customizable

---

<!------------ Download guide ------------>

Expand All @@ -65,63 +75,47 @@ _You can find more screenshots in [assets](https://github.com/Acclorite/book-sto
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="80">](https://apt.izzysoft.de/fdroid/index/apk/ua.acclorite.book_story)
</div>

_Don't see your favorite app store? Create an [Issue](https://github.com/Acclorite/book-story/issues)! (Except Play Store, this app won't be there)_
_Don't see your favorite app store? Create an [Issue](https://github.com/Acclorite/book-story/issues)!_

---

### 📲 How to download and install
- _**Install from Github**_: Click on the "Get it on GitHub" badge above, scroll down and download **book-story.apk** or download the last apk from GitHub [here](https://github.com/Acclorite/book-story/releases/latest/download/book-story.apk). After that, find downloaded APK and install it.
- _**Install from F-Droid**_: Click on the "Get it on F-Droid" badge above, scroll down and click "Download APK" under desired Release Version to download the APK file. After that, find downloaded APK and install it.
- _**Install from IzzyOnDroid**_: Click on the "Get it on IzzyOnDroid" badge above, scroll down and click "Download" to download the last APK from IzzyOnDroid. After that, find downloaded APK and install it.
- If you don't know how to install APK file, follow [this guide](https://www.lifewire.com/install-apk-on-android-4177185).
- _**Installing from Github**_: Click the "Get it on GitHub" badge above, scroll down, and download **book-story.apk**, or grab the latest APK directly [here](https://github.com/Acclorite/book-story/releases/latest/download/book-story.apk). Once downloaded, locate the APK file and install it.
- _**Installing from F-Droid**_: Click the "Get it on F-Droid" badge above, scroll down, and click "Download APK" under your desired release version to download the APK file. Once downloaded, locate the file and install it.
- _**Installing from IzzyOnDroid**_: Click the "Get it on IzzyOnDroid" badge above, scroll down, and click "Download" to get the latest APK from IzzyOnDroid. Once downloaded, locate the file and install it.
- If you're unsure how to install an APK file, follow [this](https://www.lifewire.com/install-apk-on-android-4177185) guide.

### 🧭 Afterwards
- Open the app and follow basic instructions.
- If you don't understand how to use the app, please read everything in the app's Help Screen. (You can find it in: Library, History, Browse → Three Dots → Help)
- If you still have questions, please feel free to ask in [Discussions](https://github.com/Acclorite/book-story/discussions/categories/q-a), or create an [Issue](https://github.com/Acclorite/book-story/issues) if you feel like some area should be documented better.
---

<!------------ Features ------------>
### 🧭 Afterwards
Open the app and follow the basic instructions. If you're unsure how to use the app, refer to the Help screen (accessible via: Library, History, Browse → Three Dots → Help). If you still have questions, feel free to ask in the [Discussions](https://github.com/Acclorite/book-story/discussions/categories/q-a) or create an [Issue](https://github.com/Acclorite/book-story/issues) for areas you think need better documentation.

## ✨ Features
- 8 supported file formats(.pdf, .txt, .epub, .fb2, .zip, .html, .htm, .md)
- Material You
- Lots of unique themes
- Color Presets in the Reader
- Chapters in the Reader
- Categories to organize your Library
- Check for the app's update on the app's startup
- Highly customizable Reader
- Double click translation(sends to an external translator)
- Tablet UI support
- More..

<!------------ Roadmap ------------>

## 😵‍💫 Upcoming features / Roadmap
- _You can track project's progress, see what's coming and what is already implemented in [Book's Story: Development Roadmap](https://github.com/users/Acclorite/projects/1)._
- Some features may not be in Roadmap due to small size or other factors.
---

<!------------ Translation ------------>

## 🌐 Translation

[<img src="https://hosted.weblate.org/widget/book-story/book-story-translation/multi-blue.svg" alt="Translation progress" width=70%>](https://hosted.weblate.org/engage/book-story/)
[<img src="https://hosted.weblate.org/widget/book-story/book-story-translation/horizontal-auto.svg" alt="Translation progress">](https://hosted.weblate.org/engage/book-story/)
<br/>

_You can help translating the app on [Hosted Weblate](https://hosted.weblate.org/engage/book-story/)._
_Help translate the app on [Hosted Weblate](https://hosted.weblate.org/engage/book-story/)._

---

<!------------ Contribution ------------>

## 🤝 How to contribute
- **The most improtant thing is I do not want someone's code.** This project is maintaining only by me and I want it to be this way. Creating Pull Requests will not have much sense as they will probably be closed.
- **Place your suggestions on Issues
with [Suggestion Needed](https://github.com/Acclorite/book-story/labels/%F0%9F%93%9D%20Suggestion%20needed)
label.** When the issue has this label that means I seek new ideas on how to improve what I
already propose. Feel free to tell me what's on your mind!
- **Join Matrix server**. You can share your ideas, make bug reports and just chat with me on my [Matrix](https://matrix.to/#/#book-story:matrix.org) server!
- **Share your ideas and suggestions.** Your ideas and suggestions are always welcome, if you miss some feature or got an interesting idea, feel free to create a new [Issue](https://github.com/Acclorite/book-story/issues).
- **Report bugs**. Had a crash or something went wrong? Create a new [Issue](https://github.com/Acclorite/book-story/issues), the more information you can give the better it is.
- **Translate the app**. You can do what I physically cannot - translate the app on multiple languages. For this you can use [Hosted Weblate](https://hosted.weblate.org/engage/book-story/).
- **Enjoy the app**. Your best contribution is using my app and enjoying it!

- **The most important thing is that I do not want anyone else's code.** This project is maintained solely by me, and I intend to keep it that way. Pull requests will likely be closed, as they don’t align with the project's vision.
- **Submit your suggestions on Issues with the [Suggestion Needed](https://github.com/Acclorite/book-story/labels/%F0%9F%93%9D%20Suggestion%20needed) label.** When an issue has this label, it means I'm looking for ideas on how to improve what I’ve already proposed. Feel free to share your thoughts!
- **Join the Matrix server** to share your ideas, report bugs, or just chat with me on [this server](https://matrix.to/#/#book-story:matrix.org)!
- **Share your ideas and suggestions.** If you’re missing a feature or have an interesting idea, feel free to create a new [Issue](https://github.com/Acclorite/book-story/issues).
- **Report bugs.** Encountered a crash or something went wrong? Create a new [Issue](https://github.com/Acclorite/book-story/issues) with as much detail as possible to help resolve it.
- **Translate the app.** You can help make the app accessible in multiple languages. To contribute, visit [Hosted Weblate](https://hosted.weblate.org/engage/book-story/).
- **Enjoy the app.** The best contribution is simply using and enjoying the app I spent so much time on!

---

<!------------ Credits and License ------------>

## 🤗 Credits
Expand All @@ -132,6 +126,8 @@ _You can help translating the app on [Hosted Weblate](https://hosted.weblate.org
- [Weblate Translators](https://hosted.weblate.org/projects/book-story) (Hosted Weblate)
- Also listed in About > Credits.

---

## 🧾 License
<div align="center">
<pre>
Expand Down
22 changes: 11 additions & 11 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,12 @@ dependencies {

// All dependencies
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7")
implementation("com.google.accompanist:accompanist-swiperefresh:0.34.0")
implementation("com.google.accompanist:accompanist-swiperefresh:0.36.0")

// Dagger - Hilt
implementation("com.google.dagger:hilt-android:2.52")
ksp("com.google.dagger:hilt-android-compiler:2.52")
implementation("com.google.dagger:hilt-compiler:2.52")
implementation("com.google.dagger:hilt-android:2.54")
ksp("com.google.dagger:hilt-android-compiler:2.54")
implementation("com.google.dagger:hilt-compiler:2.54")
ksp("androidx.hilt:hilt-compiler:1.2.0")
implementation("androidx.hilt:hilt-navigation-compose:1.2.0")

Expand All @@ -131,16 +131,16 @@ dependencies {
implementation("androidx.core:core-splashscreen:1.0.1")

// Permission handling
implementation("com.google.accompanist:accompanist-permissions:0.34.0")
implementation("com.google.accompanist:accompanist-permissions:0.37.0")

// PDF parser
implementation("com.tom-roush:pdfbox-android:2.0.27.0")

// EPUB parser
implementation("org.jsoup:jsoup:1.18.1")
implementation("org.jsoup:jsoup:1.18.3")

// FB2 parser
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.1")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.3")

// Language Switcher
implementation("androidx.appcompat:appcompat:1.7.0")
Expand All @@ -152,8 +152,8 @@ dependencies {
// Retrofit
implementation("com.squareup.retrofit2:retrofit:2.11.0")
implementation("com.squareup.retrofit2:converter-moshi:2.11.0")
implementation("com.squareup.moshi:moshi:1.15.1")
implementation("com.squareup.moshi:moshi-kotlin:1.15.1")
implementation("com.squareup.moshi:moshi:1.15.2")
implementation("com.squareup.moshi:moshi-kotlin:1.15.2")
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")

Expand All @@ -162,7 +162,7 @@ dependencies {
implementation("com.mikepenz:aboutlibraries-compose-m3:11.2.3")

// Drag & Drop
implementation("sh.calvin.reorderable:reorderable:2.3.1")
implementation("sh.calvin.reorderable:reorderable:2.4.2")

// Scrollbar
implementation("com.github.nanihadesuka:LazyColumnScrollbar:2.2.0")
Expand All @@ -171,5 +171,5 @@ dependencies {
implementation("com.google.code.gson:gson:2.11.0")

// Markdown
implementation("org.commonmark:commonmark:0.23.0")
implementation("org.commonmark:commonmark:0.24.0")
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package ua.acclorite.book_story.domain.navigator

import android.os.Parcelable
import androidx.compose.runtime.Immutable
import kotlinx.serialization.Serializable
import kotlinx.parcelize.Parcelize

@Immutable
@Serializable
enum class StackEvent {
@Parcelize
enum class StackEvent : Parcelable {
Default, Pop
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ua.acclorite.book_story.domain.reader

enum class ReaderHorizontalGesture {
OFF,
ON,
INVERSE
}

fun String.toHorizontalGesture(): ReaderHorizontalGesture {
return ReaderHorizontalGesture.valueOf(this)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.launch
import ua.acclorite.book_story.presentation.core.components.common.LazyColumnWithScrollbar
import ua.acclorite.book_story.presentation.core.components.modal_bottom_sheet.ModalBottomSheet
Expand Down Expand Up @@ -54,9 +53,7 @@ fun BrowseFilterBottomSheet(
LazyColumnWithScrollbar(modifier = Modifier.fillMaxSize()) {
BrowseGeneralSubcategory(
showTitle = false,
showDivider = false,
topPadding = 16.dp,
bottomPadding = 8.dp
showDivider = false
)
}
}
Expand All @@ -65,9 +62,7 @@ fun BrowseFilterBottomSheet(
LazyColumnWithScrollbar(modifier = Modifier.fillMaxSize()) {
BrowseFilterSubcategory(
showTitle = false,
showDivider = false,
topPadding = 16.dp,
bottomPadding = 8.dp
showDivider = false
)
}
}
Expand All @@ -76,9 +71,7 @@ fun BrowseFilterBottomSheet(
LazyColumnWithScrollbar(modifier = Modifier.fillMaxSize()) {
BrowseSortSubcategory(
showTitle = false,
showDivider = false,
topPadding = 16.dp,
bottomPadding = 8.dp
showDivider = false
)
}
}
Expand Down
Loading

0 comments on commit b6b4194

Please sign in to comment.