pocket-casts-android icon indicating copy to clipboard operation
pocket-casts-android copied to clipboard

Gravatar native Quick Editor

Open hamorillo opened this issue 1 year ago • 3 comments

Description

With the new Gravatar SDK release, we can use the native Quick Editor (QE), which allows an easy avatar change without needing the browser (except for the OAuth authorization).

Currently, we are using the web version; this PR is replacing it with the native version included within the Gravatar SDK.

Note: We must add the "official" gravatarAppId in the secrets.

Testing Instructions

To test the OAuth Flow, you need a gravatarAppId in your secret.properties. You can create and configure your test app following this. Let me know if you need help.

  1. Enable GRAVATAR_NATIVE_QUICK_EDITOR feature flag under Profile -> Settings -> Beta features
  2. Tap on the Profile tab
  3. Tap on Change avatar
  4. Verify Gravatar OAuth flow is opened in the browser
  5. Complete the OAuth flow
  6. You should be back on the app, and the QE should show your avatars
  7. Modify your avatar
  8. Close the QE and verify the new avatar is already shown in your account
  9. Tap on Change avatar
  10. OAuth flow should be presented again
  11. Modify/upload your avatar
  12. Close the QE and verify the new avatar is already shown in your account
  13. Sign out from PocketCast
  14. Login again with the same account
  15. Tap on the Profile tab
  16. Tap on Change avatar
  17. OAuth flow should be presented again
  18. Return to PocketCast
  19. Disable GRAVATAR_NATIVE_QUICK_EDITOR feature flag under Profile -> Settings -> Beta features
  20. Tap on the Profile tab
  21. Tap on Change avatar
  22. Browser with the web QE should be opened (previous behavior)

Screenshots or Screencast

imageimage

Checklist

  • [x] If this is a user-facing change, I have added an entry in CHANGELOG.md
  • [x] Ensure the linter passes (./gradlew spotlessApply to automatically apply formatting/linting)
  • [x] I have considered whether it makes sense to add tests for my changes
  • [x] All strings that need to be localized are in modules/services/localization/src/main/res/values/strings.xml
  • [ ] Any jetpack compose components I added or changed are covered by compose previews
  • [ ] I have updated (or requested that someone edit) the spreadsheet to reflect any new or changed analytics.

I have tested any UI changes...

  • [ ] with different themes
  • [ ] with a landscape orientation
  • [ ] with the device set to have a large display and font size
  • [ ] for accessibility with TalkBack

hamorillo avatar Oct 21 '24 11:10 hamorillo

📲 You can test the changes from this Pull Request in 📱 Mobile by scanning the QR code below to install the corresponding build.
App Name 📱 Mobile
Build TypedebugProd
Commitea0c2f9f953885892ee6a7fc3f3e6ffb1baf2c4e
Direct Downloadpocketcasts-app-prototype-build-pr3055-ea0c2f9.apk
📲 You can test the changes from this Pull Request in 🚗 Automotive by scanning the QR code below to install the corresponding build.
App Name 🚗 Automotive
Build TypedebugProd
Commitea0c2f9f953885892ee6a7fc3f3e6ffb1baf2c4e
Direct Downloadpocketcasts-automotive-prototype-build-pr3055-ea0c2f9.apk
📲 You can test the changes from this Pull Request in ⌚ Wear by scanning the QR code below to install the corresponding build.
App Name ⌚ Wear
Build TypedebugProd
Commitea0c2f9f953885892ee6a7fc3f3e6ffb1baf2c4e
Direct Downloadpocketcasts-wear-prototype-build-pr3055-ea0c2f9.apk

wpmobilebot avatar Oct 21 '24 11:10 wpmobilebot

Project dependencies changes

The following changes in project dependencies were detected (configuration releaseRuntimeClasspath):

list
New Dependencies
androidx.browser:browser:1.8.0
androidx.compose.material3.adaptive:adaptive:1.0.0
androidx.compose.material3.adaptive:adaptive-android:1.0.0
androidx.security:security-crypto:1.0.0
androidx.window.extensions.core:core:1.0.0
androidx.window:window-core:1.3.0
androidx.window:window-core-android:1.3.0
com.automattic:ucrop:2.2.10
com.caverock:androidsvg-aar:1.4
com.composables:core:1.15.0
com.composables:core-android:1.15.0
com.google.code.gson:gson:2.10.1
com.google.crypto.tink:tink-android:1.13.0
com.gravatar:gravatar:2.2.0
com.gravatar:gravatar-quickeditor:2.2.0
com.gravatar:gravatar-ui:2.2.0
io.coil-kt:coil-svg:2.7.0
io.github.osipxd:encrypted-datastore:1.1.1-beta03
io.github.osipxd:encrypted-datastore-bom:1.1.1-beta03
io.github.osipxd:encrypted-datastore-preferences:1.1.1-beta03
io.github.osipxd:security-crypto-datastore:1.1.1-beta03
io.github.osipxd:security-crypto-datastore-preferences:1.1.1-beta03

