Commit Graph
465 Commits
Author SHA1 Message Date
Siddarth Kumar 2da2dfdad7 android: add gradle-lint as dependency (#22124) 2025-02-18 13:12:28 +05:30
Siddarth Kumar e15b9a224c ci: upgrade go to 1.22 (#21940)
- This PR upgrades `go` to `1.22`
- Brings in `gomobile` latest derivation at master of `nixpkgs` : https://github.com/NixOS/nixpkgs/commit/f5abef98e8b8c9f9e6da4bdab63f8be1e57ea8c0
- points to status-go changes where `go` is also upgraded to `1.22` -> https://github.com/status-im/status-go/pull/6258
2025-02-17 22:53:28 +05:30
Siddarth Kumar 3541485338 deps: fix path to hack script and regenerate (#22119)
This PR fixes the path to hack deps script and re-generates `gradle` deps.
Previous PRs passed build phase because we already have the `gradle` deps we need.

However make `nix-update-gradle` would fail due to the incorrect path.
2025-02-17 14:13:21 +05:30
Sean Hagstrom ab12c8a17d fix: add version field to localSrc definition for go-mobile nix build (#22041) 2025-02-12 13:30:23 +01:00
vedran 8b21d6ab53 chore(deps)_: get missing deps versions dynamically
To remove hardcoding of specific versions of missing gradle
dependencies, we will use `get_versions.sh` to fetch them dynamically.

Also disable default lint checks to remove redundant
`lintVitalReportRelease` task and dependency.
2025-02-11 14:24:12 +01:00
Siddarth Kumar c1230319e1 nix: add fake git to status-go build derivation (#21989)
This commit adds a script that overrides `git` to echo version required by `status-go` derivation.

Also fixes error messages like this when building `status-go` :
```
fatal: not a git repository (or any of the parent directories): .git
```

These messages can be often misleading to some developers.
2025-01-27 18:14:27 +05:30
frank ae00ecb3e0 ci: support long awaited Xcode 16 (#21345) 2025-01-15 18:49:51 +05:30
Siddarth Kumar 6ffdaa4e25 nix: fix warnings and upgrade to 2.24.11 (#21547)
These warnings are fixed:

```
warning: ignoring the client-specified setting 'keep-derivations', because it is a restricted setting and you are not a trusted user
warning: ignoring the client-specified setting 'keep-outputs', because it is a restricted setting and you are not a trusted user
warning: ignoring the client-specified setting 'sandbox', because it is a restricted setting and you are not a trusted user
warning: ignoring the client-specified setting 'stalled-download-timeout', because it is a restricted setting and you are not a trusted user
warning: ignoring the client-specified setting 'trusted-public-keys', because it is a restricted setting and you are not a trusted user
warning: ignoring the client-specified setting 'trusted-substituters', because it is a restricted setting and you are not a trusted user
```
2025-01-14 09:42:14 +05:30
flexsurfer 2be78041e2 [#21669] [iOS] "Oops, this is not a Keycard" screen appears if user didn't scan his card properly (#21737) 2024-12-03 14:32:37 +01:00
Lungu Cristian 6a30ce3de3 Use latest watchman (#21546)
* chore: upgraded watchman, otherwise it's not used with current metro

The latest metro version requires watchman capabilities that are not
available in the version we locked, so it was not used. Instead we
used the "node watcher", which is slower and buggier (at least for me
metro was timing out quite often)

* fix: watchman ignore .clj-kondo, .shadow-cljs
2024-11-21 11:55:32 +02:00
Siddarth Kumar fd9e8273e1 chore(deps)_: use gradle plugin to get deps (#21502)
related issue : https://github.com/status-im/status-mobile/issues/15447

This commit makes use of https://github.com/gradle/github-dependency-graph-gradle-plugin to generate deps so that we may get rid of the AWK script that parses `gradle` output to figure out `gradle` dependencies.

credits to Vedran for doing initial research on this dependency generator plugin.

We still miss a few dependencies and are not completely able to get rid of the hack list step just yet.

I also moved `react-native-share` out of  `pluginManagement ` block in `android/settings.gradle` because it does not belong there.
2024-10-29 11:39:50 +05:30
Mohamed JavidandSiddarth Kumar ff7ec97de4 feat(wallet)_: Add PDF viewer screen to view ParaSwap TnC (#21437)
This commit:

- Adds a PDF viewer screen to view PDFs within the app instead of opening them on the system browser
- Updates the swap provider (ParaSwap) terms and conditions to be displayed within the app
- Increases APK size limit to 80 MB

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
2024-10-18 16:50:21 +05:30
Siddarth Kumar 66f177370a nix: fix sha256 of nixpkgs release 24-05 (#21416) 2024-10-11 15:16:25 +05:30
Siddarth Kumar 4b93c8ff43 nix: use multiple nixpkgs sources (#21374) 2024-10-08 17:51:30 +05:30
Siddarth Kumar 16fba373c9 nix: add preBuild phase for generating files (#21390)
https://github.com/status-im/status-go/compare/effde33d...ba37c32c

https://github.com/status-im/status-go/pull/5920

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-10-07 17:19:37 +05:30
Parvesh Monu 4bf8aaf2e0 Compress Images for Status Screen and Add Image Compression Script (#21300) 2024-09-23 16:44:24 +05:30
Siddarth KumarandYevheniia Berdnyk 1ee16da0c7 nix: point to nixpkgs unstable channel for gradle 8.8 (#21267)
nix: use nixpkgs unstable for gradle 8.8

nix: ldflags are expected to be a list

chore: fix deprecated vendorSha256

nix: bump jdk to 17 & pass java version to gradle

make: set universalApk false in run-android target

nix: fix --replace deprecation warning

  - https://github.com/NixOS/nixpkgs/pull/260776

ios: update pod and gem lockfiles

nix: bump nodejs to 20.12.2

nix: add Xcode 16.0 to allowed versions

chore: upgrade rn-image-crop-picker lib

nix: full path for missing dep in node_modules sh

e2e: removed redundant element

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-09-20 15:01:42 +05:30
Siddarth Kumar 110475a973 fixes for building universal APK (#21175)
In my previous PR -> https://github.com/status-im/status-mobile/pull/21163 I had attempted to build universalAPK only for release builds but had missed out on these changes.

This commit ensures `universalApk` value of `gradle` config is properly set.
This commit also points to my branch in `status-jenkins-lib` which modifies the APK size restrictions.
Its not `110 MB` for Universal APKs and `70 MB` for Individual Architecture APKs
2024-09-05 14:31:03 +05:30
Siddarth Kumar 8111758ef7 chore: bump blur view lib to 4.4.1 (#21147)
This commit upgrades react-native-blur view to 4.4.1 which includes my fix for incorrect sha being found randomly.
2024-08-29 21:13:40 +05:30
Sean Hagstrom 89828ba7fd chore: allow for overriding metro server port (#20202)
This change will now allow for customizing the port number when running the metro server. The environment variable `RCT_METRO_PORT` can now be set when executing commands like `make run-ios`, `make run ios-device`, and `make run-android`. Though, it should be noted that `make clean` may need to be ran before attempting to set or change `RCT_METRO_PORT` since the react-native app will have statically built code that references the value of RCT_METRO_PORT from compile time and not runtime.
2024-08-05 12:48:35 +01:00
Brian Sztamfater 29252336cc chore: bump react-native-camera-link version to Status fork to remove usage of ML Kit (#20891) 2024-07-31 17:54:21 -03:00
Siddarth Kumar c6a1db6334 ci: enable split apks & build only for arm64-v8a (#20683)
In this commit:
- we set `ANDROID_ABI_SPLIT` to `true`
- we set `ANDROID_ABI_INCLUDE` to `arm64-v8a` for debug & PR android builds
- release builds would still contain `armeabi-v7a;arm64-v8a` and there is no change for E2E android builds
- we point to relevant changes in `status-jenkins-lib` which also introduces a size check for this `apk`.
The agreed threshold is 100 MB.
2024-07-27 00:02:44 +05:30
Icaro Motta 60ad7c8a29 chore(tests): New match-strict? cljs.test directive (#20825)
Equality checks in tests using = give a bad experience by default on test
failures containing nested data structures. We use the cljs.test directive
match? from matcher-combinators library to help compare nested structures. The
problem with match? is that its default matcher for maps (embeds) can be too
permissive, and this causes surprises.

Here we upgrade matcher-combinators to latest, where a new matcher called
nested-equals is available. This matcher won't allow extra keys in maps. This
matcher eliminates the need for manually adding nested equals matchers as we
have to do currently.

- Upgrades matcher-combinators from 3.8.8 to 3.9.1 (latest as of 2024-07-19)

What changes?

When asserting in tests, we now have the option to use match-strict? or match?.
Both directives are available by integrating with cljs.test. The code
implementing the new match-strict? directive was 100% copied from the library
matcher-combinators because we need to wrap the expected value ourselves with
matcher-combinators.matchers/nested-equals. It's ugly code, but it's how we can
integrate with cljs.test/assert-expr.
2024-07-24 23:06:41 -03:00
Siddarth Kumar 147676ae8c chore: add Xcode 15.4 to allowed versions (#20641)
This commit adds Xcode 15.4 to allowed versions in xcode-wrapper overlay.
2024-07-04 14:39:23 +05:30
Siddarth Kumar 672358fbce deps: bump react-native-linear-gradient library (#20329)
`react-native-linear-gradient` library has to be upgraded to `3.0.0-alpha.1` for new architecture support on `Android`.
2024-06-12 13:43:26 +05:30
Jamie Capraniandlongxiangqiao 48f00f17a9 chore: fix some comments (#20410)
Signed-off-by: longxiangqiao <longxiangqiao@qq.com>
Co-authored-by: longxiangqiao <longxiangqiao@qq.com>
2024-06-11 12:48:24 +02:00
jakub d7c66319aa fix(ci)_: drop clean.sh script from cleanup stage
Because it keeps failing due to paths that appear alive but are not.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-06-04 14:32:51 +02:00
Icaro Motta 615ad2f02b dx(debug)_: Add FlowStorm, a tracing debugger for Clojure(Script) (#20054)
Adds FlowStorm https://github.com/flow-storm/flow-storm-debugger v3.7.5, a well
known (tracing) debugger for Clojure(Script).

With FlowStorm, you can debug almost any cljs function in status-mobile. And
although it is not as capable as on the JVM, its main features work well enough.

How do I use it? Please, check the markdown diff in this PR: doc/debugging.md.

When would you use FlowStorm in status-mobile? You can use it all the time if
you want, but FlowStorm can be a powerful tool to understand complex pieces of
code. Consider those large subscriptions or event handlers. Or all those
components with lots of bindings and calculations. Understanding some of these
things is no easy task, even with a REPL. It is not a replacement for re-frisk,
those are very different tools and each have their place.

Resources:

- Repository: https://github.com/flow-storm/flow-storm-debugger
- Documentation: https://flow-storm.github.io/flow-storm-debugger
- Features: https://github.com/flow-storm/flow-storm-debugger#features
- YouTube demos: https://github.com/flow-storm/flow-storm-debugger#some-demo-videos-newers-at-the-top
2024-06-03 19:47:10 -03:00
Siddarth Kumar 5559599381 upgrade go to 1.21 (#20157) 2024-05-30 14:41:56 +05:30
Siddarth Kumar 7613de74ae Fix integration tests for MacOS (#20248)
With go 1.20 its necessary to pass `lresolv` flag when building c-archives and `netgo` for networking on MacOS.
This was the primary reason why integration tests were failing.
ref 
-> https://github.com/golang/go/issues/58416
-> https://github.com/golang/go/issues/58159

This commit adds those flags to the derivation which builds status-go-library for integration tests and fixes the missing symbol crash.
2024-05-29 21:23:24 +05:30
Siddarth Kumar f65c10502b pick between JSC & Hermes for Android (#20171)
We implement both `JSC` and `Hermes` in build phase of `Android` which increases our `APK` size by ~ `2 MB`.
This was fine before but currently we have to get below the `100 MB` limit.

This commit implements the preferred engine after inferring `hermesEnabled`  property from gradle.properties
This property is modified at build time for release here
https://github.com/status-im/status-mobile/blob/178d62bd276afffef5fe7a3f773e390d83336d9c/nix/mobile/android/build.nix#L17
and set for debug here
https://github.com/status-im/status-mobile/blob/178d62bd276afffef5fe7a3f773e390d83336d9c/Makefile#L280

Which should further reduce the `APK` size by `2 MB`.
2024-05-24 21:02:32 +05:30
flexsurfer 81977475c5 support ios "15.3" (#20127) 2024-05-23 10:59:43 +02:00
Siddarth Kumar 4cdbfb6cc6 enable proguard, modify rules & upgrade okhttp lib (#19975)
This commit enables proguard minification and adds exceptions in proguard rules for the following classes :
- org.bouncycastle
- im.status.ethereum.BuildConfig
- com.reactnativenavigation

This commit also upgrades okhttp gradle dependency to 4.11.0

This should shave off a few MBs in the android bundle.
2024-05-20 21:09:03 +05:30
Jamie CapraniandSiddarth Kumar 8f0840e913 chore(onboarding): remove parallax (#20026)
---------

Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
2024-05-15 14:31:25 +02:00
Siddarth Kumar 91c347f6f5 chore: include Xcode 15.2 in allowed versions list (#20021)
## Summary

As reported by @ajayesivan and @seanstrom 
`Xcode 15.2` worked in their local environments and I then tried to use that version and found no issues with it.

This commit adds `Xcode 15.2` to versions list in Xcode Wrapper `nix` derivation.

## Testing notes
not needed.

## Platforms
- iOS

status: ready
2024-05-15 13:08:31 +05:30
Icaro Motta 16398dfd55 Upgrade re-frame to latest (#19931)
Upgrade re-frame to latest, from v1.3.0 (released on
2022-08-27) to latest v1.4.3 (released on 2024-01-25).

Important changes:

- [Added] re-frame.alpha namespace, for testing proposed features (see flows
  (https://github.com/day8/re-frame/discussions/795) and polymorphic
  subscriptions https://github.com/day8/re-frame/issues/680#issuecomment-1676487563).
- [Added] dispatch-sync now emits a :sync trace to indicate when it has
  finished.
- Re-frame upgraded its dependency on Reagent to latest v1.2.0.
- There are two breaking changes in v1.4.0, but they don't affect us because we
  don't use interceptors path and unwrap.
2024-05-13 21:18:16 -03:00
Siddarth Kumar cb9a620f40 fix: hack fix for contract tests on MacOS (#19965)
fixes #19802

Contract Tests are failing with missing symbols runtime error on `MacOS` after `golang` version was upgraded to 1.20
A simple hack fix such a case is to use `go 1.19` only to build the status-go library that is used specifically for these integration tests.
Its ugly but it works and unblocks devs from running tests locally.

- execute `make test-contract` on MacOS and it should not fail.

not needed since this impacts only the integration tests.

- macOS

status: ready
2024-05-10 17:58:49 +05:30
Icaro Motta 52a6f5c17d Upgrade clj-kondo to 2024.03.13 (#19930)
This PR upgrades clj-kondo (our Clojure linter) from v2023-09-07 to
v2024-03-13, so ~6 months of development updates.

You can check out the changes starting at
https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20231020.
Nothing terribly useful to us this time, but as usual, clj-kondo can catch
more problems and more reliably than before.
2024-05-09 12:04:31 -03:00
Brian Sztamfater 07fb3610d1 chore: add wallet connect library (#19758)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-08 05:51:45 -03:00
Siddarth Kumar 43951b9dfd modify xcodewrapper to do a runtime version check (#19822)
fixes #19770

Devs are often unaware of the supported Xcode version and often run into weird build issues with either higher or lower Xcode versions.
We currently only support Xcode 15.1
This change ensures we convey that change when devs execute `make run-ios`
This commit also attempts to ensure `xcodebuild` command is wrapped with `XcodeWrapper`.

- iOS
- macOS

status: ready
2024-05-08 12:51:04 +05:30
Siddarth Kumar 25e3a56dba chore: pin cmake version (#19865)
On brand new ubuntu setup `make run-android` fails with :

```

Task :app:mergeExtDexDebug

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':react-native-reanimated:configureCMakeDebug[arm64-v8a]'.
[CXX1300] CMake '3.22.1' was not found in SDK, PATH, or by cmake.dir property.

BUILD FAILED in 2m 30s
673 actionable tasks: 673 executed

error: cannot unlink '/tmp/tmp-status-mobile-a094d218d/
nix-build-status-mobile-build-debug-android.drv-0/tmp.moQHI1tJWE/caches/8.4': Directory not empty
removed '/tmp/tmp-status-mobile-a094d218d/tmp.RpThXxcRZR'
make: *** [Makefile:278: run-android] Error 1
```

we do have `cmake` present in Android Shell and yet the build process is not able to find it.

This commit makes sure that we explicitly provide that reference.
2024-05-03 13:52:26 +05:30
Siddarth Kumar 86fefc2e32 [iOS] enable new architecture for react-native (#19748)
This commit enables `Fabric` and `Hermes` for `iOS` and in my initial tests the app seemed to behave well.
We can't do this for Android yet because the blur view implementation is not ported to `Fabric` properly.
needed for https://github.com/status-im/status-mobile/issues/18138
2024-04-30 14:08:41 +05:30
Siddarth Kumar 8fc6f4776b fix store nodes not being found on iOS (#19798)
https://github.com/status-im/status-go/compare/90b18d4f...b124e2b4

fixes #19736

Corresponding go PR https://github.com/status-im/status-go/pull/5093

This commit fixes DNS resolution inside status-go by forcing pure go resolver at build time.
Reference -> https://pkg.go.dev/net#hdr-Name_Resolution

Store nodes must be available on Android & iOS app.

- Android
- iOS

status: ready
2024-04-26 14:34:04 +02:00
Siddarth Kumar 9db49b8ca0 move rn-mail code to our native modules (#19760)
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
2024-04-24 11:55:40 +02:00
Siddarth Kumar ac48fbef44 bump go to 1.20 (#19564)
## Summary

This commit also points to status-go branch where we have upgraded go to 1.20
Related status-go PR -> https://github.com/status-im/status-go/pull/5027

### Testing notes
Please test everything, specially the store node stuff.

#### Platforms
- Android
- iOS

status: ready
2024-04-18 19:09:55 +02:00
jakub b5962fd83a nix: fix detecting install type in Docker
Otherwise build fails in a Docker container for Desktop:
```
+ make status-go
Building: status-go
Unknown Nix installtion type!
Unknown Nix installtion type!
make[1]: *** [Makefile:223: statusgo-shared-library] Error 1
make: *** [Makefile:432: vendor/status-go/build/bin/libstatus.so] Error 2
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-04-11 16:01:34 +03:00
Siddarth Kumar ce69df19ac apply patches with patch files (#19451)
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
2024-04-08 21:06:41 +05:30
Siddarth Kumar da25280555 clean up unused libraries (#19456)
## 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
2024-04-02 16:32:54 +05:30
Siddarth Kumar 2dfb3ab838 upgrade nixpkgs to 23-11 (#19369)
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
2024-04-01 16:26:44 +05:30
Siddarth Kumar 399da799a6 speed up android debug builds (#19335)
fixes #19081

## Summary
This PR aims to improve android build step for debug variants by ensuring we do not rebuild the android derivation for any change made to `clojurescript` code. 

We also do the following things : 
-  enable `JVM` parallel garbage collector.
-  get rid of `dexOptions` which was deprecated in `gradle 8`.
-  add additional `parallel` flag to `gradle` to speed up builds.

## Review notes
- `make run-clojure`
- `make run-android`
- ctrl + C on android terminal and edit any `cljs` file
- `make run-android`  ( should build almost instantly )
2024-03-23 15:12:05 +05:30