Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ on:
- ".github/**"
- "kotlin_code_style.xml"
push:
branches:
- master
paths-ignore:
- "**.md"
- "fastlane/**"
Expand Down
21 changes: 10 additions & 11 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,13 @@ android {
applicationId = "com.quranapp.android"
minSdk = 24
targetSdk = 35

// I don't know why I've used such a weird versioning scheme in the beginning,
// but I can't change it now as the app is already in the Play Store
// now just incrementing from there
versionCode = 23_11_11_134
versionName = "2026.04.16.2"

setProperty("archivesBaseName", versionName)

resValue("string", "app_name", "QuranApp")

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
Expand All @@ -42,6 +41,7 @@ android {
viewBinding = true
dataBinding = true
compose = true
buildConfig = true
}

buildTypes {
Expand All @@ -52,6 +52,7 @@ android {

applicationIdSuffix = ".debug"
versionNameSuffix = "-debug"

resValue("string", "app_name", "QuranApp Debug")

/* ---------------------------------------------------------------- */
Expand All @@ -62,6 +63,7 @@ android {
isDebuggable = false
isMinifyEnabled = true
isShrinkResources = true

proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
Expand Down Expand Up @@ -90,6 +92,10 @@ android {
}
}

base {
archivesName = android.defaultConfig.versionName
}

dependencies {
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
Expand Down Expand Up @@ -125,6 +131,8 @@ dependencies {
implementation(libs.androidx.fragmentKtx)

implementation(libs.media3ExoPlayer)
implementation(libs.media3Datasource)
implementation(libs.media3Database)
implementation(libs.media3Session)
implementation(libs.media3UI)

Expand All @@ -139,15 +147,6 @@ dependencies {
implementation(libs.kotlinxSerialization)
implementation(libs.kotlinxRetrofit)

/* SmoothRefreshLayout */
implementation(libs.srlCore)
implementation(libs.srlExtClassics)
implementation(libs.srlExtMaterial)
implementation(libs.srlExtDynamicRebound)
implementation(libs.srlExtHorizontal)
implementation(libs.srlExtTwoLevel)
implementation(libs.srlExtUtil)

implementation(libs.commonsCompress)
implementation(libs.workManager)
implementation(libs.dataStore)
Expand Down
67 changes: 67 additions & 0 deletions app/schemas/com.quranapp.android.db.ExternalQuranDatabase/1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "1509d1159d73e7c5d7d0599bf134c6a3",
"entities": [
{
"tableName": "wbw_words",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`ayah_id` INTEGER NOT NULL, `word_index` INTEGER NOT NULL, `wbw_id` TEXT NOT NULL, `translation` TEXT, `transliteration` TEXT, PRIMARY KEY(`wbw_id`, `ayah_id`, `word_index`))",
"fields": [
{
"fieldPath": "ayahId",
"columnName": "ayah_id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "wordIndex",
"columnName": "word_index",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "wbwId",
"columnName": "wbw_id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "translation",
"columnName": "translation",
"affinity": "TEXT"
},
{
"fieldPath": "transliteration",
"columnName": "transliteration",
"affinity": "TEXT"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"wbw_id",
"ayah_id",
"word_index"
]
},
"indices": [
{
"name": "idx_wbw_words_ayah_wbw",
"unique": false,
"columnNames": [
"ayah_id",
"wbw_id"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `idx_wbw_words_ayah_wbw` ON `${TABLE_NAME}` (`ayah_id`, `wbw_id`)"
}
]
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1509d1159d73e7c5d7d0599bf134c6a3')"
]
}
}
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
android:fullBackupContent="true"
android:icon="@mipmap/icon_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/icon_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.QuranApp.Splash"
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="@string/cleartextTrafficPermitted"
tools:targetApi="s">
<receiver
Expand Down Expand Up @@ -120,6 +120,7 @@
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>

<activity android:name=".activities.ActivityReaderIndexPage" />
<activity
android:name=".activities.ActivityReader"
Expand Down
Binary file modified app/src/main/assets/db/quranapp.db
Binary file not shown.
6 changes: 0 additions & 6 deletions app/src/main/assets/tafsir/tafsir_page.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@
src: url('https://assets-font/content') format("truetype");
}

* {
user-select: none;
-webkit-user-select: none;
-webkit-tap-highlight-color: transparent;
}

body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 0;
Expand Down
14 changes: 14 additions & 0 deletions app/src/main/assets/verses/recommended/lang_en.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"friday_kahf": {
"title": "Friday Light",
"description": "Recite Surah Al-Kahf for the blessed day of Jumu'ah."
},
"night_three_quls": {
"title": "Night Protection & Peace",
"description": "End your day with verses of protection and calm."
},
"night_mulk": {
"title": "Before Sleep Recitation",
"description": "Recite Surah Al-Mulk before resting tonight."
}
}
47 changes: 47 additions & 0 deletions app/src/main/assets/verses/recommended/rules.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"schema": 2,
"defaults": {
"timeZone": "local"
},
"rules": [
{
"id": "friday_kahf",
"priority": 100,
"when": {
"clauses": [
{
"weekdays": [5],
"hourRanges": [[4, 18]]
}
]
},
"ref": {
"segments": ["18"]
}
},
{
"id": "night",
"priority": 90,
"when": {
"clauses": [
{
"weekdays": [1, 2, 3, 4, 5, 6, 7],
"hourRanges": [[20, 1]]
}
]
},
"ref": {
"segments": [
{
"verseRef": "2:285-286,112:1-4,113:1-5,114:1-6",
"langKey": "night_three_quls"
},
{
"verseRef": "67",
"langKey": "night_mulk"
}
]
}
}
]
}
3 changes: 3 additions & 0 deletions app/src/main/java/com/quranapp/android/QuranApp.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import androidx.appcompat.app.AppCompatDelegate
import com.alfaazplus.sunnah.ui.utils.shared_preference.DataStoreManager
import com.quranapp.android.compose.utils.preferences.ReaderPreferences
import com.quranapp.android.db.bookmark.UserDataMigrationManager
import com.quranapp.android.search.SearchIndexScheduler
import com.quranapp.android.utils.app.DownloadSourceUtils
import com.quranapp.android.utils.app.NotificationUtils
import com.quranapp.android.utils.exceptions.CustomExceptionHandler
Expand Down Expand Up @@ -50,5 +51,7 @@ class QuranApp : Application() {
RecitationModelManager.get(this).migrateLegacyData()
ReaderIndexViewModel.migrateFavourites(this)
UserDataMigrationManager(this).migrate()

SearchIndexScheduler.scheduleTranslationSearchIndexIfNeeded(applicationContext)
}
}
Loading
Loading