Upgraded Dependencies
androidx.navigation:navigation-common:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-common-ktx:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-compose:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-fragment:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-fragment-ktx:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-runtime:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-runtime-ktx:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-ui:2.8.3, (changed from 2.7.7)
androidx.navigation:navigation-ui-ktx:2.8.3, (changed from 2.7.7)
androidx.transition:transition:1.5.0, (changed from 1.4.1)
androidx.window:window:1.3.0, (changed from 1.0.0)
com.google.android.material:material:1.12.0, (changed from 1.11.0)
tree
++--- androidx.compose:compose-bom:2024.10.00
+|    +--- androidx.compose.material3.adaptive:adaptive:1.0.0 (c)
+|    \--- androidx.compose.material3.adaptive:adaptive-android:1.0.0 (c)
 +--- com.automattic:encryptedlogging:0.0.1
 |    \--- org.wordpress:utils:3.14.0
-|         \--- com.google.android.material:material:1.2.1 -> 1.11.0
-|              +--- org.jetbrains.kotlin:kotlin-bom:1.8.22
-|              |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (c)
-|              |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 -> 2.1.0 (c)
-|              |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 2.1.0 (c)
-|              |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.1.0 (c)
-|              +--- com.google.errorprone:error_prone_annotations:2.15.0 -> 2.28.0
-|              +--- androidx.activity:activity:1.8.0 -> 1.9.3 (*)
-|              +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*)
-|              +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.0 (*)
-|              +--- androidx.cardview:cardview:1.0.0
-|              |    \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*)
-|              +--- androidx.coordinatorlayout:coordinatorlayout:1.1.0
-|              |    +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
-|              |    +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
-|              |    +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
-|              |    \--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
-|              +--- androidx.constraintlayout:constraintlayout:2.0.1 -> 2.1.4
-|              |    +--- androidx.appcompat:appcompat:1.2.0 -> 1.7.0 (*)
-|              |    +--- androidx.core:core:1.3.2 -> 1.13.1 (*)
-|              |    \--- androidx.constraintlayout:constraintlayout-core:1.0.4
-|              +--- androidx.core:core:1.6.0 -> 1.13.1 (*)
-|              +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
-|              +--- androidx.dynamicanimation:dynamicanimation:1.0.0
-|              |    +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
-|              |    +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
-|              |    \--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
-|              +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.4.1 (*)
-|              +--- androidx.fragment:fragment:1.2.5 -> 1.8.5 (*)
-|              +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.8.7 (*)
-|              +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.3.2 (*)
-|              +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1 (*)
-|              +--- androidx.transition:transition:1.2.0 -> 1.4.1
-|              |    +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
-|              |    +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
-|              |    \--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
-|              +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
-|              \--- androidx.viewpager2:viewpager2:1.0.0 -> 1.1.0
-|                   +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
-|                   +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
-|                   +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
-|                   +--- androidx.core:core:1.3.2 -> 1.13.1 (*)
-|                   +--- androidx.fragment:fragment:1.1.0 -> 1.8.5 (*)
-|                   \--- androidx.recyclerview:recyclerview:1.3.1 -> 1.3.2 (*)
+|         \--- com.google.android.material:material:1.2.1 -> 1.12.0
+|              +--- org.jetbrains.kotlin:kotlin-bom:1.8.22
+|              |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (c)
+|              |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22 -> 2.1.0 (c)
+|              |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22 -> 2.1.0 (c)
+|              |    \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.1.0 (c)
+|              +--- com.google.errorprone:error_prone_annotations:2.15.0 -> 2.28.0
+|              +--- androidx.activity:activity:1.8.0 -> 1.9.3 (*)
+|              +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*)
+|              +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.0 (*)
+|              +--- androidx.cardview:cardview:1.0.0
+|              |    \--- androidx.annotation:annotation:1.0.0 -> 1.9.1 (*)
+|              +--- androidx.coordinatorlayout:coordinatorlayout:1.1.0
+|              |    +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
+|              |    +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
+|              |    +--- androidx.customview:customview:1.0.0 -> 1.1.0 (*)
+|              |    \--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+|              +--- androidx.constraintlayout:constraintlayout:2.0.1 -> 2.1.4
+|              |    +--- androidx.appcompat:appcompat:1.2.0 -> 1.7.0 (*)
+|              |    +--- androidx.core:core:1.3.2 -> 1.13.1 (*)
+|              |    \--- androidx.constraintlayout:constraintlayout-core:1.0.4
+|              +--- androidx.core:core:1.6.0 -> 1.13.1 (*)
+|              +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
+|              +--- androidx.dynamicanimation:dynamicanimation:1.0.0
+|              |    +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
+|              |    +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
+|              |    \--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+|              +--- androidx.annotation:annotation-experimental:1.0.0 -> 1.4.1 (*)
+|              +--- androidx.fragment:fragment:1.2.5 -> 1.8.5 (*)
+|              +--- androidx.lifecycle:lifecycle-runtime:2.0.0 -> 2.8.7 (*)
+|              +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.3.2 (*)
+|              +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1 (*)
+|              +--- androidx.transition:transition:1.5.0
+|              |    +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*)
+|              |    +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+|              |    +--- androidx.core:core:1.13.0 -> 1.13.1 (*)
+|              |    \--- androidx.dynamicanimation:dynamicanimation:1.0.0 (*)
+|              +--- androidx.vectordrawable:vectordrawable:1.1.0 (*)
+|              \--- androidx.viewpager2:viewpager2:1.0.0 -> 1.1.0
+|                   +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
+|                   +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
+|                   +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+|                   +--- androidx.core:core:1.3.2 -> 1.13.1 (*)
+|                   +--- androidx.fragment:fragment:1.1.0 -> 1.8.5 (*)
+|                   \--- androidx.recyclerview:recyclerview:1.3.1 -> 1.3.2 (*)
-+--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
++--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 +--- project :modules:features:account
-|    +--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    +--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
-|    +--- androidx.navigation:navigation-runtime:2.7.7
-|    |    +--- androidx.activity:activity-ktx:1.7.1 -> 1.9.3 (*)
-|    |    +--- androidx.annotation:annotation-experimental:1.1.0 -> 1.4.1 (*)
-|    |    +--- androidx.collection:collection:1.0.0 -> 1.4.4 (*)
-|    |    +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*)
-|    |    +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*)
-|    |    +--- androidx.navigation:navigation-common:2.7.7
-|    |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
-|    |    |    +--- androidx.collection:collection-ktx:1.1.0 -> 1.4.4 (*)
-|    |    |    +--- androidx.core:core-ktx:1.1.0 -> 1.13.1 (*)
-|    |    |    +--- androidx.lifecycle:lifecycle-common:2.6.2 -> 2.8.7 (*)
-|    |    |    +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*)
-|    |    |    +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*)
-|    |    |    +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 -> 2.8.7 (*)
-|    |    |    +--- androidx.profileinstaller:profileinstaller:1.3.0 -> 1.3.1 (*)
-|    |    |    +--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
-|    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
-|    |    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |    |    \--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
-|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
-|    |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |    \--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
+|    +--- androidx.navigation:navigation-runtime:2.7.7 -> 2.8.3
+|    |    +--- androidx.activity:activity-ktx:1.7.1 -> 1.9.3 (*)
+|    |    +--- androidx.annotation:annotation-experimental:1.4.1 (*)
+|    |    +--- androidx.collection:collection:1.4.2 -> 1.4.4 (*)
+|    |    +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*)
+|    |    +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*)
+|    |    +--- androidx.navigation:navigation-common:2.8.3
+|    |    |    +--- androidx.annotation:annotation:1.8.1 -> 1.9.1 (*)
+|    |    |    +--- androidx.collection:collection-ktx:1.4.2 -> 1.4.4 (*)
+|    |    |    +--- androidx.core:core-ktx:1.1.0 -> 1.13.1 (*)
+|    |    |    +--- androidx.lifecycle:lifecycle-common:2.6.2 -> 2.8.7 (*)
+|    |    |    +--- androidx.lifecycle:lifecycle-runtime-ktx:2.6.2 -> 2.8.7 (*)
+|    |    |    +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2 -> 2.8.7 (*)
+|    |    |    +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2 -> 2.8.7 (*)
+|    |    |    +--- androidx.profileinstaller:profileinstaller:1.3.1 (*)
+|    |    |    +--- androidx.savedstate:savedstate-ktx:1.2.1 (*)
+|    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+|    |    |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.1
+|    |    |    |    \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.1
+|    |    |    |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.1.0 (*)
+|    |    |    |         \--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.1
+|    |    |    |              +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.1 (c)
+|    |    |    |              +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.1 (c)
+|    |    |    |              +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1 (c)
+|    |    |    |              \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.1 (c)
+|    |    |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-ui:2.8.3 (c)
+|    |    |    \--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+|    |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.1 (*)
+|    |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |    \--- androidx.navigation:navigation-ui:2.8.3 (c)
 |    +--- com.airbnb.android:showkase:1.0.3
