Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
6cb2def
Move Amazon specific code to main source set for easier maintenance
UweTrottmann Aug 14, 2025
caae058
Move Amazon specific links to main source set for easier maintenance
UweTrottmann Aug 14, 2025
fd8ed85
Merge branch 'fix-release-2025.2.9' into dev
UweTrottmann Aug 28, 2025
7449dbc
Merge branch 'fix-release-2025.2.10' into dev
UweTrottmann Sep 6, 2025
e3b8ba6
Merge branch 'fix-release-2025.2.11' into dev
UweTrottmann Sep 18, 2025
d5e3d66
BillingTools: prepare global unlock state, update only on demand
UweTrottmann Aug 15, 2025
5341c45
Follow-up: remove context parameter from hasAccessToPaidFeatures
UweTrottmann Aug 28, 2025
616d196
LocalBillingDb: document versions
UweTrottmann Aug 21, 2025
2fd3feb
LocalBillingDb: rename GoldStatus to PlayUnlockState
UweTrottmann Aug 21, 2025
f36a7ef
LocalBillingDb: export schema for safe keeping
UweTrottmann Aug 21, 2025
aa83173
LocalBillingDb: rename EntitlementsDao to UnlockStateHelper
UweTrottmann Aug 21, 2025
21d9f91
LocalBillingDb: add global unlock state
UweTrottmann Aug 21, 2025
d2b2207
Debug view: options to insert PlayUnlockState
UweTrottmann Aug 22, 2025
56fd151
BillingTools: use global unlock state to trigger expired notification
UweTrottmann Aug 21, 2025
646ade6
Billing: inline billing module, easier to maintain
UweTrottmann Aug 28, 2025
81e7510
Billing database: follow guidelines, use nullable fields for entity
UweTrottmann Aug 28, 2025
49922de
BillingTools: log all unlock states
UweTrottmann Aug 28, 2025
680d4bd
PackageTools: use signature hash to validate pass app INT#426
UweTrottmann Aug 28, 2025
d83ab02
PackageTools: use new signature APIs for pass check on Android 9+ INT…
UweTrottmann Aug 28, 2025
98dbe04
Follow-up: remove entitlementRevokedEvent in BillingViewModel
UweTrottmann Aug 28, 2025
2ef04f5
Warn from using SingleLiveEvent in new code
UweTrottmann Aug 28, 2025
7deb4d5
Billing database: add last updated time to Play unlock state
UweTrottmann Aug 28, 2025
c52fe09
Billing: use suspend function, update error for acking purchases
UweTrottmann Aug 28, 2025
6b20e49
Billing: if there are multiple purchases, prefer sub to set unlock state
UweTrottmann Aug 29, 2025
3ddd4ef
Billing: update global unlock state immediately after Play unlocks
UweTrottmann Aug 29, 2025
5edf9c7
Billing: also revoke if no purchase with supported product
UweTrottmann Aug 29, 2025
f7f4433
Billing: do not revoke if ack of updated purchase fails
UweTrottmann Aug 29, 2025
97191b3
Billing: revoke Play unlock if not updated for over a year
UweTrottmann Aug 29, 2025
0d38853
BillingActivity: display unlock pass notice also for one time purchase
UweTrottmann Aug 29, 2025
b5e59e1
UnlockState: make last unlock timestamp easier to read in logs
UweTrottmann Sep 18, 2025
38e6ae3
ShowFragment: update unlock state using BillingTools
UweTrottmann Sep 18, 2025
8123c43
Billing: note how to test with Play Billing Lab app
UweTrottmann Sep 18, 2025
f884cab
BillingActivity: use global unlock state, always use available sub URL
UweTrottmann Sep 18, 2025
ee851df
Billing: also update global state if Play unlock revoked
UweTrottmann Sep 18, 2025
dde49d2
BillingRepository: initialize on app instead of main activity launch
UweTrottmann Sep 18, 2025
d278bb6
BillingRepository: keep singleton in SgAppContainer
UweTrottmann Sep 18, 2025
0f81ed7
BillingTools: not duplicating grace period of Play Billing for now
UweTrottmann Sep 19, 2025
2944206
Billing: consistently refer to the "unlock app"
UweTrottmann Sep 19, 2025
0e5126c
Merge pull request #1123 from UweTrottmann/universal-billing
UweTrottmann Sep 19, 2025
335604b
Merge branch 'fix-release-2025.2.12' into dev
UweTrottmann Sep 20, 2025
cc1ea56
Auto Backup: use "Check" for error messages action
UweTrottmann Sep 25, 2025
494c9f5
Cloud: use "Check" for sign-in error message action
UweTrottmann Sep 25, 2025
bd1591a
Auto Backup: clarify file missing error message
UweTrottmann Sep 25, 2025
1392852
Auto Backup: clarify copy info, move right above copy check box
UweTrottmann Sep 25, 2025
373c241
Auto Backup: display last backup time also next to create backup button
UweTrottmann Sep 25, 2025
25d4727
Cloud/Trakt: use same feature list, move most relevant sync to the top
UweTrottmann Sep 25, 2025
7ffba32
Cloud: make it more obvious that Trakt warning is clickable
UweTrottmann Sep 25, 2025
58ed221
Widget: note general item limit, rename "Infinite calendar" option
UweTrottmann Sep 25, 2025
da763bd
Widget: move hide watch button option to appearance category
UweTrottmann Sep 25, 2025
180f2b2
Widget: drop space reserved for icons in settings screen
UweTrottmann Sep 25, 2025
607e1e1
Widget: reword general item note
UweTrottmann Sep 25, 2025
a8b558e
Build: increase minSdk to 23 (Android 6), build prefix to 23
UweTrottmann Sep 25, 2025
0ac78ec
Min SDK 23: use PendingIntent.FLAG_IMMUTABLE directly
UweTrottmann Sep 25, 2025
716be5b
Min SDK 23: always use OnContextClickListener
UweTrottmann Sep 25, 2025
fcc4aff
Min SDK 23: always use a transparent status bar
UweTrottmann Sep 25, 2025
e819022
ViewTools: drop no longer needed @JvmStatic
UweTrottmann Sep 25, 2025
e14cd15
Min SDK 23: always use lines=1 for TextView.SingleLine
UweTrottmann Sep 25, 2025
a48690e
Min SDK 23: always customize status bar color (if not edge-to-edge)
UweTrottmann Sep 25, 2025
587e166
Merge pull request #1125 from UweTrottmann/min-sdk-23
UweTrottmann Sep 25, 2025
b6bb541
Legacy versions: add for Android 5.0 and 5.1
UweTrottmann Sep 25, 2025
12a6712
Strings: use better id of widget limit note
UweTrottmann Sep 26, 2025
2f588f6
Strings: experimentally add comments to recently changed strings
UweTrottmann Sep 26, 2025
764f77a
Import latest translations
UweTrottmann Sep 26, 2025
41034f6
ListWidgetProvider: extract manufacturer check, ignore case
UweTrottmann Sep 26, 2025
a2a4c7e
Widget: restore 100 item limit on Samsung devices
UweTrottmann Sep 26, 2025
2935c3a
Actually cache ViewModels of Fragments in OverviewActivity
UweTrottmann Oct 23, 2025
e0753ef
Display watch providers of the season of a shown episode instead of a…
UweTrottmann Oct 23, 2025
117c902
Build: compile with SDK 36 (Android 16)
UweTrottmann Sep 25, 2025
e5e1a8e
LanguageTools: create helpers to get language and region display name
UweTrottmann Sep 26, 2025
bc82e29
SDK 36: use Locale.of instead of Locale constructor
UweTrottmann Sep 26, 2025
af60438
Update androidx.core [1.15.0 -> 1.17.0]
UweTrottmann Sep 25, 2025
933023a
Update androidx.activity [1.9.3 -> 1.11.0]
UweTrottmann Sep 25, 2025
c171ff2
Update Room [2.7.1 -> 2.8.1]
UweTrottmann Sep 25, 2025
30d07a0
Gradle: reorganize dependencies TOML by transitive deps and relation
UweTrottmann Sep 25, 2025
b8cb05d
Gradle: update wrapper [8.12.1 -> 8.14.3]
UweTrottmann Sep 26, 2025
809226f
Update Kotlin [2.1.20 -> 2.2.20], AGP [8.6.1 -> 8.11.2]
UweTrottmann Sep 26, 2025
3887cdc
Gradle: migrate android.kotlinOptions to kotlin.compilerOptions
UweTrottmann Sep 26, 2025
f978b07
Kotlin: opt into parameter annotations also applying to properties
UweTrottmann Sep 26, 2025
cac106f
Kotlin: handle stricter comparator null checks
UweTrottmann Sep 26, 2025
e46de04
Lint: use improved trim() over trim { it <= ' ' }
UweTrottmann Sep 26, 2025
3403538
Lint: ignore new newer version available check
UweTrottmann Sep 26, 2025
0374399
Lint: prevent new UseKtx issues spamming lint output
UweTrottmann Sep 26, 2025
a32115e
Lint: also ignore AndroidGradlePluginVersion
UweTrottmann Sep 26, 2025
2bcca62
Merge branch 'updates' into dev
UweTrottmann Oct 23, 2025
21b9987
Kotlin: rename ShowSyncTest
UweTrottmann Oct 24, 2025
bd3dec1
Kotlin: convert ShowSyncTest
UweTrottmann Oct 24, 2025
c99f00a
ShowSync: update ended shows only every 90 days, like movies
UweTrottmann Oct 24, 2025
95ea867
Merge branch 'update-ended-shows-less-often' into dev
UweTrottmann Oct 24, 2025
fc899db
Auto Backup: clarify auto backup file missing message again
UweTrottmann Oct 24, 2025
dc895e6
Import latest translations
UweTrottmann Oct 24, 2025
6807b29
Prepare version 2025.3.0 (23250300)
UweTrottmann Oct 23, 2025
72d1a16
Changelog: note Android 6 requirement
UweTrottmann Oct 30, 2025
d1b7adc
External links: display them again if device is in US region
UweTrottmann Oct 30, 2025
8bca685
Kotlin: rename SlidingTabStrip
UweTrottmann Oct 30, 2025
fe776d6
Kotlin: convert SlidingTabStrip
UweTrottmann Oct 30, 2025
e29c607
SlidingTabStrip: document displayUnderline
UweTrottmann Oct 30, 2025
06d1009
SlidingTabStrip: draw rounded active indicator
UweTrottmann Oct 30, 2025
63d23e8
SlidingTabStrip: add horizontal indicator padding
UweTrottmann Oct 30, 2025
9778ce1
Kotlin: rename SlidingTabLayout
UweTrottmann Oct 30, 2025
7a96e7e
Kotlin: convert SlidingTabLayout
UweTrottmann Oct 30, 2025
711098d
Prepare version 2025.3.1 (23250301)
UweTrottmann Oct 30, 2025
e523e43
Merge branch 'fix-release-2025.2.13' into dev
UweTrottmann Oct 30, 2025
0c596ea
Update material [1.12.0 -> 1.13.0] to get horizontal bottom nav
UweTrottmann Oct 31, 2025
6b55106
Guidelines: add link to adaptive layout docs
UweTrottmann Oct 31, 2025
81d4095
Use more compact horizontal bottom nav on 720dp window width
UweTrottmann Oct 31, 2025
9bedeb4
Merge branch 'compact-bottom-navigation' into dev
UweTrottmann Oct 31, 2025
54f2b60
Remove dialog: make delete primary action again, but color it red
UweTrottmann Oct 31, 2025
0844f48
Bottom nav: color active icon and label
UweTrottmann Oct 31, 2025
b604013
Bottom nav: improve active text color if displayed horizontally
UweTrottmann Oct 31, 2025
669c932
Bottom nav: avoid resizing when switching screens
UweTrottmann Nov 5, 2025
a9c31db
Person items: pre-load placeholder drawable to ensure its tinted
UweTrottmann Nov 5, 2025
3360e8d
Person items: fix weird enlarge and crop on reload of placeholder
UweTrottmann Nov 5, 2025
b752d1b
Strings: refer to delete instead of remove when actually deleting
UweTrottmann Nov 6, 2025
cb18117
Delete list dialog: warning color for delete button
UweTrottmann Nov 6, 2025
7519796
Strings: simplify clear cache description, use system terms
UweTrottmann Nov 6, 2025
bd92d63
Import latest translations
UweTrottmann Nov 6, 2025
0077b01
Update Compose [2024.11.00 -> 2025.11.00]
UweTrottmann Nov 6, 2025
d58cea6
Update test dependencies
UweTrottmann Nov 6, 2025
cdd289e
Prepare version 2025.3.2 (23250302)
UweTrottmann Nov 6, 2025
ac3552b
Kotlin: format PackageTools
UweTrottmann Nov 7, 2025
001b2ab
Gradle: compile at Java language level 11
UweTrottmann Nov 7, 2025
74703ba
IntelliJ: update copyright template to only use initial year, c symbol
UweTrottmann Nov 13, 2025
1311278
Lints: add missing deprecation annotations
UweTrottmann Nov 13, 2025
4f12008
README: drop external content (badges), drop center alignment
UweTrottmann Nov 14, 2025
3d8cf1d
README: fix website link
UweTrottmann Nov 14, 2025
2814783
Debug log: prepare database for persisting across app restarts
UweTrottmann Nov 13, 2025
6d871b6
DebugLogBuffer: store messages in a dedicated database
UweTrottmann Nov 13, 2025
0794089
Widget: turn off getViewAt debug log
UweTrottmann Nov 13, 2025
4430160
Settings: use common prefix for preferences that are just links
UweTrottmann Nov 14, 2025
605855e
Debug log: turn always on, replace setting with link, note in changelog
UweTrottmann Nov 14, 2025
6f89785
BasePreferencesFragment: add bottom padding to list
UweTrottmann Nov 14, 2025
0aace7e
Import latest translations
UweTrottmann Nov 20, 2025
e2656da
DebugLogActivity: add fast scroller and offset from nav bar
UweTrottmann Nov 20, 2025
fcfbfe9
FastScrollerDecoration: fix thumb drawing outside at list bottom
UweTrottmann Nov 20, 2025
79e2523
FastScrollerDecoration: offset thumb for padding
UweTrottmann Nov 20, 2025
916c029
Changelog: note fast scroller fixes
UweTrottmann Nov 20, 2025
05adf13
Prepare version 2025.3.3 (23250303)
UweTrottmann Nov 20, 2025
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: 1 addition & 1 deletion .idea/copyright/Uwe_Apache_2_0.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 37 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,43 @@
Releases marked with 🧪 (or previously with the "beta" suffix) were released on
[the preview program](https://www.seriesgui.de/help/how-to/basics/preview) only.

## Version 2025.3

### 2025.3.3 - 2025-11-20 🧪

* 🔧 Debug log: change to always on, keep messages on app restarts and up to 3 days.
* 🔧 Fast scroller: draw handle always within track, align with top and bottom most items.
* 📝 Import latest user interface translations.

### 2025.3.2 - 2025-11-06 🧪

* 🔧 If the screen is wide enough, display a more compact bottom navigation bar.
* 🔧 Color the active item in the bottom navigation bar, make the bar more compact.
* 🔨 Correctly color the person placeholder symbol to match the current theme.
* 🔧 Use the term delete instead of remove for destructive changes, like deleting a show or list.
* 🔧 Use a warning color for the delete show and list confirmation buttons.

### 2025.3.1 - 2025-10-30 🧪

* 🔧 Thanks to a United States court ordered injunction in the Google Play Antitrust case coming
into effect, again display links to TMDB, Trakt and other external websites if your device region
is set to "United States". Note that links remain displayed for devices set to a region in the
European Economic Area. For all other regions, Google Play Payments policy continues to disallow
this.
* 🔧 Make active tab indicator rounded to better fit with other rounded user interface elements.

### 2025.3.0 - 2025-10-24 🧪

* 📝 Require Android 6.0 or higher.
* 🔧 Upcoming/Recent: rename "Infinite calendar" option to the more applicable "Unlimited days".
* 🔧 Widget: note general item limit in configuration screen, rename "Infinite calendar" option to
the more applicable "Unlimited days", move hide watch button option to appearance category.
* 🔧 On Android 16 on Samsung devices, increase the limit of widget items back to 100.
* 🔧 Shows: only display stream and purchase options specific to the season of a displayed episode.
* 🔧 Shows: update ended shows less often (90+ days) to speed up updating of large libraries and
reduce load on TMDB.
* 📝 Import latest user interface translations.

## Version 2025.2

* 🔧 Movie details: adjust buttons to be more similar to episodes, other minor improvements.
Expand Down
32 changes: 9 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,19 @@
<h1 align="center">SeriesGuide</h1>
# SeriesGuide

<p align="center">
Android app to help you keep track of your favorite TV shows and movies.
</p>

<p align="center">
<a href="https://www.seriesgui.de">Download</a> •
<a href="https://www.seriesgui.de/whypay">Support the dev</a> •
<a href="CONTRIBUTING.md">Contributing</a> •
<a href="https://discuss.seriesgui.de/">Announcements & Help</a>
</p>
[Download](https://www.seriesgui.de)
• [Support the dev](https://www.seriesgui.de/whypay)
• [Contribute](CONTRIBUTING.md)
• [Announcements & Help](https://discuss.seriesgui.de/)
• [Release notes](https://github.com/UweTrottmann/SeriesGuide/blob/main/CHANGELOG.md#release-notes)

<p align="center">
<a href="https://github.com/UweTrottmann/SeriesGuide/blob/main/CHANGELOG.md#release-notes">
<img src="https://img.shields.io/github/v/release/UweTrottmann/SeriesGuide?style=flat">
</a>
<a href="https://github.com/UweTrottmann/SeriesGuide/actions/workflows/assemble-test-lint.yml">
<img src="https://img.shields.io/github/actions/workflow/status/UweTrottmann/SeriesGuide/assemble-test-lint.yml?branch=main&style=flat">
</a>
</p>

<p align="center">
<img src="screenshots/phone.png" height="375"/>
</p>
<img src="screenshots/phone.png" alt="Screenshot of the SeriesGuide app and above it the text &quot;Track shows and movies. Open Source.&quot;" height="375"/>

## License

Except where noted otherwise, this work by [Uwe Trottmann](https://uwetrottmann.com) is licensed
under the [Apache License 2.0](LICENSE.txt).
Except where noted otherwise, this work by [Uwe Trottmann](https://www.uwetrottmann.com) is licensed
under the Apache License 2.0, see [LICENSE.txt](LICENSE.txt).
Each relevant file contains an [SPDX short-form identifier](https://spdx.dev/learn/handling-license-info/)
at the first possible line with the `Apache-2.0` value.

Expand Down
6 changes: 3 additions & 3 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
- If it does not exist, create a release branch. If it exists, merge latest changes.

```shell
git checkout -b release-2025.2
git checkout -b release-2025.3
# or
git merge dev
```
Expand All @@ -20,8 +20,8 @@
- Commit and push

```shell
git commit --all --message "Prepare version 2025.2.9 (21250212)"
git push --set-upstream origin release-2025.2
git commit --all --message "Prepare version 2025.3.3 (23250303)"
git push --set-upstream origin release-2025.3
```

- If it does not exist, [create a merge request](https://github.com/UweTrottmann/SeriesGuide/compare/main...) against `main`
Expand Down
9 changes: 2 additions & 7 deletions api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,6 @@ val sgCompileSdk: Int by rootProject.extra
val sgMinSdk: Int by rootProject.extra
val sgTargetSdk: Int by rootProject.extra

tasks.withType(JavaCompile::class.java).configureEach {
// Suppress JDK 21 warning about deprecated, but not yet removed, source and target value 8 support
options.compilerArgs.add("-Xlint:-options")
}

android {
namespace = "com.battlelancer.seriesguide.api"
compileSdk = sgCompileSdk
Expand All @@ -26,8 +21,8 @@ android {

compileOptions {
encoding = "UTF-8"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

lint {
Expand Down
57 changes: 33 additions & 24 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import java.io.FileInputStream
import java.util.Properties

Expand All @@ -22,9 +23,25 @@ val sgTargetSdk: Int by rootProject.extra
val sgVersionCode: Int by rootProject.extra
val sgVersionName: String by rootProject.extra

tasks.withType(JavaCompile::class.java).configureEach {
// Suppress JDK 21 warning about deprecated, but not yet removed, source and target value 8 support
options.compilerArgs.add("-Xlint:-options")
kotlin {
compilerOptions {
jvmTarget = JvmTarget.JVM_11
// Using experimental flatMapLatest for Paging 3
// Using experimental Material 3 compose APIs
freeCompilerArgs.add("-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi,androidx.compose.material3.ExperimentalMaterial3Api")
// Opt-in to constructor parameter annotations also applying to properties
// https://youtrack.jetbrains.com/issue/KT-73255
freeCompilerArgs.add("-Xannotation-default-target=param-property")
}
}

kapt {
arguments {
arg("eventBusIndex", "com.battlelancer.seriesguide.SgEventBusIndex")
// Export schema for testing and in case the database ever needs to be built manually
// (like when migrating away from Room).
arg("room.schemaLocation", "$projectDir/schemas")
}
}

android {
Expand All @@ -47,13 +64,20 @@ android {

// Prevent plugin from generating PNGs, use compat loading instead https://developer.android.com/studio/write/vector-asset-studio#sloption
vectorDrawables.useSupportLibrary = true

// Use AndroidX test runner
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

buildConfigField("String", "TMDB_API_KEY", propertyOrEmpty("SG_TMDB_API_KEY"))
buildConfigField("String", "TRAKT_CLIENT_ID", propertyOrEmpty("SG_TRAKT_CLIENT_ID"))
buildConfigField("String", "TRAKT_CLIENT_SECRET", propertyOrEmpty("SG_TRAKT_CLIENT_SECRET"))
buildConfigField("String", "IMAGE_CACHE_URL", propertyOrNull("SG_IMAGE_CACHE_URL"))
buildConfigField("String", "IMAGE_CACHE_SECRET", propertyOrEmpty("SG_IMAGE_CACHE_SECRET"))
// Play Billing
buildConfigField("String", "IAP_KEY_A", propertyOrEmpty("SG_IAP_KEY_A"))
buildConfigField("String", "IAP_KEY_B", propertyOrEmpty("SG_IAP_KEY_B"))
buildConfigField("String", "IAP_KEY_C", propertyOrEmpty("SG_IAP_KEY_C"))
buildConfigField("String", "IAP_KEY_D", propertyOrEmpty("SG_IAP_KEY_D"))

// Note: do not exclude languages from libraries that the app doesn't have, e.g. Firebase Auth.
// They still might be helpful to users, e.g. for regional dialects.
Expand All @@ -68,16 +92,8 @@ android {

compileOptions {
encoding = "UTF-8"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
// Using experimental flatMapLatest for Paging 3
// Using experimental Material 3 compose APIs
freeCompilerArgs =
freeCompilerArgs + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi,androidx.compose.material3.ExperimentalMaterial3Api"
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

lint {
Expand Down Expand Up @@ -166,14 +182,6 @@ android {
}
}

// Note: android.javaCompileOptions.annotationProcessorOptions does not seem to work with Kotlin 1.5.20
kapt {
arguments {
arg("eventBusIndex", "com.battlelancer.seriesguide.SgEventBusIndex")
arg("room.schemaLocation", "$projectDir/schemas")
}
}

dependencies {
constraints {
// androidx.room:room-paging-android pulls in a paging-common 3.3 version (but does not
Expand All @@ -188,7 +196,6 @@ dependencies {

implementation(project(":api"))
implementation(project(":backend"))
implementation(project(":billing"))
implementation(project(":widgets"))

implementation(libs.androidx.core.ktx)
Expand Down Expand Up @@ -272,9 +279,11 @@ dependencies {
implementation(libs.firebase.auth)
implementation(libs.play.services.auth)

// Amazon flavor specific
// Amazon Billing
// Note: requires to add AppstoreAuthenticationKey.pem into amazon/assets.
"amazonImplementation"(libs.amazon.appstore.sdk)
implementation(libs.amazon.appstore.sdk)
// Play Billing
implementation(libs.billing)

// Instrumented unit tests
androidTestImplementation(libs.androidx.annotation)
Expand Down
6 changes: 5 additions & 1 deletion app/lint.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,14 @@
<issue id="Overdraw" severity="ignore" />
<!-- Not supplying drawable-hdpi, drawable-mdpi PNGs: only used in notifications. -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Using Gradle versions plugin and in-IDE warnings instead -->
<!-- Avoid spamming lint output, using Gradle versions plugin and in-IDE warnings instead. -->
<issue id="AndroidGradlePluginVersion" severity="ignore" />
<issue id="GradleDependency" severity="ignore" />
<issue id="NewerVersionAvailable" severity="ignore" />
<!-- Google HTTP client has SslUtils.trustAllSSLContext which is not used by SeriesGuide -->
<issue id="TrustAllX509TrustManager">
<ignore regexp="google-http-client"/>
</issue>
<!-- Avoid spamming lint output, there is no need to use these, it's just convenience -->
<issue id="UseKtx" severity="ignore" />
</lint>
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"formatVersion": 1,
"database": {
"version": 3,
"identityHash": "a9f7a9e082618e7eaad59d2a86547f67",
"entities": [
{
"tableName": "purchase_table",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`data` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
"fields": [
{
"fieldPath": "data",
"columnName": "data",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": true,
"columnNames": [
"id"
]
}
},
{
"tableName": "gold_status",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`entitled` INTEGER NOT NULL, `isSub` INTEGER NOT NULL, `sku` TEXT, `purchaseToken` TEXT, `id` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "entitled",
"columnName": "entitled",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "isSub",
"columnName": "isSub",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "sku",
"columnName": "sku",
"affinity": "TEXT"
},
{
"fieldPath": "purchaseToken",
"columnName": "purchaseToken",
"affinity": "TEXT"
},
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"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, 'a9f7a9e082618e7eaad59d2a86547f67')"
]
}
}
Loading