In this commit we nuke the unmaintained library `react-native-mail` and move over the logic to our native modules.
This also helps to fix `make nix-update-gradle` which would fail because of that library.
- Android
- iOS
status: ready
## Summary
This commit upgrades `react-native-permissions` library to latest version 4.1.5
needed for : https://github.com/status-im/status-mobile/issues/18138
## Review & Test notes
Please test permissions related flows on onboarding, selecting images, notifications and any other areas you can think of.
## Platforms
- iOS
- Android
status: ready
## Summary
This commit swaps the fork of @react-native-community/blur with a patch and upgrades the library to latest version of 4.4.0
needed for : https://github.com/status-im/status-mobile/issues/18138
## Review & Test notes
Verify if blur stuff still works.
## Platforms
- iOS
- Android
status: ready
This commit swaps the fork of @react-native-camera-roll/camera-roll with a patch and upgrades this library to the latest version.
needed for : https://github.com/status-im/status-mobile/issues/18138
Verify if camera album related features still work.
- iOS
status: ready
fixes#19449
In this commit we change the way patches are applied.
We no longer have to write patches in a patch phase like we used to, we can now place individual changes in a patch file inside the `patches` directory and they will be automatically applied.
Because of this change we can get rid of forks and instead have those changes in patch files.
To generate a patch file this make command can be used `make patch-file`
This will open an interactive shell which will allow you to specify which file you want to patch and then wait till you make those changes and generate a patch for it.
```
make patch-file
Configuring Nix shell for target 'default'...
Enter the path of the file to patch: ./node_modules/is-glob/index.js
File to patch: ./node_modules/is-glob/index.js
Temporary directory created: /tmp/tmp-status-mobile-40bc588fa/tmp.xrXarXoTPZ
Original file copied to temporary directory.
Please make the necessary changes to the file: ./node_modules/is-glob/index.js
Press any key when you are done with the changes...
Generating patch file...
Patch file created at /Users/siddarthkumar/code/status-im/PR/status-mobile/patches/index.js.patch
Info: Please execute 'make run-clojure' to test if the patch file works as expected.
```
- Android
- iOS
iOS nightly builds were failing with :
```
07:54:15 The following build commands failed:
07:54:15 PhaseScriptExecution Run\ Script /Users/jenkins/Library/Developer/Xcode/DerivedData/
StatusIm-hasrsefeolwghadhqaakilqvfzrk/Build/Intermediates.noindex/ArchiveIntermediates/StatusIm/
IntermediateBuildFilesPath/StatusIm.build/Release-iphoneos/StatusIm.build/
Script-E3914A731DF919ED00EBB515.sh (in target 'StatusIm' from project 'StatusIm')
07:54:15 (1 failure)
07:54:15 [05:24:14]: Exit status: 65
.
.
.
07:54:15 [05:24:14]: ▸ /bin/sh -c /Users/jenkins/Library/Developer/Xcode/DerivedData/
StatusIm-hasrsefeolwghadhqaakilqvfzrk/Build/Intermediates.noindex/ArchiveIntermediates/StatusIm/
IntermediateBuildFilesPath/StatusIm.build/Release-iphoneos/StatusIm.build/
Script-E3914A731DF919ED00EBB515.sh
07:54:15 [05:24:14]: ▸ /Users/jenkins/Library/Developer/Xcode/DerivedData/
StatusIm-hasrsefeolwghadhqaakilqvfzrk/Build/Intermediates.noindex/ArchiveIntermediates/StatusIm/
IntermediateBuildFilesPath/StatusIm.build/Release-iphoneos/StatusIm.build/
Script-E3914A731DF919ED00EBB515.sh: line 2: ./logs/set_xcode_version.log: No such file or directory
07:54:15 [05:24:14]: ▸ Command PhaseScriptExecution failed with a nonzero exit code
```
In this commit the path to the logfile `set_xcode_version.log` has been fixed.
## Summary
This PR removes all of the unused `npm` libraries and their corresponding `gradle`/`cocoapods` dependencies.
The list of npm dependencies removed are :
- `@babel/preset-typescript`
- `create-react-class`
- `react-native-haptic-feedback`
- `react-native-image-viewing`
- `react-native-languages`
- `react-native-randombytes`
- `react-syntax-highlighter`
- `rn-emoji-keyboard`
- `tdigest`
This saves us some bytes in the bundle size.
## Platforms
- Android
- iOS
fixes#18311
This PR upgrades `nixpkgs` to latest release version of 23-11
ref -> https://github.com/NixOS/nixpkgs/releases/tag/23.11
- `Gradle` from `8.0.1` -> `8.4`
- `Git` from `2.40.1` -> `2.42.0`
- `Curl` from `8.0.1` -> `8.4.0`
- `OpenSSL` from `3.0.8` -> `3.0.13`
- `NodeJS` from `18.16.0` -> `18.19.1`
- `Python` from `3.10.11` -> `3.10.13`
- `Clojure` from `1.11.1.1273` -> `1.11.1.1413`
- and some more stuff
- `xcbeautify` , this was added in 23-11 ->https://github.com/NixOS/nixpkgs/pull/289446
- `idb-companion`, this was also added in 23-11 -> https://github.com/NixOS/nixpkgs/pull/296440
fixes#18291
## Summary
Changes worth mentioning are :
- More hacks/patches
- Force app to use `Java 17` everywhere to compile `kotlin,java`
- `gems` were upgraded after a long time
- `aapt2` was bumped to `8.1.1`
- `metro` is now at `0.80.4`
- `xcbeautify` was bumped to `1.4.0`
- `@react-native-community/clipboard` lib was replaced with `@react-native-clipboard/clipboard`
- `react-native-dialogs` lib was upgraded to `1.1.2`
- `react-native-gesture-handler` lib was upgraded to `2.14.1`
- `react-native-navigation` was upgraded to `7.37.2`
## Platforms
- Android
- iOS
fixes#18915
In this PR https://github.com/status-im/status-mobile/pull/18900 we added a `logs` folder in the root directory and it was discovered that we also have an `ios/logs` folder which the CI uses to generates logs during build time.
Its more consistent if we move those logs to the log folder in the root of the repo.
This commit fixes that and updates leftover usages.
After upgrading `react-native` to `0.72.5` we frequently started seeing the _red screen of death_ on both `Android` and `iOS` simulators right after the app was built and installed.
This used to happen because our workflow required us to do the following :
- `make run-clojure`
- `make run-metro`
- `make run-ios` OR `make run-android`
The problem with this approach was after `metro` was started the `iOS`, `Android` build step would change the files that `metro` couldn't handle and hence metro would go out of sync.
The quick fix back then was to restart `metro` terminal and to open the app again from the simulator.
This was however not a good DX.
This commit fixes that.
We no longer rely on `react-native` cli to generate and deploy debug builds on simulators. We take control of the process via our own script. The new workflow introduced in this commit will first build the app, then install the app on the simulators and then start metro terminal. When `metro` is successfully running the script will then open the app.
The new workflow now is :
- `make run-clojure`
- `make run-ios` OR `make run-android`
* feat: added react-native-biometrics dependency
* chore: added malli schema to auth
* fix: malli schema
* feat: using react-native-biometrics
* fix: removed biometry not-enrolled error supression
* feat: added check for enabled biometric
* fix: biometrics error handling on ios
* chore: remove touch-id library
* chore: cleanup
* removed proj.list dep
* fix: gradle get_projects regex edge-case
Handles cases when the gradle project has a description, which shows up when running `gradle projects` as (`react-native-biometrics` - react-native-biometrics), breaking `make nix-update-gradle`. Here we're just adjusting the regex to ignore everything in the line after the closing (`).
* build: ran "make nix-update-gradle"
* chore: comment typo
* chore: replaced old lib in test mocks
* fix: addressed review comments
* fix: using event for standard-auth biometrics
* ref: using ex-cause for biometric error codes
* fix: removed promesa changes
* fix: auth slide biometric success not triggered
I tried doing a clean pod install and was faced with this :
```
Installing Yoga (1.14.0)
Installing boost (1.76.0)
[!] Error installing boost
Verification checksum was incorrect, expected
f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41, got
5e89103d9b70bba5c91a794126b169cb67654be2051f90cf7c22ba6893ede0ff
```
related issue in react-native repo : https://github.com/facebook/react-native/issues/42180
In this commit we patch the pod specs provided by react native to rely on `sourceforge` instead `jfrog` to get boost.
This commit does many things :
- Upgrade `react-native ` to `0.72.5`
- Upgrade `react-native-reanimated` to `3.5.4`
- Upgrade `react-native-navigation` to `7.37.0`
- `ndkVersion` has been bumped to `25.2.9519653`
- `cmakeVersion` has been bumped to `3.22.1`
- `kotlinVersion` has been bumped to `1.7.22`
- `AGP` has been bumped to `7.4.2`
- `Gradle` has been upgraded to `8.0.1`
- Android `CompileSDK` and `TargetSDK` have been bumped to 33
- `@react-native-async-storage/async-storage` has been upgraded to `1.19.3`
- `@walletconnect/client` has been nuked
- some of the old `react-native-reanimated` code has been nuked
- `react-native-keychain` fork has been replaced with `8.1.2`
- On Android we are currently relying on `Hermes` Engine.
- On iOS we are currently relying on `JSC`
- We are not enabling new architecture for now (I have plans for that in the future) ref: https://github.com/status-im/status-mobile/issues/18138
IOS only PR : https://github.com/status-im/status-mobile/pull/16721
Android only PR : https://github.com/status-im/status-mobile/pull/17062
- `make run-metro` now has a target of `android` which was `clojure` earlier, this will increase the time it takes to start metro terminal but this is needed otherwise you will get a nasty error while developing for android locally.
We've often seen cases of devs attempting to change dependencies outside a nix-shell and run into weird side effects
This commit stops them from :
- updating pods outside a nix shell
- updating node deps outside a nix shell
This commit also cleanup unused scripts in package.json and adds a fake comment script.
After upgrading to Xcode 15 make run-ios would fail with
```
❌ /Users/siddarthkumar/code/status-im/PR/status-mobile/ios/Pods/boost/boost/container_hash/hash.hpp:131:33: no template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?
struct hash_base : std::unary_function<T, std::size_t> {};
```
This commit fixes the issue and makes existing codebase compatible with newer Xcode.
reference issue in react-native repo : facebook/react-native#37748
This pr. add blur background on continue button on create profile screen should the button container cover the profile color picker when the keyboard is shown
* show button background on scroll
* fix show button on scroll different platforms
* fix: button container loading
* fix: button container background delay
This commit implements the "Progress bar" component which is needed for wallet screen development.
Additionally, this commit adds a new test helper method "render-with-theme-provider" to test components in different themes.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This commit implements the "gradient cover" component which is needed for wallet screen development, and upgrades the "react-native-linear-gradient" library to "v2.8.0".
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This commit does the following :
- Adds a command in makefile to show connected iOS devices via make `show-ios-devices`
- Developers can then copy their connected iPhone's Device Name and use it to deploy debug builds
on the device by `make run-ios-device DEVICE_NAME="their-device-name"`
- Enables automatic code signing ( only for Debug scheme )
Some users have reported local `make run-ios` failures with errors like:
```
Command PhaseScriptExecution failed with a nonzero exit code
```
Where the actual error that can be found in `ios/logs/react-native-xcode.log` is:
```
node: bad option: --openssl-legacy-provider
```
Caused by a flag we apply to our pinned Node.js `18.9.1` to fix:
```
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
```
From: https://github.com/status-im/status-mobile/pull/15167
And the need for that should go away once we upgrade Node.js further.
But for now a decent fix is to not apply that flag directly in Xcode
config so as to avoid the `bad option` error when Xcode us called
outside of Nix context.
Fixes: https://github.com/status-im/status-mobile/issues/15631
Signed-off-by: Jakub Sokołowski <jakub@status.im>
* [IOS Only] react-native 0.63 to 0.67
* [Android Only] react-native 0.63 to 0.67
* bring back all the jenkinsfiles
* make auto-complete prop for text-input compatible
* [IOS Only] react-native 0.63 to 0.67
* [Android Only] react-native 0.63 to 0.67
* bring back all the jenkinsfiles
* nix: drop unnecessary set -x from status-go build
Signed-off-by: Jakub Sokołowski <jakub@status.im>
* add explicity implementation line for soloader
And add deleteDebugFilesForVariant fix for libhermes.
Signed-off-by: Jakub Sokołowski <jakub@status.im>
* use fast-image for link previews
* fix extra line in message composer on android
This elevation prop is un-necessary and causes an extra line to appear which looks like a border but its actually a shadow.
* don't use `fast-image` for url preview favicon
* fix audio record button interfering cancel android
This fix was not needed in react-native 0.63.4 but is needed after we upgraded to 0.67.5
* get rid of unused platform import
---------
Co-authored-by: Jakub Sokołowski <jakub@status.im>