-|    |    \--- androidx.navigation:navigation-compose:2.5.1 -> 2.7.7
-|    |         +--- androidx.activity:activity-compose:1.7.0 -> 1.9.3 (*)
-|    |         +--- androidx.compose.animation:animation:1.5.1 -> 1.7.4 (*)
-|    |         +--- androidx.compose.foundation:foundation-layout:1.5.1 -> 1.7.4 (*)
-|    |         +--- androidx.compose.runtime:runtime:1.5.1 -> 1.7.4 (*)
-|    |         +--- androidx.compose.runtime:runtime-saveable:1.5.1 -> 1.7.4 (*)
-|    |         +--- androidx.compose.ui:ui:1.5.1 -> 1.7.4 (*)
-|    |         +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 -> 2.8.7
-|    |         |    \--- androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
-|    |         |         +--- androidx.annotation:annotation:1.8.0 -> 1.9.1 (*)
-|    |         |         +--- androidx.compose.runtime:runtime:1.6.0 -> 1.7.4 (*)
-|    |         |         +--- androidx.compose.ui:ui:1.6.0 -> 1.7.4 (*)
-|    |         |         +--- androidx.lifecycle:lifecycle-common:2.8.7 (*)
-|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*)
-|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (*)
-|    |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
-|    |         |         +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-livedata-ktx:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-reactivestreams:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-reactivestreams-ktx:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-service:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
-|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
-|    |         |         \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
-|    |         +--- androidx.navigation:navigation-runtime-ktx:2.7.7
-|    |         |    +--- androidx.navigation:navigation-common-ktx:2.7.7
-|    |         |    |    +--- androidx.navigation:navigation-common:2.7.7 (*)
-|    |         |    |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |         |    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |         |    |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |         |    |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |         |    |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |         |    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |         |    |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |         |    |    \--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-runtime:2.7.7 (*)
-|    |         |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |         |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |         |    \--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
-|    |         +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |         +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |         +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |         +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |         +--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |         +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |         +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |         \--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
+|    |    \--- androidx.navigation:navigation-compose:2.5.1 -> 2.8.3
+|    |         +--- androidx.activity:activity-compose:1.8.0 -> 1.9.3 (*)
+|    |         +--- androidx.compose.animation:animation:1.7.2 -> 1.7.4 (*)
+|    |         +--- androidx.compose.foundation:foundation-layout:1.7.2 -> 1.7.4 (*)
+|    |         +--- androidx.compose.runtime:runtime:1.7.2 -> 1.7.4 (*)
+|    |         +--- androidx.compose.runtime:runtime-saveable:1.7.2 -> 1.7.4 (*)
+|    |         +--- androidx.compose.ui:ui:1.7.2 -> 1.7.4 (*)
+|    |         +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2 -> 2.8.7
+|    |         |    \--- androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.7
+|    |         |         +--- androidx.annotation:annotation:1.8.0 -> 1.9.1 (*)
+|    |         |         +--- androidx.compose.runtime:runtime:1.6.0 -> 1.7.4 (*)
+|    |         |         +--- androidx.compose.ui:ui:1.6.0 -> 1.7.4 (*)
+|    |         |         +--- androidx.lifecycle:lifecycle-common:2.8.7 (*)
+|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (*)
+|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (*)
+|    |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+|    |         |         +--- androidx.lifecycle:lifecycle-common:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-common-java8:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-livedata:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-livedata-core:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-livedata-ktx:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-process:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-reactivestreams:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-reactivestreams-ktx:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-runtime:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-runtime-compose:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-runtime-ktx:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-service:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel:2.8.7 (c)
+|    |         |         +--- androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7 (c)
+|    |         |         \--- androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.7 (c)
+|    |         +--- androidx.navigation:navigation-runtime-ktx:2.8.3
+|    |         |    +--- androidx.navigation:navigation-common-ktx:2.8.3
+|    |         |    |    +--- androidx.navigation:navigation-common:2.8.3 (*)
+|    |         |    |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |         |    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |         |    |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |         |    |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |         |    |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |         |    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |         |    |    +--- androidx.navigation:navigation-ui:2.8.3 (c)
+|    |         |    |    \--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-runtime:2.8.3 (*)
+|    |         |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |         |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |         |    \--- androidx.navigation:navigation-ui:2.8.3 (c)
+|    |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+|    |         +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.1 (*)
+|    |         +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |         +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |         +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |         +--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |         +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |         +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |         +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |         \--- androidx.navigation:navigation-ui:2.8.3 (c)
 |    +--- project :modules:features:search
 |    |    +--- project :modules:services:analytics
 |    |    |    +--- project :modules:services:model
 |    |    |    |    \--- project :modules:services:utils
