Skip to content

QR Code: Partial MLKit Revert - #19708

Merged
zwarm merged 5 commits into
release/23.8from
issue/partial-mlkit-revert
Dec 1, 2023
Merged

QR Code: Partial MLKit Revert#19708
zwarm merged 5 commits into
release/23.8from
issue/partial-mlkit-revert

Conversation

@zwarm

@zwarm zwarm commented Nov 30, 2023

Copy link
Copy Markdown
Contributor

Fixes #19695

This PR reverts the use of MLKit for scanning QR Code as used by the web login. The reason for the revert is because the stories-android has a dependency on camerax `1.0.0-alpha06' and the MLKit needs at least version '1.2.3'. We could not resolve the dependency via gradle :(.

The entire barcodescanner package had to be removed because the dependencies were nixed from build.gradle. Since the strings were already translated, I marked the resource as unused so they would not have to go through translation again.

The plan is to update the stories-android to CameraX version 1.2.3 during the next hack week

cc: @oguzkocer

To Test:

Story Post

  • Install the JP app build from this PR
  • Navigate to My Site
  • Tap on the FAB and select Story Post
  • Navigate past the intro (if shown) and agree to any permissions
  • Tap the "camera" icon
  • ✅ Verify the camera launches and the app doesn't crash

[JP] Scan Login Code - Success

  • Log in to the Jetpack app with a WP.com account (note that you need to use a non A8C account and a non 2FA enabled account).
  • Navigate to the Me screen (click on bottom Me navigation tab).
    (STOP)
  • Head over to your desktop and open a web browser (note that using an incognito tab works best).
  • Browse to wordpress.com (note that if you are logged-in, log-out first).
  • Tap the Log In link (top-right).
  • Tap the Login via the mobile app link in the list of options below the main Continue button (bottom-middle).
  • Verify you are on the Login via the mobile app view and Use QR Code to login is shown, along with a QR code for you to scan.

Regression Notes

  1. Potential unintended areas of impact
    Stories still crash when launching camera

  2. What I did to test those areas of impact (or what existing automated tests I relied on)
    Manual testing

  3. What automated tests I added (or what prevented me from doing so)
    N/A


PR Submission Checklist:

  • I have completed the Regression Notes.
  • I have considered adding accessibility improvements for my changes.
  • I have considered if this change warrants user-facing release notes and have added them to RELEASE-NOTES.txt if necessary.

UI Changes Testing Checklist: N/A

@zwarm zwarm added this to the 23.8 ❄️ milestone Nov 30, 2023
@zwarm
zwarm requested a review from RenanLukas November 30, 2023 23:29
@zwarm zwarm self-assigned this Nov 30, 2023
@peril-wordpress-mobile

Copy link
Copy Markdown
Warnings
⚠️ This PR is assigned to a milestone which is closing in less than 4 days Please, make sure to get it merged by then or assign it to a later expiring milestone
⚠️ PR has more than 300 lines of code changing. Consider splitting into smaller PRs if possible.

Generated by 🚫 dangerJS

@wpmobilebot

Copy link
Copy Markdown
Contributor
2 Warnings
⚠️ This PR is larger than 300 lines of changes. Please consider splitting it into smaller PRs for easier and faster reviews.
⚠️ This PR is assigned to the milestone 23.8 ❄️. The due date for this milestone has already passed.
Please make sure to get it merged by then or assign it to a milestone with a later deadline.

Generated by 🚫 Danger

@wpmobilebot

Copy link
Copy Markdown
Contributor

Found 1 violations:

The PR caused the following dependency changes:

 +--- com.automattic:stories:2.4.0
 |    \--- com.automattic.stories:photoeditor:2.4.0
-|         +--- androidx.camera:camera-core:1.0.0-alpha06 -> 1.2.3
-|         |    +--- androidx.annotation:annotation:1.2.0 -> 1.6.0 (*)
-|         |    +--- androidx.annotation:annotation-experimental:1.1.0 -> 1.3.0 (*)
-|         |    +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-|         |    +--- androidx.core:core:1.1.0 -> 1.10.0 (*)
-|         |    +--- androidx.exifinterface:exifinterface:1.3.2 -> 1.3.6 (*)
-|         |    +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.6.2 (*)
-|         |    +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.6.2 (*)
-|         |    +--- com.google.auto.value:auto-value-annotations:1.6.3
-|         |    +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-|         |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 -> 1.9.10 (*)
+|         +--- androidx.camera:camera-core:1.0.0-alpha06
+|         |    +--- com.google.auto.value:auto-value-annotations:1.6.3
+|         |    +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+|         |    +--- androidx.lifecycle:lifecycle-livedata:2.1.0 -> 2.6.2 (*)
+|         |    +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.6.2 (*)
+|         |    +--- androidx.exifinterface:exifinterface:1.0.0 -> 1.3.6 (*)
+|         |    +--- androidx.annotation:annotation:1.0.0 -> 1.6.0 (*)
+|         |    +--- androidx.core:core:1.1.0 -> 1.10.0 (*)
+|         |    \--- androidx.concurrent:concurrent-futures:1.0.0-alpha03 -> 1.1.0 (*)
-|         \--- androidx.camera:camera-camera2:1.0.0-alpha06 -> 1.2.3
-|              +--- androidx.annotation:annotation:1.2.0 -> 1.6.0 (*)
-|              +--- androidx.camera:camera-core:1.2.3 (*)
-|              +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-|              +--- androidx.core:core:1.1.0 -> 1.10.0 (*)
-|              +--- com.google.auto.value:auto-value-annotations:1.6.3
-|              \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+|         \--- androidx.camera:camera-camera2:1.0.0-alpha06
+|              +--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
+|              +--- androidx.camera:camera-core:1.0.0-alpha06 (*)
+|              +--- androidx.core:core:1.1.0 -> 1.10.0 (*)
+|              +--- androidx.annotation:annotation:1.0.0 -> 1.6.0 (*)
+|              \--- androidx.concurrent:concurrent-futures:1.0.0-alpha03 -> 1.1.0 (*)
++--- com.google.android.gms:play-services-code-scanner:16.0.0-beta3
+|    +--- androidx.activity:activity:1.3.1 -> 1.8.0 (*)
+|    +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0
+|    |    \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+|    +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8
+|    |    +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+|    |    +--- com.google.android.datatransport:transport-api:3.0.0 (*)
+|    |    +--- com.google.android.datatransport:transport-runtime:3.1.8
+|    |    |    +--- androidx.annotation:annotation:1.3.0 -> 1.6.0 (*)
+|    |    |    +--- com.google.android.datatransport:transport-api:3.0.0 (*)
+|    |    |    +--- com.google.firebase:firebase-encoders:17.0.0
+|    |    |    |    \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+|    |    |    +--- com.google.firebase:firebase-encoders-proto:16.0.0
+|    |    |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+|    |    |    |    \--- com.google.firebase:firebase-encoders:17.0.0 (*)
+|    |    |    \--- javax.inject:javax.inject:1
+|    |    +--- com.google.firebase:firebase-encoders:17.0.0 (*)
+|    |    \--- com.google.firebase:firebase-encoders-json:18.0.0
+|    |         +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
+|    |         \--- com.google.firebase:firebase-encoders:17.0.0 (*)
+|    +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
+|    +--- com.google.android.gms:play-services-base:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
+|    +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0
+|    |    +--- androidx.annotation:annotation:1.5.0 -> 1.6.0 (*)
+|    |    +--- com.google.errorprone:error_prone_annotations:2.9.0 -> 2.15.0
+|    |    \--- com.google.firebase:firebase-annotations:16.2.0
+|    |         \--- javax.inject:javax.inject:1
+|    +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
+|    +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
+|    +--- com.google.mlkit:barcode-scanning-common:17.0.0
+|    |    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.mlkit:vision-common:17.0.0
+|    |         +--- androidx.exifinterface:exifinterface:1.0.0 -> 1.3.6 (*)
+|    |         +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0 (*)
+|    |         +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8 (*)
+|    |         +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
+|    |         +--- com.google.android.gms:play-services-base:18.0.1 -> 18.1.0 (*)
+|    |         +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
+|    |         +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
+|    |         +--- com.google.android.odml:image:1.0.0-beta1
+|    |         +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
+|    |         +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
+|    |         +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
+|    |         \--- com.google.mlkit:common:18.0.0 -> 18.5.0
+|    |              +--- androidx.core:core:1.0.0 -> 1.10.0 (*)
+|    |              +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0 (*)
+|    |              +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8 (*)
+|    |              +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
+|    |              +--- com.google.android.gms:play-services-base:18.1.0 (*)
+|    |              +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |              +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
+|    |              +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
+|    |              +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
+|    |              \--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
+|    \--- com.google.mlkit:common:18.5.0 (*)
-+--- com.google.mlkit:barcode-scanning-common:17.0.0
-|    +--- com.google.android.gms:play-services-basement:18.0.0 -> 18.1.0 (*)
-|    \--- com.google.mlkit:vision-common:17.0.0 -> 17.3.0
-|         +--- androidx.exifinterface:exifinterface:1.0.0 -> 1.3.6 (*)
-|         +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0
-|         |    \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-|         +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8
-|         |    +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-|         |    +--- com.google.android.datatransport:transport-api:3.0.0 (*)
-|         |    +--- com.google.android.datatransport:transport-runtime:3.1.8
-|         |    |    +--- androidx.annotation:annotation:1.3.0 -> 1.6.0 (*)
-|         |    |    +--- com.google.android.datatransport:transport-api:3.0.0 (*)
-|         |    |    +--- com.google.firebase:firebase-encoders:17.0.0
-|         |    |    |    \--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-|         |    |    +--- com.google.firebase:firebase-encoders-proto:16.0.0
-|         |    |    |    +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-|         |    |    |    \--- com.google.firebase:firebase-encoders:17.0.0 (*)
-|         |    |    \--- javax.inject:javax.inject:1
-|         |    +--- com.google.firebase:firebase-encoders:17.0.0 (*)
-|         |    \--- com.google.firebase:firebase-encoders-json:18.0.0
-|         |         +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-|         |         \--- com.google.firebase:firebase-encoders:17.0.0 (*)
-|         +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
-|         +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|         +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|         +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
-|         +--- com.google.android.odml:image:1.0.0-beta1
-|         +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0
-|         |    +--- androidx.annotation:annotation:1.5.0 -> 1.6.0 (*)
-|         |    +--- com.google.errorprone:error_prone_annotations:2.9.0 -> 2.15.0
-|         |    \--- com.google.firebase:firebase-annotations:16.2.0
-|         |         \--- javax.inject:javax.inject:1
-|         +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
-|         +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
-|         \--- com.google.mlkit:common:18.6.0 -> 18.9.0
-|              +--- androidx.core:core:1.0.0 -> 1.10.0 (*)
-|              +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0 (*)
-|              +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8 (*)
-|              +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
-|              +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|              +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|              +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
-|              +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
-|              +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
-|              \--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
+\--- com.google.mlkit:barcode-scanning-common:17.0.0 (*)
-+--- com.google.mlkit:text-recognition:16.0.0
-|    +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|    +--- com.google.android.gms:play-services-mlkit-text-recognition:19.0.0
-|    |    +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-mlkit-text-recognition-common:19.0.0
-|    |    |    +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0 (*)
-|    |    |    +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8 (*)
-|    |    |    +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
-|    |    |    +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|    |    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|    |    |    +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
-|    |    |    +--- com.google.android.odml:image:1.0.0-beta1
-|    |    |    +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
-|    |    |    +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
-|    |    |    +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
-|    |    |    +--- com.google.mlkit:common:18.8.0 -> 18.9.0 (*)
-|    |    |    +--- com.google.mlkit:vision-common:17.3.0 (*)
-|    |    |    \--- com.google.mlkit:vision-interfaces:16.2.0
-|    |    |         +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|    |    |         \--- com.google.android.gms:play-services-tasks:18.0.2 (*)
-|    |    \--- com.google.mlkit:common:18.8.0 -> 18.9.0 (*)
-|    +--- com.google.mlkit:common:18.8.0 -> 18.9.0 (*)
-|    \--- com.google.mlkit:text-recognition-bundled-common:16.0.0
-|         +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|         +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|         +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
-|         +--- com.google.mlkit:common:18.8.0 -> 18.9.0 (*)
-|         \--- com.google.mlkit:vision-common:17.3.0 (*)
-+--- com.google.mlkit:barcode-scanning:17.2.0
-|    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|    +--- com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.0
-|    |    +--- com.google.android.datatransport:transport-api:2.2.1 -> 3.0.0 (*)
-|    |    +--- com.google.android.datatransport:transport-backend-cct:2.3.3 -> 3.1.8 (*)
-|    |    +--- com.google.android.datatransport:transport-runtime:2.2.6 -> 3.1.8 (*)
-|    |    +--- com.google.android.gms:play-services-base:18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-tasks:18.0.2 (*)
-|    |    +--- com.google.android.odml:image:1.0.0-beta1
-|    |    +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
-|    |    +--- com.google.firebase:firebase-encoders:16.1.0 -> 17.0.0 (*)
-|    |    +--- com.google.firebase:firebase-encoders-json:17.1.0 -> 18.0.0 (*)
-|    |    +--- com.google.mlkit:barcode-scanning-common:17.0.0 (*)
-|    |    +--- com.google.mlkit:common:18.9.0 (*)
-|    |    +--- com.google.mlkit:vision-common:17.3.0 (*)
-|    |    \--- com.google.mlkit:vision-interfaces:16.2.0 (*)
-|    +--- com.google.mlkit:barcode-scanning-common:17.0.0 (*)
-|    +--- com.google.mlkit:common:18.9.0 (*)
-|    \--- com.google.mlkit:vision-common:17.3.0 (*)
-+--- androidx.camera:camera-camera2:1.2.3 (*)
-+--- androidx.camera:camera-lifecycle:1.2.3
-|    +--- androidx.camera:camera-core:1.2.3 (*)
-|    +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-|    +--- androidx.core:core:1.1.0 -> 1.10.0 (*)
-|    +--- androidx.lifecycle:lifecycle-common:2.1.0 -> 2.6.2 (*)
-|    +--- com.google.auto.value:auto-value-annotations:1.6.3
-|    \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava
-\--- androidx.camera:camera-view:1.2.3
-     +--- androidx.annotation:annotation:1.2.0 -> 1.6.0 (*)
-     +--- androidx.annotation:annotation-experimental:1.1.0 -> 1.3.0 (*)
-     +--- androidx.appcompat:appcompat:1.1.0 -> 1.6.1 (*)
-     +--- androidx.camera:camera-core:1.2.3 (*)
-     +--- androidx.camera:camera-lifecycle:1.2.3 (*)
-     +--- androidx.concurrent:concurrent-futures:1.0.0 -> 1.1.0 (*)
-     +--- androidx.core:core:1.3.2 -> 1.10.0 (*)
-     +--- androidx.lifecycle:lifecycle-common:2.0.0 -> 2.6.2 (*)
-     +--- com.google.auto.value:auto-value-annotations:1.6.3
-     \--- com.google.guava:listenablefuture:1.0 -> 9999.0-empty-to-avoid-conflict-with-guava

Please review and act accordingly

@wpmobilebot

Copy link
Copy Markdown
Contributor
Jetpack📲 You can test the changes from this Pull Request in Jetpack by scanning the QR code below to install the corresponding build.
App NameJetpack Jetpack
FlavorJalapeno
Build TypeDebug
Versionpr19708-80d3d57
Commit80d3d57
Direct Downloadjetpack-prototype-build-pr19708-80d3d57.apk
Note: Google Login is not supported on these builds.

@wpmobilebot

Copy link
Copy Markdown
Contributor
WordPress📲 You can test the changes from this Pull Request in WordPress by scanning the QR code below to install the corresponding build.
App NameWordPress WordPress
FlavorJalapeno
Build TypeDebug
Versionpr19708-80d3d57
Commit80d3d57
Direct Downloadwordpress-prototype-build-pr19708-80d3d57.apk
Note: Google Login is not supported on these builds.

@RenanLukas

Copy link
Copy Markdown
Contributor

Story Post

✅ Emulator (Android 14)
SM-A115M/DS (Android 11)

@RenanLukas

Copy link
Copy Markdown
Contributor

[JP] Scan Login Code - Success

SM-A115M/DS (Android 11) - It's working exactly like it was before the ML kit implementation.

@RenanLukas RenanLukas left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fix, @zwarm . Both testing scenarios are working as expected and reverted code LGTM :shipit:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants