377 Commits
Author SHA1 Message Date
Mohsen 2d873f26b3 [#22522] fix: apply new router changes (#22556) 2025-05-06 13:38:44 +03:00
frankandSiddarth Kumar 628e5f7938 feat_: allow user to change default app log level during pre-login (#22425)
* feat_: support pre-login log setting(WIP)

* nix: add gradle deps

* chore: update status-go version

https://github.com/status-im/status-go/compare/614000a1...50a1c9ff

* feat: implement MMKV storage functionality for ClojureScript

- Added MMKV instance for persistent storage
- Implemented basic operations: set/get string, boolean, number, and object
- Included methods for key management: contains-key?, delete-key, clear-all, and get-all-keys
- Integrated Transit for serialization/deserialization of ClojureScript data structures

* feat_: enhance logging functionality with pre-login log level settings

- Introduced a new view for managing pre-login log levels.
- Updated logging configuration to utilize MMKV for persistent storage of log levels.
- Refactored existing logging functions to integrate new log level management.
- Improved user experience by allowing log level changes before login.
- Added constants for pre-login log level key and report email.

* chore_: rebase

* ios: pin libwebp at 1.0.0

* chore_: mock mmkv

* chore_: address review feedback from Parvesh

* chore_: update status-go version and commit details

* fix_: remove redundant closing brackets in logging view component

* refactor_: simplify get functions in MMKV by using if-let for value retrieval

- Updated get-string, get-number, and get-object functions to use if-let for cleaner code.
- Removed redundant nil checks, improving readability and maintainability.

* refactor_: replace direct JS calls with oops.core for MMKV operations

- Updated all MMKV operations to use oops.core for method calls, enhancing error handling and improving code consistency.
- Refactored store, get, contains-key?, delete-key, clear-all, and get-all-keys functions to utilize oops/ocall.

* refactor_: rename store function to set-value for clarity

- Updated the MMKV store function to set-value, improving code readability.
- Adjusted the logging core to use the new set-value function for setting pre-login log levels.

* feat_: add getMMKVStoragePath method for native storage path retrieval

- Implemented getMMKVStoragePath in both Android and iOS native modules to provide a consistent path for MMKV storage.
- Updated ClojureScript to utilize the new method for initializing the MMKV instance with the correct storage path.

* chore(mmkv)_: rename set-value to set

* refactor(mmkv): update set function to use local set implementation

- Replaced the oops/ocall for the set function with a direct call to the local set implementation for improved clarity and consistency in the MMKV module.

* feat(test_utils): add getMMKVStoragePath function to test utilities

- Introduced getMMKVStoragePath to return the storage path for MMKV, enhancing test utility functions for better integration with native storage paths.

* refactor(js_dependencies): rename mmkv-storage to react-native-mmkv for clarity

* fix(mmkv): add fallback for MMKV storage path in case of errors

- Implemented a try-catch block to provide a fallback storage path ("/tmp/test-mmkv") for the MMKV instance, ensuring stability during tests when the native storage path retrieval fails.

* refactor(logging): update send-logs function to include hide-bottom-sheet parameter

* fix_: bottom sheet not hidden after sharing logs

* chore_: solve circular dependency

* fix_: android logs drawer constantly opens

* fix_: pre-login log level init with incorrect value after logout

* chore_: update status-go-version to v10.22.0

---------

Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
2025-04-10 19:39:36 +08:00
frank cab8eee16f feat: use public dir as logs dir for e2e build only (#22464)
* feat: add USE_DOWNLOAD_AS_LOG_DIR configuration to environment files and update log directory handling

- Added USE_DOWNLOAD_AS_LOG_DIR variable to .env, .env.e2e, .env.jenkins, .env.nightly, and .env.release files.
- Updated log directory logic in AccountManager, LogManager, and Utils to utilize the new configuration.
- Modified ClojureScript and Objective-C implementations to pass the useDownloadAsLogDir parameter where necessary.

* chore: rename and comment

* fix_: lint issue
2025-04-09 06:53:26 +08:00
frank a1746409a1 chore_: improve collect log (#22342)
* chore_: move android logs from download dir to private app data folder

* chore_: remove unused functions

* chore_: rename getPublicStorageDirectory to getLogDirectory

* refactor_: streamline log file handling in LogManager

Removed unused methods for retrieving specific log files and replaced them with a more dynamic approach that collects all log files from the log directory. This enhances the flexibility of log management and reduces code redundancy.

* refactor_: remove hardcoded log file names in AccountManager and LogManager

Eliminated unused log file name constants and updated LogManager to dynamically retrieve log files from the directory, enhancing flexibility and reducing redundancy in log handling.
2025-03-27 20:39:37 +08:00
frank 99a6867a79 feat_: support share logs on android (#22369) 2025-03-27 07:02:58 +08:00
frank 5b20bd254e feat(log)_: apply log settings without logout (#22275)
* feat(log)_: Improve log management across platforms

- Add native methods for setting log level and enabling/disabling logs to apply log setting without logout
- Update log management in ClojureScript to use new native module methods
- Remove restart confirmation translations for log level changes
- Refactor log-related code to simplify log configuration

* chore_: make lint-fix

* chore_: remove function show-change-log-level-confirmation

* chore_: events shouldn't have side-effects

* chore_: disable log when level is blank

* chore_: use dispatch rather than merge

https://github.com/status-im/status-go/compare/508775ad...71afd6c4

* chore_: rebase

https://github.com/status-im/status-go/compare/2a692002...b07e9d47
2025-03-24 18:16:10 +08:00
Icaro Motta b89dce3c2a chore(analytics): Integrate Sentry (#21682)
Integrate Sentry and implement a feature flagged feature (disabled by default)
to force crash the app using the function mobile/status.go#IntendedPanic()
provided by status-go. Because the feature is feature flagged and disabled, it
is not available in release builds.

Fixes: https://github.com/status-im/status-mobile/issues/21656

Documentation about Sentry in status-go:
https://github.com/status-im/status-go/blob/3466ac2661bb19cd0eaa27761551de3b4d31b393/internal/sentry/README.md#L60

Areas that may be impacted: Whenever a panic happens in status-go and usage data
collection is enabled we will send error data to Sentry. In theory, nothing
should change for the user, therefore nothing should be visibly different in the
app's behavior.

Steps to test:

Before following the steps below, the CI must be configured with the appropriate
SENTRY_DSN_STATUS_GO value. You can also use a free tier cloud instance to do
your own testing in case you want to play around with Sentry.

1. Login with any profile.
2. Enable usage data collection (for now, Sentry and analytics are tied to the
   same setting in status-go).
3. Go to Settings > Feature flags and enable app-monitoring > intentional-crash
4. Go to Settings > Advanced > and press on Force crash immediately

Usually you should see the error in the Sentry dashboard in a matter of seconds.
2025-02-24 19:28:38 -03:00
frank 9dfa1069e5 feat_: add pre login log (#21987)
* feat_: add pre login log

https://github.com/status-im/status-go/compare/1bfb0cef...7ae58a47

* fix_: pre_login log not get zipped

https://github.com/status-im/status-go/compare/1bfb0cef...c5e4eb1a
2025-02-21 18:42:23 +08:00
frank 04a97faa43 chore_: remove EncodeTransfer/EncodeFunctionCall/VerifyAccountPassword (#21925) 2025-01-15 17:52:30 +08:00
Siddarth Kumar ce1d2c4ed8 android: Kotlinify push notifications module (#21881) 2025-01-07 15:45:54 +05:30
Siddarth Kumar 1aa7594c41 android: kotlinify encryption utils (#21878) 2025-01-03 21:21:11 +05:30
Siddarth Kumar 5ff1d70357 android: kotlinify ui helper (#21879) 2025-01-03 21:03:06 +05:30
frank e60c20bc10 feat(websocket): add ping/pong keep-alive mechanism for iOS websocket (#21733)
Add WebSocket keep-alive mechanism using ping/pong frames to maintain connection stability:
- Add ping timer that sends ping every 30 seconds
- Automatically reconnect if ping fails
- Properly cleanup timer on disconnect
- Add logging for StatusGo server requests

This helps prevent connection timeouts and ensures timely detection of connection issues.
2024-12-06 15:37:17 +08:00
frank f45f96975e refactor_: rename LOG_REQUEST_GO to API_LOGGING_ENABLED (#21677)
https://github.com/status-im/status-go/compare/032eb5b6...c014fbfc

- Rename LOG_REQUEST_GO env variable to API_LOGGING_ENABLED across all env files
- Rename requests.log to api.log for consistency
- Remove standalone initLogging functionality from native modules as it's now
  handled within InitializeApplication
- Add logging configuration (logEnabled, logLevel, apiLoggingEnabled) to
  InitializeApplication params
- Add logDir parameter for Android to ensure proper log file location

This change consolidates logging initialization into the InitializeApplication
flow and makes the naming more consistent with its actual functionality.
2024-11-29 22:01:27 +08:00
frank 7acaff6167 feat_: support use status backend server (#21450)
* chore_: use status.go v2 endpoint

https://github.com/status-im/status-go/compare/39511298...e255fb8b

* feat: use status backend server (#21550)

* chore: add env variable STATUS_BACKEND_SERVER_IMAGE_SERVER_URI_PREFIX

* update doc

* fix_: image_server lint issue

* chore_: update status-go version
2024-11-19 18:50:01 +08:00
Parvesh Monu e43a328c6f Improve push notification service initialization (#21553) 2024-11-05 19:10:15 +05:30
Mohamed Javid 9f1eb60e21 chore_: Remove Goerli code (#21508)
This commit removes the goerli-related code from the mobile repo.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-11-04 18:10:36 +05:30
Icaro Motta e1abe5c6e2 feat(onboarding): Present Terms to users upgrading from v1 or those who need to accept updated Terms (#21487)
Cherry-pick https://github.com/status-im/status-mobile/commit/d45eb5ec20ae7757cd99554920e466eabac0bfb1.

Fixes https://github.com/status-im/status-mobile/issues/21113

Related status-go PR: https://github.com/status-im/status-go/pull/5977
2024-10-23 11:26:29 -03:00
frank 699986c0b2 log go request and response (#21218)
this commit implemented logging request/response between status-mobile and status-go. 

to access `requests.log`, shake your phone and share the logs. 

TBD: 
- adding `device id` into request to proxy server, we can implement it in a separate PR if needed.
- not sure if we need logging the request made in the backend that not asked by frontend directly
2024-09-17 08:58:38 +05:30
frankandIgor Sirotin fe28f44d4b chore_: remove passing node config when sync (#20949)
* chore_: remove passing node config when sync

https://github.com/status-im/status-go/compare/4a43b2b2...01f7787c

* chore_: remove passing deviceType

* chore_: update status-go

* fix_: remove calculating keystorePath and rootDataDir

* chore_: update status-go

* chore_: update status-go to v0.184.43

---------

Co-authored-by: Igor Sirotin <sirotin@status.im>
2024-08-15 14:14:54 +08:00
Mohamed Javid e0fe0d2dbd fix(android): send and bridge ERC-20 tokens (#20924)
This commit adds the missing "encodeFunctionCall" method in Android

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-31 18:33:46 +05:30
Parvesh Monu 23c25d7715 Fix missing avatar and name in members of the community channels and group chats (#20619) 2024-07-12 11:12:49 +05:30
Mohamed Javid 866b854ee0 fix(key-pairs)_: error message on scanning different key pair QR (#20612)
This commit:

- update the connection string validation method to use the method from status-go
- updates the error message if the user tries to scan a different key pair QR for importing a missing key pair
- updates the text for exporting an individual key pair

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-11 15:55:00 +05:30
Andrea Maria Piana 0a0591f67a Add centralized metrics
https://github.com/status-im/status-go/compare/6e056348...1ef2434b

This commit adds support for pushing centralized metrics to mixpanel.

It uses an interceptor and only picks a few selected events to push
through.

In order to test:

1) Create an account in the app
2) Go to Settings->Privacy
3) Enable metrics

You should now see the events on the mixpanel dashboard (login with your
status-im account for access).
Only some example events are tracked, they are just for testing
2024-07-11 10:06:46 +01:00
Sean Hagstrom 6a7f04a5a8 feat(wallet-settings): Implement import missing key pair by private key (#20372)
* chore: update private-key validation

* chore: add native module bindings

* chore: add translation labels

* chore: add size-12 for password icon

* fix: ensure we use feature-flag namespace when using feature-flags

* fix: blur styles for icon-avatar in missing key-pairs

* fix: blur styles for accounts in missing key-pairs

* fix: blur styles for bottom-sheet

* fix: adjust blur background color for bottom-sheets

* chore: add support for private-keys for missing key-pair component

* chore: add definitions for events and effects

* feature: implement private-key import for missing key-pair

* tidy: remove debugging

* tidy: distinguish to import for missing-keypair

* tidy: remove unneeded function

* tidy: refactor layout to use floating-button-page

* tidy: remove unused effect bindings

* tidy: refactor event bindings for importing-missing-keypair-by-private-key

* tweak: add error logging

* tidy: refactor helper to re-frame utils

* tweak: group partially operable and fully operable keypairs together

* chore: add documentation for call-continuation

* tweak: refactor documentation

* tweak: throw exception when not given a compatible continuation

* fix: update least-operability when making key-pair fully operable
2024-06-11 13:05:10 +01:00
Mohsen e04c7f449f [#20035] feat: import missing key pair by scanning QR code (#20144) 2024-05-30 22:07:33 +03:00
Mohsen 389a730eff [#19946] feat: add key pair QR code view (#20073) 2024-05-20 19:35:51 +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
Siddarth Kumar a68b2f357d fix: node-pre-gyp warning (#19960)
## Summary

any `yarn` command calls `node-pre-gyp rebuild` which prints out this warning message :

```
make[1]: Entering directory '/Users/siddarthkumar/code/experiments/status-mobile/build'
  CXX(target) Release/obj.target/status_nodejs_addon/modules/react-native-status/nodejs/status.o
../modules/react-native-status/nodejs/status.cpp:1153:11: warning: ignoring return value of function
declared with 'warn_unused_result' attribute [-Wunused-result]
          func->Call(isolate->GetCurrentContext(), v8::Null(isolate), argc, argv);
          ^~~~ ~~~~~~~~~~~~~
1 warning generated.
```

This happens due to return value of `func->Call` here :
https://github.com/status-im/status-mobile/blob/52a6f5c17d3055a98a403505a354cde135b1966f/modules/react-native-status/nodejs/status.cpp#L1153
not being used.
Which is not a huge red flag but produces a warning which is not nice when looking at logs and can be sometimes misleading for other devs.

This commit fixes that warning by assigning return value of that function and checking if its empty or not.

## Testing notes
not needed since this impacts only the integration tests.

## Platforms
- macOS

status: ready
2024-05-10 17:06:45 +05:30
frank ce3d32dc0a refactor(local pair sync)_: move partial config to backend (#19753)
https://github.com/status-im/status-go/compare/cba3ac57...90b18d4f
2024-04-25 12:13:52 +08: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
Icaro Motta 01a503f3bf Log signals from the Clojure layer instead of native code (#19683)
We log the entire signal data when it arrives from status-go in the native
layer, where our Clojure logging mechanism is unavailable. Sometimes, the
developer may not want that much noise during development, e.g. when managing
integration or contract tests.

This commit removes the native calls to log signals and adds a timbre
(log/debug ...) call in the event handler :signals/signal-received. We know
timbre will elide log calls at compile time given the minimum log level set,
therefore, we don't need to worry about performance because we will log signals
at the debug level only.
2024-04-23 09:53:07 -03:00
Siddarth Kumar f6a433c818 kotlinify account, database, Log & Network Manager (#19426)
parent issue: https://github.com/status-im/status-mobile/issues/18310

This commit converts the following `Java` files to `Kotlin` :

- modules/react-native-status/android/src/main/java/im/status/ethereum/module/AccountManager.java
- modules/react-native-status/android/src/main/java/im/status/ethereum/module/DatabaseManager.java
- modules/react-native-status/android/src/main/java/im/status/ethereum/module/LogManager.java
- modules/react-native-status/android/src/main/java/im/status/ethereum/module/NetworkManager.java


status: ready
2024-04-10 20:32:56 +05:30
Siddarth Kumar 55a182f430 kotlinify parts of status module, package & Utils (#19408)
parent issue: https://github.com/status-im/status-mobile/issues/18310

This commit converts the following `Java` files to `Kotlin` :

- modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java
- modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusPackage.java
- modules/react-native-status/android/src/main/java/im/status/ethereum/module/Utils.java

This commit converts Java code to `Kotlin` which involves a helper function that is used to execute `statusgo` methods.
It may impact everything or nothing.

- Android
2024-04-08 22:46:01 +05:30
Siddarth Kumar a716f4e435 upgrade react-native to 0.73.5 (#18563)
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
2024-03-22 19:51:44 +05:30
Flavio Fraschetti 0828e9aa55 Fraschetti/18343 - Add contract test for wallet_getDerivedAddresses and move legacy code
Add contract test for wallet_getDerivedAddresses and move legacy code
2024-03-12 13:21:23 -03:00
Omar Basem 28f43acb83 feat: new keypair: mnemonic, address, KP name screen (#18790)
feat: new keypair: mnemonic, address, KP name screen (#18790)
2024-02-21 15:53:14 +04:00
Alexander 49567596da General QR code scanner flow (#18677)
* QR scanner

* More options for QR

* Router fixes

* Updates for `on-qr-code-scanned`

* Update for communities

* Updates

* Scan profile path

* More fixes

* Last fixes for scanning

* Fixes

* Fixes

* Fixes

* Test fixes

* Fixes

* Updated Utils.m

* Test fix
2024-02-16 12:06:28 +01:00
Siddarth Kumar 92dcd1140b refactor native modules into separate modules (#18385)
The native module : `react-native-status` has always been 1 big fat file per platform which contained all of the native modules.

In case of Android it was `StatusModule.java`
This commit modularises it & attempts to thin out this 1 big file into these categories:
- `AccountManager.java`
- `EncryptionUtils.java`
- `DatabaseManager.java`
- `UIHelper.java`
- `LogManager.java`
- `NetworkManager.java`
- `Utils.java`

In case of iOS it was `RCTStatus.m`
This commit modularises it & attempts to thin out this 1 big file into these categories:
- `AccountManager.m`
- `EncryptionUtils.m`
- `DatabaseManager.m`
- `UIHelper.m`
- `LogManager.m`
- `NetworkManager.m`
- `Utils.m`

In this commit we also remove a lot of unused native code which has no reference on cljs side.
2024-01-15 18:57:35 +05:30
Omar Basem 0e4c1b3c17 refactor: kotlinify log (#18337)
refactor: kotlinify log
2024-01-10 09:05:35 +04:00
Omar Basem 3ff6013127 kotlinify thread pool (#18366)
chore: Kotlinify thread pool
2024-01-09 14:35:39 +04:00
Siddarth Kumar d64508a74a chore: convert RNSelectableTextInput to Kotlin (#18320)
### Summary

This commit adds `Kotlin` plugin to native module `react-native-status` and converts these files to `Kotlin` :
- `modules/react-native-status/android/src/main/java/im/status/ethereum/module/RNSelectableTextInputViewManager.java`
- `modules/react-native-status/android/src/main/java/im/status/ethereum/module/RNSelectableTextInputModule.java`

### Platforms
- Android
2024-01-04 17:09:24 +05:30
Andrea Maria Piana 32cfd214ca Add fetch messages behind a toggle & some advanced settings
This PR does a few things:

1) Add fetch messages implementation on any kind of chat. It's behind a
   toggle (on by default) as design is still unsure whether we want it,
   but it's very useful for debugging.
2) Allow setting light client from mobile

It also partially remove node config management from the clojure part,
as it's better if that's not explicitly managed by clients.
Some parts are still relying on it but they are not functional
(keycard), while others are still using it and will need to be updated
eventually (syncing), in order to get rid completely of node config.

Sets fleet to shards.test

https://github.com/status-im/status-go/compare/90c31afe...1adcf02f
2023-12-20 13:04:29 +00:00
Alexander dc571b6067 Getting rid of status-im.multiaccounts.core + removing three word random names (#17384) 2023-11-06 14:38:14 +01:00
Andrea Maria Piana 155f57ca6b Dont parse unused identicon 2023-09-06 14:09:37 +01:00
Siddarth Kumar ac3b3970f2 fix crash (#16812) 2023-07-28 21:10:12 +05:30
Siddarth Kumar 1c405d3ed9 chore: wire up startSearchForLocalPairingPeers (#16803)
This commit initialises the status-go method `startSearchForLocalPairingPeers` which in turn will produce logs that are important for peer discovery while local pairing and will produce logs important to detect local pairing crashes.
2023-07-28 15:22:58 +05:30
frank 02d45fa06f discard backup message when recovering account (#16748)
* discard backup message when recovering account

* fix test failed

* update status-go-version.json
2023-07-25 15:03:57 +08:00
flexsurfer 4decba8d00 multiaccounts refactoring S3, refactor keychain and touchid, move and refactor create/recover/login profile (#16448)
* multiaccounts refactoring S3 E1, refactor keychain and touchid,simplify app init flow, refactor biometric flow
* S3 E2 move and refactor create/recover/login methods
2023-07-06 11:25:57 +02:00
Icaro Motta 19ca8e28a5 Lint and fix missing trailing newlines (#16445)
Apply the Clojure Style Guide recommendation to end files with proper lines
(having a trailing newline character). See
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
2023-07-04 19:40:13 +00:00