-|    |    |    |         \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    |    |    |         \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |    |    |    \--- project :modules:services:preferences
 |    |    |         +--- androidx.preference:preference-ktx:1.2.1
 |    |    |         |    \--- androidx.preference:preference:1.2.1
 |    |    |         |         \--- androidx.slidingpanelayout:slidingpanelayout:1.2.0
-|    |    |         |              +--- androidx.window:window:1.0.0
-|    |    |         |              |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.6.0 -> 2.1.0 (*)
-|    |    |         |              |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2 -> 1.9.0 (*)
-|    |    |         |              |    +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*)
-|    |    |         |              |    +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
-|    |    |         |              |    \--- androidx.core:core:1.3.2 -> 1.13.1 (*)
+|    |    |         |              +--- androidx.window:window:1.0.0 -> 1.3.0
+|    |    |         |              |    +--- androidx.annotation:annotation:1.3.0 -> 1.9.1 (*)
+|    |    |         |              |    +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+|    |    |         |              |    +--- androidx.core:core:1.8.0 -> 1.13.1 (*)
+|    |    |         |              |    +--- androidx.window.extensions.core:core:1.0.0
+|    |    |         |              |    |    +--- androidx.annotation:annotation:1.6.0 -> 1.9.1 (*)
+|    |    |         |              |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.20 -> 2.1.0 (*)
+|    |    |         |              |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+|    |    |         |              |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*)
+|    |    |         |              |    \--- androidx.window:window-core:1.3.0 (c)
-|    |    |         |              \--- androidx.transition:transition:1.4.1 (*)
+|    |    |         |              \--- androidx.transition:transition:1.4.1 -> 1.5.0 (*)
 |    |    |         \--- project :modules:services:images
