From ec19a5e455ed25630c956d42f125cc7ac1dcf1f0 Mon Sep 17 00:00:00 2001
From: Acclorite <140836141+Acclorite@users.noreply.github.com>
Date: Thu, 13 Feb 2025 16:26:03 +0200
Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20Remove=20network=20permission?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Removed network permission along with notifications
* Removed check for updates feature (no longer makes sense without network access)
Resolves: #172
---
app/build.gradle.kts | 8 --
app/src/main/AndroidManifest.xml | 22 ++---
.../ua/acclorite/book_story/Application.kt | 30 +-----
.../acclorite/book_story/data/di/AppModule.kt | 19 ----
.../book_story/data/di/RepositoryModule.kt | 16 ----
.../UpdatesNotificationService.kt | 18 ----
.../UpdatesNotificationServiceImpl.kt | 86 ------------------
.../book_story/data/remote/GithubAPI.kt | 19 ----
.../data/remote/dto/LatestReleaseInfo.kt | 20 ----
.../repository/PermissionRepositoryImpl.kt | 50 ----------
.../data/repository/RemoteRepositoryImpl.kt | 65 -------------
.../domain/repository/PermissionRepository.kt | 6 --
.../domain/repository/RemoteRepository.kt | 16 ----
.../GrantNotificationsPermission.kt | 29 ------
.../domain/use_case/remote/CheckForUpdates.kt | 20 ----
.../presentation/about/AboutContent.kt | 16 ----
.../presentation/about/AboutDialog.kt | 31 -------
.../presentation/about/AboutLayout.kt | 14 +--
.../presentation/about/AboutScaffold.kt | 4 -
.../presentation/about/AboutUpdateDialog.kt | 49 ----------
.../core/constants/DataStoreConstants.kt | 1 -
.../core/constants/LinkConstants.kt | 3 -
.../general/GeneralSettingsCategory.kt | 5 -
.../components/CheckForUpdatesOption.kt | 78 ----------------
.../presentation/start/StartContent.kt | 6 --
.../presentation/start/StartSettings.kt | 8 +-
.../start/StartSettingsLayoutPermissions.kt | 20 ----
.../book_story/ui/about/AboutEvent.kt | 6 --
.../book_story/ui/about/AboutModel.kt | 83 +----------------
.../book_story/ui/about/AboutScreen.kt | 11 ---
.../book_story/ui/about/AboutState.kt | 19 ----
.../acclorite/book_story/ui/main/MainEvent.kt | 1 -
.../acclorite/book_story/ui/main/MainModel.kt | 21 +----
.../acclorite/book_story/ui/main/MainState.kt | 5 -
.../book_story/ui/settings/SettingsEvent.kt | 10 --
.../book_story/ui/settings/SettingsModel.kt | 22 -----
.../book_story/ui/start/StartEvent.kt | 8 +-
.../book_story/ui/start/StartModel.kt | 34 +------
.../book_story/ui/start/StartScreen.kt | 9 +-
.../book_story/ui/start/StartState.kt | 3 +-
.../res/drawable-hdpi/notification_icon.png | Bin 360 -> 0 bytes
.../res/drawable-mdpi/notification_icon.png | Bin 251 -> 0 bytes
.../res/drawable-xhdpi/notification_icon.png | Bin 433 -> 0 bytes
.../res/drawable-xxhdpi/notification_icon.png | Bin 715 -> 0 bytes
.../drawable-xxxhdpi/notification_icon.png | Bin 932 -> 0 bytes
app/src/main/res/values-ar/strings.xml | 20 +---
app/src/main/res/values-cs/strings.xml | 14 ---
app/src/main/res/values-de/strings.xml | 15 ---
app/src/main/res/values-es/strings.xml | 20 +---
app/src/main/res/values-fr/strings.xml | 15 ---
app/src/main/res/values-hi/strings.xml | 13 ---
app/src/main/res/values-in/strings.xml | 7 ++
app/src/main/res/values-it/strings.xml | 20 +---
app/src/main/res/values-pl/strings.xml | 15 ---
app/src/main/res/values-pt-rBR/strings.xml | 15 ---
app/src/main/res/values-ro/strings.xml | 1 -
app/src/main/res/values-ta/strings.xml | 15 ---
app/src/main/res/values-tr/strings.xml | 34 -------
app/src/main/res/values-uk/strings.xml | 18 ----
app/src/main/res/values-zh-rCN/strings.xml | 15 ---
app/src/main/res/values/strings.xml | 33 -------
61 files changed, 38 insertions(+), 1123 deletions(-)
delete mode 100644 app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationService.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationServiceImpl.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/data/remote/GithubAPI.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/data/remote/dto/LatestReleaseInfo.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/data/repository/RemoteRepositoryImpl.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/domain/repository/RemoteRepository.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/domain/use_case/permission/GrantNotificationsPermission.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/domain/use_case/remote/CheckForUpdates.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/about/AboutDialog.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/about/AboutUpdateDialog.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/CheckForUpdatesOption.kt
delete mode 100644 app/src/main/java/ua/acclorite/book_story/ui/about/AboutState.kt
delete mode 100644 app/src/main/res/drawable-hdpi/notification_icon.png
delete mode 100644 app/src/main/res/drawable-mdpi/notification_icon.png
delete mode 100644 app/src/main/res/drawable-xhdpi/notification_icon.png
delete mode 100644 app/src/main/res/drawable-xxhdpi/notification_icon.png
delete mode 100644 app/src/main/res/drawable-xxxhdpi/notification_icon.png
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index a8ce809b..3b7d5ee5 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -149,14 +149,6 @@ dependencies {
// Coil for loading images
implementation("io.coil-kt:coil-compose:2.7.0")
- // 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.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")
-
// Open source libraries
implementation("com.mikepenz:aboutlibraries-core:11.4.0")
implementation("com.mikepenz:aboutlibraries-compose-m3:11.4.0")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9bb41735..a47bcc8d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,10 +7,6 @@
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
-
-
-
-
+ tools:ignore="DataExtractionRules"
+ tools:targetApi="tiramisu">
+ android:theme="@style/Splash"
+ android:windowSoftInputMode="adjustResize">
@@ -52,7 +48,5 @@
android:name="autoStoreLocales"
android:value="true" />
-
-
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/Application.kt b/app/src/main/java/ua/acclorite/book_story/Application.kt
index 7b1e1a04..5869bf66 100644
--- a/app/src/main/java/ua/acclorite/book_story/Application.kt
+++ b/app/src/main/java/ua/acclorite/book_story/Application.kt
@@ -7,35 +7,7 @@
package ua.acclorite.book_story
import android.app.Application
-import android.app.NotificationChannel
-import android.app.NotificationManager
import dagger.hilt.android.HiltAndroidApp
-import ua.acclorite.book_story.data.local.notification.UpdatesNotificationService
@HiltAndroidApp
-class Application : Application() {
-
- override fun onCreate() {
- super.onCreate()
- createNotificationChannel()
- }
-
- private fun createNotificationChannel() {
- val channel = NotificationChannel(
- UpdatesNotificationService.CHANNEL_ID,
- getString(R.string.updates_notification_channel),
- NotificationManager.IMPORTANCE_HIGH
- )
-
- val notificationManager = getSystemService(
- NOTIFICATION_SERVICE
- ) as NotificationManager
- notificationManager.createNotificationChannel(channel)
- }
-}
-
-
-
-
-
-
+class Application : Application()
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/data/di/AppModule.kt b/app/src/main/java/ua/acclorite/book_story/data/di/AppModule.kt
index 80aa79e5..a60e5f04 100644
--- a/app/src/main/java/ua/acclorite/book_story/data/di/AppModule.kt
+++ b/app/src/main/java/ua/acclorite/book_story/data/di/AppModule.kt
@@ -8,8 +8,6 @@ package ua.acclorite.book_story.data.di
import android.app.Application
import androidx.room.Room
-import com.squareup.moshi.Moshi
-import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -21,31 +19,14 @@ import org.commonmark.node.HtmlBlock
import org.commonmark.node.IndentedCodeBlock
import org.commonmark.node.ThematicBreak
import org.commonmark.parser.Parser
-import retrofit2.Retrofit
-import retrofit2.converter.moshi.MoshiConverterFactory
import ua.acclorite.book_story.data.local.room.BookDao
import ua.acclorite.book_story.data.local.room.BookDatabase
import ua.acclorite.book_story.data.local.room.DatabaseHelper
-import ua.acclorite.book_story.data.remote.GithubAPI
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
- @Provides
- @Singleton
- fun provideGithubApi(): GithubAPI {
- val moshi = Moshi.Builder()
- .add(KotlinJsonAdapterFactory())
- .build()
-
- return Retrofit.Builder()
- .baseUrl(GithubAPI.BASE_URL)
- .addConverterFactory(MoshiConverterFactory.create(moshi))
- .build()
- .create(GithubAPI::class.java)
- }
-
@Provides
@Singleton
fun provideCommonmarkParser(): Parser {
diff --git a/app/src/main/java/ua/acclorite/book_story/data/di/RepositoryModule.kt b/app/src/main/java/ua/acclorite/book_story/data/di/RepositoryModule.kt
index 36bab6c4..05c1d8bb 100644
--- a/app/src/main/java/ua/acclorite/book_story/data/di/RepositoryModule.kt
+++ b/app/src/main/java/ua/acclorite/book_story/data/di/RepositoryModule.kt
@@ -12,8 +12,6 @@ import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import ua.acclorite.book_story.data.local.data_store.DataStore
import ua.acclorite.book_story.data.local.data_store.DataStoreImpl
-import ua.acclorite.book_story.data.local.notification.UpdatesNotificationService
-import ua.acclorite.book_story.data.local.notification.UpdatesNotificationServiceImpl
import ua.acclorite.book_story.data.mapper.book.BookMapper
import ua.acclorite.book_story.data.mapper.book.BookMapperImpl
import ua.acclorite.book_story.data.mapper.color_preset.ColorPresetMapper
@@ -30,14 +28,12 @@ import ua.acclorite.book_story.data.repository.DataStoreRepositoryImpl
import ua.acclorite.book_story.data.repository.FileSystemRepositoryImpl
import ua.acclorite.book_story.data.repository.HistoryRepositoryImpl
import ua.acclorite.book_story.data.repository.PermissionRepositoryImpl
-import ua.acclorite.book_story.data.repository.RemoteRepositoryImpl
import ua.acclorite.book_story.domain.repository.BookRepository
import ua.acclorite.book_story.domain.repository.ColorPresetRepository
import ua.acclorite.book_story.domain.repository.DataStoreRepository
import ua.acclorite.book_story.domain.repository.FileSystemRepository
import ua.acclorite.book_story.domain.repository.HistoryRepository
import ua.acclorite.book_story.domain.repository.PermissionRepository
-import ua.acclorite.book_story.domain.repository.RemoteRepository
import javax.inject.Singleton
@Module
@@ -79,12 +75,6 @@ abstract class RepositoryModule {
fileSystemRepositoryImpl: FileSystemRepositoryImpl
): FileSystemRepository
- @Binds
- @Singleton
- abstract fun bindRemoteRepository(
- remoteRepositoryImpl: RemoteRepositoryImpl
- ): RemoteRepository
-
@Binds
@Singleton
abstract fun bindPermissionRepository(
@@ -120,10 +110,4 @@ abstract class RepositoryModule {
abstract fun bindTextParser(
textParserImpl: TextParserImpl
): TextParser
-
- @Binds
- @Singleton
- abstract fun bindNotificationService(
- updatesNotificationServiceImpl: UpdatesNotificationServiceImpl
- ): UpdatesNotificationService
}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationService.kt b/app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationService.kt
deleted file mode 100644
index a6e84abe..00000000
--- a/app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationService.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.data.local.notification
-
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-
-interface UpdatesNotificationService {
-
- fun postNotification(releaseInfo: LatestReleaseInfo)
-
- companion object {
- const val CHANNEL_ID = "updates_channel"
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationServiceImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationServiceImpl.kt
deleted file mode 100644
index ea95ad0f..00000000
--- a/app/src/main/java/ua/acclorite/book_story/data/local/notification/UpdatesNotificationServiceImpl.kt
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.data.local.notification
-
-import android.app.Application
-import android.app.Notification
-import android.app.NotificationManager
-import android.app.PendingIntent
-import android.content.Context
-import android.content.Intent
-import android.graphics.drawable.Icon
-import android.net.Uri
-import ua.acclorite.book_story.R
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.presentation.core.constants.Constants
-import ua.acclorite.book_story.presentation.core.constants.provideDownloadLatestReleasePage
-import ua.acclorite.book_story.presentation.core.constants.provideReleasesPage
-import javax.inject.Inject
-
-class UpdatesNotificationServiceImpl @Inject constructor(
- private val application: Application
-) : UpdatesNotificationService {
-
- private val notificationManager = application.getSystemService(Context.NOTIFICATION_SERVICE)
- as NotificationManager
-
- /**
- * Sends notification about new update.
- *
- * @param releaseInfo [LatestReleaseInfo].
- */
- override fun postNotification(releaseInfo: LatestReleaseInfo) {
- val downloadLatestVersionIntent = Intent(
- Intent.ACTION_VIEW,
- Uri.parse(Constants.provideDownloadLatestReleasePage())
- )
- val latestReleaseIntent = Intent(
- Intent.ACTION_VIEW,
- Uri.parse(Constants.provideReleasesPage())
- )
-
- val downloadLatestVersionPendingIntent = PendingIntent.getActivity(
- application,
- 1,
- downloadLatestVersionIntent,
- PendingIntent.FLAG_IMMUTABLE
- )
- val latestReleasePendingIntent = PendingIntent.getActivity(
- application,
- 1,
- latestReleaseIntent,
- PendingIntent.FLAG_IMMUTABLE
- )
-
- val notification = Notification.Builder(
- application,
- UpdatesNotificationService.CHANNEL_ID
- )
- .setSmallIcon(R.drawable.notification_icon)
- .setContentTitle(application.getString(R.string.updates_notification_title))
- .setContentText(
- application.getString(
- R.string.updates_notification_desc,
- releaseInfo.name
- )
- )
- .setContentIntent(latestReleasePendingIntent)
- .addAction(
- Notification.Action.Builder(
- Icon.createWithResource(application, R.drawable.notification_icon),
- application.getString(R.string.updates_notification_action),
- downloadLatestVersionPendingIntent
- ).build()
- )
- .build()
-
- notificationManager.notify(
- 0,
- notification
- )
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/data/remote/GithubAPI.kt b/app/src/main/java/ua/acclorite/book_story/data/remote/GithubAPI.kt
deleted file mode 100644
index 9d42d1fa..00000000
--- a/app/src/main/java/ua/acclorite/book_story/data/remote/GithubAPI.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.data.remote
-
-import retrofit2.http.GET
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-
-interface GithubAPI {
- @GET("repos/Acclorite/book-story/releases/latest")
- suspend fun getLatestRelease(): LatestReleaseInfo
-
- companion object {
- const val BASE_URL = "https://api.github.com/"
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/data/remote/dto/LatestReleaseInfo.kt b/app/src/main/java/ua/acclorite/book_story/data/remote/dto/LatestReleaseInfo.kt
deleted file mode 100644
index 7cb41c7b..00000000
--- a/app/src/main/java/ua/acclorite/book_story/data/remote/dto/LatestReleaseInfo.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.data.remote.dto
-
-import androidx.annotation.Keep
-import androidx.compose.runtime.Immutable
-import com.squareup.moshi.Json
-import com.squareup.moshi.JsonClass
-
-@Keep
-@JsonClass(generateAdapter = true)
-@Immutable
-data class LatestReleaseInfo(
- @Json(name = "name") val name: String,
- @Json(name = "tag_name") val tagName: String
-)
diff --git a/app/src/main/java/ua/acclorite/book_story/data/repository/PermissionRepositoryImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/repository/PermissionRepositoryImpl.kt
index 21a59e54..d3ea5f4b 100644
--- a/app/src/main/java/ua/acclorite/book_story/data/repository/PermissionRepositoryImpl.kt
+++ b/app/src/main/java/ua/acclorite/book_story/data/repository/PermissionRepositoryImpl.kt
@@ -26,7 +26,6 @@ import javax.inject.Inject
import javax.inject.Singleton
private const val STORAGE_PERMISSION = "STORAGE PERM, REPO"
-private const val NOTIFICATIONS_PERMISSION = "NOTIFIC PERM, REPO"
@Singleton
class PermissionRepositoryImpl @Inject constructor() : PermissionRepository {
@@ -102,53 +101,4 @@ class PermissionRepositoryImpl @Inject constructor() : PermissionRepository {
Log.e(STORAGE_PERMISSION, "Not granted: Timeout")
return false
}
-
- @OptIn(ExperimentalPermissionsApi::class)
- override suspend fun grantNotificationsPermission(
- activity: ComponentActivity,
- notificationsPermissionState: PermissionState
- ): Boolean {
- Log.i(NOTIFICATIONS_PERMISSION, "Requested notifications permission")
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
- Log.w(NOTIFICATIONS_PERMISSION, "Granted: API is below 33")
- return true
- }
-
- if (notificationsPermissionState.status.isGranted) {
- Log.i(NOTIFICATIONS_PERMISSION, "Granted: Notifications Permission is already granted")
- return true
- }
-
- if (!notificationsPermissionState.status.shouldShowRationale) {
- notificationsPermissionState.launchPermissionRequest()
- } else {
- val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
- intent.putExtra(Settings.EXTRA_APP_PACKAGE, activity.packageName)
-
- intent.launchActivity(activity) {
- Log.e(
- NOTIFICATIONS_PERMISSION,
- "Could not launch \"APP_NOTIFICATION_SETTINGS\" activity"
- )
- return false
- }
- }
-
- for (i in 1..20) {
- if (!notificationsPermissionState.status.isGranted) {
- delay(1000)
- yield()
- continue
- }
-
- yield()
-
- Log.i(NOTIFICATIONS_PERMISSION, "Successfully granted")
- return true
- break
- }
-
- Log.e(NOTIFICATIONS_PERMISSION, "Not granted: Timeout")
- return false
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/data/repository/RemoteRepositoryImpl.kt b/app/src/main/java/ua/acclorite/book_story/data/repository/RemoteRepositoryImpl.kt
deleted file mode 100644
index a4f4d952..00000000
--- a/app/src/main/java/ua/acclorite/book_story/data/repository/RemoteRepositoryImpl.kt
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.data.repository
-
-import android.app.Application
-import android.util.Log
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
-import ua.acclorite.book_story.R
-import ua.acclorite.book_story.data.local.notification.UpdatesNotificationService
-import ua.acclorite.book_story.data.remote.GithubAPI
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.domain.repository.RemoteRepository
-import javax.inject.Inject
-import javax.inject.Singleton
-
-private const val CHECK_FOR_UPDATES = "CHECK FOR UPD, REPO"
-
-/**
- * Remote repository.
- * Manages all API(online) related work.
- */
-@Singleton
-class RemoteRepositoryImpl @Inject constructor(
- private val application: Application,
-
- private val githubAPI: GithubAPI,
- private val updatesNotificationService: UpdatesNotificationService,
-) : RemoteRepository {
-
- /**
- * Check for updates from GitHub.
- *
- * @param postNotification Whether notification should be send.
- */
- override suspend fun checkForUpdates(postNotification: Boolean): LatestReleaseInfo? {
- Log.i(CHECK_FOR_UPDATES, "Checking for updates. Post notification: $postNotification")
-
- return withContext(Dispatchers.IO) {
- try {
- val result = githubAPI.getLatestRelease()
-
- val version = result.tagName.substringAfter("v")
- val currentVersion = application.getString(R.string.app_version)
-
- if (version != currentVersion && postNotification) {
- Log.i(CHECK_FOR_UPDATES, "Posting notification.")
- updatesNotificationService.postNotification(
- result
- )
- }
-
- result
- } catch (e: Exception) {
- Log.e(CHECK_FOR_UPDATES, "Could not get latest release information.")
- e.printStackTrace()
- null
- }
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/domain/repository/PermissionRepository.kt b/app/src/main/java/ua/acclorite/book_story/domain/repository/PermissionRepository.kt
index 0f1259e1..f5e4e354 100644
--- a/app/src/main/java/ua/acclorite/book_story/domain/repository/PermissionRepository.kt
+++ b/app/src/main/java/ua/acclorite/book_story/domain/repository/PermissionRepository.kt
@@ -17,10 +17,4 @@ interface PermissionRepository {
activity: ComponentActivity,
storagePermissionState: PermissionState
): Boolean
-
- @OptIn(ExperimentalPermissionsApi::class)
- suspend fun grantNotificationsPermission(
- activity: ComponentActivity,
- notificationsPermissionState: PermissionState
- ): Boolean
}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/domain/repository/RemoteRepository.kt b/app/src/main/java/ua/acclorite/book_story/domain/repository/RemoteRepository.kt
deleted file mode 100644
index 997a99ca..00000000
--- a/app/src/main/java/ua/acclorite/book_story/domain/repository/RemoteRepository.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.domain.repository
-
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-
-interface RemoteRepository {
-
- suspend fun checkForUpdates(
- postNotification: Boolean
- ): LatestReleaseInfo?
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/domain/use_case/permission/GrantNotificationsPermission.kt b/app/src/main/java/ua/acclorite/book_story/domain/use_case/permission/GrantNotificationsPermission.kt
deleted file mode 100644
index 2763138b..00000000
--- a/app/src/main/java/ua/acclorite/book_story/domain/use_case/permission/GrantNotificationsPermission.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.domain.use_case.permission
-
-import androidx.activity.ComponentActivity
-import com.google.accompanist.permissions.ExperimentalPermissionsApi
-import com.google.accompanist.permissions.PermissionState
-import ua.acclorite.book_story.domain.repository.PermissionRepository
-import javax.inject.Inject
-
-class GrantNotificationsPermission @Inject constructor(
- private val repository: PermissionRepository
-) {
-
- @OptIn(ExperimentalPermissionsApi::class)
- suspend fun execute(
- activity: ComponentActivity,
- notificationsPermissionState: PermissionState
- ): Boolean {
- return repository.grantNotificationsPermission(
- activity = activity,
- notificationsPermissionState = notificationsPermissionState
- )
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/domain/use_case/remote/CheckForUpdates.kt b/app/src/main/java/ua/acclorite/book_story/domain/use_case/remote/CheckForUpdates.kt
deleted file mode 100644
index fd2503d4..00000000
--- a/app/src/main/java/ua/acclorite/book_story/domain/use_case/remote/CheckForUpdates.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.domain.use_case.remote
-
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.domain.repository.RemoteRepository
-import javax.inject.Inject
-
-class CheckForUpdates @Inject constructor(
- private val repository: RemoteRepository
-) {
-
- suspend fun execute(postNotification: Boolean): LatestReleaseInfo? {
- return repository.checkForUpdates(postNotification)
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutContent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutContent.kt
index 0a5901f7..0592fd9c 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutContent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutContent.kt
@@ -10,37 +10,21 @@ import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.domain.util.Dialog
import ua.acclorite.book_story.ui.about.AboutEvent
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AboutContent(
scrollBehavior: TopAppBarScrollBehavior,
- dialog: Dialog? = null,
- updateLoading: Boolean,
- updateInfo: LatestReleaseInfo?,
listState: LazyListState,
- checkForUpdate: (AboutEvent.OnCheckForUpdate) -> Unit,
navigateToBrowserPage: (AboutEvent.OnNavigateToBrowserPage) -> Unit,
- dismissDialog: (AboutEvent.OnDismissDialog) -> Unit,
navigateToLicenses: () -> Unit,
navigateToCredits: () -> Unit,
navigateBack: () -> Unit
) {
- AboutDialog(
- dialog = dialog,
- updateInfo = updateInfo,
- navigateToBrowserPage = navigateToBrowserPage,
- dismissDialog = dismissDialog
- )
-
AboutScaffold(
scrollBehavior = scrollBehavior,
- updateLoading = updateLoading,
listState = listState,
- checkForUpdate = checkForUpdate,
navigateToBrowserPage = navigateToBrowserPage,
navigateToLicenses = navigateToLicenses,
navigateToCredits = navigateToCredits,
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutDialog.kt
deleted file mode 100644
index 2e06b4df..00000000
--- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutDialog.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.presentation.about
-
-import androidx.compose.runtime.Composable
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.domain.util.Dialog
-import ua.acclorite.book_story.ui.about.AboutEvent
-import ua.acclorite.book_story.ui.about.AboutScreen
-
-@Composable
-fun AboutDialog(
- dialog: Dialog? = null,
- updateInfo: LatestReleaseInfo?,
- navigateToBrowserPage: (AboutEvent.OnNavigateToBrowserPage) -> Unit,
- dismissDialog: (AboutEvent.OnDismissDialog) -> Unit
-) {
- when (dialog) {
- AboutScreen.UPDATE_DIALOG -> {
- AboutUpdateDialog(
- updateInfo = updateInfo,
- navigateToBrowserPage = navigateToBrowserPage,
- dismissDialog = dismissDialog
- )
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt
index 07586265..fd5890e9 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutLayout.kt
@@ -42,10 +42,8 @@ import ua.acclorite.book_story.ui.about.AboutEvent
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AboutLayout(
- updateLoading: Boolean,
paddingValues: PaddingValues,
listState: LazyListState,
- checkForUpdate: (AboutEvent.OnCheckForUpdate) -> Unit,
navigateToBrowserPage: (AboutEvent.OnNavigateToBrowserPage) -> Unit,
navigateToLicenses: () -> Unit,
navigateToCredits: () -> Unit
@@ -102,17 +100,9 @@ fun AboutLayout(
context.getString(R.string.app_version)
)
)
- append("\n")
- append(stringResource(id = R.string.app_version_option_desc_2))
},
- showLoading = updateLoading
- ) {
- checkForUpdate(
- AboutEvent.OnCheckForUpdate(
- context = context
- )
- )
- }
+ isOnClickEnabled = false
+ )
AboutItem(
title = stringResource(id = R.string.report_bug_option),
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutScaffold.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutScaffold.kt
index 152013f5..febbe861 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutScaffold.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutScaffold.kt
@@ -21,9 +21,7 @@ import ua.acclorite.book_story.ui.about.AboutEvent
@Composable
fun AboutScaffold(
scrollBehavior: TopAppBarScrollBehavior,
- updateLoading: Boolean,
listState: LazyListState,
- checkForUpdate: (AboutEvent.OnCheckForUpdate) -> Unit,
navigateToBrowserPage: (AboutEvent.OnNavigateToBrowserPage) -> Unit,
navigateToLicenses: () -> Unit,
navigateToCredits: () -> Unit,
@@ -42,10 +40,8 @@ fun AboutScaffold(
}
) { paddingValues ->
AboutLayout(
- updateLoading = updateLoading,
paddingValues = paddingValues,
listState = listState,
- checkForUpdate = checkForUpdate,
navigateToBrowserPage = navigateToBrowserPage,
navigateToLicenses = navigateToLicenses,
navigateToCredits = navigateToCredits
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutUpdateDialog.kt b/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutUpdateDialog.kt
deleted file mode 100644
index 09dca49e..00000000
--- a/app/src/main/java/ua/acclorite/book_story/presentation/about/AboutUpdateDialog.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.presentation.about
-
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Update
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.res.stringResource
-import ua.acclorite.book_story.R
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.presentation.core.components.dialog.Dialog
-import ua.acclorite.book_story.presentation.core.constants.Constants
-import ua.acclorite.book_story.presentation.core.constants.provideReleasesPage
-import ua.acclorite.book_story.ui.about.AboutEvent
-
-@Composable
-fun AboutUpdateDialog(
- updateInfo: LatestReleaseInfo?,
- navigateToBrowserPage: (AboutEvent.OnNavigateToBrowserPage) -> Unit,
- dismissDialog: (AboutEvent.OnDismissDialog) -> Unit
-) {
- val context = LocalContext.current
-
- Dialog(
- title = stringResource(id = R.string.update_query, updateInfo?.tagName ?: ""),
- icon = Icons.Default.Update,
- description = stringResource(
- id = R.string.update_app_description
- ),
- actionEnabled = true,
- disableOnClick = false,
- onDismiss = { dismissDialog(AboutEvent.OnDismissDialog) },
- onAction = {
- navigateToBrowserPage(
- AboutEvent.OnNavigateToBrowserPage(
- page = Constants.provideReleasesPage(),
- context = context
- )
- )
- dismissDialog(AboutEvent.OnDismissDialog)
- },
- withContent = false
- )
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt
index 43cf4863..d6eda79a 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/DataStoreConstants.kt
@@ -21,7 +21,6 @@ object DataStoreConstants {
val ABSOLUTE_DARK = booleanPreferencesKey("absolute_dark")
val THEME_CONTRAST = stringPreferencesKey("theme_contrast")
val SHOW_START_SCREEN = booleanPreferencesKey("guide")
- val CHECK_FOR_UPDATES = booleanPreferencesKey("check_for_updates")
val DOUBLE_PRESS_EXIT = booleanPreferencesKey("double_press_exit")
// Reader settings
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt
index 974da753..c2cc13a4 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/constants/LinkConstants.kt
@@ -8,9 +8,6 @@
package ua.acclorite.book_story.presentation.core.constants
-fun Constants.provideDownloadLatestReleasePage() =
- "https://www.github.com/Acclorite/book-story/releases/latest/download/book-story.apk"
-
fun Constants.provideReleasesPage() =
"https://www.github.com/Acclorite/book-story/releases/latest"
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsCategory.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsCategory.kt
index f71734ee..b642ca63 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsCategory.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/GeneralSettingsCategory.kt
@@ -16,7 +16,6 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.coerceAtLeast
import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.presentation.settings.general.components.AppLanguageOption
-import ua.acclorite.book_story.presentation.settings.general.components.CheckForUpdatesOption
import ua.acclorite.book_story.presentation.settings.general.components.DoublePressExitOption
fun LazyListScope.GeneralSettingsCategory(
@@ -31,10 +30,6 @@ fun LazyListScope.GeneralSettingsCategory(
AppLanguageOption()
}
- item {
- CheckForUpdatesOption()
- }
-
item {
DoublePressExitOption()
}
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/CheckForUpdatesOption.kt b/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/CheckForUpdatesOption.kt
deleted file mode 100644
index 9a70ac54..00000000
--- a/app/src/main/java/ua/acclorite/book_story/presentation/settings/general/components/CheckForUpdatesOption.kt
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.presentation.settings.general.components
-
-import android.Manifest
-import android.annotation.SuppressLint
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.Security
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.ui.res.stringResource
-import androidx.hilt.navigation.compose.hiltViewModel
-import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import com.google.accompanist.permissions.ExperimentalPermissionsApi
-import com.google.accompanist.permissions.rememberPermissionState
-import ua.acclorite.book_story.R
-import ua.acclorite.book_story.presentation.core.components.dialog.Dialog
-import ua.acclorite.book_story.presentation.core.components.settings.SwitchWithTitle
-import ua.acclorite.book_story.presentation.core.util.LocalActivity
-import ua.acclorite.book_story.ui.main.MainEvent
-import ua.acclorite.book_story.ui.main.MainModel
-import ua.acclorite.book_story.ui.settings.SettingsEvent
-import ua.acclorite.book_story.ui.settings.SettingsModel
-
-@OptIn(ExperimentalPermissionsApi::class)
-@SuppressLint("InlinedApi")
-@Composable
-fun CheckForUpdatesOption() {
- val mainModel = hiltViewModel()
- val settingsModel = hiltViewModel()
-
- val state = mainModel.state.collectAsStateWithLifecycle()
- val activity = LocalActivity.current
- val notificationsPermissionState = rememberPermissionState(
- permission = Manifest.permission.POST_NOTIFICATIONS
- )
- val showConfirmation = remember { mutableStateOf(false) }
-
- if (showConfirmation.value) {
- Dialog(
- title = stringResource(id = R.string.enable_check_for_updates),
- description = stringResource(id = R.string.enable_check_for_updates_description),
- icon = Icons.Default.Security,
- actionEnabled = true,
- onDismiss = { showConfirmation.value = false },
- onAction = {
- mainModel.onEvent(MainEvent.OnChangeCheckForUpdates(true))
- showConfirmation.value = false
- },
- withContent = false
- )
- }
-
- SwitchWithTitle(
- selected = state.value.checkForUpdates,
- title = stringResource(id = R.string.check_for_updates_option),
- description = stringResource(id = R.string.check_for_updates_option_desc)
- ) {
- settingsModel.onEvent(
- SettingsEvent.OnChangeCheckForUpdates(
- enable = !state.value.checkForUpdates,
- activity = activity,
- notificationsPermissionState = notificationsPermissionState,
- onChangeCheckForUpdates = {
- when (it) {
- true -> showConfirmation.value = true
- false -> mainModel.onEvent(MainEvent.OnChangeCheckForUpdates(false))
- }
- }
- )
- )
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartContent.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartContent.kt
index b632e756..fc3b69d6 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartContent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartContent.kt
@@ -24,13 +24,10 @@ fun StartContent(
currentPage: Int,
stackEvent: StackEvent,
storagePermissionGranted: Boolean,
- notificationsPermissionGranted: Boolean,
storagePermissionState: PermissionState,
- notificationsPermissionState: PermissionState,
languages: List,
changeLanguage: (MainEvent.OnChangeLanguage) -> Unit,
storagePermissionRequest: (StartEvent.OnStoragePermissionRequest) -> Unit,
- notificationsPermissionRequest: (StartEvent.OnNotificationsPermissionRequest) -> Unit,
navigateForward: () -> Unit,
navigateBack: () -> Unit,
navigateToBrowse: () -> Unit,
@@ -50,13 +47,10 @@ fun StartContent(
currentPage = currentPage,
stackEvent = stackEvent,
storagePermissionGranted = storagePermissionGranted,
- notificationsPermissionGranted = notificationsPermissionGranted,
storagePermissionState = storagePermissionState,
- notificationsPermissionState = notificationsPermissionState,
languages = languages,
changeLanguage = changeLanguage,
storagePermissionRequest = storagePermissionRequest,
- notificationsPermissionRequest = notificationsPermissionRequest,
navigateForward = navigateForward
)
}
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettings.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettings.kt
index ab7af46c..9ba8c84f 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettings.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettings.kt
@@ -22,13 +22,10 @@ fun StartSettings(
currentPage: Int,
stackEvent: StackEvent,
storagePermissionGranted: Boolean,
- notificationsPermissionGranted: Boolean,
storagePermissionState: PermissionState,
- notificationsPermissionState: PermissionState,
languages: List,
changeLanguage: (MainEvent.OnChangeLanguage) -> Unit,
storagePermissionRequest: (StartEvent.OnStoragePermissionRequest) -> Unit,
- notificationsPermissionRequest: (StartEvent.OnNotificationsPermissionRequest) -> Unit,
navigateForward: () -> Unit
) {
val activity = LocalActivity.current
@@ -63,11 +60,8 @@ fun StartSettings(
StartSettingsLayoutPermissions(
activity = activity,
storagePermissionGranted = storagePermissionGranted,
- notificationsPermissionGranted = notificationsPermissionGranted,
storagePermissionState = storagePermissionState,
- notificationsPermissionState = notificationsPermissionState,
- storagePermissionRequest = storagePermissionRequest,
- notificationsPermissionRequest = notificationsPermissionRequest
+ storagePermissionRequest = storagePermissionRequest
)
}
}
diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissions.kt
index 1a1cd7d8..a21c9a5f 100644
--- a/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissions.kt
+++ b/app/src/main/java/ua/acclorite/book_story/presentation/start/StartSettingsLayoutPermissions.kt
@@ -26,11 +26,8 @@ import ua.acclorite.book_story.ui.start.StartEvent
fun LazyListScope.StartSettingsLayoutPermissions(
activity: ComponentActivity,
storagePermissionGranted: Boolean,
- notificationsPermissionGranted: Boolean,
storagePermissionState: PermissionState,
- notificationsPermissionState: PermissionState,
storagePermissionRequest: (StartEvent.OnStoragePermissionRequest) -> Unit,
- notificationsPermissionRequest: (StartEvent.OnNotificationsPermissionRequest) -> Unit
) {
item {
Spacer(modifier = Modifier.height(16.dp))
@@ -65,23 +62,6 @@ fun LazyListScope.StartSettingsLayoutPermissions(
)
}
- item {
- StartSettingsLayoutPermissionsItem(
- title = stringResource(id = R.string.start_permissions_notifications),
- description = stringResource(id = R.string.start_permissions_notifications_desc),
- isOptional = true,
- isGranted = notificationsPermissionGranted,
- onGrantClick = {
- notificationsPermissionRequest(
- StartEvent.OnNotificationsPermissionRequest(
- activity = activity,
- notificationsPermissionState = notificationsPermissionState
- )
- )
- }
- )
- }
-
item {
Spacer(modifier = Modifier.height(8.dp))
}
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutEvent.kt b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutEvent.kt
index e5af6b09..626574df 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutEvent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutEvent.kt
@@ -15,10 +15,4 @@ sealed class AboutEvent {
val page: String,
val context: Context
) : AboutEvent()
-
- data class OnCheckForUpdate(
- val context: Context
- ) : AboutEvent()
-
- data object OnDismissDialog : AboutEvent()
}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt
index 84848415..3eeea548 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutModel.kt
@@ -14,29 +14,16 @@ import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.FlowPreview
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
-import kotlinx.coroutines.sync.Mutex
-import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext
-import kotlinx.coroutines.yield
import ua.acclorite.book_story.R
-import ua.acclorite.book_story.domain.use_case.remote.CheckForUpdates
import ua.acclorite.book_story.presentation.core.util.launchActivity
import ua.acclorite.book_story.presentation.core.util.showToast
import javax.inject.Inject
@OptIn(FlowPreview::class)
@HiltViewModel
-class AboutModel @Inject constructor(
- private val checkForUpdates: CheckForUpdates
-) : ViewModel() {
-
- private val mutex = Mutex()
-
- private val _state = MutableStateFlow(AboutState())
- val state = _state.asStateFlow()
+class AboutModel @Inject constructor() : ViewModel() {
fun onEvent(event: AboutEvent) {
when (event) {
@@ -55,74 +42,6 @@ class AboutModel @Inject constructor(
}
}
}
-
- is AboutEvent.OnCheckForUpdate -> {
- viewModelScope.launch {
- if (_state.value.updateChecked) {
- withContext(Dispatchers.Main) {
- event.context.getString(R.string.no_updates)
- .showToast(context = event.context)
- }
- return@launch
- }
-
- _state.update {
- it.copy(updateLoading = true)
- }
- val result = checkForUpdates.execute(false)
-
- if (result == null) {
- _state.update {
- it.copy(updateLoading = false)
- }
- withContext(Dispatchers.Main) {
- event.context.getString(R.string.error_check_internet)
- .showToast(context = event.context)
- }
- return@launch
- }
-
- val version = result.tagName.substringAfterLast("v")
- val currentVersion = event.context.getString(R.string.app_version)
-
- if (version == currentVersion) {
- withContext(Dispatchers.Main) {
- event.context.getString(R.string.no_updates)
- .showToast(context = event.context)
- }
- _state.update {
- it.copy(
- updateLoading = false,
- updateChecked = true
- )
- }
- return@launch
- }
-
- _state.update {
- it.copy(
- dialog = AboutScreen.UPDATE_DIALOG,
- updateLoading = false,
- updateInfo = result
- )
- }
- }
- }
-
- is AboutEvent.OnDismissDialog -> {
- viewModelScope.launch {
- _state.update {
- it.copy(dialog = null)
- }
- }
- }
- }
- }
-
- private suspend inline fun MutableStateFlow.update(function: (T) -> T) {
- mutex.withLock {
- yield()
- this.value = function(this.value)
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutScreen.kt b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutScreen.kt
index 88187516..fc5b0fe8 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutScreen.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutScreen.kt
@@ -11,8 +11,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.hilt.navigation.compose.hiltViewModel
-import androidx.lifecycle.compose.collectAsStateWithLifecycle
-import kotlinx.parcelize.IgnoredOnParcel
import kotlinx.parcelize.Parcelize
import ua.acclorite.book_story.domain.navigator.Screen
import ua.acclorite.book_story.presentation.about.AboutContent
@@ -24,27 +22,18 @@ import ua.acclorite.book_story.ui.licenses.LicensesScreen
@Parcelize
object AboutScreen : Screen, Parcelable {
- @IgnoredOnParcel
- const val UPDATE_DIALOG = "update_dialog"
-
@OptIn(ExperimentalMaterial3Api::class)
@Composable
override fun Content() {
val navigator = LocalNavigator.current
val screenModel = hiltViewModel()
- val state = screenModel.state.collectAsStateWithLifecycle()
val (scrollBehavior, listState) = TopAppBarDefaults.collapsibleTopAppBarScrollBehavior()
AboutContent(
scrollBehavior = scrollBehavior,
- dialog = state.value.dialog,
- updateLoading = state.value.updateLoading,
- updateInfo = state.value.updateInfo,
listState = listState,
- checkForUpdate = screenModel::onEvent,
navigateToBrowserPage = screenModel::onEvent,
- dismissDialog = screenModel::onEvent,
navigateToLicenses = {
navigator.push(LicensesScreen)
},
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutState.kt b/app/src/main/java/ua/acclorite/book_story/ui/about/AboutState.kt
deleted file mode 100644
index 45f7c0f8..00000000
--- a/app/src/main/java/ua/acclorite/book_story/ui/about/AboutState.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Book's Story — free and open-source Material You eBook reader.
- * Copyright (C) 2024-2025 Acclorite
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package ua.acclorite.book_story.ui.about
-
-import androidx.compose.runtime.Immutable
-import ua.acclorite.book_story.data.remote.dto.LatestReleaseInfo
-import ua.acclorite.book_story.domain.util.Dialog
-
-@Immutable
-data class AboutState(
- val dialog: Dialog? = null,
- val updateChecked: Boolean = false,
- val updateLoading: Boolean = false,
- val updateInfo: LatestReleaseInfo? = null
-)
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt
index cfb49f2d..09e9dbcd 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainEvent.kt
@@ -22,7 +22,6 @@ sealed class MainEvent {
data class OnChangeParagraphHeight(val value: Int) : MainEvent()
data class OnChangeParagraphIndentation(val value: Int) : MainEvent()
data class OnChangeShowStartScreen(val value: Boolean) : MainEvent()
- data class OnChangeCheckForUpdates(val value: Boolean) : MainEvent()
data class OnChangeSidePadding(val value: Int) : MainEvent()
data class OnChangeDoubleClickTranslation(val value: Boolean) : MainEvent()
data class OnChangeFastColorPresetChange(val value: Boolean) : MainEvent()
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt
index 20d6cf7d..9510fe4a 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainModel.kt
@@ -33,7 +33,6 @@ import ua.acclorite.book_story.domain.reader.toTextAlignment
import ua.acclorite.book_story.domain.use_case.data_store.ChangeLanguage
import ua.acclorite.book_story.domain.use_case.data_store.GetAllSettings
import ua.acclorite.book_story.domain.use_case.data_store.SetDatastore
-import ua.acclorite.book_story.domain.use_case.remote.CheckForUpdates
import ua.acclorite.book_story.domain.util.toHorizontalAlignment
import ua.acclorite.book_story.presentation.core.constants.Constants
import ua.acclorite.book_story.presentation.core.constants.DataStoreConstants
@@ -52,7 +51,6 @@ class MainModel @Inject constructor(
private val setDatastore: SetDatastore,
private val changeLanguage: ChangeLanguage,
- private val checkForUpdates: CheckForUpdates,
private val getAllSettings: GetAllSettings
) : ViewModel() {
@@ -166,14 +164,6 @@ class MainModel @Inject constructor(
}
)
- is MainEvent.OnChangeCheckForUpdates -> handleDatastoreUpdate(
- key = DataStoreConstants.CHECK_FOR_UPDATES,
- value = event.value,
- updateState = {
- it.copy(checkForUpdates = this)
- }
- )
-
is MainEvent.OnChangeSidePadding -> handleDatastoreUpdate(
key = DataStoreConstants.SIDE_PADDING,
value = event.value,
@@ -516,18 +506,9 @@ class MainModel @Inject constructor(
viewModelScope.launch(Dispatchers.Main) {
val settings = getAllSettings.execute()
- // All additional execution
+ /* All additional execution */
changeLanguage.execute(settings.language)
- if (settings.checkForUpdates) {
- viewModelScope.launch(Dispatchers.IO) {
- checkForUpdates.execute(
- postNotification = true
- )
- }
- }
- /* - - - - - - - - - - - */
-
updateStateWithSavedHandle { settings }
mainModelReady.update { true }
}
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt
index 35c179df..55707176 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/main/MainState.kt
@@ -68,7 +68,6 @@ data class MainState(
val absoluteDark: Boolean = provideDefaultValue { false },
val themeContrast: ThemeContrast = provideDefaultValue { ThemeContrast.STANDARD },
val showStartScreen: Boolean = provideDefaultValue { true },
- val checkForUpdates: Boolean = provideDefaultValue { false },
val doublePressExit: Boolean = provideDefaultValue { false },
// Reader Settings
@@ -199,10 +198,6 @@ data class MainState(
PARAGRAPH_INDENTATION
) { paragraphIndentation },
- checkForUpdates = provideValue(
- CHECK_FOR_UPDATES
- ) { checkForUpdates },
-
sidePadding = provideValue(
SIDE_PADDING
) { sidePadding },
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsEvent.kt b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsEvent.kt
index 0dee3790..f8f256e4 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsEvent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsEvent.kt
@@ -9,23 +9,13 @@
package ua.acclorite.book_story.ui.settings
import android.content.Context
-import androidx.activity.ComponentActivity
import androidx.compose.runtime.Immutable
import androidx.compose.ui.graphics.Color
import com.google.accompanist.permissions.ExperimentalPermissionsApi
-import com.google.accompanist.permissions.PermissionState
import ua.acclorite.book_story.domain.util.ID
@Immutable
sealed class SettingsEvent {
-
- data class OnChangeCheckForUpdates(
- val enable: Boolean,
- val activity: ComponentActivity,
- val notificationsPermissionState: PermissionState,
- val onChangeCheckForUpdates: (Boolean) -> Unit
- ) : SettingsEvent()
-
data class OnSelectColorPreset(
val id: ID
) : SettingsEvent()
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt
index b2f101f8..3a958cbc 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/settings/SettingsModel.kt
@@ -27,7 +27,6 @@ import ua.acclorite.book_story.domain.use_case.color_preset.GetColorPresets
import ua.acclorite.book_story.domain.use_case.color_preset.ReorderColorPresets
import ua.acclorite.book_story.domain.use_case.color_preset.SelectColorPreset
import ua.acclorite.book_story.domain.use_case.color_preset.UpdateColorPreset
-import ua.acclorite.book_story.domain.use_case.permission.GrantNotificationsPermission
import ua.acclorite.book_story.presentation.core.constants.Constants
import ua.acclorite.book_story.presentation.core.constants.provideDefaultColorPreset
import ua.acclorite.book_story.presentation.core.util.showToast
@@ -36,7 +35,6 @@ import kotlin.random.Random
@HiltViewModel
class SettingsModel @Inject constructor(
- private val grantNotificationsPermission: GrantNotificationsPermission,
private val getColorPresets: GetColorPresets,
private val updateColorPreset: UpdateColorPreset,
private val selectColorPreset: SelectColorPreset,
@@ -52,7 +50,6 @@ class SettingsModel @Inject constructor(
private val _isReady = MutableStateFlow(false)
val isReady = _isReady.asStateFlow()
- private var notificationsPermissionJob: Job? = null
private var selectColorPresetJob: Job? = null
private var addColorPresetJob: Job? = null
private var deleteColorPresetJob: Job? = null
@@ -98,25 +95,6 @@ class SettingsModel @Inject constructor(
@OptIn(ExperimentalPermissionsApi::class)
fun onEvent(event: SettingsEvent) {
when (event) {
- is SettingsEvent.OnChangeCheckForUpdates -> {
- notificationsPermissionJob?.cancel()
- notificationsPermissionJob = viewModelScope.launch(Dispatchers.IO) {
- if (!event.enable) {
- event.onChangeCheckForUpdates(false)
- return@launch
- }
-
- grantNotificationsPermission.execute(
- activity = event.activity,
- notificationsPermissionState = event.notificationsPermissionState
- ).apply {
- if (this) {
- event.onChangeCheckForUpdates(true)
- }
- }
- }
- }
-
is SettingsEvent.OnSelectColorPreset -> {
viewModelScope.launch {
cancelColorPresetJobs()
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/start/StartEvent.kt b/app/src/main/java/ua/acclorite/book_story/ui/start/StartEvent.kt
index 19130eba..5111e65a 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/start/StartEvent.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/start/StartEvent.kt
@@ -16,17 +16,11 @@ import com.google.accompanist.permissions.PermissionState
@Immutable
sealed class StartEvent {
data class OnCheckPermissions(
- val storagePermissionState: PermissionState,
- val notificationsPermissionState: PermissionState
+ val storagePermissionState: PermissionState
) : StartEvent()
data class OnStoragePermissionRequest(
val activity: ComponentActivity,
val storagePermissionState: PermissionState
) : StartEvent()
-
- data class OnNotificationsPermissionRequest(
- val activity: ComponentActivity,
- val notificationsPermissionState: PermissionState
- ) : StartEvent()
}
\ No newline at end of file
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/start/StartModel.kt b/app/src/main/java/ua/acclorite/book_story/ui/start/StartModel.kt
index 2a8dfb96..04703f95 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/start/StartModel.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/start/StartModel.kt
@@ -21,14 +21,12 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.yield
-import ua.acclorite.book_story.domain.use_case.permission.GrantNotificationsPermission
import ua.acclorite.book_story.domain.use_case.permission.GrantStoragePermission
import javax.inject.Inject
@HiltViewModel
class StartModel @Inject constructor(
- private val grantStoragePermission: GrantStoragePermission,
- private val grantNotificationsPermission: GrantNotificationsPermission
+ private val grantStoragePermission: GrantStoragePermission
) : ViewModel() {
private val mutex = Mutex()
@@ -37,7 +35,6 @@ class StartModel @Inject constructor(
val state = _state.asStateFlow()
private var storagePermissionJob: Job? = null
- private var notificationsPermissionJob: Job? = null
@OptIn(ExperimentalPermissionsApi::class)
fun onEvent(event: StartEvent) {
@@ -45,20 +42,13 @@ class StartModel @Inject constructor(
is StartEvent.OnCheckPermissions -> {
viewModelScope.launch(Dispatchers.IO) {
val legacyStoragePermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.R
- val legacyNotificationPermission =
- Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU
-
val storagePermissionGranted = if (!legacyStoragePermission) {
Environment.isExternalStorageManager()
} else event.storagePermissionState.status.isGranted
- val notificationPermissionGranted = if (!legacyNotificationPermission) {
- event.notificationsPermissionState.status.isGranted
- } else true
_state.update {
it.copy(
- storagePermissionGranted = storagePermissionGranted,
- notificationsPermissionGranted = notificationPermissionGranted
+ storagePermissionGranted = storagePermissionGranted
)
}
}
@@ -81,24 +71,6 @@ class StartModel @Inject constructor(
}
}
}
-
- is StartEvent.OnNotificationsPermissionRequest -> {
- notificationsPermissionJob?.cancel()
- notificationsPermissionJob = viewModelScope.launch(Dispatchers.IO) {
- grantNotificationsPermission.execute(
- activity = event.activity,
- notificationsPermissionState = event.notificationsPermissionState
- ).apply {
- if (this) {
- _state.update {
- it.copy(
- notificationsPermissionGranted = true
- )
- }
- }
- }
- }
- }
}
}
@@ -106,8 +78,6 @@ class StartModel @Inject constructor(
viewModelScope.launch {
_state.update {
storagePermissionJob?.cancel()
- notificationsPermissionJob?.cancel()
-
StartState()
}
}
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt b/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt
index b370e9ea..b94fae97 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/start/StartScreen.kt
@@ -70,9 +70,6 @@ object StartScreen : Screen, Parcelable {
val storagePermissionState = rememberPermissionState(
permission = Manifest.permission.READ_EXTERNAL_STORAGE
)
- val notificationsPermissionState = rememberPermissionState(
- permission = Manifest.permission.POST_NOTIFICATIONS
- )
val currentPage = remember { mutableIntStateOf(0) }
val stackEvent = remember { mutableStateOf(StackEvent.Default) }
@@ -91,8 +88,7 @@ object StartScreen : Screen, Parcelable {
LaunchedEffect(Unit) {
screenModel.onEvent(
StartEvent.OnCheckPermissions(
- storagePermissionState = storagePermissionState,
- notificationsPermissionState = notificationsPermissionState
+ storagePermissionState = storagePermissionState
)
)
}
@@ -104,13 +100,10 @@ object StartScreen : Screen, Parcelable {
currentPage = currentPage.intValue,
stackEvent = stackEvent.value,
storagePermissionGranted = state.value.storagePermissionGranted,
- notificationsPermissionGranted = state.value.notificationsPermissionGranted,
storagePermissionState = storagePermissionState,
- notificationsPermissionState = notificationsPermissionState,
languages = languages,
changeLanguage = mainModel::onEvent,
storagePermissionRequest = screenModel::onEvent,
- notificationsPermissionRequest = screenModel::onEvent,
navigateForward = {
if ((currentPage.intValue + 1 == 3) && !state.value.storagePermissionGranted) {
return@StartContent
diff --git a/app/src/main/java/ua/acclorite/book_story/ui/start/StartState.kt b/app/src/main/java/ua/acclorite/book_story/ui/start/StartState.kt
index 16d7aa87..b2dede29 100644
--- a/app/src/main/java/ua/acclorite/book_story/ui/start/StartState.kt
+++ b/app/src/main/java/ua/acclorite/book_story/ui/start/StartState.kt
@@ -10,6 +10,5 @@ import androidx.compose.runtime.Immutable
@Immutable
data class StartState(
- val storagePermissionGranted: Boolean = false,
- val notificationsPermissionGranted: Boolean = false
+ val storagePermissionGranted: Boolean = false
)
\ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/notification_icon.png b/app/src/main/res/drawable-hdpi/notification_icon.png
deleted file mode 100644
index dda90fb4e473d98c93d7b05d1df374c859317dcd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 360
zcmV-u0hj)XP)#l|D(DI_8Y7D0$Q
ze(T%fIq#WyETl2>!N)6h{+*vx*;>tUrU?<5#Wmc=1MJ~8F6mhfGt0OWGa)6D1ePA%L
zLaBHm3om3*sZh#a*i=sS{sIiO@C85O_ZmC6fm_(eI~>JJ%Lv(9Jj6}OvR%Bw0e(t$
zcT4Y2hRYg~J(Y%`K_nEplq#=@Nx|}Y$=+hYhCX+ksplIk_Tma8<=i*`0000(w=D!cofPJ7
zZmfYY)Y}&Gxq^}2wwSaaCN210!2&Zl(Li{)AY!WzH+ZYy5&pj*)Y}$<0FSuFI+n49
zvv~K4DORz94P2V@exSGS!crDHxW|D>`tPSa!wJH*gu|l#jduV5002ovPDHLkV1gK`
BY!v_i
diff --git a/app/src/main/res/drawable-xhdpi/notification_icon.png b/app/src/main/res/drawable-xhdpi/notification_icon.png
deleted file mode 100644
index bf849efc988477b56313e88cdc022502ad8bb7a4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 433
zcmV;i0Z#sjP)}}lAVQ=t-m|U(#DdcC@fvi
zHD~d57Vo@s(WTB)&+6QB?)ly2&E*WkFbtys&bd|`#~r-HM|{UOe86+u!Ya1t{v^JR
zW4NtmdHt+Y+{6(q=>Dc)KoRHg&SmEoXR)Ye`A3+MdRA_5!i5B(spRUf5y}acWL6%J
zRJ|GYFt2w^#nqF4mp+-*p$h?wsuk0rVO~!NpkHQn>Ouf3ddF1U-wUv&cTB}ufG;dS
z0t*m=1xR24La+b{EI98WNLcHRA?yU8GeYbc#MlUjNRCaL$3a5yDw+5;Lq*iG!9^oSj8ng#Ai9{
z@Am(!WxZo2XlxT3{t)|1a24<6a?J~_V@3CBI8$(Px32v6rB{ETsV%hEfm=9cSAu%PqC?G
zhuu8$`<5rqOfSB-^GBQQ@z36MmPczo?=wDMp0=uzovlT{i9@kPASsJ6!SJqA{{_xp
zE&G<`NAExXg14$CZ~5YqsF>wCWqPrG<(D3R5v%pPzoly5qW%}6RWtf7yB5xMOFXQ&
zYiiu``vJZ3U-<4ebBUkZ%Kb8~YW}}7SF{hOSIx^?(p>m9Wy24jUEGPsgFZ}@Tg3e+
zF1I3QhTH=AqV#Le8Sl2({}3;4VRe7;wq||GjpU8noX=1FlDWl8aJ%np~$HnJTTs_abkP
zg5fqz?M=4XjsJL0L`;4g$*rLvPdWOtw_#dZ)j5Y<{VFz9S_;39uUY>3#mpBG!Cyig
z{xh+LG%#s7Fp4f{;0kbH)mXqJ62Qo{f`K*Uz^fm1+Rgv?GEDZ}Kc!IfHty@^|8WQQ
z73tdYT@-C$oKzk7(eH*sC-0UyOWdRPi@#9$J1=rN*KFa+4ukeWriITntAwAriNBe5
zsYhkQ1*58|b&fkWtp8%W*X_Gv5ATzGQ_des{`^wn&=vog-S6AZmPZIkzqqr*Us_Ij
z$!dYNG`-8^9J5ny*~U0^9be5^k@)#V-Y=%78!P!{e|u^5<5KyDwC5LczZB|q+01|8
zXeBfM|NRDow5>DeIZL!+-6iIO-h&N+G~xvP^D2<7=(7?ZV9xe*aSW-5dpkF_qbE`1xOjH$
zmZ<1AOV7_vjs8@+P(W$=5|Q#r+Nwp57e7f-e(EH$HfpDWlaStyK%r{I`HIr3pHvI(
zcKK=ZFMa;aTb73J&z&(YPMiIIecjfxcJHgt+59iRKXcZz99LGw76B&?7;(v7aH7@?
zhU*9Reh}Kje*2;E51X%_l`B}~8fQP0iAX*#E<9(ym|nx}2Z1-ZZa=sj5`XKyaE0`|
z=G_myEco~~J=d1J5ThEy!+&u4hyEwW#48xrwJpw_8*`xY)q|)C!MeAh+R}9g+Y8j^
zFtOjT(pxZ5uwZh_YPIXW|K;aDOtgsIRC8#ToL{T1kW+7GTcN04`_ye^fesHB7TDHY
z-o2UWqwu`8uiN_T8%u>Be!NoH>Y~5Hx}YH<-`X%HvZnWhyI1`R3_
z4aPhNB-tMDFc-8jS{!DWlgMz+fFYeiVa?YJ-)^_^O>t$o|B&VK^t!-5%OamUMzSn;
zQPJosv~Q~==RD8BXtdBS4bZTFkhje`zJB*}8k$52{Cg17k7xi@b&Hu(~9szI`w<^>rd5r{~kHX
dJ9Qn5|MZu+C~IeA05JD4c)I$ztaD0e0sySRllK4s
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index fee4c542..ccb4709e 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -1,18 +1,16 @@
+
+ -->
+
+
التاريخ
يمكنك اختيار أي الكُتب تريد إضافتها. يمكنك تعديل العنوان و صورة غلاف الكتاب لاحقا. عملية التحميل يمكن أن تستغرق حتى بضع دقائق.
نحتاج إذن التخزين لفحص جهازك من أجل الكُتب. من دون هذا الإذن، لن تكون قادرا على إضافة كتاب.
- التحديث %1$s تم نشره للتو! انقر للذهاب الى صفحة الإصدار.
اختر الفئة التي تريد نقل هذا الكتاب إليها. سيتم نقل هذا الكتاب إلى الفئة المُحدّدة.
- تم العثور على إصدار جديد من Book\'s Story. هل تريد الإنتقال الى صفحة الاصدار ؟
- التحديثات الجديدة
- تحديث جديد ل Book\'s Story!
- تحميل
المكتبة
تصفح
الإعدادات
@@ -25,22 +23,18 @@
حذف الكتاب؟
نقل الكتاب؟
حذف تاريخ القراءة؟
- تفعيل التحقق من التنبيهات؟
اختر الفئة التي تريد نقل جميع الكُتب (%1$s) المُحدّدة. جميع الكُتب المُحدّدة سيتم نقلها إلى الفئة المُحدّدة.
هذا سيحذف جميع الكُتب (%1$s) المُحدّدة من قاعدة البيانات. هذا لن يحذف الكُتب المُحدّدة مِن جهازك.
هذا سيحذف هذا الكتاب من قاعدة البيانات. هذا لن يحذف الكتاب من جهازك.
هذا سيحذف التاريخ بأكمله من قاعدة البيانات. بعد حذف التاريخ بأكمله، سيتم إعادة ضبط ترتيب الكُتب.
- بتفعيل «البحث عن التحديثات» سيستخرج التطبيق معلومات اخر اصدار من «api.github.com» في كل مرة عند تشغيل التطبيق. هل تريد المضي قدما و تفعيل «البحث عن تحديثات»؟
حدث خطأ ما.
لم يتم العثور على تطبيق ترجمة.
لم يتم العثور على متصفح.
الملف فارغ أو فاسد أو مفقود. يرجى التحقق من الملف أو تحديث المسار و المحاولة مرة أخرى.
- حدث خطأ ما. حاول مرة أخرى لاحقا.
مغلق المصدر
اقرأ كُتبك المُفضلة و رتبهم باستخدام الفئات
دع آخر كتاب قرأته يفتح صفحات قصة جديدة عظيمة من رحلة قرائتك
غير قادر على إعادة ضبط صورة الغلاف.
- تحديث %1$s
إلغاء
امنح
امنح الإذن
@@ -93,7 +87,6 @@
نوع الخط
حجم الخط
تباعد الفقرة
- التحقق من التحديثات الجديدة للتطبيق عند بدء التطبيق
عام
إزاحة الفقرة
مفعل
@@ -113,7 +106,6 @@
ارتفاع الخط
لون الخلفية
لون الخط
- التحقق من وجود تحديثات
النقر المزدوج للترجمة
النقر المزدوج على فقرة لترجمتها
قائمة
@@ -135,7 +127,6 @@
حُذفت جميع الكُتب المُحدّدة بنجاح.
تم النسخ
تم حذف صورة الغلاف بنجاح.
- أحدث إصدار من التطبيق مثبت بالفعل.
حُذف التاريخ بنجاح.
تم إعادة تعيين صورة الغلاف بنجاح.
عالي
@@ -165,7 +156,6 @@
ابدأ
المركز
المسار
- انقر للتحقق من وجود تحديثات
الإبلاغ عن خطأ
ما الجديد
النهاية
@@ -344,7 +334,6 @@
إعدادات القارئ
تطبيق الهامش على منطقة القطع
مطلوب
- مطلوب للتحقق من إصدار تطبيق أحدث
خطأ
لم يتم العثور غلاف صورة
المزيد
@@ -354,7 +343,6 @@
سهم
منحت
إذن التخزين
- إذن الإشعارات
أمس
ترتيب الفرز
الأذونات
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index ae606ede..d6579d0b 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -7,7 +7,6 @@
Tato kniha byla úspěšně smazána.
Neptun
- Nová verze aplikace byla nalezena. Chcete přejít na stránku verzí?
Barva pozadí
Barva fontu
Podle systému
@@ -25,7 +24,6 @@
Uran
Pluto
Čtěte vaše oblíbené knihy a třiďte je do kategorií
- Stáhnout
Jazyk aplikace
Saturn
Ano, přejít na pomoc
@@ -51,7 +49,6 @@
Ikony
Nápady
Smazat historii čtení?
- Nejnovější verze aplikace už je nainstalována.
Neznámý
Fonty
Standardní
@@ -64,7 +61,6 @@
Pomozte překládat
Filtr
Čtečka
- Aktualizace %1$s
Potřebuji pomoc
List
Úplně tmavé
@@ -72,7 +68,6 @@
Různé
Můžete si vybrat, které knihy chcete přidat. Název i obálku knihy si můžete změnit později. Načítání knih může trvat i několik minut.
Čtečka
- Něco se pokazilo. Zkuste to znovu později.
Co je nového
Témata, barvy
Font, texty, překladač
@@ -88,7 +83,6 @@
Povolit oprávnění
Velikost mřížky
Smazat knihy?
- Zapnutím «Zkontrolovat aktualizace» bude aplikace získávat informace o nových verzích z «api.github.com» při každém spuštění. Chcete pokračovat a zapnout «Zkontrolovat aktualizace»?
Normální
Žádná aplikace pro překladač nebyla nalezena.
Resetovat obálku knihy na výchozí
@@ -115,7 +109,6 @@
Zelená
Zkopírováno
Celá obrazovka
- Hledat aktualizace
Překlad na dvojité kliknutí
Nechat obrazovku zapnutou
Formát souboru
@@ -140,7 +133,6 @@
Vrátit
Tloušťka řádku
Žádná aplikace pro prohlížeč nebyla nalezena.
- Nová aktualizace Book\'s Story!
Procházet
O aplikaci
Přidat knihy?
@@ -181,7 +173,6 @@
Rychlost čtení
Systém
Resetovat obálku
- Klepněte pro zkontrolování aktualizací
Přejít na
Zapnutý
Spořič
@@ -199,11 +190,9 @@
Překlad
Jas obrazovky
Jak přidám knihy do Knihovny?
- Nové aktualizace
Obálka byla úspěšně smazána.
Pokud nevidíte stažené knihy, zkuste obnovit stránku. Zkontrolujte, jestli mají vaše knihy podporované formáty souborů. Potom klepněte na knihu pro vybrání nebo ji podržte pro zjištění její lokace. Potom co vyberete všechny knihy které chcete, klepněte na ikonu zaškrtnutí v pravém horním rohu, počkejte než se všechny knihy načtou a klepněte na «Přidat». Teď by jste měli vidět všechny knihy přidané v
Vlastní jas obrazovky
- Hledat nové verze aplikace při spuštění
Citlivost
Nastavení
Vyžadováno, abychom mohli skenoval Vaše úložiště a hledat knihy
@@ -220,14 +209,11 @@
Jak přesunu nebo smažu knihy?
Přidat soubory
Uzavřený zdroj
- Aktualizace %1$s byla vydána! Klepněte pro přejití na stránku verzí.
Vybrané
Obálka nebyla nalezena
Hledat
Otevřít na webu
- Oprávnění oznámení
Přejít na
- Vyžadováno pro kontrolu novějších verzí aplikace
Právě jste dokončili základní nastavení aplikace! Chcete se naučit jak aplikaci ovládat, tím že přejděte do Pomocí?
Včera
Jít zpět
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index b6afada6..4e882379 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -5,9 +5,6 @@
-->
- Neue Updates
- Update %1$s wurde gerade veröffentlicht! Klicken Sie hier, um zur Veröffentlichungsseite zu gelangen.
- Download
Bibliothek
Verlauf
Durchsuchen
@@ -18,21 +15,17 @@
Buch löschen?
Buch verschieben?
Leseverlauf löschen?
- Überprüfen von Updates aktivieren?
Sie können auswählen, welche Bücher Sie hinzufügen möchten. Titel und Coverbild des Buches können Sie später bearbeiten. Der Ladevorgang kann mehrere Minuten dauern.
Wählen Sie die Kategorie, in die Sie alle ausgewählten Bücher verschieben möchten (%1$s). Alle ausgewählten Bücher werden in die ausgewählte Kategorie verschoben.
Dadurch wird das Buch aus der Datenbank gelöscht. Von Ihrem Gerät wird das Buch jedoch nicht gelöscht.
Wählen Sie die Kategorie aus, in die Sie dieses Buch verschieben möchten. Dieses Buch wird in die ausgewählte Kategorie verschoben.
- Durch Aktivieren von „Nach Updates suchen“ ruft die App bei jedem Start der App die neuesten Versionsinformationen von „api.github.com“ ab. Möchten Sie fortfahren und „Nach Updates suchen“ aktivieren?
Keine Beschreibung.
Der Buchinhalt ist leer. Bitte stellen Sie sicher, dass der Buchinhalt nicht leer ist und aktualisieren Sie ihn.
- Etwas ist schiefgelaufen. Versuche es später erneut.
Titelbild konnte nicht zurückgesetzt werden.
Geschlossene Quelle
Lesen Sie Ihre Lieblingsbücher und sortieren Sie sie nach Kategorien
Lassen Sie Ihr letztes gelesenes Buch die Seiten einer neuen großartigen Geschichte Ihrer Lesereise öffnen
%1$s ausgewählt
- %1$s aktualisieren
Ausgewählt «%1$s»
Abbrechen
Gewähren
@@ -70,8 +63,6 @@
Farbvorgabe
Hintergrundfarbe
Schriftfarbe
- Nach Updates suchen
- Beim Start nach einer neueren App-Version suchen
Seitenränder
Doppelklicken Sie auf die Übersetzung
Doppelklicken Sie auf den Absatz, um ihn zu übersetzen
@@ -103,7 +94,6 @@
Dieses Buch wurde erfolgreich verschoben.
Kopieren
Dieses Buch wurde erfolgreich gelöscht.
- Die neuste Version der App ist bereits installiert.
Das Titelbild wurde erfolgreich zurückgesetzt.
Das Verlaufselement wurde erfolgreich gelöscht.
Quecksilber
@@ -133,8 +123,6 @@
Gewährt
Speicherberechtigung
Erforderlich, um Ihr Gerät zu scannen und Bücher zu finden
- Benachrichtigungsberechtigung
- Erforderlich, um nach einer neueren App-Version zu suchen
Alles ist erledigt!
Sie haben die Grundeinstellungen der App erfolgreich abgeschlossen. Möchten Sie anhand des Hilfebildschirms erfahren, wie Sie die App verwenden?
Heute
@@ -157,8 +145,6 @@
Zurücksetzen
Ausgewählt
App-Symbol
- Neues Update von Book\'s Story!
- Es wurde eine neue App-Version gefunden. Möchten Sie fortfahren und zur Veröffentlichungsseite gehen?
Wenn Sie die heruntergeladenen Bücher nicht sehen, versuchen Sie, die Liste zu aktualisieren, indem Sie sie nach unten ziehen. Stellen Sie sicher, dass Ihre Bücher das unterstützte Dateiformat haben. Klicken Sie dann auf das Buch, um es auszuwählen, oder halten Sie gedrückt, um seinen Speicherort anzuzeigen. Nachdem Sie alle gewünschten Bücher ausgewählt haben, klicken Sie auf das Häkchensymbol in der oberen rechten Ecke, warten Sie, bis alle Bücher geladen sind, und klicken Sie auf «Hinzufügen». Jetzt sollten Sie alle Bücher sehen, die Sie in der Liste hinzugefügt haben
Hilfe
Berechtigung erteilen?
@@ -197,7 +183,6 @@
Normal
Kursiv
Unbekannt
- Klicken Sie hier, um nach Updates zu suchen
Was ist neu
Open Source-Lizenzen
Credits
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index ee8dabd8..9bab7393 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -1,12 +1,12 @@
+
- Nuevas actualizaciones
- ¡Actualización %1$s recién lanzada! Haz clic para ir a la página de lanzamiento.
- Descargar
+ -->
+
+
Biblioteca
Historial
Navegar
@@ -18,10 +18,8 @@
¿Mover libros?
¿Borrar libros?
¿Borrar libro?
- ¡Nueva actualización de Book\'s Story!
¿Mover libro?
¿Borrar el historial de lectura?
- ¿Comprobar actualizaciones?
Elija la categoría a la que desea mover todos los libros seleccionados (%1$s). Todos los libros seleccionados serán trasladados a la categoría seleccionada.
Elija la categoría a la que quiere mover este libro. Este libro será trasladado a la categoría seleccionada.
Eliminará todo el historial de la base de datos. Después de borrar todo el historial, el orden de los libros se restablecerá.
@@ -57,8 +55,6 @@
Indentación del párrafo
Color de fondo
Color de fuente
- Buscar actualizaciones
- Buscar nueva versión de la aplicación al abrirla
Relleno lateral
Traducción de doble clic
Rojo
@@ -83,22 +79,17 @@
¡Bienvenid@ a Book\'s Story!
Arrastrar
Borrar
- Permisos de notificación
Necesitamos permiso de almacenamiento para escanear su dispositivo en busca de libros. Sin este permino, no podrá añadir libros.
Eliminará todos los libros seleccionados(%1$s) de la base de datos. No eliminará los libros seleccionados de su dispositivo.
Puede escoger qué libros desea añadir. Puede editar el título y la portada del libro más adelante. El proceso de carga puede durar varios minutos.
Eliminará este libro de la base de datos. No eliminará este libro de su dispositivo.
- Se encontró una nueva versión de la aplicación. ¿Quieres continuar e ir a la página de actualizaciones?
No se ha encontrado ninguna aplicación de traducción.
El contenido del libro está vacío. Por favor, asegúrate de que el contenido del libro no está vacío y actualizado.
- Algo salió mal. Inténtelo de nuevo más tarde.
- Al habilitar «Comprobar actualizaciones» la aplicación conseguirá la última información de lanzamiento de «api.github.com» cada vez que comience la aplicación. ¿Quieres continuar y habilitar «Comprobar actualizaciones»?
No se pudo reiniciar la portada.
Expanda la colección de libros de la biblioteca con sus descargas
Lea sus libros favoritos y ordénelos en categorías
Deje que su último libro leído abra las páginas de una nueva gran historia en su viaje de lectura
Traducir
- Actualizar %1$s
Conceder permiso
Nunca
Copiar
@@ -139,7 +130,6 @@
Presione atrás de nuevo para salir
La portada fue eliminada.
Para empezar a leer el libro haga clic en el botón en la esquina inferior derecha del libro que desea leer. También puede comenzar a leer el libro haciendo clic en la portada para ver los detalles del libro y luego haga clic en el botón en la esquina inferior derecha. El progreso será guardado y restaurado automáticamente. Puede traer barras superiores e inferiores haciendo clic en cualquier lugar de la pantalla. Al hacer clic en el título del libro será transferido a los detalles del libro. Al hacer clic en el icono de engranaje verá los ajustes del lector. Puedes usar el control deslizante de la barra inferior para cambiar el progreso.
- La última versión de la aplicación ya está instalada.
La imagen de la portada se restableció correctamente.
El libro fue eliminado.
Júpiter
@@ -159,7 +149,6 @@
Desconocido
Versión de la aplicación
Book\'s Story v%1$s
- Haz clic para comprobar si hay actualizaciones
¡Gloria a Ucrania!
Diseño
Ir a la
@@ -191,7 +180,6 @@
¿Cómo utilizo la traducción de doble clic?
¡Hacia un mundo donde las palabras cautivan, enseñan y conducen a increíbles aventuras! ¡Vamos a preparar algunas cosas!
Concedido
- Requerido para buscar si hay una versión más reciente de la aplicación
¡Todo está listo!
Permiso de almacenamiento
En primer lugar, vaya a los ajustes del lector (ver: ¿Cómo personalizo el lector?), luego encienda el ajuste correspondiente. Después de eso, comienza a leer el libro (ver: ¿Cómo leo un libro?). Ahora si hace doble clic en el párrafo deseado, el traductor externo se abrirá con el texto del párrafo.
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 57ddc98a..246b84ff 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -5,7 +5,6 @@
-->
- Télécharger
Bibliothèque
Historique
Naviguer
@@ -18,23 +17,19 @@
Supprimer le livre ?
Déplacer le livre ?
Effacer l\'historique de lecture ?
- Activer la vérification des mises à jour ?
Vous pouvez choisir les livres que vous souhaitez ajouter. Vous pouvez modifier le titre et l\'image de couverture du livre par la suite. Le chargement peut prendre plusieurs minutes.
Cela supprimera tous les livres sélectionnés (%1$s) de la base de données. Ceci ne supprimera pas les livres sélectionnés de votre appareil.
Cela supprimera ce livre de la base de données. Ceci ne le supprimera pas de votre appareil.
Choisissez la catégorie dans laquelle vous souhaitez déplacer ce livre. Ce dernier sera déplacé vers la catégorie choisie.
- En activant la fonction “Vérifier les mises à jour”, l\'application récupérera les informations de la dernière version de “api.github.com” à chaque fois que l\'application démarrera. Voulez-vous continuer et activer “Vérifier les mises à jour” ?
Nous avons besoin de l\'autorisation de stockage pour scanner votre appareil à la recherche de livres
Aucune application de traduction n\'a été trouvée.
Aucune application de dictionnaire n\'a été trouvée.
Aucune application pour partager n\'a été trouvée.
- Quelque chose s\'est mal passé. Réessayez plus tard.
L\'image de couverture n\'a pas pu être réinitialisée.
Source fermée
Élargissez la collection de livres de la bibliothèque par vos téléchargements
Lisez vos livres préférés et classez-les par catégories
%1$s sélectionné
- Mise à jour %1$s
Préréglage %1$s
Sélectionné « %1$s »
Déplacer
@@ -134,7 +129,6 @@
Ce livre a été déplacé avec succès.
Copié
L\'historique a été supprimé avec succès.
- La dernière version de l\'application est déjà installée.
L\'image de couverture a été réinitialisée avec succès.
Cet élément de l\'historique a été supprimé avec succès.
Chemin du fichier
@@ -142,7 +136,6 @@
Taille du fichier
Inconnu
Book\'s Story v%1$s
- Cliquez pour vérifier les mises à jour
Signaler un bug
Nouveautés
Licences Open source
@@ -189,8 +182,6 @@
Autorisé
Permission de Stockage
Nécessaire pour scanner votre appareil et trouver des livres
- Permission de notifications
- Nécessaire pour vérifier si une nouvelle version de l\'application est disponible
Tout est prêt!
Hier
Poursuivre la lecture
@@ -223,16 +214,12 @@
Tryzub
Profile Github
Glisser
- Nouvelles mises à jour
Nous avons besoin de l\'autorisation de stockage pour scanner votre appareil et trouver des livres. Sans cette autorisation, vous ne pourrez pas ajouter de livre.
Choisissez la catégorie dans laquelle vous souhaitez déplacer tous les livres sélectionnés (%1$s). Tous les livres sélectionnés seront déplacés vers la catégorie choisie.
- La mise à jour %1$s vient d\'être réalisée! Cliquez pour accéder à la page de publication.
- Nouvelle mise à jour de Book\'s Story!
Ajouter des livres ?
Pas de description.
Quelque chose s\'est mal passé.
L\'historique complet sera supprimé de la base de données. Après la suppression de tout l\'historique, l\'ordre des livres sera réinitialisé.
- Une nouvelle version de l\'application a été trouvée. Voulez-vous continuer et aller à la page de publication ?
Aucune application de navigation n\'a été trouvée.
Le contenu du livre est vide. Veuillez vous assurer que le contenu du livre n\'est pas vide et de le mettre à jour.
Laissez le dernier livre que vous avez lu ouvrir les pages d\'une grande et nouvelle histoire dans votre aventure de lecture
@@ -249,11 +236,9 @@
Thème sombre
Noir pur (OLED)
Thème de l\'application
- Vérifier les mises à jours
Double retour en arrière pour sortir
Hauteur du paragraphe
Contraste du thème
- Vérifier les nouvelles versions de l\'application lors du démarrage
Appuyer deux fois sur retour pour quitter l\'application
Famille de police
Style de police
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index aaee0d0b..4ae38388 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -5,9 +5,6 @@
-->
- नये अपडेट
- बुक्स स्टोरी का नया अपडेट!
- डाउनलोड करें
पुस्तकालय
इतिहास
सेटिंग्स
@@ -18,13 +15,10 @@
किताबें शामिल करें ?
किताबें स्थानांतरित करें?
किताब हटाएं?
- अपडेट्स की जाँच चालू करें?
वह श्रेणी चुनें जिसमें आप सभी चयनित पुस्तकों को ले जाना चाहते हैं(%1$s)। सभी चयनित पुस्तकें चयनित श्रेणी में ले जाई जाएँगी।
- नया ऐप वर्शन मिला। क्या आप आगे बढ़ना चाहते हैं और रिलीज़ पेज पर जाना चाहते हैं?
कुछ गड़बड़ हुआ है ।
कोई अनुवादक ऐप नहीं मिला ।
शेर करने के लिए कोई ऐप नहीं मिला ।
- कुछ ग़लत हुआ। बाद में पुनः प्रयास करें।
बंद स्रोत कोड
अपनी पसंदीदा पुस्तकें पढ़ें और उन्हें श्रेणियों के बीच क्रमित करें
अपनी आखिरी पढ़ी हुई किताब से अपनी पढ़ने की यात्रा की एक नई महान कहानी के पन्ने खोलिए
@@ -76,7 +70,6 @@
सामान्य
क्रमबद्ध करना
ऐप भाषा
- अपडेट %1$s अभी जारी हुआ! रिलीज़ पेज पर जाने के लिए क्लिक करें।
किताबें हटाएँ?
किताब को स्थानांतरित करें ?
और देखें
@@ -94,14 +87,12 @@
वह श्रेणी चुनें जिसमें आप इस पुस्तक को ले जाना चाहते हैं। यह पुस्तक चयनित श्रेणी में ले जाई जाएगी।
यह डेटाबेस से पूरा इतिहास मिटा देगा। पूरा इतिहास मिटाने के बाद, किताबों का क्रम फिर से सेट हो जाएगा।
हमें किताबों के लिए आपके डिवाइस को स्कैन करने के लिए भंडारण अनुमति की आवश्यकता है
- «अपडेट की जाँच करें» को सक्षम करके, ऐप हर बार ऐप शुरू होने पर «api.github.com» से नवीनतम रिलीज़ जानकारी प्राप्त करेगा। क्या आप आगे बढ़ना चाहते हैं और «अपडेट की जाँच करें» को सक्षम करना चाहते हैं?
कोई वर्णन नहीं।
कोई शब्दकोश ऐप नहीं मिला ।
कोई ब्राउज़र ऐप नहीं मिला ।
पुस्तक की सामग्री रिक्त है। कृपया जाँच करें कि पुस्तक की सामग्री रिक्त न हो और उसे अपडेट करें।
कवर छवि रीसेट नहीं की जा सकी ।
अपने डाउनलोड के साथ पुस्तकालय के पुस्तक संग्रह का विस्तार करें
- %1$s अपडेट करें
प्रीसेट %1$s
हटाना
मिटाना
@@ -113,8 +104,6 @@
पृष्ठभूमि का रंग पूरी तरह से काला करें
थीम कंट्रास्ट
ऐप थीम
- अद्यतनों के लिए जाँच करें
- स्टार्टअप पर ऐप के नए संस्करण की जाँच करें
बाहर निकलने के लिए दो बार पीछे जाने की बटन दबाएँ
बाहर निकलने के लिए दो बार पीछे जाने की बटन दबाएँ
फ़ॉन्ट परिवार
@@ -199,7 +188,6 @@
धारणा विस्तारक लाइन मोटाई
स्क्रीन अनुकूलन
लाल
- ऐप का नवीनतम संस्करण पहले से इंस्टॉल है।
कवर छवि सफलतापूर्वक रीसेट कर दी गई।
दस्तावेज पथ
फ़ाइल अंतिम बार खोली गई
@@ -216,7 +204,6 @@
मैं ऐप को कैसे अनुकूलित करूं?
के पास जाओ
किताब की कहानी v%1$s
- अपडेट जांचने के लिए क्लिक करें
नया क्या है
ओपन सोर्स लाइसेंस
माउस
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index a6b3daec..1440f85f 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -1,2 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 2f2280f2..461dae9b 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -1,13 +1,12 @@
+
- Nuovi aggiornamenti
- Nuovo aggiornamento di Book\'s Story!
- Aggiornamento %1$s appena rilasciato! Clicca per andare alla pagina del rilascio.
- Scarica
+ -->
+
+
Biblioteca
Cronologia
Predefinito
@@ -49,7 +48,6 @@
Elimina
Ricerca web
Abilitato
- Permesso per le notifiche
Icone
Preferenze tema
Indietro
@@ -64,7 +62,6 @@
Tutti i libri selezionati sono stati spostati correttamente.
Nessuna app browser trovata.
Cancellare la cronologia di lettura?
- Abilita controlli degli aggiornamenti?
Nessuna app dizionario trovata.
Abbiamo bisogno del permesso di archiviazione per la scansione del Tuo Dispositivo per i libri. Senza questo permesso, non sarai in grado di aggiungere i libri.
Fatto
@@ -86,7 +83,6 @@
Colori
Scegli la nuova copertina dalle tue foto
Sistema
- Controlla aggiornamenti
Preset colori
Indentazione paragrafo
Rosso
@@ -100,13 +96,10 @@
Puoi scegliere quali libri vuoi aggiungere. È possibile modificare il titolo e l\'immagine di copertina in seguito. Il processo di caricamento può richiedere fino a diversi minuti.
Elimina l\'intera cronologia dal database. Dopo avere eliminato la cronologia, l\'ordine dei libri sarà reimpostato.
Eliminerà tutti i libri selezionati (%1$s) dal database. Non eliminerà i libri selezionati dal tuo dispositivo.
- Nuova versione dell\'app trovata. Vuoi procedere alla pagina di rilascio?
- Abilitando il controllo degli aggiornamenti l\'app cercherà all\'avvio le informazioni sulla versione più recente da «api.github.com». Vuoi procedere e abilitare il controllo degli aggiornamenti?
Nessuna descrizione.
Qualcosa è andato storto.
Abbiamo bisogno del permesso di archiviazione per cercare i libri nel tuo dispositivo
Leggi i tuoi libri preferiti e ordinali per categoria
- Aggiorna %1$s
Ordina
Colori
Filtri
@@ -156,7 +149,6 @@
Caratteri
Preferenze lingua
Crea nuovo preset di colori
- Qualcosa è andato storto. Riprova più tardi.
Il file è vuoto, danneggiato o mancante. Verifica il file o aggiorna il percorso e riprova.
Come aggiungo libri alla Libreria?
Vai a
@@ -193,7 +185,6 @@
Luminosità
Ordinamento
Famiglia di font
- L\'ultima versione dell\'app è già installata.
Libreria
Benvenuti in Book\'s Story!
per riga
@@ -213,7 +204,6 @@
Libreria
Questo libro è stato spostato con successo.
Copiato
- Clicca per controllare gli aggiornamenti
La maggior parte dei pulsanti icona hanno dei suggerimenti, che possono aiutarti se non sai cosa fa un pulsante icona. Per mostrare il tooltip puoi tenere premuto su un pulsante icona.
Vai alla
Per prima cosa, vai alle impostazioni del Lettore(vedi: Come personalizzare il Lettore?), quindi attiva l\'impostazione corrispondente. Dopodiché, inizia a leggere il libro (vedi: Come leggere un libro?). Ora, se fai doppio clic sul paragrafo desiderato, verrà aperto un traduttore esterno con il testo del paragrafo.
@@ -276,7 +266,6 @@
Impostazioni
Ripristina immagine di copertina
Ripristina l\'immagine di copertina del libro al valore predefinito
- Controlla la versione più recente dell\'app all\'avvio
Premere due volte indietro per uscire
Stile del font
Margini laterali
@@ -301,7 +290,6 @@
Concesso
Autorizzazione di archiviazione
Necessario per scansionare il tuo dispositivo e trovare i libri
- Necessario per verificare la presenza di una versione più recente dell\'app
Hai completato con successo le impostazioni di base dell\'app. Vuoi imparare a usare l\'app leggendo la schermata di Aiuto?
Aggiungi file
La tua libreria
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 5c6059ce..c25c233e 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -5,7 +5,6 @@
-->
- Pobierz
Historia
Pomoc
Przenieś
@@ -30,8 +29,6 @@
Zielony
Niebieski
Wyłączono
- Nowe aktualizacje
- Nowa aktualizacja Book\'s Story!
Ustawienia
Biblioteka
Przeglądaj
@@ -55,13 +52,10 @@
Styl czcionki
Odstępy między literami
Język aplikacji
- Sprawdź dostępność aktualizacji
Tak, przejdź do Pomoc
Usuń obraz okładki
- Coś poszło nie tak. Spróbuj ponownie później.
Pluton
Planowanie
- Włączyć sprawdzanie aktualizacji?
Szybka zmiana ustawienia koloru
O aplikacji
Przyznać dostęp?
@@ -73,7 +67,6 @@
Wybierz kategorię, do której chcesz przenieść wszystkie wybrane książki (%1$s). Wszystkie wybrane książki zostaną przeniesione do wybranej kategorii.
To spowoduje usunięcie tej książki z bazy danych, ale nie usunie jej z twojego urządzenia.
To spowoduje usuniecie całej historii z bazy danych. Po usunięciu całej historii kolejność książek zostanie zresetowana.
- Włączając « Sprawdź aktualizacje », aplikacja pobierze najnowsze informacje o wersji z « api.github.com » za każdym razem, gdy aplikacja się uruchomi. Czy chcesz kontynuować i włączyć «Sprawdź aktualizacje»?
Potrzebujemy uprawnień do przechowywania, aby przeskanować Twoje urządzenie w poszukiwaniu książek
Brak opisu.
Coś poszło nie tak.
@@ -84,7 +77,6 @@
Przeczytaj swoje ulubione książki i posortuj je między kategoriami
Niech ostatnia czytana książka otworzy strony nowej wspaniałej historii twojej czytelniczej podróży
Wybrano %1$s
- Zaktualizuj %1$s
Wyszukiwanie w sieci
Zmień obraz okładki
Czytanie
@@ -97,7 +89,6 @@
Zmień kolor tła na całkowicie czarny
Kontrast motywu
Motyw aplikacji
- Sprawdź przy uruchomieniu, czy jest dostępna nowsza wersja aplikacji
Naciśnij dwukrotnie wstecz, aby wyjść z aplikacji
Rodzina czcionek
Rozmiar czcionki
@@ -127,7 +118,6 @@
Przesuń w lewo lub w prawo, aby zmienić ustawienie koloru
Treść książki jest pusta. Upewnij się, że zawartość książki nie jest pusta i zaktualizuj ją.
Nie znaleziono aplikacji tłumacza.
- Znaleziono nową wersję Book\'s Story. Chcesz ją pobrać? Klikając przycisk « Pobierz », zostaniesz przeniesiony do przeglądarki i automatycznie pobierzesz najnowszą aktualizację.
Siatka
Standardowy
Zresetuj obraz okładki
@@ -156,7 +146,6 @@
Ogólne, filtr, sortowanie
Tłumacz
System
- Aktualizacja%1$s właśnie została wydana! Kliknij, aby przejść do strony.
Wybierz nową okładkę ze swoich zdjęć
Preset %1$s
Usuń bieżący obraz okładki książki
@@ -188,7 +177,6 @@
Zacznij czytać książkę (patrz: Jak mogę przeczytać książkę?), A następnie przynieś górne i dolne paski, klikając w dowolnym miejscu na ekranie. Następnie kliknij ikonę zębatki w prawym górnym rogu. Spowoduje to wyświetlenie wszystkich ustawień Czytnika. Drugim sposobem jest przejście do
Nazwij ustawienie…
Rozmiar siatki
- Zezwolenie na powiadomienia
Kolejność sortowania
Nie znaleziono obrazu okładki
Wnieśli wkład
@@ -199,7 +187,6 @@
Wysoki
Obraz okładki został pomyślnie zmieniony.
Ta książka została pomyślnie przeniesiona.
- Najnowsza wersja aplikacji jest już zainstalowana.
Obraz okładki został pomyślnie zresetowany.
Element historii został pomyślnie usunięty.
Plik ostatnio otwarty
@@ -223,7 +210,6 @@
Jak mogę tworzyć i modyfikować ustawienia kolorów?
Preferencje języka
Uprawnienie do przechowywania
- Wymagane, aby sprawdzić nowszą wersję aplikacji
Dzisiaj
Wróć
Obraz okładki
@@ -255,7 +241,6 @@
Rozdziały
Brak rozdziałów
Rozdziały
- Kliknij, aby sprawdzić aktualizacje
Jeśli nie widzisz pobranych książek, spróbuj odświeżyć listę, przeciągając ją w dół. Upewnij się, że Twoje książki posiadają obsługiwany format pliku. Następnie kliknij książkę, aby ją wybrać lub przytrzymaj, aby pokazać jej lokalizację. Po wybraniu wszystkich książek, które chcesz, kliknij ikonę znacznika wyboru w prawym górnym rogu, poczekaj na załadowanie wszystkich książek i kliknij « Dodaj ». Teraz powinieneś zobaczyć wszystkie książki, które dodałeś do
Historia czytania
Opuść wyszukiwanie
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 2392fffd..7a21f2ab 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -9,7 +9,6 @@
Mover livro?
Apagar livro?
Padrão
- Habilitar verificação de atualizações?
Cancelar
Mover
Nunca
@@ -28,7 +27,6 @@
Permitir
Feito
Desabilitado
- Baixar
Apagar livros?
Biblioteca
Configurações
@@ -57,9 +55,6 @@
Texto
Miscelânea
Desabilitado
- Novas Atualizações
- A atualização %1$s acabou de lançar! Clique para ir à página de lançamento.
- Novo update do Book\'s Story!
Adicionar livros?
Precisamos de permissão de acesso ao armazenamento para procurar livros no seu dispositivo. Sem essa permissão, você não será capaz de adicionar um livro.
Apagar
@@ -166,8 +161,6 @@
Lido
Tamanho da grade
Dar permissão
- Atualizar %1$s
- Nova versão do aplicativo disponível. Deseja seguir para a página de lançamentos?
Sem descrição.
%1$s selecionado
Código fechado
@@ -185,7 +178,6 @@
Mais
Caminho
Tryzub
- Ativando «Verificação de atualizações» o aplicativo receberá as informações mais recentes de «api.github.com» toda vez que ele for iniciado. Deseja prosseguir e ativar «Verificação de atualizações»?
Prefêrencia de temas
Ordem de classificação
Continuar a ler
@@ -194,7 +186,6 @@
Permissão de armazenamento
O que há de novo
Ajude a traduzir
- Permissão de notificações
Está tudo feito!
Imagem da capa
Configurações do leitor
@@ -213,7 +204,6 @@
Trocar imagem da capa
Fonte, texto, tradutor
Geral, filtro, ordem
- Procurar atualizações
Manter a tela ligada
Adicionar arquivos
Sua biblioteca
@@ -243,7 +233,6 @@
Leia seus livros favoritos e organize-os em categorias
Não foi possível restaurar a imagem da capa.
Espessura da linha
- Algo deu errado. Tente novamente.
Aumente sua velocidade de leitura focando no centro
Clique duas vezes no parágrafo para traduzi-lo
Troca rápida do padrão de cores
@@ -252,7 +241,6 @@
Restaure a imagem do livro de volta para o padrão
Escolha a nova capa das suas fotos
Apagar a imagem atual da capa do livro
- Procurar por uma atualização do app ao abrir
Traduzir com toque duplo
Volte duas vezes para sair
Aplique uma margem para área de recorte
@@ -280,7 +268,6 @@
Destaque o início de cada palavra
Como faço para mover ou excluir livros?
Como faço para editar um livro?
- Clique para verificar se há atualizações
Como faço para gerenciar o histórico?
Abrir no navegador
Nomeie o padrão…
@@ -291,7 +278,6 @@
Vá para as configurações de Aparência (veja: Como personalizar o Reader?). Você pode modificar todas as configurações de predefinições de cores na caixa em «Predefinição de cores» na subcategoria «Cores». Para criar uma nova predefinição de cores, clique no botão de ícone «Adicionar». Existem várias maneiras de modificar uma predefinição de cores: clicando no campo de texto, você pode alterar o nome da predefinição de cores, movendo os controles deslizantes, você pode alterar as cores da predefinição de cores, clicando no botão de ícone «Aleatório», você pode embaralhar todas as cores. Se quiser excluir a predefinição de cores, clique no botão de ícone «Excluir».
nível
Apagar elemento do histórico
- Necessário verificar se há uma versão mais recente do aplicativo
O que é e como usar o Expansor de Percepção?
Voltar ao ponto-salvo
Espessura da marcação
@@ -355,7 +341,6 @@
Primeiro, vá para as configurações do Reader (veja: Como personalizar o Leitor?), então ative a configuração correspondente. Depois disso, comece a ler o livro (veja: Como ler um livro?). Agora, se você clicar duas vezes no parágrafo desejado, o tradutor externo será aberto com o texto do parágrafo.
Ligado (Inverso)
Apagar o histórico inteiro
- A última versão do aplicativo já está instalada.
Makemake
Fixar
Arquivo não existe
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 21a65625..ae52b102 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -5,6 +5,5 @@
-->
- Update nou
Standard
\ No newline at end of file
diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml
index d39c8eff..eff84716 100644
--- a/app/src/main/res/values-ta/strings.xml
+++ b/app/src/main/res/values-ta/strings.xml
@@ -10,9 +10,7 @@
நூலகம்
வரலாறு
புத்தகங்களைச் சேர்க்கவா?
- புதுப்பிப்புகளை சரிபார்க்கவா?
இந்த புத்தகத்தை நீங்கள் நகர்த்த விரும்பும் வகையைத் தேர்வுசெய்க. இந்த நூல் தேர்ந்தெடுக்கப்பட்ட வகைக்கு மாற்றப்படும்.
- புதிய பயன்பாட்டு பதிப்பு கண்டறியப்பட்டது. நீங்கள் தொடர விரும்புகிறீர்களா?
ஏதோ தவறு நடந்தது.
மூடிய மூல
உங்கள் பதிவிறக்கங்களுடன் நூலகத்தின் புத்தக சேகரிப்பை விரிவாக்குங்கள்
@@ -105,11 +103,9 @@
கோப்பு வடிவம்
இயல்புநிலை
வாசிப்பு வரலாற்றை நீக்கவா?
- செயல்படுத்துவதன் மூலம் «புதுப்பிப்புகளைச் சரிபார்க்கவும்» பயன்பாடு தொடங்கும் ஒவ்வொரு முறையும் «api.github.com இருந்து இலிருந்து அண்மைக் கால வெளியீட்டு தகவல்களை மீட்டெடுக்கும். நீங்கள் தொடர விரும்புகிறீர்களா «புதுப்பிப்புகளை சரிபார்க்கவும்»?
புத்தகங்களுக்காக உங்கள் சாதனத்தை ச்கேன் செய்ய எங்களுக்கு சேமிப்பக இசைவு தேவை
விளக்கம் இல்லை.
%1$s தேர்ந்தெடுக்கப்பட்டன
- புதுப்பிப்பு %1$s
செயல்தவிர்
நகலெடு
மொழிபெயர்த்திடு
@@ -161,7 +157,6 @@
தோற்ற அமைப்புகளுக்குச் செல்லுங்கள் (பார்க்க: வாசகரை எவ்வாறு தனிப்பயனாக்குவது?). «வண்ண முன்னமைக்கப்பட்ட» அமைப்பில் எந்த வண்ண முன்னமைவைப் பயன்படுத்த வேண்டும் என்பதை நீங்கள் தேர்வு செய்யலாம். அதைத் தேர்ந்தெடுக்க விரும்பிய வண்ண முன்னமைவைக் சொடுக்கு செய்க, இது உங்கள் வண்ணங்களை வாசகரில் மாற்றும். வண்ண முன்னமைவை மறுவரிசைப்படுத்த விரும்பினால், அதைத் தேர்ந்தெடுத்து «கைப்பிடி» ஐகான்-பொன்ட்டைப் பிடித்துக் கொள்ளுங்கள், பின்னர் அதை விரும்பிய நிலைக்கு நகர்த்தவும். வண்ண முன்னமைவை வேகமாக மாற்ற, தோற்ற அமைப்பின் «வண்ணங்கள்» துணைப்பிரிவில் தொடர்புடைய அமைப்பை இயக்குவதன் மூலம் வண்ண முன்னமைவுகளை விரைவாக மாற்றலாம்.
புலனுணர்வு விரிவாக்கியை நான் எவ்வாறு பயன்படுத்துவது?
நம்பமுடியாத சாகசங்களை கவர்ச்சியாக, கற்பித்தல் மற்றும் வழிநடத்தும் ஒரு உலகத்திற்கு! சில விசயங்களை அமைப்போம்!
- புதிய பயன்பாட்டு பதிப்பை சரிபார்க்க வேண்டும்
எல்லாம் முடிந்தது!
இன்று
பிழை
@@ -180,10 +175,6 @@
தேடுங்கள்…
தனிப்பயன் ஒளி
ஒளி
- புதிய புதுப்பிப்புகள்
- புத்தகத்தின் கதையின் புதிய புதுப்பிப்பு!
- புதுப்பிப்பு %1$s இப்போது வெளியிடப்பட்டது! வெளியீட்டு பக்கத்திற்கு செல்ல சொடுக்கு செய்க.
- பதிவிறக்கம்
உலாவு
அமைப்புகள்
பயன்பாடு பற்றி
@@ -202,7 +193,6 @@
மொழிபெயர்ப்பாளர் பயன்பாடு எதுவும் கிடைக்கவில்லை.
பகிர்வதற்கு பயன்பாடு இல்லை.
புத்தக உள்ளடக்கம் காலியாக உள்ளது. தயவுசெய்து, புத்தக உள்ளடக்கம் காலியாக இல்லை என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.
- ஏதோ தவறு நடந்தது. பின்னர் மீண்டும் முயற்சிக்கவும்.
அகராதி பயன்பாடு எதுவும் கிடைக்கவில்லை.
உலாவி பயன்பாடு எதுவும் கிடைக்கவில்லை.
கவர் படத்தை மீட்டமைக்க முடியவில்லை.
@@ -222,8 +212,6 @@
முழுமையான இருண்ட
கருப்பொருள் மாறுபாடு
பயன்பாட்டு கருப்பொருள்
- புதுப்பிப்புகளை சரிபார்க்கவும்
- தொடக்கத்தில் புதிய பயன்பாட்டு பதிப்பை சரிபார்க்கவும்
எழுத்துரு அளவு
வரி உயரம்
பத்தி உயரம்
@@ -264,7 +252,6 @@
வெளியேற மீண்டும் அழுத்தவும்
தேர்ந்தெடுக்கப்பட்ட அனைத்து புத்தகங்களும் வெற்றிகரமாக சேர்க்கப்பட்டன.
வரலாறு வெற்றிகரமாக நீக்கப்பட்டது.
- பயன்பாட்டின் அண்மைக் கால பதிப்பு ஏற்கனவே நிறுவப்பட்டுள்ளது.
கவர் படம் வெற்றிகரமாக மீட்டமைக்கப்பட்டது.
கோப்பு பாதை
கோப்பு கடைசியாக திறக்கப்பட்டது
@@ -272,7 +259,6 @@
அத்தியாயங்கள் இல்லை
பாடங்கள்
புத்தகத்தின் கதை v%1$s
- புதுப்பிப்புகளை சரிபார்க்க சொடுக்கு செய்க
ஒரு பிழையைப் புகாரளிக்கவும்
புதியது என்ன
வரவு
@@ -306,7 +292,6 @@
கருப்பொருள் விருப்பத்தேர்வுகள்
வழங்கப்பட்டது
உங்கள் சாதனத்தை ச்கேன் செய்து புத்தகங்களைக் கண்டுபிடிக்க வேண்டும்
- அறிவிப்புகள் இசைவு
பயன்பாட்டின் அடிப்படை அமைப்பை நீங்கள் வெற்றிகரமாக முடித்துவிட்டீர்கள். உதவித் திரையைப் படிப்பதன் மூலம் பயன்பாட்டை எவ்வாறு பயன்படுத்துவது என்பதை அறிய விரும்புகிறீர்களா?
நேற்று
தொடர்ந்து படிக்கவும்
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 659dfb05..b0a10a11 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -8,17 +8,6 @@
Varsayılan
-
- Yeni güncellemeler
- Book\'s Story için yeni güncelleme!
-
- Güncelleme %1$s yeni yayınlandı!
- Yayın sayfasına gitmek için tıklayın.
-
-
- İndir
-
-
Kütüphane
Geçmiş
@@ -35,7 +24,6 @@
Kitap silinsin mi?
Kitap taşınsın mı?
Okuma geçmişi silinsin mi?
- Güncellemeleri kontrol etme etkinleştirilsin mi?
Düzenle
@@ -68,17 +56,6 @@
Tüm geçmiş veritabanından silinecektir.
Geçmişi sildikten sonra kitapların sıralaması sıfırlanacaktır.
-
- Yeni bir uygulama sürümü bulundu.
- İşleme devam edip yayın sayfasına gitmek istiyor musunuz?
-
-
- «Güncellemeleri kontrol et» özelliğini etkinleştirerek
- uygulama her açıldığında «api.github.com» üzerinden
- en son sürüm bilgilerini alacaktır.
- İşleme devam edip «Güncellemeleri kontrol et» özelliğini etkinleştirmek istiyor musunuz?
-
-
Cihazınızı kitaplar için tarayabilmemiz adına depolama iznine ihtiyacımız var
@@ -97,10 +74,6 @@
Dosya boş, bozuk veya eksik.
Lütfen dosyayı doğrulayın ya da yolu güncelleyerek tekrar deneyin.
-
- Bir şeyler ters gitti.
- Daha sonra tekrar deneyin.
-
Kapak resmi sıfırlanamadı.
Kapalı kaynak
Dosya mevcut değil
@@ -121,7 +94,6 @@
%1$s seçildi
- Güncelle %1$s
Ön ayar %1$s
Seçilen «%1$s»
@@ -205,8 +177,6 @@
Arka plan rengini tamamen siyah yap
Tema kontrastı
Uygulama teması
- Güncellemeleri kontrol et
- Uygulama açılışında yeni sürümü kontrol et
Çıkmak için iki kez geri bas
Uygulamadan çıkmak için geri tuşuna iki kez basın
@@ -375,7 +345,6 @@
Bu kitap başarıyla taşındı.
Kopyalandı
Geçmiş başarıyla silindi.
- Uygulamanın en son sürümü zaten yüklü.
Kapak resmi başarıyla sıfırlandı.
Başlık başarıyla değiştirildi.
Yazar başarıyla değiştirildi.
@@ -401,7 +370,6 @@
Uygulama sürümü
Book\'s Story v%1$s
- Güncellemeleri kontrol etmek için tıklayın
Hata bildir
Yenilikler
Açık kaynak lisansları
@@ -575,8 +543,6 @@
Verildi
Depolama izni
Cihazınızı tarayıp kitapları bulmak için gereklidir
- Bildirim izni
- Yeni uygulama sürümünü kontrol etmek için gereklidir
Her şey tamam!
Uygulamanın temel ayarlarını başarıyla tamamladınız.
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index d7d77a99..2c332755 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -8,12 +8,6 @@
За замовчуванням
-
- Нові оновлення
- Нове оновлення Book\'s Story!
- Оновлення %1$s вийшло! Натисніть, щоб перейти на сторінку релізу.
- Завантажити
-
Бібліотека
Історія
@@ -30,7 +24,6 @@
Видалити книгу?
Перемістити книгу?
Видалити історію читання?
- Увімнкути перевірку на оновлення?
Редагувати
@@ -41,9 +34,6 @@
Це видалить цю книгу з бази даних. Це не видалить цю книгу з вашого пристрою.
Виберіть категорію, в яку ви хочете перемістити цю книгу. Ця книга буде переміщена в обрану категорію.
Це видалить всю історію з бази даних. Після видалення всієї історії порядок книг буде скинутий.
- Нова версія застосунку була знайдена. Чи бажаєте продовжити та перейти на сторінку релізу?
- Увімкнувши «Перевіряти на оновлення» застосунок буде отримувати інформацію про останній реліз з «api.github.com» кожен раз, коли застосунок запускається. Хочете продовжити та увімкнути «Перевіряти на оновлення»?
-
Нам потрібен дозвіл на сховище, щоб просканувати Ваш Девайс на наявність книг
Немає опису.
@@ -56,7 +46,6 @@
Файл порожній, пошкоджений або відсутній.
Перевірте файл або змініть шлях і спробуйте ще раз.
- Щось пішло не так. Спробуйте пізніше.
Не вдалося скинути обкладинку.
Закритий код
Файла не існує
@@ -69,7 +58,6 @@
%1$s обрано
- Оновлення %1$s
Пресет %1$s
Вибрано «%1$s»
@@ -153,8 +141,6 @@
Змінити колір фона на повністю чорний
Контрастність теми
Тема застосунка
- Перевіряти на оновлення
- Перевіряти на новішу версію застосунку при запуску
Подвійне натискання для виходу
Натисніть назад двічі, щоб вийти з застосунку
@@ -321,7 +307,6 @@
Ця книга була успішно переміщена.
Скопійовано
Історія була успішно видалена.
- Остання версія застосунка вже встановлена.
Обкладинка була успішно скинута.
Назва була успішно змінена.
Автор був успішно змінений.
@@ -347,7 +332,6 @@
Версія застосунка
Book\'s Story v%1$s
- Натисніть, щоб перевірити на оновлення
Повідомити про помилку
Що нового
Ліцензії з відкритим кодом
@@ -427,8 +411,6 @@
Надано
Дозвіл на сховище
Потрібний, щоб просканувати ваш пристрій та знайти книги
- Дозвіл на сповіщення
- Потрібний, щоб перевірити застосунок на нову версію
Все готово!
Ви успішно закінчили базове налаштовування застосунку. Бажаєте дізнатися, як користуватися застосунком, прочитавши екран Довідки?
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index fc95158f..2f912808 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -15,8 +15,6 @@
从你的图库中选择新封面
删除封面图片
作者
- 更新 %1$s
- 下载
词典
设置
未发现翻译应用。
@@ -24,8 +22,6 @@
预设 %1$s
取消
我们需要存储权限以扫描您的设备上的书
- Book\'s Story 的新更新!
- 更新 %1$s 已发布!点击前往发布页面。
书库
历史
浏览
@@ -37,14 +33,11 @@
这本书将会从数据库中删除,但不会从您的设备上删除。
选择你想将这本书移动到的分类。这本书将会被移动到指定的分类。
所有的历史将从数据库中被删除。删除所有的历史后,书的顺序将会被重置。
- 发现了新版本。您想继续并前往发布页面吗?
- 启用《检查更新》之后,应用将在每次启动时从《api.github.com》获取最新发布信息。是否要继续并启用《检查更新》?
无简介。
出现了一些错误。
未找到要共享的应用。
未发现词典应用。
这本书的内容为空,或有损坏和缺失。请核对文件或尝试更新文件路径。
- 出现了一些错误。请稍后尝试。
无法重置封面图片。
关闭的源
通过下载扩展图书馆的藏书
@@ -73,9 +66,7 @@
翻译
复制
已选择 %1$s
- 启用检查更新?
删除书籍?
- 新更新
您可以挑选您想添加哪些书。您可以在之后编辑书的标题与封面图片。加载过程可能会花费数分钟。
选择你想将所选的书(%1$s)移动到的分类。所有被选择的书将会被移动到指定的分类。
阅读速度
@@ -93,7 +84,6 @@
应用语言
纯黑(OLED)
主题对比
- 检查更新
双击返回退出
双击返回退出应用
字体系列
@@ -113,7 +103,6 @@
应用主题
颜色
翻译器
- 在启动时检查新版本
排序
蓝色
段落间距
@@ -196,7 +185,6 @@
这本书已被成功移动。
已复制
成功删除历史。
- 本应用的最新版本已被安装。
成功更改了封面图片。
成功删除了历史元素。
成功移动所有已选择的书。
@@ -213,7 +201,6 @@
想法
我应该如何添加书籍到库中?
Book\'s Story v%1$s
- 点击检查更新
书库中
路径
图标
@@ -276,12 +263,10 @@
权限
设置完成!
错误
- 通知权限
已授权
存储权限
你已经成功完成了应用基本设置。要参阅帮助以获取更多使用技巧吗?
未找到封面图片
- 用于检查应用更新
语言偏好
应用主题
排序规则
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 691b3c77..cfd97bca 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,17 +10,6 @@
Book\'s Story
Default
-
- New updates
- New update of Book\'s Story!
-
- Update %1$s just released!
- Click to go to the release page.
-
-
- Download
-
-
Library
History
@@ -37,7 +26,6 @@
Delete book?
Move book?
Delete reading history?
- Enable check for updates?
Edit
@@ -70,16 +58,6 @@
It will delete the whole history from the database.
After deleting the whole history, the order of the books will be reset.
-
- New app version was found.
- Do you want to proceed and go to the release page?
-
-
- By enabling «Check for updates»
- the app will retrieve latest release information from «api.github.com» each time
- when app starts.
- Do you want to proceed and enable «Check for updates»?
-
@@ -99,10 +77,6 @@
File is empty, corrupted, or missing.
Please verify the file or update the path and try again.
-
- Something went wrong.
- Try again later.
-
Could not reset cover image.
Closed source
File does not exist
@@ -123,7 +97,6 @@
%1$s selected
- Update %1$s
Preset %1$s
Selected «%1$s»
@@ -207,8 +180,6 @@
Change background color to be completely black
Theme contrast
App theme
- Check for updates
- Check for newer app version on startup
Double back press to exit
Press back twice to exit the app
@@ -377,7 +348,6 @@
This book was successfully moved.
Copied
History was successfully deleted.
- The latest version of the app is already installed.
Cover image was successfully reset.
Title was successfully changed.
Author was successfully changed.
@@ -403,7 +373,6 @@
App version
Book\'s Story v%1$s
- Click to check for updates
Report a bug
What\'s new
Open source licenses
@@ -580,8 +549,6 @@
Granted
Storage permission
Required to scan your device and find books
- Notifications permission
- Required to check for newer app version
Everything\'s done!
You\'re successfully done basic setting of the app.