Skip to content

Commit 6be2a2e

Browse files
committed
Merge branch 'next' into feature/AOO-39-app-masking
# Conflicts: # app/src/main/AndroidManifest.xml # app/src/main/java/net/opendasharchive/openarchive/features/settings/passcode/AppConfig.kt
2 parents 6282d1d + 05538d0 commit 6be2a2e

File tree

155 files changed

+5537
-2861
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+5537
-2861
lines changed

.circleci/config.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

.github/workflows/detekt.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ name: Detekt Analysis
22

33
on:
44
# Triggers on push to key branches
5-
push:
6-
branches: [ "master", "stable", "next", "feature/major-refactor-ui-changes" ]
5+
# push:
6+
# branches: #[ "master", "stable", "next", "feature/major-refactor-ui-changes" ]
7+
# - '**' # Triggers on pull requests to any branch
78
pull_request:
89
branches:
910
- '**' # Triggers on pull requests to any branch
@@ -37,7 +38,16 @@ jobs:
3738
ruby-version: '3.3'
3839
bundler-cache: true
3940

40-
# ✅ Step 4: Install Fastlane Dependencies
41+
- name: Create local.properties file
42+
run: |
43+
echo "MIXPANEL_KEY=${{ secrets.MIXPANEL_KEY }}" >> local.properties
44+
echo "STOREFILE=${{ secrets.STOREFILE }}" >> local.properties
45+
echo "STOREPASSWORD=${{ secrets.STOREPASSWORD }}" >> local.properties
46+
echo "KEYALIAS=${{ secrets.KEYALIAS }}" >> local.properties
47+
echo "KEYPASSWORD=${{ secrets.KEYPASSWORD }}" >> local.properties
48+
49+
50+
# ✅ Step 4: Install Fastlane Dependencies
4151
- name: Install Fastlane dependencies
4252
run: |
4353
bundle config path vendor/bundle

app/build.gradle.kts

Lines changed: 97 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
13
import java.io.FileInputStream
24
import java.util.Properties
35

@@ -9,43 +11,60 @@ plugins {
911
id("com.google.devtools.ksp")
1012
id("androidx.navigation.safeargs.kotlin")
1113
alias(libs.plugins.detekt.plugin)
14+
alias(libs.plugins.google.gms.google.services)
15+
alias(libs.plugins.google.firebase.crashlytics)
1216
}
1317

1418
fun loadLocalProperties(): Properties = Properties().apply {
1519
val localPropsFile = rootProject.file("local.properties")
1620
if (localPropsFile.exists()) {
1721
FileInputStream(localPropsFile).use { load(it) }
1822
} else {
19-
throw GradleException("Missing local.properties file")
23+
setProperty("MIXPANELKEY", System.getenv("MIXPANEL_KEY") ?: "")
24+
setProperty("STOREFILE", System.getenv("STOREFILE") ?: "")
25+
setProperty("STOREPASSWORD", System.getenv("STOREPASSWORD") ?: "")
26+
setProperty("KEYALIAS", System.getenv("KEYALIAS") ?: "")
27+
setProperty("KEYPASSWORD", System.getenv("KEYPASSWORD") ?: "")
28+
}
29+
}
30+
31+
kotlin {
32+
33+
compilerOptions {
34+
35+
jvmTarget.set(JvmTarget.JVM_17)
36+
languageVersion.set(KotlinVersion.KOTLIN_2_2)
37+
}
38+
}
39+
40+
kotlin {
41+
compilerOptions {
42+
43+
jvmTarget.set(JvmTarget.JVM_17)
44+
languageVersion.set(KotlinVersion.KOTLIN_2_2)
2045
}
2146
}
2247