-|    |    |              \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    |    |              \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |    |    +--- project :modules:services:repositories
-|    |    |    \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    |    |    \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |    |    +--- project :modules:services:ui
-|    |    |    \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    |    |    \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |    |    \--- project :modules:services:views
-|    |         +--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    |         +--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
-|    |         \--- androidx.navigation:navigation-runtime:2.7.7 (*)
+|    |         \--- androidx.navigation:navigation-runtime:2.7.7 -> 2.8.3 (*)
 |    +--- project :modules:features:settings
-|    |    +--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    |    +--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |    |    +--- com.mikepenz:aboutlibraries-compose:11.2.3
 |    |    |    \--- com.mikepenz:aboutlibraries-compose-android:11.2.3
 |    |    |         \--- com.mikepenz:aboutlibraries-core:11.2.3
 |    |    |              \--- com.mikepenz:aboutlibraries-core-android:11.2.3
 |    |    |                   \--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1
 |    |    |                        \--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.1
-|    |    |                             +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.1
-|    |    |                             |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.7.1 (c)
-|    |    |                             |    +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1 (c)
-|    |    |                             |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.1 (c)
-|    |    |                             |    \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.1 (c)
+|    |    |                             +--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.1 (*)
-|    |    |                             \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.1
-|    |    |                                  \--- org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.7.1
-|    |    |                                       +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.1.0 (*)
-|    |    |                                       \--- org.jetbrains.kotlinx:kotlinx-serialization-bom:1.7.1 (*)
+|    |    |                             \--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.7.1 (*)
 |    |    \--- androidx.hilt:hilt-navigation-compose:1.2.0
 |    |         +--- androidx.hilt:hilt-navigation:1.2.0
-|    |         |    \--- androidx.navigation:navigation-runtime:2.5.1 -> 2.7.7 (*)
+|    |         |    \--- androidx.navigation:navigation-runtime:2.5.1 -> 2.8.3 (*)
-|    |         \--- androidx.navigation:navigation-compose:2.5.1 -> 2.7.7 (*)
+|    |         \--- androidx.navigation:navigation-compose:2.5.1 -> 2.8.3 (*)
-|    +--- androidx.navigation:navigation-compose:2.7.7 (*)
+|    +--- androidx.navigation:navigation-compose:2.7.7 -> 2.8.3 (*)
-|    +--- androidx.navigation:navigation-fragment-ktx:2.7.7
-|    |    +--- androidx.navigation:navigation-fragment:2.7.7
-|    |    |    +--- androidx.fragment:fragment-ktx:1.6.2 -> 1.8.5 (*)
-|    |    |    +--- androidx.navigation:navigation-runtime:2.7.7 (*)
-|    |    |    +--- androidx.slidingpanelayout:slidingpanelayout:1.2.0 (*)
-|    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
-|    |    |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |    |    \--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (*)
-|    |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |    \--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
+|    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 -> 2.8.3
+|    |    +--- androidx.navigation:navigation-fragment:2.8.3
+|    |    |    +--- androidx.fragment:fragment-ktx:1.6.2 -> 1.8.5 (*)
+|    |    |    +--- androidx.navigation:navigation-runtime:2.8.3 (*)
+|    |    |    +--- androidx.slidingpanelayout:slidingpanelayout:1.2.0 (*)
+|    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+|    |    |    +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.3 -> 1.7.1 (*)
+|    |    |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-ui:2.8.3 (c)
+|    |    |    \--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (*)
+|    |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |    \--- androidx.navigation:navigation-ui:2.8.3 (c)
-|    +--- androidx.navigation:navigation-ui-ktx:2.7.7
-|    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (*)
-|    |    +--- androidx.navigation:navigation-ui:2.7.7
-|    |    |    +--- androidx.annotation:annotation-experimental:1.1.0 -> 1.4.1 (*)
-|    |    |    +--- androidx.customview:customview:1.1.0 (*)
-|    |    |    +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
-|    |    |    +--- androidx.navigation:navigation-runtime:2.7.7 (*)
-|    |    |    +--- androidx.transition:transition:1.3.0 -> 1.4.1 (*)
-|    |    |    +--- com.google.android.material:material:1.4.0-beta01 -> 1.11.0 (*)
-|    |    |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |    |    \--- androidx.navigation:navigation-ui-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-common:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-compose:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-fragment:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-fragment-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-runtime:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-runtime-ktx:2.7.7 (c)
-|    |    +--- androidx.navigation:navigation-ui:2.7.7 (c)
-|    |    \--- androidx.navigation:navigation-common-ktx:2.7.7 (c)
+|    +--- androidx.navigation:navigation-ui-ktx:2.7.7 -> 2.8.3
+|    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (*)
+|    |    +--- androidx.navigation:navigation-ui:2.8.3
+|    |    |    +--- androidx.annotation:annotation-experimental:1.4.1 (*)
+|    |    |    +--- androidx.customview:customview:1.1.0 (*)
+|    |    |    +--- androidx.drawerlayout:drawerlayout:1.1.1 (*)
+|    |    |    +--- androidx.navigation:navigation-runtime:2.8.3 (*)
+|    |    |    +--- androidx.transition:transition:1.3.0 -> 1.5.0 (*)
+|    |    |    +--- com.google.android.material:material:1.4.0 -> 1.12.0 (*)
+|    |    |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |    |    \--- androidx.navigation:navigation-ui-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-common:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-common-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-compose:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-fragment:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-fragment-ktx:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-runtime:2.8.3 (c)
+|    |    +--- androidx.navigation:navigation-runtime-ktx:2.8.3 (c)
+|    |    \--- androidx.navigation:navigation-ui:2.8.3 (c)
 |    \--- project :modules:features:cartheme
