Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace outdated react-native-photo-view library. #4217

Open
chrisbobbe opened this issue Aug 4, 2020 · 2 comments
Open

Replace outdated react-native-photo-view library. #4217

chrisbobbe opened this issue Aug 4, 2020 · 2 comments
Labels
a-lightbox dependencies Pull requests that update a dependency file

Comments

@chrisbobbe
Copy link
Contributor

chrisbobbe commented Aug 4, 2020

In d873e22, we pointed to a commit on this project's master branch that hadn't been released at the time, which was September 21, 2018. It still hasn't been released—in fact, there haven't been any commits after that date.

Right now, if I do yarn upgrade && yarn yarn-deduplicate && yarn, Android fails to build (looks like it's something to do with the Android Support Library; it reminds me of 01cf598 and 48ef40d). edit: I've seen this kind of build failure a few times; clearing node_modules and running yarn—and making sure the jetify step of tools/postinstall gets run—has cleared it up so far.

Unfortunately, I haven't found an obvious choice for a replacement lightbox library. Here are some candidates:

  • react-native-lightbox (GitHub, npm). I recognize the author's name, at least—they run react-native-vector-icons. Looks like pinch-to-zoom isn't supported (though there's Pinch to zoom oblador/react-native-lightbox#5 from 2015 for it), and it's not super frequently maintained.
  • Brent Vatne (who's quite active in the React Native ecosystem) says, on an Expo feature request page, that react-native-reanimated (GitHub, npm) can be used for a lightbox with pinch-and-zoom. react-native-reanimated v2 is a reimplementation of the RN Animated library entirely in JavaScript (blog post: "Therefore, we wanted for the next Reanimated to allow for building animations and interactions using just JavaScript."). I tried out the lightbox example on the iOS simulator, following the instructions, and pinch-and-zoom didn't work. It animated from a small thumbnail into a size that covered the screen, but once it was there, I couldn't zoom in at all (you can use the option key to do a pinch gesture in the simulator).

There is a major concern about both of these options, though. From the GIFs showing react-native-lightbox in action, and from seeing the demo with react-native-reanimated, both of them have the lightbox opening from a smooth animation from a React Native-land thumbnail to fill the screen. It really like this animation (and we'd get to solve #4039 for free). But the thumbnails we're showing aren't in React Native-land, they're in the WebView. I don't see how we can somehow overlay a React Native-land thumbnail on the message list and have it scroll with everything else...

I wonder if it's time to take another look at #3426? That seems pretty dramatic; maybe let's try something else before it comes to that.

@chrisbobbe chrisbobbe added a-lightbox dependencies Pull requests that update a dependency file labels Aug 4, 2020
@gnprice
Copy link
Member

gnprice commented Aug 5, 2020

From the GIFs showing react-native-lightbox in action, and from seeing the demo with react-native-reanimated, both of them have the lightbox opening from a smooth animation from a React Native-land thumbnail to fill the screen.

I see, yeah -- and checking the example app for react-native-lightbox, at least, there's this odd thing where the component called Lightbox is actually the one you're supposed to use for the thumbnail (and it just takes care of taking over the screen when selected.)

For the other library, looking at that lightbox example you linked, there's quite a lot of detail required in the example. It seems like -- well, fitting the library's name and purpose:

React Native Reanimated provides a more comprehensive, low level abstraction for the Animated library API to be built on top of and hence allow for much greater flexibility especially when it comes to gesture based interactions.

it provides some low-level pieces that could be used to build a lightbox, but there'd be significant work to do to actually make one. And the fact that the example doesn't actually work means it doesn't take us super far as a starting point.

Here's a third candidate:

  • Start maintaining a fork of react-native-photo-view. We wouldn't need to do much up front -- just fix the specific things that get in our way. Then we'd also have the option of making other changes directly in the future, as we saw fit.

Oh, and another:

  • Looking at the forks of that repo, there's one that jumps out as having a number of forks of its own: https://github.com/aMarCruz/react-native-photo-view-ex and it's also on NPM, as react-native-photo-view-ex. Perhaps try that one? And even if we end up making our own changes, it might be convenient to start from that one.

    (Most "forks" exist just to submit a PR or two, because of GitHub's peculiarities -- but forks which have their own forks are therefore usually forks that people have been sending PRs to, which is a sign that they're actually maintained as "forks" in the normal non-GitHub sense.)

@aryanshridhar
Copy link
Member

aryanshridhar commented Aug 31, 2020

Hey , How about using react-native-image-pan-zoom ( npm , Github )
The reason I am pointing out is because it can handle both , i.e Pinch to Zoom as well as Swiping an image down to close it as mentioned in #4039 .

In fact , looking at the props supported by it , onSwipeDown ( function that fires when user swipes down ) is the one we are looking for ( Passing handlePressBack function within onSwipeDown callback )

Would love to know what y'all think about it .

Edit : In fact , I tried implementing the same ( just a basic prototype ) and here's the gif of what I came up with :

gifgit

chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 1, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 2, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 2, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 2, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 4, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 9, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
gnprice pushed a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 11, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [1],
corresponding to several commits, listed below. Probably best to do
this before the main upgrade commit.

The "Fixed issues" and the "Known issues" sections of the release
notes (linked for each upgrade below) are particularly informative
for the patch-version upgrades, where, otherwise, the release notes
seem identical to those of the corresponding minor version.

----- v5.6 (facebook/react-native@be2a2529a) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6/release-notes.html

Upgrade guide:
  https://docs.gradle.org/5.6/userguide/upgrading_version_5.html#changes_5.6

Before doing this upgrade, I ran `gradle help --scan` (actually,
`./gradlew help --scan`) to check for deprecations that might turn
into failures after the upgrade, as recommended by the upgrade
guide. The report (https://scans.gradle.com/s/2pgdvrpgnpyms [2])
didn't have a "Deprecations" item in the left nav, as shown in the
guide's screenshot, but it did show some deprecation warnings in the
console. (A similar output was seen from the alternative command
they suggest, `gradle help --warning-mode all`; I ran it with
`./gradlew`.) We see this in the console for three of our
dependencies:

```
WARNING: Configuration 'compile' is obsolete and has been replaced
with 'implementation' and 'api'.

It will be removed soon. For more information see:
http://d.android.com/r/tools/update-dependency-configurations.html
```

The three dependencies are (with our issues to upgrade/replace, two
of them filed just now):

- `react-native-photo-view` zulip#4217
- `react-native-text-input-reset` zulip#4239
- `react-native-device-info` zulip#4240

The upgrade guide lists a few new deprecations; we may get warnings
after the upgrade if they apply to us, but I suspect they may be
given in the "Deprecations" section mentioned above, which we don't
have, for whatever reason. It also lists several potential breaking
changes, and I haven't understood them well enough to find if they
apply to us. We hope to catch any that do
in `tools/test android --full`.

Unfortunately, we did run into a known issue with 5.6
(gradle/gradle#10347) that halted progress verifying the upgrade.
React Native saw it too; facebook/react-native#26227 was filed to
upgrade to 5.6.1 in response. That was closed and superseded by
facebook/react-native#26349 (landed in
facebook/react-native@b1c954b1f), done here and discussed below.

----- v5.6.2 (facebook/react-native@b1c954b1f) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.1/release-notes.html
  https://docs.gradle.org/5.6.2/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.1/userguide/upgrading_version_5.html#changes_5.6.1
  https://docs.gradle.org/5.6.2/userguide/upgrading_version_5.html#changes_5.6.2

The release notes and upgrade guides appear close to identical to
those for v5.6. One thing we could and did do here, with
gradle/gradle#10347 fixed, is proceed with verifying the v5.6
upgrade, together with the changes from v5.6 to v5.6.2.

The build scan report at v5.6.2
(https://scans.gradle.com/s/peks3ratsf7ee) was very similar to the
one we ran before the v5.6 upgrade; those three deprecation warnings
didn't turn into errors. `tools/test --full android` succeeded right
away.

----- v5.6.3 (facebook/react-native@ff6b2ff32) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.3/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.3/userguide/upgrading_version_5.html#changes_5.6.3

All near-identical to the previous docs.

The build scan report at v5.6.3 (https://gradle.com/s/3holiaylf6jku)
also looks very similar to those at past versions.

At first, I got a build failure that I didn't get with the
previous upgrades:

```
java.nio.file.NoSuchFileException:
    /Users/chrisbobbe/dev/zulip-mobile/android/app/build/intermediates/external_file_lib_dex_archives/debug/out
  at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
  at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
  [...]
```

It went away after deleting `android/.gradle` and running
`./gradlew clean` (from SO: https://stackoverflow.com/a/62025502).

----- v5.6.4 (facebook/react-native@928f4434b) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4

The build scan report at v5.6.4 (https://gradle.com/s/2szkm2hvdrejy)
also looks very similar to those at past versions.

----- v6.0.1 (facebook/react-native@701e66bde) -----

Release notes from Gradle upstream:
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

The upgrade guide lists many new deprecations, and we are newly
seeing some deprecation warnings in the build scan (see below). It
also lists several potential breaking changes, and I haven't
understood them well enough to find if they apply to us. We hope to
catch any that do in `tools/test android --full`.

This time, the build scan report for v6.0.1
(https://scans.gradle.com/s/l7q26kntclub6) does have a
"Deprecations" section. Its contents:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

I encountered a build failure ("No file known for: classes.dex") but
was able to fix it by clearing `android.gradle` and running
`./gradlew clean`.

[1] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2
[2] The build scan at this link will be "available indefinitely",
    according to https://scans.gradle.com/.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 11, 2020
Part of the RN v0.61 -> v0.62 changes to the template app [2],
corresponding to the following commits:

- facebook/react-native@be2a2529a
- facebook/react-native@b1c954b1f
- facebook/react-native@ff6b2ff32
- facebook/react-native@928f4434b
- facebook/react-native@701e66bde

Probably best to do this before the main upgrade commit.

We treat this as an upgrade from 5.5.x to the latest 5.6.x (which is
the latest 5.x), and then to 6.0.1 (the latest 6.0.x). [1]

- facebook/react-native@be2a2529a also added some comments in
  gradle.properties, which we reproduce.

- We ran into a couple of different build failures, so, add those to
  the troubleshooting doc with the cache-clearing commands that
  worked to resolve them (from SO [3]).

Release notes from Gradle upstream:
  https://docs.gradle.org/5.6.4/release-notes.html
  https://docs.gradle.org/6.0.1/release-notes.html

Upgrade guides:
  https://docs.gradle.org/5.6.4/userguide/upgrading_version_5.html#changes_5.6.4
  https://docs.gradle.org/6.0.1/userguide/upgrading_version_5.html#changes_6.0.1

We didn't spot any deprecations or announced breaking changes as
applying to us, though it's a bit hard to tell (in particular, we
use plenty of Gradle code that isn't ours, so we wouldn't
necessarily spot something). We hope we'd catch any by just trying
the build, e.g., with `tools/test android --full`.

The upgrade guides recommend a "build scan", which we did by running
`./gradlew help --scan`. In particular, the upgrade guides ask that
you find a "Deprecations" section in the left nav of a web page
showing the result of the scan.

The build scan report at v5.6.4 [4] doesn't have a "Deprecations"
section. This might mean that the feature was missing at that
version, or it might mean that it looked for deprecations expressed
in a certain way [5] and didn't find any.

The report at v6.0.1 [6] did have a "Deprecations" section, with the
following two warnings:

"""
BuildListener#buildStarted(Gradle) has been deprecated.
This is scheduled to be removed in Gradle 7.0.
32 usages

The maven plugin has been deprecated.
This is scheduled to be removed in Gradle 7.0.
Please use the maven-publish plugin instead.
19 usages
"""

Expanding the 32 usages in the first of these, all but one are in
the `com.android.library` plugin; one is in the `android` plugin.

Expanding the 19 usages in the second of these, they're all in the
`org.gradle.maven` plugin.

In the console output from the build-scan command at both versions
(shown in the build scan reports) we see some deprecation warnings
from the Android Gradle Plugin, rather than Gradle itself. They
apply to three of our dependencies, and we have issues to replace
those dependencies (two of the issues filed just now):

- `react-native-photo-view`; see zulip#4217
- `react-native-text-input-reset`; see zulip#4239
- `react-native-device-info`; see zulip#4240

[1] See discussion around
    zulip#4244 (comment)
    for some nuances about this.

[2] https://react-native-community.github.io/upgrade-helper/?from=0.61.5&to=0.62.2

[3] https://stackoverflow.com/a/62025502

[4] https://gradle.com/s/2szkm2hvdrejy. The build scan at this link
    will be "available indefinitely", according to
    https://scans.gradle.com/.

[5] zulip#4244 (comment)

[6] https://scans.gradle.com/s/l7q26kntclub6
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Aug 10, 2021
Here's the description from the changelog [1]:

> Exact same as 1.6.7 was, just as a breaking change semver number
>
> docs(CHANGELOG): prepare release 2.0.0 f483026
> BREAKING: note that jetifier is deprecated, warn on translations
>   699094b

It looks like in 1.6.7 the tool started giving an important
deprecation warning about itself. But then the warning was taken out
in 1.6.8 because it was deemed to be a breaking change that deserved
a new major version. 2.0.0 was that new major version.

Right now, for us, the warning looks like this:

```
Jetifier is deprecated. Future versions of react-native CLI may not
  run it by default.
Jetifier found 1372 file(s) to forward-jetify. Using 12 workers...
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/ImageEvent.java
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/PhotoView.java
```

I'm not sure if we have to wait for 1372 files to move to AndroidX
before we can stop using this tool...but at least we have an issue
(zulip#4217) for using something more maintained than
react-native-photo-view, which should take care of the two mentions
of that library.

Anyway, take this upgrade, in the spirit of not ignoring warnings
that we should act on. And it's just four lines of output.

Also I guess because we'll want `yarn upgrade` to automatically give
us any new, non-breaking changes in the tool.

[1] https://github.com/mikehardy/jetifier/releases
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Aug 10, 2021
Here's the description from the changelog [1]:

> Exact same as 1.6.7 was, just as a breaking change semver number
>
> docs(CHANGELOG): prepare release 2.0.0 f483026
> BREAKING: note that jetifier is deprecated, warn on translations
>   699094b

It looks like in 1.6.7 the tool started giving an important
deprecation warning about itself. But then the warning was taken out
in 1.6.8 because it was deemed to be a breaking change that deserved
a new major version. 2.0.0 was that new major version.

Right now, for us, the warning looks like this:

```
Jetifier is deprecated. Future versions of react-native CLI may not
  run it by default.
Jetifier found 1372 file(s) to forward-jetify. Using 12 workers...
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/ImageEvent.java
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/PhotoView.java
```

I'm not sure if we have to wait for 1372 files to move to AndroidX
before we can stop using this tool...but at least we have an issue
(zulip#4217) for using something more maintained than
react-native-photo-view, which should take care of the two mentions
of that library.

Anyway, take this upgrade, in the spirit of not ignoring warnings
that we should act on. And it's just four lines of output.

Also I guess because we'll want `yarn upgrade` to automatically give
us any new, non-breaking changes in the tool.

[1] https://github.com/mikehardy/jetifier/releases
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Aug 10, 2021
Here's the description from the changelog [1]:

> Exact same as 1.6.7 was, just as a breaking change semver number
>
> docs(CHANGELOG): prepare release 2.0.0 f483026
> BREAKING: note that jetifier is deprecated, warn on translations
>   699094b

It looks like in 1.6.7 the tool started giving an important
deprecation warning about itself. But then the warning was taken out
in 1.6.8 because it was deemed to be a breaking change that deserved
a new major version. 2.0.0 was that new major version.

Right now, for us, the warning looks like this:

```
Jetifier is deprecated. Future versions of react-native CLI may not
  run it by default.
Jetifier found 1372 file(s) to forward-jetify. Using 12 workers...
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/ImageEvent.java
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/PhotoView.java
```

I'm not sure if we have to wait for 1372 files to move to AndroidX
before we can stop using this tool...but at least we have an issue
(zulip#4217) for using something more maintained than
react-native-photo-view, which should take care of the two mentions
of that library.

Anyway, take this upgrade, in the spirit of not ignoring warnings
that we should act on. And it's just four lines of output.

Also I guess because we'll want `yarn upgrade` to automatically give
us any new, non-breaking changes in the tool.

[1] https://github.com/mikehardy/jetifier/releases
gnprice pushed a commit to chrisbobbe/zulip-mobile that referenced this issue Aug 11, 2021
Here's the description from the changelog [1]:

> Exact same as 1.6.7 was, just as a breaking change semver number
>
> docs(CHANGELOG): prepare release 2.0.0 f483026
> BREAKING: note that jetifier is deprecated, warn on translations
>   699094b

It looks like in 1.6.7 the tool started giving an important
deprecation warning about itself. But then the warning was taken out
in 1.6.8 because it was deemed to be a breaking change that deserved
a new major version. 2.0.0 was that new major version.

Right now, for us, the warning looks like this:

```
Jetifier is deprecated. Future versions of react-native CLI may not
  run it by default.
Jetifier found 1372 file(s) to forward-jetify. Using 12 workers...
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/ImageEvent.java
Jetifier: propose an AndroidX conversion PR to this repository:
  node_modules/react-native-photo-view/android/src/main/java/com/reactnative/photoview/PhotoView.java
```

So there are just two files in our dependency tree that still need to
move to AndroidX, both in react-native-photo-view.  We have an issue
already (zulip#4217) for using something more maintained than that library,
which should take care of those.

Anyway, take this upgrade, in the spirit of not ignoring warnings
that we should act on. And it's just four lines of output.

Also I guess because we'll want `yarn upgrade` to automatically give
us any new, non-breaking changes in the tool.

[1] https://github.com/mikehardy/jetifier/releases
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Sep 26, 2022
…AGP 7

Before this change, we were pointing Yarn to a commit from 2018 on
this repo's `master` branch, since a new release with the commit
hadn't been made to NPM in a reasonable time. (It still hasn't.)

Now, just bump to this project's current `master`, which is three
commits ahead of that commit:
  https://github.com/alwx/react-native-photo-view/commits/master

In particular, we want alwx/react-native-photo-view@ef532a348, which
has the project's build.gradle stop using the `compile` dependency
configuration in favor of `implementation`. The former has long been
deprecated, and is an error with AGP 7, which we'd like to use soon:
  https://developer.android.com/studio/releases/gradle-plugin#dependency-configurations-removed

We'd still like to stop using this library since it's almost totally
unmaintained; that's zulip#4217.

Anyway, I tested on my iPhone 13 Pro running iOS 15.6, and on the
office Android device (Samsung Galaxy S9 running Android 9), and I
didn't notice any change in behavior of the lightbox.

Regarding the `jcenter` exception for `photodraweeview` (see
android/build.gradle in this commit), I tried removing the exception
entirely, hoping that 1.1.3 might be available in the non-jcenter
repos consulted by the build, even though 1.0.0 was not. But no, I
again got an error that `photodraweeview` could not be found, so it
looks like we still need to make an exception.
chrisbobbe added a commit to chrisbobbe/zulip-mobile that referenced this issue Nov 22, 2022
…AGP 7

Before this change, we were pointing Yarn to a commit from 2018 on
this repo's `master` branch, since a new release with the commit
hadn't been made to NPM in a reasonable time. (It still hasn't.)

Now, just bump to this project's current `master`, which is three
commits ahead of that commit:
  https://github.com/alwx/react-native-photo-view/commits/master

In particular, we want alwx/react-native-photo-view@ef532a348, which
has the project's build.gradle stop using the `compile` dependency
configuration in favor of `implementation`. The former has long been
deprecated, and is an error with AGP 7, which we'd like to use soon:
  https://developer.android.com/studio/releases/gradle-plugin#dependency-configurations-removed

We'd still like to stop using this library since it's almost totally
unmaintained; that's zulip#4217.

Anyway, I tested on my iPhone 13 Pro running iOS 15.6, and on the
office Android device (Samsung Galaxy S9 running Android 9), and I
didn't notice any change in behavior of the lightbox.

Regarding the `jcenter` exception for `photodraweeview` (see
android/build.gradle in this commit), I tried removing the exception
entirely, hoping that 1.1.3 might be available in the non-jcenter
repos consulted by the build, even though 1.0.0 was not. But no, I
again got an error that `photodraweeview` could not be found, so it
looks like we still need to make an exception. See discussion of
some further findings:
  zulip#5507 (comment)
gnprice pushed a commit to chrisbobbe/zulip-mobile that referenced this issue Nov 23, 2022
…AGP 7

Before this change, we were pointing Yarn to a commit from 2018 on
this repo's `master` branch, since a new release with the commit
hadn't been made to NPM in a reasonable time. (It still hasn't.)

Now, just bump to this project's current `master`, which is three
commits ahead of that commit:
  https://github.com/alwx/react-native-photo-view/commits/master

In particular, we want alwx/react-native-photo-view@ef532a348, which
has the project's build.gradle stop using the `compile` dependency
configuration in favor of `implementation`. The former has long been
deprecated, and is an error with AGP 7, which we'd like to use soon:
  https://developer.android.com/studio/releases/gradle-plugin#dependency-configurations-removed

We'd still like to stop using this library since it's almost totally
unmaintained; that's zulip#4217.

Anyway, I tested on my iPhone 13 Pro running iOS 15.6, and on the
office Android device (Samsung Galaxy S9 running Android 9), and I
didn't notice any change in behavior of the lightbox.

Regarding the `jcenter` exception for `photodraweeview` (see
android/build.gradle in this commit), I tried removing the exception
entirely, hoping that 1.1.3 might be available in the non-jcenter
repos consulted by the build, even though 1.0.0 was not. But no, I
again got an error that `photodraweeview` could not be found, so it
looks like we still need to make an exception. See discussion of
some further findings:
  zulip#5507 (comment)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a-lightbox dependencies Pull requests that update a dependency file
Projects
None yet
Development

No branches or pull requests

3 participants