2348
android {
2449

25-
//noinspection GradleDependency
26-
compileSdk = 34
50+
compileSdk = 36
2751

2852
compileOptions {
2953
sourceCompatibility = JavaVersion.VERSION_17
3054
targetCompatibility = JavaVersion.VERSION_17
3155
}
3256

33-
kotlinOptions {
34-
jvmTarget = "17"
35-
}
36-
3757
defaultConfig {
3858
applicationId = "net.opendasharchive.openarchive"
3959
minSdk = 29
40-
//noinspection OldTargetApi
41-
targetSdk = 34
42-
versionCode = 30006
43-
versionName = "0.7.8"
60+
targetSdk = 36
61+
versionCode = 30018
62+
versionName = "4.0.2"
4463
multiDexEnabled = true
4564
vectorDrawables.useSupportLibrary = true
4665
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
4766
val localProps = loadLocalProperties()
48-
resValue("string", "mixpanel_key", localProps.getProperty("mixpanel.key") ?: "")
67+
resValue("string", "mixpanel_key", localProps.getProperty("MIXPANELKEY") ?: "")
4968
}
5069

5170
base {
@@ -64,24 +83,44 @@ android {
6483
signingConfig = signingConfigs.getByName("debug")
6584
isMinifyEnabled = false
6685
isShrinkResources = false
67-
applicationIdSuffix = ".release"
6886
proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
6987
}
7088

7189
getByName("debug") {
7290
signingConfig = signingConfigs.getByName("debug")
73-
applicationIdSuffix = ".debug"
7491
isMinifyEnabled = false
7592
}
7693
}
7794

95+
flavorDimensions += "env"
96+
97+
productFlavors {
98+
99+
create("dev") {
100+
dimension = "env"
101+
versionNameSuffix = "-dev"
102+
applicationIdSuffix = ".debug"
103+
}
104+
105+
create("staging") {
106+
dimension = "env"
107+
versionNameSuffix = "-staging"
108+
applicationIdSuffix = ".debug"
109+
}
110+
111+
create("prod") {
112+
dimension = "env"
113+
applicationIdSuffix = ".release"
114+
}
115+
}
116+
78117
signingConfigs {
79118
getByName("debug") {
80119
val props = loadLocalProperties()
81-
storeFile = file(props["storeFile"] as? String ?: "")
82-
storePassword = props["storePassword"] as? String ?: ""
83-
keyAlias = props["keyAlias"] as? String ?: ""
84-
keyPassword = props["keyPassword"] as? String ?: ""
120+
storeFile = file(props["STOREFILE"] as? String ?: "")
121+
storePassword = props["STOREPASSWORD"] as? String ?: ""
122+
keyAlias = props["KEYALIAS"] as? String ?: ""
123+
keyPassword = props["KEYPASSWORD"] as? String ?: ""
85124
}
86125
}
87126

@@ -100,14 +139,12 @@ android {
100139
abortOnError = false
101140
}
102141

103-
104142
testOptions {
105143
unitTests {
106144
isIncludeAndroidResources = true
107145
}
108146
}
109147

110-
111148
namespace = "net.opendasharchive.openarchive"
112149

113150
configurations.all {
@@ -140,7 +177,6 @@ dependencies {
140177
implementation(libs.androidx.lifecycle.livedata)
141178
implementation(libs.androidx.lifecycle.runtime.compose)
142179

143-
144180
implementation(libs.androidx.preferences)
145181
implementation(libs.androidx.biometric)
146182
implementation(libs.androidx.work)
@@ -159,13 +195,15 @@ dependencies {
159195
implementation(libs.androidx.swiperefresh)
160196

161197
// Compose Libraries
198+
implementation(libs.androidx.core.ktx)
162199
implementation(libs.androidx.activity.ktx)
163200
implementation(libs.androidx.activity.compose)
164201
implementation(libs.androidx.compose.material3)
165202
implementation(libs.androidx.compose.ui)
166203
implementation(libs.androidx.compose.foundation)
167204
implementation(libs.androidx.compose.ui.tooling.preview)
168205
implementation(libs.androidx.compose.icons.extended)
206+
implementation(libs.firebase.crashlytics)
169207
debugImplementation(libs.androidx.compose.ui.tooling)
170208

171209
implementation(libs.androidx.compose.runtime)
@@ -190,13 +228,10 @@ dependencies {
190228
implementation(libs.koin.compose.viewmodel.navigation)
191229

192230
// Image Libraries
193-
implementation(libs.glide)
194-
annotationProcessor(libs.glide.compiler)
195-
implementation(libs.asafirm.image.picker)
196-
implementation(libs.picasso)
197231
implementation(libs.coil)
198232
implementation(libs.coil.compose)
199233
implementation(libs.coil.video)
234+
implementation(libs.coil.network)
200235

201236
// Networking and Data
202237
// Networking
@@ -209,42 +244,43 @@ dependencies {
209244

210245
// Utility Libraries
211246
implementation(libs.timber)
212-
implementation(libs.orhanobut.logger)
213-
implementation("com.github.abdularis:circularimageview:1.4")
214-
implementation("com.tbuonomo:dotsindicator:5.1.0")
215-
implementation("com.guolindev.permissionx:permissionx:1.6.4")
247+
//implementation(libs.orhanobut.logger)
248+
//implementation(libs.abdularis.circularimageview)
249+
implementation(libs.dotsindicator)
250+
implementation(libs.permissionx)
216251

217252
// Barcode Scanning
218-
implementation("com.google.zxing:core:3.5.3")
219-
implementation("com.journeyapps:zxing-android-embedded:4.3.0")
253+
//implementation("com.google.zxing:core:3.5.3")
254+
//implementation("com.journeyapps:zxing-android-embedded:4.3.0")
220255

221256
// Security and Encryption
222-
implementation("org.bouncycastle:bcpkix-jdk15to18:1.72")
223-
implementation("org.bouncycastle:bcprov-jdk15to18:1.72")
224-
api("org.bouncycastle:bcpg-jdk15to18:1.71")
257+
implementation(libs.bouncycastle.bcpkix)
258+
implementation(libs.bouncycastle.bcprov)
259+
api(libs.bouncycastle.bcpg)
225260

226261
// Google Play Services
227-
implementation("com.google.android.gms:play-services-auth:21.3.0")
228-
// implementation("com.google.android.play:core-ktx:1.8.1")
229-
// implementation("com.google.android.play:asset-delivery-ktx:2.3.0")
230-
// implementation("com.google.android.play:feature-delivery-ktx:2.1.0")
231-
// implementation("com.google.android.play:review-ktx:2.0.2")
232-
// implementation("com.google.android.play:app-update-ktx:2.1.0")
262+
implementation(libs.google.auth)
263+
implementation(libs.google.play.asset.delivery.ktx)
264+
implementation(libs.google.play.feature.delivery)
265+
implementation(libs.google.play.feature.delivery.ktx)
266+
implementation(libs.google.play.review)
267+
implementation(libs.google.play.review.ktx)
268+
implementation(libs.google.play.app.update.ktx)
233269

234270
// Google Drive API
235-
implementation("com.google.http-client:google-http-client-gson:1.42.3")
236-
implementation("com.google.api-client:google-api-client-android:1.26.0")
237-
implementation("com.google.apis:google-api-services-drive:v3-rev136-1.25.0")
271+
implementation(libs.google.http.client.gson)
272+
implementation(libs.google.api.client.android)
273+
implementation(libs.google.drive.api)
238274

239275
// Tor Libraries
240-
implementation("info.guardianproject:tor-android:0.4.7.14")
241-
implementation("info.guardianproject:jtorctl:0.4.5.7")
276+
implementation(libs.tor.android)
277+
implementation(libs.jtorctl)
242278

243-
implementation("org.bitcoinj:bitcoinj-core:0.16.2")
244-
implementation("com.eclipsesource.j2v8:j2v8:6.2.1@aar")
279+
implementation(libs.bitcoinj.core)
280+
//implementation("com.eclipsesource.j2v8:j2v8:6.2.1@aar")
245281

246282
// ProofMode //from here: https://github.com/guardianproject/proofmode
247-
implementation("org.proofmode:android-libproofmode:1.0.26") {
283+
implementation(libs.proofmode) {
248284
//transitive = false
249285
exclude(group = "org.bitcoinj")
250286
exclude(group = "com.google.protobuf")
@@ -259,40 +295,37 @@ dependencies {
259295
}
260296

261297
// Guava Conflicts
262-
implementation("com.google.guava:guava:31.0.1-jre")
263-
implementation("com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava")
264-
265-
266-
implementation("com.github.satyan:sugar:1.5")
298+
implementation(libs.guava)
299+
implementation(libs.guava.listenablefuture)
267300

301+
implementation(libs.satyan.sugar)
268302

269303
// adding web dav support: https://github.com/thegrizzlylabs/sardine-android'
270304
implementation("com.github.guardianproject:sardine-android:89f7eae512")
271305

272-
273306
implementation("com.github.derlio:audio-waveform:v1.0.1")
274307

275-
276-
implementation("org.cleaninsights.sdk:clean-insights-sdk:2.8.0")
277-
implementation("info.guardianproject.netcipher:netcipher:2.2.0-alpha")
308+
implementation(libs.clean.insights)
309+
implementation(libs.netcipher)
278310

279311
// Mixpanel analytics
280-
implementation("com.mixpanel.android:mixpanel-android:8.0.2")
281-
312+
implementation(libs.mixpanel)
282313

283314
// Tests
284-
testImplementation("junit:junit:4.13.2")
285-
testImplementation("org.robolectric:robolectric:4.14.1")
286-
androidTestImplementation("androidx.test.ext:junit:1.2.1")
287-
androidTestImplementation("androidx.test:runner:1.6.2")
288-
testImplementation("androidx.work:work-testing:2.9.1")
315+
testImplementation(libs.junit)
316+
testImplementation(libs.robolectric)
317+
androidTestImplementation(libs.androidx.test.junit)
318+
androidTestImplementation(libs.androidx.test.runner)
319+
testImplementation(libs.work.testing)
289320

290321
// Detekt
291322
detektPlugins(libs.detekt.formatting)
292323
detektPlugins(libs.detekt.rules.authors)
293324
detektPlugins(libs.detekt.rules.libraries)
294325
detektPlugins(libs.detekt.compose)
295326
detektPlugins(libs.detekt.rules.compose)
327+
328+
// debugImplementation("com.squareup.leakcanary:leakcanary-android:3.0-alpha-8")
296329
}
297330

298331
configurations.all {

app/detekt-baseline.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,10 +386,8 @@
386386
<ID>FinalNewline:UriExtensions.kt$net.opendasharchive.openarchive.extensions.UriExtensions.kt</ID>
387387
<ID>FinalNewline:Util.kt$net.opendasharchive.openarchive.services.internetarchive.Util.kt</ID>
388388
<ID>FinalNewline:Utility.kt$net.opendasharchive.openarchive.util.Utility.kt</ID>
389-
<ID>FinalNewline:VideoRequestHandler.kt$net.opendasharchive.openarchive.fragments.VideoRequestHandler.kt</ID>
390389
<ID>FinalNewline:ViewExtension.kt$net.opendasharchive.openarchive.extensions.ViewExtension.kt</ID>
391390
<ID>FinalNewline:WebDAVModel.kt$net.opendasharchive.openarchive.db.WebDAVModel.kt</ID>
392-
<ID>FinalNewline:WebDavActivity.kt$net.opendasharchive.openarchive.services.webdav.WebDavActivity.kt</ID>
393391
<ID>FinalNewline:WebDavConduit.kt$net.opendasharchive.openarchive.services.webdav.WebDavConduit.kt</ID>
394392
<ID>FinalNewline:WebDavFragment.kt$net.opendasharchive.openarchive.services.webdav.WebDavFragment.kt</ID>
395393
<ID>FinalNewline:WebDavSetupLicenseFragment.kt$net.opendasharchive.openarchive.services.webdav.WebDavSetupLicenseFragment.kt</ID>

0 commit comments

Comments
 (0)