-|         \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|         \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 +--- project :modules:features:discover
-|    +--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    +--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |    \--- project :modules:features:podcasts
-|         +--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|         +--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |         +--- project :modules:features:player
-|         |    +--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|         |    +--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 |         |    +--- androidx.compose.material3:material3-window-size-class-android -> 1.3.0
-|         |    |    \--- androidx.window:window:1.0.0 (*)
+|         |    |    \--- androidx.window:window:1.0.0 -> 1.3.0 (*)
 |         |    \--- io.github.kevinnzou:compose-webview:0.33.6
-|         |         \--- com.google.android.material:material:1.11.0 (*)
+|         |         \--- com.google.android.material:material:1.11.0 -> 1.12.0 (*)
-|         \--- androidx.navigation:navigation-compose:2.7.7 (*)
+|         \--- androidx.navigation:navigation-compose:2.7.7 -> 2.8.3 (*)
 +--- project :modules:features:filters
-|    \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 +--- project :modules:features:navigation
-|    \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
 +--- project :modules:features:profile
-|    \--- com.google.android.material:material:1.9.0 -> 1.11.0 (*)
+|    \--- com.google.android.material:material:1.9.0 -> 1.12.0 (*)
+\--- project :modules:services:gravatar
+     +--- com.google.dagger:hilt-android:2.53 (*)
+     +--- org.jetbrains.kotlin:kotlin-stdlib:2.1.0 (*)
+     +--- project :modules:services:utils (*)
+     +--- com.gravatar:gravatar:2.2.0
+     |    +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:1.9.25 -> 2.1.0 (*)
+     |    +--- com.squareup.retrofit2:retrofit:2.11.0 (*)
+     |    +--- com.squareup.retrofit2:converter-moshi:2.11.0 (*)
+     |    +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3 -> 1.9.0 (*)
+     |    +--- com.squareup.okhttp3:okhttp:4.12.0 (*)
+     |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.1.0 (*)
+     \--- com.gravatar:gravatar-quickeditor:2.2.0
+          +--- org.jetbrains.kotlin:kotlin-parcelize-runtime:1.9.25 -> 2.1.0 (*)
+          +--- com.gravatar:gravatar:2.2.0 (*)
+          +--- com.gravatar:gravatar-ui:2.2.0
+          |    +--- androidx.core:core-ktx:1.13.1 (*)
+          |    +--- androidx.appcompat:appcompat:1.7.0 (*)
+          |    +--- com.google.android.material:material:1.12.0 (*)
+          |    +--- io.coil-kt:coil-compose:2.7.0 (*)
+          |    +--- io.coil-kt:coil-svg:2.7.0
+          |    |    +--- androidx.core:core-ktx:1.12.0 -> 1.13.1 (*)
+          |    |    +--- com.caverock:androidsvg-aar:1.4
+          |    |    +--- io.coil-kt:coil-base:2.7.0 (*)
+          |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:2.0.0 -> 2.1.0 (*)
+          |    +--- com.gravatar:gravatar:2.2.0 (*)
+          |    +--- androidx.compose:compose-bom:2024.02.00 -> 2024.10.00 (*)
+          |    +--- androidx.compose.ui:ui -> 1.7.4 (*)
+          |    +--- androidx.compose.ui:ui-tooling-preview -> 1.7.4 (*)
+          |    +--- androidx.compose.material3:material3 -> 1.3.0 (*)
+          |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.1.0 (*)
+          +--- androidx.browser:browser:1.8.0
+          |    +--- androidx.annotation:annotation:1.2.0 -> 1.9.1 (*)
+          |    +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
+          |    +--- androidx.collection:collection:1.1.0 -> 1.4.4 (*)
+          |    +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
+          |    +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
+          |    +--- androidx.interpolator:interpolator:1.0.0 (*)
+          |    \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+          +--- androidx.appcompat:appcompat:1.7.0 (*)
+          +--- androidx.lifecycle:lifecycle-viewmodel-compose:2.8.3 -> 2.8.7 (*)
+          +--- androidx.navigation:navigation-compose:2.8.3 (*)
+          +--- io.github.osipxd:security-crypto-datastore-preferences:1.1.1-beta03
+          |    +--- io.github.osipxd:encrypted-datastore-preferences:1.1.1-beta03
+          |    |    +--- io.github.osipxd:encrypted-datastore-bom:1.1.1-beta03
+          |    |    |    +--- io.github.osipxd:encrypted-datastore-preferences:1.1.1-beta03 (c)
+          |    |    |    +--- io.github.osipxd:security-crypto-datastore:1.1.1-beta03 (c)
+          |    |    |    +--- io.github.osipxd:security-crypto-datastore-preferences:1.1.1-beta03 (c)
+          |    |    |    +--- androidx.datastore:datastore:1.1.1 (c)
+          |    |    |    +--- androidx.datastore:datastore-core:1.1.1 (c)
+          |    |    |    +--- androidx.datastore:datastore-preferences:1.1.1 (c)
+          |    |    |    +--- androidx.datastore:datastore-preferences-core:1.1.1 (c)
+          |    |    |    \--- io.github.osipxd:encrypted-datastore:1.1.1-beta03 (c)
+          |    |    +--- io.github.osipxd:encrypted-datastore:1.1.1-beta03
+          |    |    |    +--- io.github.osipxd:encrypted-datastore-bom:1.1.1-beta03 (*)
+          |    |    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+          |    |    |    +--- androidx.datastore:datastore-core:1.1.1 (*)
+          |    |    |    \--- com.google.crypto.tink:tink-android:1.13.0
+          |    |    |         +--- androidx.annotation:annotation:1.5.0 -> 1.9.1 (*)
+          |    |    |         +--- com.google.code.findbugs:jsr305:3.0.2
+          |    |    |         +--- com.google.code.gson:gson:2.10.1
+          |    |    |         \--- com.google.errorprone:error_prone_annotations:2.22.0 -> 2.28.0
+          |    |    +--- androidx.datastore:datastore-preferences-core:1.1.1 (*)
+          |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+          |    +--- io.github.osipxd:encrypted-datastore-bom:1.1.1-beta03 (*)
+          |    +--- io.github.osipxd:security-crypto-datastore:1.1.1-beta03
+          |    |    +--- io.github.osipxd:encrypted-datastore:1.1.1-beta03 (*)
+          |    |    +--- io.github.osipxd:encrypted-datastore-bom:1.1.1-beta03 (*)
+          |    |    +--- androidx.datastore:datastore:1.1.1 (*)
+          |    |    +--- androidx.security:security-crypto:1.0.0
+          |    |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
+          |    |    |    \--- com.google.crypto.tink:tink-android:1.5.0 -> 1.13.0 (*)
+          |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+          |    +--- androidx.datastore:datastore-preferences:1.1.1 (*)
+          |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.23 -> 2.1.0 (*)
+          +--- androidx.startup:startup-runtime:1.1.1 (*)
+          +--- io.coil-kt:coil-compose:2.7.0 (*)
+          +--- com.squareup.retrofit2:retrofit:2.11.0 (*)
+          +--- com.squareup.retrofit2:converter-moshi:2.11.0 (*)
+          +--- com.automattic:ucrop:2.2.10
+          |    +--- androidx.appcompat:appcompat:1.6.1 -> 1.7.0 (*)
+          |    +--- androidx.exifinterface:exifinterface:1.3.6 -> 1.3.7 (*)
+          |    +--- androidx.transition:transition:1.4.1 -> 1.5.0 (*)
+          |    \--- com.squareup.okhttp3:okhttp:3.12.13 -> 4.12.0 (*)
+          +--- androidx.compose:compose-bom:2024.02.00 -> 2024.10.00 (*)
+          +--- androidx.compose.ui:ui -> 1.7.4 (*)
+          +--- androidx.compose.ui:ui-tooling-preview -> 1.7.4 (*)
+          +--- androidx.compose.material3:material3 -> 1.3.0 (*)
+          +--- androidx.activity:activity-compose:1.9.2 -> 1.9.3 (*)
+          +--- androidx.compose.material3.adaptive:adaptive:1.0.0
+          |    \--- androidx.compose.material3.adaptive:adaptive-android:1.0.0
+          |         +--- androidx.annotation:annotation:1.1.0 -> 1.9.1 (*)
+          |         +--- androidx.annotation:annotation-experimental:1.4.0 -> 1.4.1 (*)
+          |         +--- androidx.compose.foundation:foundation:1.6.5 -> 1.7.4 (*)
+          |         +--- androidx.compose.ui:ui-geometry:1.6.5 -> 1.7.4 (*)
+          |         +--- androidx.window:window:1.3.0 (*)
+          |         +--- androidx.window:window-core:1.3.0
+          |         |    \--- androidx.window:window-core-android:1.3.0
+          |         |         +--- androidx.annotation:annotation:1.7.0 -> 1.9.1 (*)
+          |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+          |         |         \--- androidx.window:window:1.3.0 (c)
+          |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.1.0 (*)
+          |         \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.8.22 -> 2.1.0 (*)
+          +--- com.composables:core:1.15.0
+          |    \--- com.composables:core-android:1.15.0
+          |         +--- androidx.activity:activity:1.9.0 -> 1.9.3 (*)
+          |         +--- androidx.activity:activity-compose:1.9.0 -> 1.9.3 (*)
+          |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.0.10 -> 2.1.0 (*)
+          |         \--- org.jetbrains.compose.foundation:foundation:1.6.11 -> 1.7.0 (*)
+          \--- org.jetbrains.kotlin:kotlin-stdlib:1.9.25 -> 2.1.0 (*)

wpmobilebot avatar Oct 21 '24 11:10 wpmobilebot

The Lint failure is not related to this PR. You can sync with main to make it gone.

MiSikora avatar Nov 29 '24 09:11 MiSikora

Would the Gravatar integration work better as a separate application? Keeping it within the Pocket Casts app could lead to long-term maintenance challenges. Other apps using this library are likely to face similar issues. Could we explore an alternative where we open a URL, and if the Gravatar app is installed, it launches instead of the website?

geekygecko avatar Nov 29 '24 21:11 geekygecko

Thanks for your comments @MiSikora, @geekygecko.

Could we explore an alternative where we open a URL, and if the Gravatar app is installed

We don't have a Gravatar app (yet), so at the moment, we can't follow this approach. We can continue with the browser option, already implemented in PocketCast, but that's all.

The technical comments directly related to this PR have already been fixed. However, you have several concerns about the Gravatar SDK's design/architectural perspective. This is great insight for us as your point of view is the same that a third-party developer can have.

Some of the points you've mentioned (ex, Theming and Browser Navigation) have been made that way on purpose, but instead of giving my personal opinion or the reasons why we did that, I prefer to move this discussion to the whole Gravatar team. At the same time, we'll analyze your size/dependency concerns.

I'll keep you updated.

hamorillo avatar Dec 02 '24 07:12 hamorillo

Version 7.79 has now entered code-freeze, so the milestone of this PR has been updated to 7.80.

mebarbosa avatar Dec 09 '24 12:12 mebarbosa

I've just found out that we are holding off on this integration for now. As I was about to ask for a second review, I'll explain the changes for the sake of history.

  • Gravatar SDK version has been updated to 2.2.0-rc1 (we haven't found any issue with the RC, so this PR would only require the bump to 2.2.0. With the new SDK, we solve the Drop Moshi-Kotlin and Theming. The QuickEditor bottom sheet is customized based on the light/dark attribute of the current PocketCast theme.

  • About excluding the Gravatar SDK for Wear/Automotive. As you suggested, I've followed the ffmpeg approach. I've created two modules, gravatar and gravatar-noop. The first one contains the code and the dependencies with the Gravatar SDK, and it's injected only into the App build. The noop doesn't have dependencies and is injected in Wear/Automotive builds. Gravatar SDK doesn't land in those builds right now.

The last SDK release did not address the Browser Navigation point. We are considering it, but I would say it is a lower priority than the previous ones.

Said that. I'm moving this PR to a draft. Feel free to drop any comments or suggestions about the latest changes / Gravatar SDK. I'm looking forward to it. I'll keep updating this PR with your feedback. On the other hand, if you think the current state adds value to PocketCast and makes sense to merge it, please let me know.

hamorillo avatar Dec 12 '24 08:12 hamorillo

As always, thanks for your insight @MiSikora, I'll review your technical suggestions.

As I said before, the SDK justification is a fair question; I understand your concerns. However, in my opinion, that discussion should wait until we clarify how this integration should work (that's why we converted the PR to a draft). I know people are trying to find the best way to make the integration interesting for both products.

hamorillo avatar Dec 12 '24 13:12 hamorillo

1 Message
:book: This PR is still a Draft: some checks will be skipped.

Generated by :no_entry_sign: Danger

dangermattic avatar Dec 16 '24 11:12 dangermattic

Version 7.80 has now entered code-freeze, so the milestone of this PR has been updated to 7.81.

geekygecko avatar Jan 06 '25 10:01 geekygecko

Version 7.81 has now entered code-freeze, so the milestone of this PR has been updated to 7.82.

MiSikora avatar Jan 20 '25 08:01 MiSikora

Version 7.82 has now entered code-freeze, so the milestone of this PR has been updated to 7.83.

mebarbosa avatar Feb 03 '25 11:02 mebarbosa

Version 7.83 has now entered code-freeze, so the milestone of this PR has been updated to 7.84.

wpmobilebot avatar Feb 17 '25 08:02 wpmobilebot

I'll close this PR since at the moment we won't be moving forward with this.

MiSikora avatar Mar 14 '25 09:03 MiSikora