Compare commits

...
1814 Commits
Author SHA1 Message Date
alwx 3ff4b8d8b6 Fixes 2024-07-23 14:20:58 +02:00
alwx f775010691 WalletConnect request header UI is misaligned 2024-07-23 14:17:39 +02:00
Parvesh Monu 540094c229 fix Missing 'Mark as read' option on community channels (#20838) 2024-07-22 22:55:50 +05:30
Alexander 08b65cbcb7 Proper handling of disconnection, both from the dapp itself and from the list of connected dapps (#20817) 2024-07-22 15:20:52 +02:00
AlexanderandLungu Cristian d623cc8444 Only show the Wallet Connect requests for the logged in user (#20815)
Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-07-22 14:57:45 +02:00
Brian Sztamfater 4b7c906df2 feat(swap): set spending cap screen (#20727)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-07-22 08:50:29 -03:00
Omar Basem 3b446963ef fix: assets sort order on bridge and assets screen (#20813)
* fix: assets sort order on bridge and assets screen (#20813)
2024-07-22 14:16:40 +04:00
Icaro Motta cec46f985a chore(style): Sort JSON keys in translations/en.json (#20785)
Sorts keys (non-recursively) in translations/en.json. The solution uses
the prettier plugin https://github.com/Gudahtt/prettier-plugin-sort-json.

We only format translations/en.json because it’s the only file we need to
manually change.

- Dependency added: prettier-plugin-sort-json version 4.0.0
- Dependency upgraded: prettier, from version 2.8.8 to 3.3.3.
2024-07-21 22:39:50 -03:00
Volodymyr Kozieiev 06b2996167 Do not update disabled networks when receiver network updated (#20756) 2024-07-19 15:10:13 +01:00
Lungu Cristian 02e24208db Wallet Connect transactions (#20755)
* feat: updated signing endpoints and refactor

https://github.com/status-im/status-go/compare/6e056348...e8aec741

* fix: using the generic warning at the bottom

* fix: show parsed transaction parameters

* feat: adding fees to transactions

https://github.com/status-im/status-go/compare/6e056348...b2e5e7a8

* feat: added fees

* feat: added eip-1559 fee estimation & tx priority

* feat: added fees and failed processing handling

* fix: show testnet name in the request

* fix: address review comments

* feat: added max-fee color when not enough balance

* ref: broke down tx fees subscription

* fix: handle gas estimation on status-go

https://github.com/status-im/status-go/compare/1ef2434b...5389f281

* fix: don't overwrite dynamic fees if already there

* fix: malli schema and review comments

* fix: addressed review comments 1

* fix: addressed comments 2

* fix: removed unused require

* fix: addressed QA review

https://github.com/status-im/status-go/compare/484b8aca...d07f9b5b

* fix: requests being shown simultaneously

* fix: removed support for eth_signTransaction
2024-07-19 14:16:51 +03:00
frank 84b8943fd4 fix_:still return the image when image server is unable to get public key (#20538)
https://github.com/status-im/status-go/compare/cba3ac57...4a43b2b2
2024-07-19 17:17:53 +08:00
Ajay Sivan c52b3e457e Wallet/Swap Input Component (#20318) 2024-07-19 01:00:38 -07:00
Omar Basem 21cc8a199a fix: button width (#20792)
* fix: button width (#20792)
2024-07-19 08:13:50 +04:00
Yevheniia Berdnyk 59374543ef e2e: disabled activity verification in wallet tests 2024-07-18 19:45:20 +03:00
Alexander 9f84a7b912 A pack of bugfixes for the user story "Connect to dApps" (#20711) 2024-07-18 14:57:53 +02:00
Vit∀ly Vlasov 2b0847ef76 fix_: ui part for share-all-future-addresses storage (PR #20549) (#20549)
Related status-go PR: https://github.com/status-im/status-go/pull/5354

https://github.com/status-im/status-go/compare/6e056348...8458cafe

Signed-off-by: Vitaly Vlasov <mail@vitv.ly>
2024-07-18 15:36:38 +03:00
Yevheniia Berdnyk 97b19c5440 e2e: fixes for wallet and deep/universal links tests 2024-07-18 00:52:06 +03:00
Icaro Motta b3e88508ac chore(activity-center): Various small refactors (#20690)
Potentially a solution to https://github.com/status-im/status-mobile/issues/15706

- [x] Fixes swipe button on Android and iOS.
- [x] Performance: we now subscribe only to the minimum from each community.
      This could be the reason the AC would lag as described in the parent
      issue.
- [x] Performance: was able to use flex and removed swipe button height
      calculation that was using `onLayout` and was causing a re-render.
- [x] Performance: reduced the initial number of items to render in the flatlist
      from 10 to 7.
- [x] Performance: delay rendering the heavy list of notification components.
      See in the video below how slow it is to open the AC with just 6
      notifications and that the opening animation is never displayed. And then
      check the improved version with the artificial delay provided by
      `rn/delay-render`. By opening the AC first and animating, this gives the
      user something to look for, and hopefully a few milliseconds more to think
      the app is not stuck, which will be preciously used to render
      notifications.

We refactor all views in the AC to:

- [x] Follow our newest standards with React hooks.
- [x] Removed prop-drilling by creating a separate React context to store the
      current swipeable item (because we need to call `.close` on a `Gesture
      Swipeable` instance whenever a new swipeable opens.
2024-07-17 12:16:06 -03:00
Mohsen 7b09402fcb [#20742] fix: blue background behind the "Save address" button (#20754) 2024-07-17 16:04:40 +03:30
mmilad75 a912125ba9 Token value shows fiat value on the transaction confirmation page #20734 (#20770) 2024-07-17 10:47:27 +02:00
Ulises Manuel 2d0437dd5e fix(wallet): Improvements on activity tab (#20703)
* Fix schema for networks in context-tags

* Fix wallet-activity component overflowing the activity tab

* Improve robustness of the activity tab fetching mechanism

* Handle `wallet-activity-filtering-entries-updated` signal

* Improve processing of data received for the activity tab
2024-07-16 15:07:33 -06:00
Parvesh Monu 43651ef0d0 Adjust on-boarding illustrations position and scale (#20692) 2024-07-16 20:43:19 +05:30
Yevheniia Berdnyk 13232dc7b7 e2e: updated create profile flow 2024-07-16 15:46:23 +01:00
Andrea Maria Piana 93b5f7a918 Add confirmation to centralized metrics
This commit add a confirmation for centralized metrics.
It is added in 3 places:

1) Onboarding -> Create new account
2) Onboarding -> Sync profile
3) On the accounts view if the user is upgrading

To test 1 & 2, you should just be able to do that on a newly installed
device.

To test 3, you will have to upgrade from a PR without this feature that
has at least an account. It should show the confirmation modal until you
either click on Not now or Share usage data.

The modal should also be added in settings, but I will do that as a
separate PR.
2024-07-16 15:46:23 +01:00
Mohsen 4898d32243 [#20664] feat: add share usage data confirmation modal 2024-07-16 15:46:23 +01:00
Lungu Cristian 588692e0eb Wallet Connect message signing (#20693)
* feat: updated signing endpoints and refactor

https://github.com/status-im/status-go/compare/6e056348...e8aec741

* fix: address review comments
2024-07-16 14:36:16 +03:00
Nikolay bd9e440839 [18942] Slideshow: slider-bar component (#20615) 2024-07-16 12:42:38 +02:00
Ulises Manuel 940edc2e53 fix(wallet): Some collectibles were displayed as "can iOS can't fetch collectible error (#20714) 2024-07-15 12:34:02 -06:00
mmilad75 5a93cd755e Cover wallet send events with tests #20411 (#20533) 2024-07-15 14:56:50 +02:00
Yevheniia Berdnyk 942c130d23 e2e: separated tests to run in PRs 2024-07-15 12:46:18 +03:00
Andrea Maria Piana bb8aad3be8 set fleet to status.staging
https://github.com/status-im/status-go/compare/1ef2434b...484b8aca
2024-07-15 10:30:01 +01:00
Andrea Maria Piana ba76b9fd51 Allow setting store confirmations
This commit adds the ability to enable store confirmations in the UI,
under advanced settings.

https://github.com/status-im/status-go/compare/1ef2434b...0d1e5aae
2024-07-15 07:46:13 +01:00
Brian Sztamfater 5f085e9cea feat(swap): swap confirmation screen (#20669)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-07-14 00:51:02 -03:00
Mohamed Javid 12b8dcf1e7 fix(saved-addresses): grouping and sorting of saved addresses (#20689)
This commit fixes the grouping and sorting of saved addresses.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-12 19:25:39 +05:30
Omar Basem 0e6d59b312 fix: hardware induced back actions (#20183)
* fix: hardware induced back actions (#20183)
2024-07-12 17:09:42 +04:00
Omar Basem 087fcb1010 Fix(wallet): navigation after transaction from settings (#20676)
* fix(wallet): navigation after transaction from settings (#20676)
2024-07-12 16:07:45 +04:00
Ajay Sivan 0de4c8cabb List-Items/Approval-Info Component (#20317) 2024-07-12 04:55:36 -07:00
Parvesh Monu 6553d5ca44 fix peer count invisible in Light mode (#20733) 2024-07-12 16:59:44 +05:30
Ajay Sivan 20b256b0d0 Settings/Data Item - editable variant (#20656) 2024-07-12 04:15:37 -07:00
Mohamed Javid 1c85b292f8 fix(community): remove non operable accounts in the selection of sharing addresses with the community (#20636)
This commit removes the non-operable accounts in the "Addresses for permission" and "Airdrop address" selections while joining a community

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-12 16:29:43 +05:30
flexsurfer d2e975f6d9 [#20434] Allow users from v1 to login with keycard (#20558) 2024-07-12 12:02:17 +02:00
Shivek KhuranaandLungu Cristian 721aa51d8d 🎣 Fix wallet connect init issue in release bundles (#20665)
* 👀 Added alerts so I peek into build

* 🆙 Update logs

* 🅰️ Annotate

* 📤 Don't refer

* 🖊️ Use default import

* added ^js

*  Added ocall

* 🎣 Isolate WC js calls to rn ns

* 🧯Fix on-scan-connection issue

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-07-12 14:47:25 +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
Icaro Motta 54e4b597ed chore(communities): Hide non-implemented tabs in Discover communities (#20684)
Tabs "Open" and "Gated" in Discover communities screen were never implemented in
the code, they are dummies. We now hide them under the flag
config/show-not-implemented-features?, which is disabled for users.

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

To avoid regressions and be quicker, I opted to not remove the "All" tab even
though is the only one shown now, as that would require me to check non-trivial
code due to the fact that the tabs can be sticky as the user scrolls.
2024-07-11 22:38:18 -03:00
Icaro Motta 0b5dac0ad0 feat(settings): Revamp legacy Privacy and security settings (#20671)
Revamps the legacy "Privacy and security" screen to meet the new designs.

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

- Removed setting "Set dApp access permissions" (won't be used anymore).
- Removed setting "Display collectibles" (won't be used anymore).
- Removed setting "Chat link previews setting" (they already had no effect).
- Removed "Reset password setting". This setting is already supported in Profile
  > Password > Change password.
- Removed "Delete my profile". Profile deletion is already supported in the
  login screen.
- Moved setting "Show your profile picture" to Profile > Privacy and security.
- Moved setting "Accept new chats from <XYZ>" to "Allow new contact requests" in
  Profile > Messages. Now it's just a toggle.
- Moved Block screenshots (Android) or Hide Preview (iOS) which are both
  accessible in Profile > Privacy and security.
- Created function utils.navigation/navigate-back, but I only used this in 2
  namespaces to keep the PR under scope.

Areas that may be impacted: old legacy settings that are still relevant.
2024-07-11 22:23:17 -03:00
Mohamed Javid 180065129f fix(saved-addresses): clean QR scanned address (#20699)
This commit cleans the scanned QR address/result on the unmount of the add new saved address flow.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-11 20:01:55 +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
Shivek KhuranaandLungu Cristian 072370b0d6 🙅 Gracefully reject proposals and requests (#20649)
* 🙅 Gracefully reject proposals and requests

* 🔑 Remove redudant fx, send correct error

* ➡️ Docstring to comment

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-07-11 13:03:14 +03:00
Shivek KhuranaandLungu Cristian d74edff9b9 2️⃣ Use v2 api for persisting sessions (#20648)
* 2️⃣ Use v2 api for persisting sessions

* 🗑️ Remove traces of REPL and v2 suffix

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-07-11 12:50:42 +03:00
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
Andrea Maria Piana 7a8db689f4 enable light client by default 2024-07-11 09:01:23 +01:00
John NgeiandYevheniia Berdnyk 311fde9409 chore: remove identifiers screens (#20503)
* chore: remove identifiers screens so users are navigated straight to enable notifications during onboarding

* removed navigated back button from enable notification screen

* fix top margin

* e2e: updated sign in flow

* make lint-fix

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-07-11 02:09:03 +02:00
Yevheniia Berdnyk f89b66f562 e2e: adding android.gpu.mode capability to fix emulators crash 2024-07-11 02:43:32 +03:00
Yevheniia Berdnyk d179cbf59b e2e: updated discover communities test 2024-07-10 19:53:48 +05:30
Parvesh Monu 7ff7e78691 fix user lands on the Home screen after closing a community opened from Discover Communities 2024-07-10 19:53:47 +05:30
Omar Basem 6c352397ab fix(wallet): asset sorting (#20659)
* fix(wallet): asset sorting (#20659)
2024-07-10 14:49:24 +04:00
Mohsen 3521421098 [#20543] fix: incorrect black background behind floating button (#20585) 2024-07-09 21:12:18 +03:30
Omar Basem f70a743a8c Fix(wallet): address validation (#20674)
* fix(wallet): address validation (#20674)
2024-07-09 15:59:48 +04:00
NikolayandJamie Caprani a2178951d7 chore(wallet): import private key - backend integration
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-07-09 03:49:31 -07:00
Ulises Manuel 7774c4eac1 fix(wallet): Improve collectible UX and fix data displayed (#20657)
* Add variant unknown variant for collectibles

* Fix blank collectibles listed

* Improve `expanded-collectible` animation and add support for different gradient-colors

* Make :wallet/collectible-details-owner subscription depend on `wallet/accounts` instead of `:wallet`

* Make collectible tabs component more flexible

* Remove now unused subscriptions

* Improve UX navigation to collectible detail page

* Pass the current collectible gradient-color when a collectible is pressed

* Fix tests
2024-07-08 14:19:01 -06:00
Alexander 4c4a8b65d4 Add QR scanner to connect Dapps through Connected Dapps screen (#20647)
* Add QR scanner to connect Dapps through Connected Dapps screen

* Style fix

* use-mount
2024-07-08 13:55:32 +02:00
Parvesh Monu de6d9a6c3b chore: remove hot reload while theme changing (#20663) 2024-07-08 14:51:27 +05:30
Mohsen da16d1f69e [#20571] fix: cleanup save address on mount (#20650) 2024-07-08 12:27:16 +03:30
John Ngei a13975f3f6 fix the warning message when the user enters the wrong password (#20605) 2024-07-06 00:15:36 +02:00
Icaro Motta c473b8c9b1 chore(settings): Add boilerplate for the new Privacy and security screen (#20668) 2024-07-05 14:07:01 -03:00
Parvesh Monu 1f333cc937 fix wallet send flow wrong status bar color on select assets screen (#20662) 2024-07-05 20:57:20 +05:30
Yevheniia Berdnyk 460aaedbca e2e: false failures fixes 2024-07-05 16:25:12 +03:00
mmilad75 66639fc3ed fix(wallet): fix checkbox (#19756) 2024-07-05 13:33:15 +01:00
Mohsen 2cc689a896 [#20638] fix: Scan missing keypair keep scanning after success attempt (#20640) 2024-07-05 14:33:38 +03:30
Ajay Sivan b4866ff728 Swap: Edit slippage drawer (#20554) 2024-07-05 02:44:38 -07:00
Sean Hagstrom eaa5016094 feat: add support for updating key-pairs and accounts from app signal (#20550)
This change adds support for processing app signals for syncing changes when adding, editing, or removing keypairs, accounts, and watch-only accounts.
2024-07-04 16:25:30 +01:00
Sean Hagstrom 66f77e1467 fix: configure selectable key-pair to use box-only for pointer-events (#20611)
This change attempts to only to override the default `pointer-events` behaviour for the `quo/keypair` component when the component uses the `selector` action. Now when the `quo/keypair` component is rendered with a selector, only the top-level view of the component will be pressable. And when the `quo/keypair` component is rendered without a selector it will allow for the children of the component to be pressable too.
2024-07-04 15:48:45 +01:00
Volodymyr Kozieiev d16c1a3c85 Disable possibility to changes amounts to send (#20639) 2024-07-04 15:02:57 +01:00
Mohamed Javid a049fd341e chore(docs)_: include new status-go tagging command in the merging PR process (#20607)
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-04 15:37:27 +05:30
Volodymyr Kozieiev 140fa3115c Add possibility to edit networks list when routes not found (#20642) 2024-07-04 10:54:17 +01: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
Ulises Manuel 1e40d49369 feat(wallet): Add modal to remove :key and :seed accounts (#20569) 2024-07-03 11:48:10 -06:00
BalogunofAfrica b17f2892c7 feat: collectibles details loading (#20400) 2024-07-03 15:49:12 +01:00
Volodymyr Kozieiev b28a8e153e Fixes for screen where user locks network amounts to send (#20519) 2024-07-03 15:17:29 +01:00
Alexander 35a1905396 Fix auth slider resetting when wallet connect signing is finished (#20589)
* Fix auth slider resetting when wallet connect signing is finished

* Lint fix

* Fixes

* Fixes
2024-07-03 15:27:27 +02:00
Brian Sztamfater 2e8776d0a6 feat(swap): implement network selection drawer (#20368) 2024-07-03 09:15:07 -03:00
Alexander 99506c810d Re-hide connected dapps screen behind a feature flag (#20627)
* Connected dapps screen is not hidden behind a feature flag

* Style fix
2024-07-03 13:01:24 +02:00
jakub e83f6ff445 fix(ci): add missing import for JsonBuilder
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-07-03 12:21:39 +02:00
Lungu Cristian f51f52ec27 Fix WalletConnect transactions (#20608)
* fix: sign-transaction

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: sendTranasaction not working

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: removing 0x from the signature

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: tx data from responding to processing events

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: request dapp subscription

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: tx data bug

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

---------

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>
2024-07-03 12:13:13 +02:00
Parvesh Monu e58e2209bb fix endless loading skeleton for some empty channels on IOS (#20602) 2024-07-03 15:26:43 +05:30
Parvesh Monu 8aa1cadc66 fix chat screen design issues (#20621) 2024-07-03 13:02:11 +05:30
Icaro Motta 91c22df498 Remove all integrations with signal wakuv2.peerstats (#20501)
Removes code integrating with the signal wakuv2.peerstats. The response from
this signal is rather large and it can sometimes happen in short bursts.

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

We were using it to keep track of the number of peers in real-time. We now only
fetch the peer count in two instances (synchronously inside rn/use-mount):

- When the user opens the legacy screen Settings > Advanced > Peers stats.
- When the user opens the visibility status dropdown in Settings, because the
  peers count will be used when the user chooses "Offline" (status inactive).

Note: we don't send anymore the peers count when the user shakes the phone. We
assume this value is already available in :peers-summary (which will be shared
by the user).

status-go still publishes the signal, we just ignore it to remove the
performance overhead of transforming to cljs and mutating the app-db (thus
interrupting the queue from more important stuff).

Steps to test:

- Verify user can see peers count in Settings > Advanced > Peers stats
- Verify changing the visibility status of user Alice in the Settings screen
  leads to the desired effect to the other party seeing Alice's visibility
  status.
2024-07-02 19:48:15 -03:00
Ulises Manuel e221e23255 fix(wallet): Validation of addresses in send-to screen (#20570)
* Fix validation of addresses in send-to screen
2024-07-02 13:57:31 -06:00
Yevheniia Berdnyk e8e05e58e0 e2e: update for Syncing view 2024-07-02 18:30:06 +03:00
Lungu Cristian ac4ffd83db Wallet Connect session establish networks (#20576)
* feat: showing supported networks in wc connection

* feat: added :large size for quo/data-item

* feat: added required networks check
2024-07-02 16:39:33 +02:00
Shivek KhuranaandLungu Cristian b021b1e20a 🎛️ Account switcher UI for Wallet Connect sessions (#20573)
* 🎛️ Account switcher UI for Wallet Connect sessions

* 😢 Remove repl workflow

* 🔀 Merge current-proposal request and account

*  Remove redundant test

* 🐛 Lint fix

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-07-02 18:48:48 +05:30
Ajay Sivan b650591e58 Refactor - Info/Info Message component (#20551) 2024-07-02 04:06:37 -07:00
Mohamed Javid 0581fc2f9d feat(wallet): sync saved addresses (#20546)
This commit adds syncing saved addresses across paired devices whenever a new saved address is added or an existing one is edited or removed.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-02 15:33:54 +05:30
yqrashawn ef9cc55501 feat: check before syncing doc (#20504) 2024-07-02 16:36:42 +08:00
Yevheniia Berdnyk 3b3a39e37b e2e: fixes for community,wallet and removed outdated xfails 2024-07-02 01:50:29 +03:00
Icaro Motta b255874e95 fix(communities)_: Buggy scroll behavior in community channel member list (#20517)
Fixes the scroll behavior in a community channel member list. The problem was
that the code wasn't enforcing the correct height.

Partially solves https://github.com/status-im/status-mobile/issues/20514

Steps to test: Long press on any community channel and press View channel
members and details. The user should be able to correctly scroll throughout the
entire list of members.
2024-07-01 18:55:24 -03:00
Icaro Motta 1c83916fc3 fix: Make BigNumber comparator safe against unsupported data types (#20614)
BigNumber instances are not comparable to other data types, except numbers and
strings (supported directly by the library). This commit makes = safe on
bignumbers (no exceptions should be thrown), even when comparing a bignumber
with a nil value.

There's another important benefit from having a custom comparator: performance,
because re-frame will be able to correctly compare data with bignumbers and thus
reuse cached subscriptions and also Reagent will be able to skip processing when
props are equal.

The IComparable interface was not changed. Similarly to core CLJS data types,
sorting heterogeneous collections throws (ignore nils).

```clojure
;; This throws with message: cannot compare 10 to foo
(sort ["foo" 10])
```

We could make sorting work with heterogeneous collections, but then we would
need to extend many core data types to play nice with BigNumber and that sounds
more like a hack, and it's also not a problem we have nowadays.
2024-07-01 18:38:10 -03:00
jakub 31acf51b1e feat(ci): use s5cmd instead of obsolete s3cmd
It's actively maintained and has better concurrency support.

Depends on:
- https://github.com/status-im/status-jenkins-lib/pull/92

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-07-01 16:31:29 +02:00
Parvesh Monu 424d2d4b5c fix can't pair with dApp on android with WalletConnect (#20600) 2024-07-01 18:01:58 +05:30
yqrashawn 0d9bedf11c fix: use "Biometric" instead of Touch ID when no Biometric found (#20555)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-07-01 09:57:21 +08:00
Volodymyr Kozieiev 3e268936f6 Disable input field on send asset page (#20564) 2024-06-28 13:27:38 +01:00
Parvesh Monu e92da6d24b fix can't enter channel after community is fetched for the first time (#20508) 2024-06-28 16:36:34 +05:30
Andrea Maria Piana 34c95c42d1 Fix member list in community channels
https://github.com/status-im/status-go/compare/e0673ad1...6e056348
2024-06-27 19:48:28 +01:00
mmilad75 1ee44259c4 Wallet - Resolve user types on Transaction Confirmation Page #20267 (#20480) 2024-06-27 18:12:59 +02:00
Parvesh Monu 112b69c1d6 fix ios wrong status bar color in dark theme (#20540) 2024-06-27 20:23:51 +05:30
Ulises Manuel 3ce6a86e9b fix(wallet): Account derivation for added keypairs (#20536)
* Fix color of non-selected keypairs

* Fix pressable area in keypairs

* Make validation more robust

* Make confirm button always pressable

* Fix wrong sentence in errors

* Solve account creation by fixing a memoized callback

* Improve logging
2024-06-26 12:10:16 -06:00
Mohsen b005eb8181 feat!: add saved addresses to wallet settings (#20475) 2024-06-26 16:44:29 +03:30
Volodymyr Kozieiev 4bd7abaace Added tests for wallet send events (#20547) 2024-06-26 14:02:55 +01:00
Alexander e2e8afb7b1 WC signing/sending transactions flow (#20445)
* WC signing transactions flow

* Fixes

* Fixes

* Post-review fixes

* Removed leftover

* Post-review fixes

* Fixes

* Fixes

* Test fixes
2024-06-26 14:45:43 +02:00
Sean Hagstrom 256f3f8f24 feat!: add key pairs and accounts settings to wallet settings (#20464)
* tweak: use support blur colors for action drawer icons

* tweak: support blur colors for drawer-top icon

* tweak: support blur colors for account list inside keypair component

* tweak: use blur colors for missing-keypair bottom sheet actions

* feat: remove feature-flag for key-pairs and accounts inside wallet settings

* fix: ensure key-pairs-and-accounts settings are visible

* tweak: display key-pair rename screen as full-screen modal

* tweak: animate key-pair scanning screen as modal

* fix: do not allow user to rename key-pair to an existing key-pair name

* fix: ensure we visualise the validation error for key-pair name that is too long

* fix: ensure we can see the recovery-phrase suggestions when testnet-mode is active

* tweak: show recovery-phrase errors when keyboard is hidden

* fix: ensure we do not re-hash password

* fix: ensure we call `on-close` function when successfully handling biometrics auth

* fix: ensure we clear error states when editing the recovery-phrase input

* fix: use blur styles for standard authentication password input

* chore: add labels for qr validation

* tweak: handle display import-qr error and allow for re-scanning

* tweak: update blur background for all bottom-sheets

* chore: add feature-flag for import-all key-pairs button for missing key-pairs

* tidy: remove unused variable

* fix: ensure layout for android is correct when entering seed-phrase in testnet-mode

* fix: ensure we return the updated db when updating the db with backup key-pair

* tweak: coerce nil to empty string

* tweak: change validation error message for short key-pair name

* tweak: hide the options icon for the default key-pair inside key-pairs and accounts settings
2024-06-26 13:16:00 +01:00
Jamie Caprani 6931fd0052 chore(wallet/shell): minor fixes from design review (#20494)
* chore(wallet): make recent tab fullscreen for empty view

* chore(wallet): hide advanced button on send page

* chore(wallet): hide estimated fees when no routes found

* chore(wallet): update emoji icon to edit

* chore(wallet): update key pair placeholder to use keypair example

* chore(shell): feature flag saved address option in scanner
2024-06-26 02:05:19 -07:00
Yevheniia Berdnyk 136c3c0032 e2e: fixed KeyError for missed SauceLabs session id 2024-06-26 00:03:50 +03:00
Tetiana Churikova a92b50afea .github: add default prio label for bug (#20557) 2024-06-25 17:35:08 +02:00
Jamie Caprani fd3a21a320 fix(wallet): native share should point to opensea link (#20222) 2024-06-25 07:56:11 -07:00
Lungu Cristian f93e372d18 Add data-item to quo/category (#20542)
* feat: added data-item to category quo component

* feat: session proposal with data-item & category

* test: category with data-items

* chore: removed unnecessary ->

* fix: trailing newline
2024-06-25 15:35:45 +03:00
Parvesh Monu 0ed39a42ef fix "Remove from contacts" is available when the user is not your contact (#20541) 2024-06-25 13:48:53 +05:30
yqrashawnandYevheniia Berdnyk ead51b7e7c feat: simplification of onboarding intro view (#20386)
* feat: simplification of onboarding intro view

Signed-off-by: yqrashawn <namy.19@gmail.com>

* feat: new onboarding illustration

* fix: add accessibility label

* fix: wrong navigation stack

Signed-off-by: yqrashawn <namy.19@gmail.com>

* e2e: updated sign in

* fix: onboarding nav stack after flow change

---------

Signed-off-by: yqrashawn <namy.19@gmail.com>
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-06-25 11:03:10 +08:00
Icaro Motta 9481890624 fix(profile)_: Truncate profile name in settings screen (#20483)
After migrating from v1 to v2, some user names may be too long to fit in some
devices in the "Settings > Edit Profile > Name" setting. The solution was to
truncate in the UI the name to the max valid length in v2, which is 20
characters.

Other small improvements:

- Don't use entire Clojure maps as the :key in React. This is known to be slow
  because it's expensive for Clojure to generally transform a data structure
  into its string representation.
- Don't find the last item of a list using last and an equality between two
  maps. This will force each iteration to call last, which in turn will iterate
  over the entire list of items (we can think of the Clojure lazy seq as a
  linked list). Instead, we now cache the index outside the loop and do a number
  comparison.
- Don't pass entire props to style functions when not needed because
  destructuring has a cost. I wouldn't personally worry about this 99% of the
  time, but when there's only argument like in this PR where we were passing a
  single blur? argument, it's preferable to not use a map.
2024-06-24 20:08:23 -03:00
Icaro Motta 419e84db08 chore(tests)_: Make bignumber instances test friendly (#20535)
Solves a problem encountered in unit tests, where instances of BigNumber (used
in the utils.money namespace) can't be compared with = or match?

If you try the following code you will always get false because they're
different instances in memory.

  (= (money/bignumber 0) (money/bignumber 0))

We now extend BigNumber (from lib bignumber.js) so that their instances are
comparable (e.g. necessary to sort) and understand equality.

We also extend BigNumber to work with the match? directive. For example, this is
the output of comparing a nested map containing bignumbers (colored in the
terminal):

  (match? {:a {:b {:c (money/bignumber 42)}}}
          {:a {:b {:c (money/bignumber 43)}}})

FAIL in (equivalence-test) (at cljs$test$run_block (status-mobile/target/test/cljs-runtime/cljs.test.js:366:13)
expected: (match? {:a {:b {:c (money/bignumber 42)}}} {:a {:b {:c (money/bignumber 43)}}})
  actual: {:a
 {:b {:c (mismatch (expected "42") (actual "43"))}}}
2024-06-24 15:56:55 -03:00
Icaro Motta 66785d01ec chore(perf)_: Use optimized endpoint to get communities (#20481)
Adapts the client code to use the new optimized endpoint to get communities with
images pointing to the media server. Related status-go PR
https://github.com/status-im/status-go/pull/5336.
2024-06-24 09:45:03 -03:00
Andrea Maria Piana 1cc4807336 chore_: add make targets for tail/pull geth.log 2024-06-24 11:19:23 +01:00
Parvesh Monu 141252e5a0 fix no request for permission for push notifications when you enable them in app settings (#20531) 2024-06-24 15:12:03 +05:30
Yevheniia Berdnyk 9d825ee04e e2e: update for wallet users and community links test 2024-06-21 18:25:49 +03:00
Mohamed Javid fb84f105db chore(wallet): refactor keypairs data in app-db (#20469)
This commit refactors the keypairs data in app-db to save them by indexed by key-uid which will help to fetch, update, and delete easily instead of using filter and some methods every time we need to perform those operations.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-21 20:47:26 +05:30
flexsurfer f509d132f3 Allow non admin to add members to group chats #20396 (#20428) 2024-06-21 15:49:20 +02:00
Parvesh Monu 5ee5d70567 Show correct drawer message for pending community request (#20485) 2024-06-21 17:20:20 +05:30
jakub b5a09a334a Include process of status-go PR
Define a process for status-go PR as more of those are expected to be
opened by the Waku team.

Specify that testing is mandatory before merge
2024-06-21 07:46:16 +01:00
Ulises Manuel 1e703cdc81 feat(wallet): Remove non-operable accounts from account switcher (#20457)
* feat(wallet): Remove non-operable accounts from account switcher

* Remove non-operable accounts in the From page
2024-06-20 17:14:26 -06:00
John Ngei fbc9b59a5e chore: remove identifiers screens so users are navigated straight to enable notifications during onboarding (#20506) 2024-06-21 00:38:02 +02:00
Jamie Caprani 4e8f4698a6 chore(wallet): add missing keypair to wallet home cards (#20455) 2024-06-20 22:37:49 +02:00
Ulises Manuel 68b3bb3089 fix(wallet): Solve multiple bugs in the collectible detail page (#20281)
* Add background color to collectibles

* Fix header text animation in unsupported collectibles

* Fix header height and animation color

* Fix image not showing when it's `nil` or `""`

* Add missing border to expanded-collectible
2024-06-19 11:38:14 -06:00
Ulises Manuel f192648518 feat(wallet): Add account name, emoji and color validation (#20422)
* Fix extra `0` in create/edit account title input

* Validate name, color and emoji in account creation/edition screen

* Refactor sub

* Fix button disabled condition and placeholder
2024-06-19 11:25:46 -06:00
Shivek Khurana e9f98fcf85 💾 Persist Wallet Connect sessions (#20351)
* 💾 Add persist WC session events

*  Persistence works

- Also moved closing of modal to approval stage
2024-06-19 15:55:38 +05:30
yqrashawn f133cd3d5d chore: backupDisabledDataDir -> rootDataDir (#20425)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-06-19 15:21:09 +08:00
Volodymyr Kozieiev f761d87b2a Long tap on route to lock value sent from this network (#20413) 2024-06-18 15:42:29 +01:00
Icaro Motta 24b77811d8 fix(profile)_: Fallback to old profile name after migration from v1 (#20412)
This is a byproduct of the investigation on issue
https://github.com/status-im/status-mobile/issues/20203, more specifically, to
double-check if v1 users have their display names shown correctly.

Closes https://github.com/status-im/status-mobile/issues/20203

This is the scenario used to reproduce the bugs this PR is solving:

1. Alice creates an account in v1 (branch release/1.20.x).
2. Alice had 1 friend to chat with, Carol.
3. Alice sends and receives at least one message from Carol.
4. Alice installs the new app (latest develop branch suffices).
5. Alice login and try to edit her profile, but her 3-word name is not displayed
   in the Settings > Edit Profile screen, nor in the Settings > Edit profile >
   Name input field.
6. Alice also opens her chat with Carol, but her name appears as a public key
   instead of her 3-word name she identifies herself with.

The solution presented here is to just fallback to Alice's 3-word name (name
field in the profile/contact app-db instance).

Areas that may be impacted

- Edit profile name.
- Name displayed in chats from the perspective of the sender who migrated from
  v1.

Steps to test

In order to test this PR, it's necessary to migrate from v1 to v2 using two
separate builds. The v1 build can be obtained in PR
https://github.com/status-im/status-mobile/pull/20123. v2 build can be any one
from develop from today, for example.
2024-06-17 18:25:05 -03:00
Alexander d2f67ef46c Update quo/data-item to show accounts and networks as preview (#20382)
* Update `quo/data-item` to show accounts and networks as preview

* Podfile.lock change reverted
2024-06-17 09:37:35 +02:00
Yevheniia Berdnyk 88b97d1151 e2e: update for wallet tests 2024-06-14 18:28:55 +03:00
Omar Basem 6a3794f380 fix(wallet): Wallet Home jumping (#20347) 2024-06-14 07:07:00 -07:00
Mohamed Javid 686f6bdf5e fix(wallet): saved addresses - navigation on save and ens fixes (#20462)
This commit:
- fixes addresses are displayed without truncation
- fixes network preference (advanced icon) shown for ENS
- fixes navigation on adding a new saved address

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-14 17:06:44 +05:30
John Ngei 8b424b0669 fix scroll to index error when swtiching tab on the messaging screen (#20407) 2024-06-14 12:37:11 +02:00
Mohsen 24068dad5c [#20405] feat: make partially operable key pair to be fully operable (#20433) 2024-06-14 12:25:44 +03:00
Icaro Motta 96d98c62ed chore(tests)_: Facilitate writing event tests (#20424)
Introduces a new macro deftest-event to facilitate writing tests for event
handlers. Motivation came from the _problem of having to always extract event
handlers as vars in order to test them_.

Although the implementation of deftest-sub and deftest-event are similar,
deftest-sub is critically important because it guarantees changes in one
subscription can be caught by tests from all other related subscriptions in the
graph (reference: PR https://github.com/status-im/status-mobile/pull/14472).

This is not the case for the new deftest-event macro. deftest-event is
essentially a way of make testing events less ceremonial by not requiring event
handlers to be extracted to vars. But there are a few other small benefits:

- The macro uses re-frame and "finds" the event handler by computing the
  interceptor chain (except :do-fx), so in a way, the tests are covering a bit
  more ground.
- Slightly easier way to find event tests in the repo since you can just find
  references to deftest-event.
- Possibly slightly easier to maintain by devs because now event tests and sub
  tests are written in a similar fashion.
- Less code diff. Whether an event has a test or not, there's no var to
  add/remove.
- The dispatch function provided by the macro makes reading the tests easier
  over time. For example, when we read subscription tests, the Act section of
  the test is always the same (rf/sub [sub-name]). Similarly for events, the
  Act section is always (dispatch [event-id arg1 arg2]).
- Makes the re-frame code look more idiomatic because it's more common to define
  handlers as anonymous functions.

Downside: deftest-sub and deftest-event are relatively complicated macros.

Note: The test suite runs just as fast and clj-kondo can lint code within the
macro just as well.

Before:

```clojure
(deftest process-account-from-signal-test
  (testing "process account from signal"
    (let [cofx             {:db {:wallet {:accounts {}}}}
          effects          (events/process-account-from-signal cofx [raw-account])
          expected-effects {:db {:wallet {:accounts {address account}}}
                            :fx [[:dispatch [:wallet/get-wallet-token-for-account address]]
                                 [:dispatch
                                  [:wallet/request-new-collectibles-for-account-from-signal address]]
                                 [:dispatch [:wallet/check-recent-history-for-account address]]]}]
      (is (match? expected-effects effects)))))
```

After

```clojure
(h/deftest-event :wallet/process-account-from-signal
  [event-id dispatch]
  (let [expected-effects
        {:db {:wallet {:accounts {address account}}}
         :fx [[:dispatch [:wallet/get-wallet-token-for-account address]]
              [:dispatch [:wallet/request-new-collectibles-for-account-from-signal address]]
              [:dispatch [:wallet/check-recent-history-for-account address]]]}]
    (reset! rf-db/app-db {:wallet {:accounts {}}})
    (is (match? expected-effects (dispatch [event-id raw-account])))))
```
2024-06-13 22:03:02 -03:00
Ulises Manuel 435bf3dbd5 feat(wallet): Fix bugs in the bridge flow and add missing entry points (#20197)
* Fix "Bridge to" screen not showing

* Fix "Unkown flow" alert in bridge flow

* Fix warnings in transaction confirmation page

* Fix missing images and strings while bridging in transaction confirmation page

* Fix stale data shown for an instant in the suggested routes component

* Add support for bridge flow started in the wallet home screen

* Fix fetch-activities event
2024-06-13 10:32:34 -06:00
Parvesh Monu 26c4a736ad fix group Image can't be set up during group creation (#20451) 2024-06-13 20:31:24 +05:30
Mohamed Javid aff4eb89cd feat(wallet): implement search in saved addresses list (#20443)
This commit adds a feature to search through the saved addresses list by name, address, ENS and chain names.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-13 19:28:41 +05:30
flexsurfer 60b3d01ceb use-safe-unmount for hot reload (#20450) 2024-06-13 15:23:01 +02:00
Sean Hagstrom dc335cc333 chore: Revise code for wallet settings (#20439)
* fix: use correct error message when displaying seed phrase as incorrect

* tidy: cleanup naming of events and effects

* tweak: show incorrect-seed-phrase error for any import error

* fix: show correct error message for incorrect private key

* chore: move import-private-key and import-seed-phrase namespaces

* chore: move encrypted-qr namespace

* chore: move scan-qr namespace

* tidy: rename key-pair to keypair inside for wallet settings

* tweak: use :open-modal navigation instead of :navigate-to-within-stack

* tweak: rename screen for importing missing key-pair by seed-phrase

* tidy: refactor code
2024-06-13 14:13:26 +01:00
mmilad75 e0c7ecc6df No routes found error is displayed in case asset value is within max amount but not enough balance for fee #20148 (#20272) 2024-06-13 14:41:06 +02:00
mmilad75 d33648917a The network marks are not shown on the 'send to' page for accounts #19545 (#20365) 2024-06-13 14:19:19 +02:00
Parvesh Monu 5f7d7254e7 fix bottom message hidden behind composer with minimised keyboard when replying to message (#20371) 2024-06-13 16:48:21 +05:30
Parvesh Monu df939bf85f fix inability to move cursor to next line in bio field (#20403) 2024-06-13 13:56:33 +05:30
yqrashawn 874906b11f fix: face id toggle respect system face id permission (#20227)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-06-13 09:28:07 +08:00
Ulises Manuel 799bd1d4dc fix(wallet): Multiple activity tab fixes (#20367)
* Add missing circle in wallet-activity component

* Move activity calculations to subscription and fix wrong data

* Fetch activities when visiting an account
2024-06-12 14:37:06 -06:00
Parvesh Monu 256c9f7b10 fix wrong community logo position when scrolling down the channel list (#20408) 2024-06-12 22:50:07 +05:30
Jamie Caprani 60e1783b36 chore(wallet): show activity tab after sending a transaction 2024-06-12 08:36:30 -07:00
Mohamed Javid 3208ec1b28 feat(wallet): display saved addresses in send flow (#20418)
This commit adds a feature to display saved addresses in the send flow

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-12 19:38:17 +05:30
Parvesh Monu 8f75761ae9 fix continue button partially hidden on the Change password screen (#20409) 2024-06-12 18:29:28 +05:30
Mohsen af07205f20 [#19737] feat: edit a saved address (#20398) 2024-06-12 12:55:38 +03:00
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
Ajay Sivan 255ba9a862 Move buy assets recurrent tab out of feature flag (#20319) 2024-06-11 09:18:12 -07:00
flexsurfer 4942238cae Remove empty box for unhandled links #20429 (#20430) 2024-06-11 15:49:46 +02:00
Ajay Sivan 6a32006e6a Drawer/Bottom Actions - context-tag-props (#20388) 2024-06-11 06:43:12 -07:00
Alexander b119860b81 Enhance the dapp-avatar component (#20392) 2024-06-11 15:26:04 +02: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
Ajay Sivan f226f0db18 Drawer Action Component - Input action variant (#20383)
* Drawer action component

* Component tests

* PR review feedback
2024-06-11 04:10:51 -07:00
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
Icaro Motta 9f245ceb30 perf(login)!: Fix slow login by delaying messenger filters initialization (#20173)
Fixes the slow login when users have joined large communities, such as the
Status one. Related status-go PR
https://github.com/status-im/status-go/pull/5229.

What we mean by "slow" is that the user was getting stuck on the login screen
for almost 20s in some devices (even on iOS things were bad). And this entire
process was happening in status-go, hence most changes come from there.

By "login" we mean the process to authenticate and initialize vital data in
status-go. Setting up message filters can be slow with large communities, and
that's exactly this part we moved out of the login phase in status-go. This step
now happens implicitly when the client calls wakuext_startMessenger.

In a way, the solution makes sense because setting up filters isn't essential
for the user to access other parts of the app, such as the Wallet, Settings,
Profile, and Activity Center.

How can we magically eliminate the login delay? In reality, the time we used to
spent during login, blocking the user, still happens, but it happens in the
background and after the user is redirected to the home screen. This also means
that, until the filters are established, all chats are still in their "loading
skeleton state".

In terms of UX, this is probably fine as long as it doesn't take too long for
this setup to finish in status-go. In the future, we have room to further
optimize how filters are set up in status-go.

Fixes https://github.com/status-im/status-mobile/issues/20059
2024-06-11 07:41:29 -03:00
Volodymyr Kozieiev 94e728bdf3 Icon added to disclaimer component (#20309) 2024-06-11 11:16:01 +01:00
flexsurfer 402e67d199 Any link to status.app opens in status even if it's not supported (#20427)
* Any link to status.app opens in status even if it's not supported #20420

* Any link to status.app opens in status even if it's not supported #20420
2024-06-11 11:59:55 +02:00
Omar Basem 0d2869bfe0 fix: inability to input data while routes are loading (#20298)
fix: inability to input data while routes are loading (#20298)
2024-06-11 08:05:47 +04:00
Parvesh Monu 3634edab42 fix wrong composer opacity with minimised keyboard when editing message (#20348) 2024-06-08 18:21:02 +05:30
Yevheniia Berdnyk 712e67a62e e2e: updates for community tests 2024-06-08 00:07:22 +03:00
mmilad75 d223151b93 Implement Alert Banner Component #20277 (#20278) 2024-06-07 18:56:14 +02:00
Mohamed Javid 9c7cb0fe93 feat(wallet)!: process wallet accounts from backup on account recovery (#20160)
This commit:

- adds a feature to process backed-up wallet data on account recovery (without the necessity to re-login)
- refactors keypair data store functions
- refactors wallet event to support calling for single account/address

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-07 20:28:49 +05:30
Mohamed Javid a3e713bbf0 feat(wallet): Add a new saved address with ENS (#20384)
This commit adds a feature to add new saved addresses with ENS

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-07 19:47:06 +05:30
flexsurfer cedd4900d5 Remove blur from android #20249 (#20308) 2024-06-07 14:28:28 +02:00
frank d43e8881ef fix_:Missing "Backup Recovery Phrase" option in profile (#20378) 2024-06-07 07:57:03 +08:00
Mohamed Javid 75c8437cc5 feat(wallet): Add network preferences selection for saved address (#20364)
This commit:
- adds a feature to add network preferences for saved addresses while saving
- updates the network preferences in "Share save address" to show the address and color of the saved address
- fixes the screen qualifier for the settings screen when navigating to wallet settings

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-06 23:01:12 +05:30
Volodymyr Kozieiev f1310c7e6c Reuse controlled input logic in collectibles sending page (#20146)
* reuse controlled input logic for sending collectibles
2024-06-06 17:34:52 +01:00
Sean Hagstrom d7530dfbee Feature: Implement import of key-pair with recovery phrase inside wallet settings (#20181)
* fix: ensure missing key pairs scroll with list

* chore: add translations for labels

* chore: promisify validate-mnemonic native module function

* chore: add events for validating seed-phrases and making key-pairs fully operable with seed-phrase

* chore: define re-usable effects for validate-mnemonic and make-seed-phrase-keypair-fully-operable and import-keypair-by-seedphrase

* tweak: refactor error handling logic when importing key-pair by seed-phrase

* tweak: handle vectors and functions between events and effects

* tweak: refactor recover-phrase form to support custom title, children, and navigation icon

* tweak: add support for accessing input-ref in recovery-phrase form

* tweak: always mask seed-phrase when passing to render-controls

* feature: add initial screen for importing key-pair with seed phrase

* tweak: conditionally render keypair context tag inside recovery-phrase form

* tidy: rename on-input-ref to ref

* tidy: remove unused property

* tidy: refactor to use case expression

* tidy: format
2024-06-06 10:33:34 +01:00
Mohsen 0d6bd9c15d [#19734] feat: share saved address QR (#20315) 2024-06-05 19:10:48 +03:00
Mohsen 2da6d9dffb [#19766] feat: save an address by scanning it's QR code (#20353) 2024-06-05 18:57:51 +03:00
flexsurfer 879a4067e5 No fetching / fetched community screens #20354 (#20355) 2024-06-05 17:45:55 +02:00
Jamie Caprani e1317f503f chore(quo): update styles for account card variant missing keypair (#20279) 2024-06-05 08:18:24 -07:00
Sean Hagstrom ec00ddf10e Fix layout of title for select key-pairs screen (#20270)
* fix: ensure standard-title component uses flex-1 styling

* fix: adapt settings screens to use flex-0 styling for the standard-title component
2024-06-05 14:59:35 +01:00
Parvesh Monu c0e10b7c6f fix long-press message/chat preview is missing (#20349) 2024-06-05 18:46:17 +05:30
frank da449bcd17 chore_:Add keyUID to table when migrating from v1 to v2 (#20151)
https://github.com/status-im/status-go/compare/cba3ac57...9e538695
2024-06-05 20:52:19 +08:00
John Ngei ab93088d93 fix white screen when navigating back from a channel (#20326) 2024-06-05 14:24:59 +02:00
Sean Hagstrom b4a0e74a4a Feature: add wallet network settings to app settings (#20254)
* tweak(wallet-network-settings): update testnet label for optimism network

* chore: feature-flag saved-addresses inside wallet settings

* chore: remove feature-flag for network-settings inside wallet settings

* chore: remove feature-flag for wallet-settings inside settings

* tweak: adjust vertical spacing on wallet-network settings screen

* chore: update information-box component with shell theme

* tweak: add blur styling to testnet bottom-sheet

* fix: ensure testnet-mode toggle is consistent

* tweak: implement blur background override for bottom-sheet

* tweak: change the blur background color for the overlay component

* fix: adjust alignment between categories and labels
2024-06-05 12:17:14 +01:00
Shivek Khurana 379ba87c16 🤝 🔁 [19834] Add dapp connection flow with a basic design (#20204) (#20325)
* 🔳 QR on success not being called

- IDK why, trying things out

* 🙃 Stupid of me

- My handler was not being called because I wrote the code in a
different QR scanner

*  Approval screen taking shape

* 🧹 Lint fix

* 🎛️ Wallet connect session screen shows up

- Hard coded the first account
- The data item component doesn't support networks or accounts yet
- The quo category component cannot show a data-item yet
- Connected accept and decline button

* 🧰 Fix review issues

* 🔨 Fix lint

* 🔧 Rename event and move dispatch

* 🔧 Fix lint

* 🎏 Add ff for wc scanner

- Bring back missing event
2024-06-05 16:17:19 +05:30
Jamie Caprani 901dddc603 chore(wallet): hide network preferences in watched and make multichain tab first on receive screen (#20180) 2024-06-05 03:27:52 -07:00
Omar Basem 9300377c6c fix: wallet home loading state (#20297)
* fix: wallet home loading state (#20297)
2024-06-05 13:21:15 +04:00
Andrea Maria Piana 9445363467 fix_: spectate communities only when opening 2024-06-05 08:25:57 +01:00
Brian Sztamfater 5bad8de886 feat(swap): implement select asset to pay screen (#20269)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-06-04 17:41:35 -03:00
Mohamed Javid 577dc16188 feat(wallet): Add new saved address from wallet settings (#20304)
This commit adds flow for adding new saved addresses from wallet settings

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-04 23:49:16 +05:30
Shivek Khurana 00d288fb94 Revert "🤝 [19834] Add dapp connection flow with a basic design (#20204)" (#20323)
This reverts commit 6ea39b5096.
2024-06-04 18:52:38 +05:30
Shivek Khurana 6ea39b5096 🤝 [19834] Add dapp connection flow with a basic design (#20204)
* 🔳 QR on success not being called

- IDK why, trying things out

* 🙃 Stupid of me

- My handler was not being called because I wrote the code in a
different QR scanner

*  Approval screen taking shape

* 🧹 Lint fix

* 🎛️ Wallet connect session screen shows up

- Hard coded the first account
- The data item component doesn't support networks or accounts yet
- The quo category component cannot show a data-item yet
- Connected accept and decline button

* 🧰 Fix review issues

* 🔨 Fix lint

* 🔧 Rename event and move dispatch

* 🔧 Fix lint
2024-06-04 18:26:14 +05:30
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
Lungu Cristian 5193f981f8 Add wallet connect signing flow (#20199)
* feat: added session request event & fx

* Added signing flow

* fix: addressed @ilmotta's review comments

* fix: addressed @shivekkhurana's review comments

* fix: addressed @ilmotta's review comments

* fix: converting typed data to clj and back to JSON
2024-06-04 13:30:26 +03: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
Icaro Motta 0d6c553f3f Add linter for inconsistent deftest name (#20224)
Adds a new linter to verify all test names are consistent with one common
convention we already follow, for the most part, which is:

> Test vars (test names) should be suffixed with -test.

There's no strong reason for following this convention, although it's quite
common in Clojure, but in any case, these are the reasons I can think of and
remember:

- Naming consistency. Sometimes tests start with "test-", others end with "test"
  and others don't prefix/suffix at all.
- The suffix removes potential conflicts with core Clojure functions.
- The suffix mostly eliminates potential conflicts with other vars in the test
  namespace. Example: you can declare a function delete and have a test named
  delete-test.
- For someone using Emacs imenu feature, it helps differentiate which vars are
  tests and which are just local functions supporting the tests.
2024-06-03 19:10:36 -03:00
Mohamed Javid 55ec84a5c3 feat(wallet)_: Wallet settings screen transition (#20311)
This commit updates the navigation event `:open-modal` in Wallet Settings to `:navigate-to-within-stack` for slide-in/slide-out screen transitions.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-06-04 00:32:52 +05:30
flexsurfer 2c6ab52a1a Cannot find user by ENS #20292 (#20299) 2024-06-03 11:40:02 +02:00
John Ngei 93e2c31a8f display user bio (#20295) 2024-06-03 11:32:29 +02:00
Mohsen 541b2e0909 [#20165] feat: import a missing key pair by scanning QR code (#20280) 2024-06-03 10:33:52 +03:00
frank 81cb058e29 chore_:optimise envelope monitor (#20225)
https://github.com/status-im/status-go/compare/cba3ac57...0a88ebde
2024-05-31 22:38:42 +08:00
Brian Sztamfater 24194fb34e fix(wallet): some router ui adjustments (#20209)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-31 10:03:53 -03:00
Ajay Sivan 039ad8d162 Buy assets drawer - one-time & recurrent tabs (#20063) 2024-05-31 05:39:18 -07:00
flexsurfer abc0da1f00 Scrollbar is shown in the middle of the page (IOS only) #20268 (#20282) 2024-05-31 14:18:09 +02:00
Parvesh Monu 4ff73a8a6a Show proper error when bio metric fails (#20233) 2024-05-31 13:13:00 +05:30
Omar Basem 86bbe2e8c7 fix: network perf button copy (#20274)
* fix: network perf button copy
2024-05-31 08:46:17 +04:00
Mohamed Javid aa159f53ef feat: Saved addresses - Display list, Show options and Remove (#20221)
This commit:
- Adds feature flag for saved addresses
- Displays the list of saved addresses in wallet settings
- Shows address options on tap of any saved address
- Adds the ability to remove saved address
- Refactors saved addresses data structure in app-db

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-05-31 00:51:51 +05:30
Mohsen e04c7f449f [#20035] feat: import missing key pair by scanning QR code (#20144) 2024-05-30 22:07:33 +03:00
Ulises Manuel dafab10582 fix(wallet): add support to import keypairs using a seed phrase (#20218)
* Add support to import keypairs by using a seed phrase with validation for existing keypairs.
2024-05-30 12:17:11 -06:00
Andrea Maria Piana c37a2a5d6f fix_: fix resend type for private group messages (#20255)
https://github.com/status-im/status-go/compare/701b2763...0061c563
2024-05-30 19:18:36 +02:00
Jamie Caprani 630be6685d feat(wallet): add receive screen on wallet home and make wallet tab f… (#20219) 2024-05-30 18:34:56 +02:00
flexsurfer 36be518174 The community channel is opening very slowly #20231 (#20236) 2024-05-30 17:46:36 +02:00
Parvesh Monu 0e76e88a81 fix Test mode banner disappears after redirect upon push notification (#20263) 2024-05-30 21:04:09 +05:30
Icaro Motta cb4ce20c98 fix(navigation)_: Incorrect status bar color (#20258) 2024-05-30 17:18:39 +02:00
AlexanderandLungu Cristian c03d91bcb0 Connected dApps: a list with empty state, plus button, etc etc / fetching dApps / disconnecting dApps (#19943)
* Connected dApps screen with empty state and list of dApps and the ability to disconnect dapps

* Fix

* Smaller style fix

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-05-30 17:47:30 +03:00
flexsurfer 2ebe8fd4c9 View token-gated requirements is shown for non toked gated communities (i.e. Status) #20237 (#20240) 2024-05-30 15:05:30 +02:00
flexsurfer 382c810199 Error when tap on Terms of use during Onboarding flow #20239 (#20245) 2024-05-30 14:32:10 +02:00
flexsurfer aa1a306294 Wrong bottom sheet for channel in communities without permissions #20031 (#20212) 2024-05-30 14:20:57 +02:00
John NgeiandParvesh Monu 2e61b56214 add NSAppleMusicUsageDescription permission to play audio messages to…
* add NSAppleMusicUsageDescription permission to play audio messages to the right plist file

* add NSAppleMusicUsageDescription update public string message

---------

Co-authored-by: Parvesh Monu <parvesh.dhullmonu@gmail.com>
2024-05-30 13:06:28 +02:00
mmilad75 19be1382db Error alert after navigating to external links from app #20177 (#20193) 2024-05-30 12:48:28 +02:00
Siddarth Kumar 5559599381 upgrade go to 1.21 (#20157) 2024-05-30 14:41:56 +05:30
Parvesh Monu 841a6140e3 Close chat when pop-to-root is called (#20238) 2024-05-29 21:39:44 +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
John Ngei 139bd8feea add NSAppleMusicUsageDescription permission to play audio messages 2024-05-29 15:56:09 +02:00
John Ngei c7088a7472 update status go version
* update status go version

* update status-go version
2024-05-29 15:03:39 +02:00
John Ngei 14181a23ee reduce the size of images in ui2 folder 2024-05-29 14:26:06 +02:00
yqrashawn 7d542cefb8 fix: handle unknown contract community (#20242)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-05-29 19:35:52 +08:00
Parvesh Monu 5c3f25e617 fix empty screen when opening I'm new to Status screen after closing Sign in screen (#20215) 2024-05-29 16:03:23 +05:30
yqrashawn c3dc78648a fix: handle unknown contract community
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-05-29 11:54:58 +02:00
Yevheniia Berdnyk 76a61bc56c e2e: removed jump-to from tests 2024-05-29 01:22:56 +03:00
Brian Sztamfater a63ea3290e feat: calculate and show max fees on transaction confirmation page (#20133)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-28 18:16:47 -03:00
mmilad75 47f6bda563 The select assets screen is shown when token is going to be sent which available on both watch-only and regular account #19745 (#20050) 2024-05-28 18:16:23 +02:00
Parvesh Monu 158ed083da fix the last message in chat is not tappable if it's close to the composer (#20214) 2024-05-28 21:20:32 +05:30
flexsurfer cec4611507 fix open url event (#20208) 2024-05-28 14:18:41 +02:00
jakub 2ceef5ced3 chore: drop obsolete eth.staging fleet
https://github.com/status-im/status-go/compare/92ef58d4...c7397e18

Previously used to stage upgrades of `eth.prod`.
Now `eth.prod` fleet is in maintenance mode and no upgrades are expected.

And yes, I'm removing tests that reference old Waku v1 fleets because
I don't see a point in them.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-05-28 12:59:05 +02:00
Brian Sztamfater 964d2b9478 fix: crash when user changes token and goes to transaction confirmation screen (#20187)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-28 07:31:41 -03:00
Icaro Motta 8d1898ccc0 Bump status-go version 2024-05-28 10:35:49 +02:00
Icaro Motta 3d1c0c61f8 Fix re-frame warning about fx being nil (#20175)
Fixes a warning thrown by re-frame in the event
:wallet/blockchain-status-changed.

Here's a simplified example that generates the same warning.

```clojure
(rf/reg-event-fx :user/fx-warning
 (fn []
   {:fx nil}))

;; Prints warning re-frame: ":fx" effect expects a seq, but was given null
(rf/dispatch [:user/fx-warning])
```
2024-05-27 18:54:49 -03:00
flexsurfer 2fc5bed094 No opacity on the text on inactive buttons on the dark-themed screens (#20196) 2024-05-27 20:09:00 +02:00
John Ngei f7ea17b001 removed support for NDEF format 2024-05-27 17:37:24 +02:00
Brian Sztamfater ca81bfebcd fix: show network card with zero value on the sender side if the router does not return a route for that network (#20152)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-27 12:15:50 -03:00
Yevheniia Berdnyk 59f2eca75a e2e: small fixes for wallet tests 2024-05-27 17:24:26 +03:00
Mohsen de71df811b [#19921] feat: remove key pair action (#20002) 2024-05-27 15:58:39 +03:00
Andrea Maria Piana 711bcb2507 Add info on ci building pipeline for release 2024-05-27 13:23:51 +01:00
Brian Sztamfater 52aaee0bd1 fix: non supported network warning is shown on the bridge flow (#20098)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-27 08:55:34 -03:00
jo-mut 7e4f55450b Bump release to 2.29.0 2024-05-27 12:41:49 +01:00
Andrea Maria Piana 3f3a8e22ba Bump version to 2.28.0 2024-05-27 12:34:33 +01:00
Icaro Motta 00a9555633 Optimize how peer stats are processed
- Debounce peer stats signals by 1s because they may happen 30 times during
login and the payload conversion using js->clj is not cheap.

- Change the order of case macro checks: put more frequent signals at the top.

- Better format code
2024-05-27 13:29:20 +02:00
Parvesh Monu 366fb7b174 Show parsed bridge messages (#20058) 2024-05-27 15:41:47 +05:30
Parvesh Monu bcd8f3ad16 Hide jump-to behind a feature flag (#20069) 2024-05-27 15:07:28 +05:30
Jamie Caprani 777b2bb8da chore(wallet): smooth collectible list loading transition 2024-05-24 13:44:16 -07:00
Parvesh Monu f17484f61b fix missing pinned messages label (#20174) 2024-05-25 00:00:46 +05:30
Ulises Manuel 49a41f4787 [#19232] - Fix derivation path generation and keypair creation (#19531)
* Add more default dependencies to slide button

* Fix wallet account creation: derivation paths and keypairs
2024-05-24 10:03:02 -06:00
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 e30ca97372 Remove not implemented Notification settings from community longtap m… (#20169) 2024-05-24 16:51:25 +02:00
Andrea Maria Piana 178d62bd27 Update eth-archival pokt url 2024-05-24 14:56:52 +01:00
Ajay Sivan 4262d0e8ab Avatars/dApp Avatar Component (#20145) 2024-05-24 05:48:43 -07:00
Ajay Sivan 6f3aa19a04 Avatars/Community Avatar Component (#20147) 2024-05-24 05:33:52 -07:00
Ajay Sivan c398c85b0f Avatars/Token Avatar Component (#20141) 2024-05-24 05:04:20 -07:00
Jamie Caprani 3a728fb112 chore(wallet): reset input on send flow when swapping accounts (#20099) 2024-05-24 13:31:34 +02:00
Omar Basem d2fb6c7ee0 fix: balances in network preferences after removing account (#20139)
fix: balances in network preferences after removing account (#20139)
2024-05-23 17:52:14 +04:00
BalogunofAfricaandBrian Sztamfater 2ffdeb1fa2 fix(wallets): no routes render on input amount (#20112)
* fix: no routes found error when disabling chains and current amount exceeds new max amount

* fix: disable button on routes loading

* add no-routes-found component

---------

Co-authored-by: Brian Sztamfater <brian@status.im>
2024-05-23 12:33:33 +01:00
flexsurfer a0d9134f7b Incorrect Button Label Color in Disabled State #20056 (#20156) 2024-05-23 12:38:03 +02:00
flexsurfer 81977475c5 support ios "15.3" (#20127) 2024-05-23 10:59:43 +02:00
flexsurfer 813e4ee730 Syncing/Sync failed screens are missing illustrations #20068 (#20142) 2024-05-23 10:54:38 +02:00
flexsurfer 5eba373c3c Feature/hide browser behind feature flag #20022 (#20082) 2024-05-23 10:12:39 +02:00
yqrashawn c19f170239 fix(dev exp): auto disable fast refresh on iOS (#20120) 2024-05-23 15:17:01 +08:00
Sean Hagstrom 60ef4fab4b Implement display of missing key pairs in wallet settings (#20094)
* fix: ensure the keypairs use blur for their theme

* fix: allow for container-style to be passed to standard-title component

* chore: add translations for for missing-keypair labels

* tweak: add support for missing-keypair type for drawer-top component

* tweak: add initial implementation of missing-keypair list-item component

* tweak: add initial implementation of missing-keypairs list component

* feature: add initial implementation of displaying missing key-pairs

* tweak: update missing-keypair list-item to support blur, light, and dark mode

* chore: add missing-keypair list-item preview

* chore: add missing-keypairs preview

* chore: decode :operable key in account to be keyword

* tweak: remove unneeded keyword decoding

* tweak: update drawer-top component to use keypair and stored field

* tidy: revert change for checking for not default-keypair in actions menu
2024-05-22 18:30:32 +01:00
flexsurfer 47b4ab923b Pinning contact request message leads to a crash #20131 (#20132) 2024-05-22 16:43:18 +02:00
Ajay Sivan 05a09d1fa1 Buttons/Swap-Order-Button Component (#20119) 2024-05-22 05:03:13 -07:00
John Ngei 8bd1c8de95 refactored some styles and fixed text alignment fix ens name verication 2024-05-22 11:11:36 +02:00
Ajay Sivan e5ab94f1b2 Wallet/Approval Label Component (#20117) 2024-05-22 00:59:46 -07:00
Omar Basem ff82d9c39e fix: update confirm button copy on input amount screen(#20122)
* fix: update confirm button copy on input amount screen(#20122)
2024-05-22 09:34:55 +04:00
Ulises Manuel e1210e90c0 [#19544] Show preselected networks in QR code (#20070)
* Add subscription to get preferred networks given an address
* Fix preselected networks in receive screen
* Improve subscription
* Fix preselected networks in share screen
* Update test to include oeth
2024-05-21 10:08:14 -06:00
Jamie Caprani ed88170c5d chore(wallet): hide share button on scanner pages except universal scanner 2024-05-21 08:11:04 -07:00
Brian Sztamfater 32123d2f69 fix: max value is incorrect for some tokens (#20096)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-21 11:59:19 -03:00
Yevheniia Berdnyk a480df4ef5 e2e: fixes 21.05 2024-05-21 16:50:58 +03:00
Anton Iakimov b3361b7d89 chore: drop wakuv2 fleets, use waku fleets
See https://github.com/status-im/infra-nim-waku/issues/91 for details

Mostly done automatically. Some parts manually.
https://github.com/status-im/status-go/compare/3103c298...92ef58d4

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-05-21 14:02:30 +02:00
Ajay Sivan f7163c748b Use data from API to populate the buy assets sheet (#20078)
Remove unused code & resources
2024-05-21 04:45:07 -07:00
Omar Basem 34cf65bfc9 fix: overlapping send details (#20102)
* fix: overlapping send details (#20102)
2024-05-21 11:19:22 +04:00
Icaro Motta 88afa09baf Only log event payload at trace level (#20097)
While investigating why login is slow
https://github.com/status-im/status-mobile/issues/20059 and when testing with
accounts with communities, I noticed we are logging huge payloads because they
include data URLs. This makes debugging the app harder.

Therefore, we will now log the full event payload only at the trace level, and
at the debug level we only log the event type.

This problem was first described by ulisesmac.
2024-05-20 23:06:38 -03:00
yqrashawn b358c06a31 fix: Community state cannot be changed to failed to fetch (#20101)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-05-21 09:16:05 +08:00
Mohsen 389a730eff [#19946] feat: add key pair QR code view (#20073) 2024-05-20 19:35:51 +03: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
Siddarth Kumar 8fe59a0998 bump RNN to 7.39.0 and remove patches (#20109)
`react-native-navigation` library fixed android build errors for react-native `0.73` in this release :
https://github.com/wix/react-native-navigation/releases/tag/7.39.0

upgrading to this version helps us remove the patches.
2024-05-20 20:21:49 +05:30
Brian Sztamfater d4e7e4cd52 fix: no routes are found in case of valid amount in fiat is entered (#20000)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-20 10:08:31 -03:00
Ajay Sivan 3de86b09bd Page nav component alignment fix (#20108) 2024-05-20 05:35:31 -07:00
Brian Sztamfater dc551031fe fix: routes ui for bridging (#19959)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-20 08:07:35 -03:00
Omar Basem 29b02a544c fix: multiple address input fixes (#20005)
fix: multiple address input fixes (#20005)
2024-05-20 14:53:15 +04:00
BalogunofAfrica 3e4cbfeb69 feat: recalculate network max value (#19953) 2024-05-20 10:42:22 +01:00
Parvesh Monu 8038fc5ceb fix wrong avatar for community channels in topbar (#20093) 2024-05-20 14:25:37 +05:30
Omar Basem eb1db20161 chore: rename backup screen (#20077)
chore: rename backup screen (#20077)
2024-05-20 09:29:15 +04:00
BalogunofAfrica d558c565b0 feat: support sending multi collectibles (#20045) 2024-05-17 22:10:24 +01:00
Icaro Motta ea58e52dc1 Support hooks & atom state management in previews (#20053)
Change the implementation of component previews to support receiving either
state/set-state from use-state or a Reagent atom, thus allowing us to gradually
change preview namespaces to use hooks instead of having to refactor all at once
in a gigantic PR.

All types of preview fields were tested, including multi-select.

Only the components counter.step and selectors.react previews were adapted
to use-state.
2024-05-17 16:48:57 -03:00
Omar Basem 624593ec35 chore: rename opt to oeth (#19974)
chore: rename opt to oeth (#19974)
2024-05-17 22:23:51 +04:00
Omar Basem 9d302d8192 fix: select asset screen render function (#20086)
fix: select asset screen render function (#20086)
2024-05-17 21:59:13 +04:00
Parvesh Monu 47428368fd Allow user to manually input password when biometric fails (#19989) 2024-05-17 19:46:07 +05:30
Parvesh Monu 4c84dd4a1b Don't load chat view until chat is fetched (#19988) 2024-05-17 19:31:29 +05:30
yqrashawn cfe9d6e539 fix: action/reaction drawer UI issue (#19630) 2024-05-17 20:12:03 +08:00
andrey afd92d2df1 Revert " Hide browser behind feature flag (#20036)"
This reverts commit ba3d4dd4ce.
2024-05-17 12:08:53 +02:00
flexsurfer ba3d4dd4ce Hide browser behind feature flag (#20036) 2024-05-17 12:06:32 +02:00
Omar Basem d7f3946c06 feat(wallet): Activity Items - Sections (#19906)
feat(wallet): Activity Items - Sections (#19906)
2024-05-17 10:44:34 +04:00
Ulises ManuelandAjay Sivan e1408f2a5f Implement collectible header with animations (#20024)
Co-authored-by: Ajay Sivan <ajayesivan@gmail.com>
2024-05-16 21:16:17 -07:00
flexsurfer b76395282d add permission for enabling perf monitor in debug on Android (#20032) 2024-05-16 21:11:23 +02:00
BalogunofAfrica c70a2c9e9e fix: blur type for community header (#19665) 2024-05-16 18:29:45 +01:00
Omar Basem 649a316361 fix: address input multiline (#19962)
fix: address input multiline (#19962)
2024-05-16 19:39:30 +04:00
Lungu Cristian c05be0f2c2 Fix Wallet Connect structure (#20042)
* fix: wallet-connect structure & small bugs

* fix: formatting issue with sorting wc dependency
2024-05-16 18:02:44 +03:00
Sean Hagstrom db26a878c3 fix: add network-settings feature flag and remove wallet-activities feature flag (#20043) 2024-05-16 15:35:35 +01:00
Omar Basem 219ae0ccbe fix: wallet send navigation flow (#20008)
fix: wallet send navigation flow (#20008)
2024-05-16 18:15:53 +04:00
Ajay Sivan 3e33ccb9ca feat_: Add swap option in wallet action drawer (#20029) 2024-05-16 06:51:21 -07:00
Ajay Sivan d73c38a00c Community Token Gating Component (#19642) 2024-05-16 06:36:54 -07:00
Siddarth Kumar deb7bfe23c fix test-watch-for-repl (#20064)
This commit 
- fix broken `test-watch-for-repl` on MacOS
- removes `react-native-transparent-video` from `yarn.lock`
2024-05-16 18:51:52 +05:30
Ajay Sivan bd5fb0d407 fix: Page Nav title animation (#19651) 2024-05-16 06:08:32 -07:00
Ajay Sivan 22d63002b2 Fix preview screen label theme (#20055) 2024-05-16 05:55:22 -07:00
Parvesh Monu 1817a86ffd revert "attach target to test-watch-for-repl command (#20044)"
This reverts commit 05f381044c.

Signed-off-by: Parvesh Monu <parvesh.dhullmonu@gmail.com>
2024-05-16 16:38:08 +05:30
Parvesh Monu 052813e30e Hide empty categories and categories that include only hidden channels 2024-05-16 15:47:50 +05:30
flexsurfer 30715a69e1 Avatars are missing in messages bridged from Discord to Status app (#19994) 2024-05-16 12:10:20 +02:00
Siddarth Kumar 05f381044c attach target to test-watch-for-repl command (#20044)
## Summary

This commit fixes broken `make test-watch-for-repl` on MacOS.
We make sure that default target is passed for this make command because the `node-pre-gyp` requires `python 3.1`

This commit also adds the missing `yarn.lock` file which was missed in this PR https://github.com/status-im/status-mobile/pull/20026

This commit also modifies the `_test_clojure` command a bit to swap out its dependence on `status-go-library` since we do that on `yarn install` anyways.

status: ready 

fixes: #20041
2024-05-16 12:41:15 +05:30
Yevheniia Berdnyk 634dd74768 e2e: fixes for activity center and some more 2024-05-15 22:52:08 +03:00
Brian Sztamfater 0145429852 feat: support edge case flow in the wallet send flow when token is not available on receiver preferred networks (#19674)
feat: implement wallet send flow edge case when selected token is not supported on receiver's preferred networks

Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-15 14:11:26 -03:00
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
Parvesh Monu 5ab97db795 fix scroll to bottom button is shown on chat reopen (#20004) 2024-05-15 16:23:38 +05:30
Sean Hagstrom f7505db6fd Implement network settings for wallet settings (#19995)
* fix: resolve warning about using subscription inside a lazy seq

* fix: avoid schema error when we do not have a port for the media server

* chore: add feature-flag for network-settings inside wallet-settings

* chore: add testnet mode label

* chore: add testnet labels for bottom-sheets

* chore: add label for changing testnet mode

* feature: add initial network-settings screen to wallet-settings

* test: add test for sub

* tidy: rename function to hide-bottom-sheet

* tweak: add info-box for testnet mode

* tidy: testnet-mode bottom-sheet

* tidy: use reduce-kv instead of map & into

* tidy: use noun naming convention for function creating options for settings

* tweak: add support for displaying testnet-mode status on each wallet network

* chore: add translation for labels referencing testnet-mode and sepolia
2024-05-15 10:28:25 +01: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
Omar Basem c87e981902 fix: jump-to button positioning (#19990)
fix: jump-to button positioning (#19990)
2024-05-15 08:49:33 +04:00
frank 9421b12412 fix_:sync contact request decision (#19938)
https://github.com/status-im/status-go/compare/cba3ac57...0dbbf7c6
2024-05-15 08:28:33 +08:00
Ulises Manuel 04eaf41889 Revert "Implement collectible header with animations (#19783)" (#20023)
This reverts commit 5a6a0f7e3d.
2024-05-14 12:36:49 -06:00
mmilad75 8d4f1f9b38 'No matching clause' error is shown if ENS is entered into 'sent to' page #19741 (#19957) 2024-05-14 21:24:25 +03:30
Ajay SivanandUlises M 5a6a0f7e3d Implement collectible header with animations (#19783)
Co-authored-by: Ulises M <ulises.ssb@hotmail.com>
Co-authored-by: Ajay Sivan <ajayesivan@gmail.com>
2024-05-14 10:18:29 -06:00
Jamie Caprani e72e25c342 feat(wallet): add recent recipients tab (#19942) 2024-05-14 06:36:38 -07:00
Lungu Cristian d658fcf3db Add Wallet Connect base implementation of the connection flow (#19909)
* feat: added base implementation of WC connect flow

* test: mocking the wc dependency

* fix: addressed review comments
2024-05-14 11:53:11 +03:00
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
Ulises Manuel 88df60958c [#19410] extend wizard mechanism for collectibles and tokens (#19515)
* Fix typo `:collecible` -> `:collectible`

* Extend the wallet-send-flow for collectibles and tokens in all entry points
2024-05-13 18:01:31 -06:00
Siddarth Kumar 947e2369d3 chore: modify clean commands for simulator cache (#19991)
Due to some dark magic by Xcode `make run-ios` breaks with :

```
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=60):
Unable to boot the Simulator.
launchd failed to respond.
Underlying error (domain=com.apple.SimLaunchHostService.RequestError, code=4):
Failed to start launchd_sim: could not bind to session, launchd_sim may have
crashed or quit responding
make: *** [run-ios] Error 60
```

Sometimes rebooting the laptop worked but a more reliable solution was to clean up simulator caches.

This commit adds the a make command : `make ios-simulator-cache-clean` which cleans up the Simulator caches.
And now `make run-ios` starts working again.

This commit also modifies `make clean` to clean android & iOS

`make clean` should not break for you.

Not needed since this change is local development environment related.

- iOS
- macOS

status: ready
2024-05-13 23:07:11 +05:30
Parvesh Monu a6cd97482c Fix loading screen for fetching community (#19968) 2024-05-13 20:52:05 +05:30
yqrashawn 112768d13a fix(ios): autofocus input in drawer overlay won't trigger keyboard open (#19964) 2024-05-13 23:11:15 +08:00
Parvesh Monuandfrank 2a03282dd6 chore_: Remove old status community from the database (#19905)
Co-authored-by: frank <lovefree103@gmail.com>
2024-05-13 22:35:50 +08:00
Mohsen 6be1adb40e [#19917] feat: rename keypair from wallet settings (#19939) 2024-05-13 17:07:33 +03:00
Alexander 006824e0ed Connected dApps: make right side of page-nav accomodate whatever we need (#19934)
* Connected dApps screen

* Style fixes

* Style fixes

* Updated quo-preview

* Reverting back Podfile.lock changes

* Fixes

* Style fixes

* Small `boolean icon-name` fix

* Style fixes
2024-05-13 15:50:50 +02:00
mmilad75 33da4bfabc Selected networks are not shown as preferred if a multichain wallet with preferred networks is scanned on the 'send to' page #19775 (#19899) 2024-05-13 14:54:39 +03:30
Nikolay 2618a55dbc [#18817] Import private key: UI for key pair name (#19747) 2024-05-13 11:39:42 +02:00
Parvesh Monu 439edc39a6 fix wrong letter and background color of the channel/group avatar (#19972) 2024-05-13 15:05:30 +05:30
Omar Basem 12515a4904 fix: Collectible screen design issues (#19721)
fix: Collectible screen design issues (#19721)
2024-05-13 12:40:31 +04:00
Omar Basem f50ca4606f fix: remove wallet graph (#19973)
fix: remove wallet graph (#19973)
2024-05-11 12:20:21 +04:00
Icaro Motta 22392464e0 Don't preload user & dev.user namespaces (#19985)
Reverts the preloading mechanism from PR
https://github.com/status-im/status-mobile/pull/19927, which introduced a
problem I couldn't find any satisfactory solution. The namespaces user and
dev.user were being preloaded by shadow-cljs, but the problem is that preloading
will fail if those namespaces don't exist in your file system.

I couldn't find any solution to conditionally preload namespaces via shadow-cljs
and ClojureScript unfortunately doesn't support conditional requires like
Clojure.

At least we got to keep the code to not lint them and the whole idea to start to
commit dev-only code inside src/dev/.
2024-05-10 15:42:04 -03:00
Icaro Motta 225e3b1c2f DX: Preload user and dev.user namespace (#19927)
Preload the user namespace (src/user.cljs and src/dev/user.cljs) for the mobile
target and for dev-only purposes. The files are git-ignored.

Just a reminder that you'll be responsible for making sure your user namespace
is correct. If it's broken in any way (e.g. calling non-existent code) the app
will crash at initialization (dev-only environment obviously).

Why? When the app initializes, it loads namespaces that were required at least
once. If you create a user namespace, it won't be automatically required for
you. And if you, like some Clojure devs, like to use the user namespace as
your safe heaven for experimentation and dev-only utilities, you'll need to
remember to evaluate the namespace at least once.

This is tedious and many times I forgot to do so and the app crashed because the
compiler didn't know where the symbols were coming from.
2024-05-10 13:17:26 -03:00
Icaro Motta 037e71bc03 Optimize opening of Settings screens (#19940)
This commit rewrites utils.re-frame/delay-render to use hooks. The new
implementation renders significantly better than what we have today, at least on
Android.

Why not hiccup instead of a function call to delay-render? The Settings screen
is rendered slightly faster if I use delay-render as a function call instead of
hiccup. My only guess is that this is just less work to be done by Reagent,
since the wrapper function is not creating a wrapper component with its own
lifecycle.

The full analysis can be found here, but it's copied for future reference:

--------------------------------------------------------------------------------
Based on my analysis of individual frames being rendered and having investigated
3 different scenarios:

1. Scenario 1: No delay whatsoever, i.e. not using `delay-render`.
2. Scenario 2: Using `delay-render` like in `develop`, that is, a form-2
   component with a local Reagent atom.
3. Scenario 3: Using `delay-render` as in this PR, using hooks.

All 3 scenarios open the Settings screen with all rendered views in the same
amount of time. In terms of raw performance, they are completely identical. The
absolute value doesn't matter, but in my recordings, on average, 10 frames of
video after the first press on the user's profile image.

So how can it be that on Android the new solution is visibly smoother? It's all
about latency and our brains are very picky about it.

Scenario 1 - Not using delay-render: the user notices a longer delay after
pressing on the profile image because all components in the Settings screen are
mounted in one go. This gives the impression to the user of being slower. In
slower Android devices, we've seen a user even press twice because the Settings
screen was taking longer to open. On newer Android devices this is not much of a
problem. There's another problem in `Scenario 1`, on Android, with too many
elements and/or too many heavy elements being mounted, the opening animation is
sometimes completely cut off or very clunky (a similar problem can happen while
opening the Activity Center).

Scenario 2 - Use delay-render with a form-2 component: The Settings items are
always rendered after the opening animation completes. Our brains perceive this
as a slight delay because we can see the empty gray background for 1-3 frames.
This is quite noticeable on my physical Android device, even with a prod build.

Scenario 3 - Use delay-render as a hook: the optimal solution from the user's
perspective, Settings items sometimes can be rendered before the animation
completes. I say sometimes because other times the items are rendered only 1
frame before or right when the animation completes, which would be almost the
same as Scenario 2.

What the hooks solution gave us is a little bit of the Scenario 1 and
Scenario 2 in one package, and because the Settings items can be sometimes
rendered before the opening animation completes, our brains see that as being
faster.

In future performance investigations, we might want to focus on manipulating
latency more aggressively to see where that leads us.
2024-05-10 12:43:08 -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 a481a44c72 Fail fast during app initialization if an invalid schema is found (#19958)
Some devs reported invalid schemas in the develop branch during app
initialization. We knew this could happen when Malli was first
introduced, but we wanted to play safe in the beginning due to the
overall inexperience of the team with Malli.

This commit removes all guardrails on instrumented vars, i.e. during app
initialization the app will crash on any invalid schema. A reminder that
instrumentation only take effect when js/goog.DEBUG is true.
2024-05-10 09:12:31 -03:00
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
Sean Hagstrom 4f0a49f7bf Add screen for key-pairs and accounts inside wallet settings (#19912)
* chore: add "key pairs and accounts" label

* chore: feature flag wallet-settings

* tidy: extact navigate-back function into static defn

* wip: add initial keypairs and accounts list view to wallet settings

* tweak: wire-up initial action menu for key-pairs

* tidy: extract key-pair container styles into style namespace

* tweak: fix dark background for key-pair and account settings

* tidy: refactor on-press handler for key-pair options

* fix: move feature-flag usage to settings screen instead of settings items definition

* tidy: remove unneeded key props

* tidy: clean up de-structuring and passing of props

* tidy: use keep with when expressions instead of filter and map expressions

* tidy: rename the wallet-settings feature flag

* tweak: rename and add feature-flags for mobile wallet settings

* tweak: use scrollview for feature-flags and add spacing between feature-flag groups

* tweak: adjust the way feature-flags are displayed in groups

* tidy: remove unneeded prop

* tidy: use bottom-inset for padding key-pair and accounts list

* tidy: change `filterv` to `filter`

* tidy: use subscription for building account-props

* tidy: use subscription to build the entire keypair-account

* tweak: use key-pair type to determine default key-pair

* tidy: rename component to settings-category-view

* tidy: use assoc instead of merge

* tidy: extract function from subscription

* test: add tests for formatting key-pairs and accounts for wallet settings

* tweak: use `match?` instead of `=`

* tidy: use `swap!` without anonymous functions
2024-05-10 10:53:35 +01:00
Omar Basem c40853456b Fix: manage members gesture (#19949)
Fix: manage members gesture (#19949)
2024-05-10 09:16:57 +04:00
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
mmilad75 14aa9e1c20 Refresh control test (#19831) 2024-05-09 17:42:52 +03:30
mmilad75 2c5cc6cd08 'Send' button is shown for watch-only collectibles and can navigate to the 'send' flow #19743 (#19918) 2024-05-09 17:10:41 +03:30
Icaro Motta 8ad58bb364 Persist in-app feature flags (dev-only feature) (#19619)
This commit improves in-app feature flags to persist what is currently only
stored in a Reagent atom by using RN Async Storage
https://reactnative.dev/docs/asyncstorage. This should make them more convenient
to use, which is a good thing overall for developers.

Additionally, there's now a top-right button in screen Settings > Feature Flags
that will reset the flags to the initial values obtained from environment
variables.

These in-app feature flags are exclusively available in debug builds in
Settings > Feature Flags, and only visible when flag ENABLE_QUO_PREVIEW is
enabled. There's no impact whatsoever in prod builds. A reminder that they are
not meant to be used by users (yet).

It's worth noting that RN has deprecated Async Storage and now recommends other
community solutions, but for a dev-only feature, I think it's fine.
2024-05-09 09:42:38 -03:00
Icaro Motta ab191407ed Fix schema error after logout (#19933)
Detailed explanation:

The schema failure is due to utils.image-server/get-initials-avatar-uri being
called with a nil profile customization color right after the user confirms
logout.

Right after logging out, the subscription :profile/profile-with-image is
recomputed. One of its signal inputs is :profile/profile. Right after logout,
the output of sub :profile/profile is always nil (this is correct, nobody is
logged in). This means that the sub :profile/profile-with-image will try to
calculate the multiaccount URI by passing a nil profile. This is wasteful
computation and is also the cause of the schema for
utils.image-server/get-initials-avatar-uri to fail, because it expects the
profile's customization-color to be present.
2024-05-09 08:52:27 -03:00
Sean Hagstrom 3e5d758e92 Refactor image server uri helpers (#19271)
* tweak: refactor image-uri helpers

* fix: add `:primary` as customization color for profile images

primary is being used as the default color for accounts that were migrated without customization color to a default color
2024-05-09 11:01:49 +01:00
Omar Basem 7f40f410e7 fix: entering two zeros in a row in the 'Amount' field in wallet (#19911)
fix: entering two zeros in a row in the 'Amount' field in wallet
2024-05-09 12:23:17 +04:00
flexsurfer 497c95fd26 Fix "Offline" section in group chat members #19883 (#19913) 2024-05-08 18:19:56 +02:00
Omar Basem 604eaccbbf feat: Start bridge from asset drawer (#19860)
feat: Start bridge from asset drawer (#19860)
2024-05-08 16:31:38 +04:00
Brian Sztamfater 842dbbbd8d feat: add feature flag for swaps (#19920)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-08 08:59:01 -03:00
Parvesh Monu 10f5f9ec7d Implement navigation to profiles and chats from contact requests inside Activity Center (#19902) 2024-05-08 15:48:50 +05:30
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
Omar Basem 834bf612ac fix: settings item pressability (#19922)
fix: settings item pressability (#19922)
2024-05-08 10:42:15 +04:00
Lungu Cristian 161ba2713f Change password inside new settings (#19474)
* feat: added change-password screen

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: pw verification error not shown

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* feat: added changing password with confirmation and loading

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: adjusted flow

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: added minimum waiting time when loading

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: moved events to change-password

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: added styles where missing

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: moved header out

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* ref: moved forms into separate namespaces

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: linter promesa alias issue

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* feat: added password-tips quo-component

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: validation message

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: removed bottom-sheet event

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* removed temp file

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed @seanstrom's review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: address @ilmotta's review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed @vkjr's review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: buttom button alignment with keyboard

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: addressed review comments

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: keyboard behavior

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: navigation to loader

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>

* fix: use-theme usage

* fix: button alignment due to alert banner

---------

Signed-off-by: Lungu Cristian <lungucristian95@gmail.com>
2024-05-07 17:38:16 +03:00
Mohsen 245b3fcf57 [#19172] fix: new to status design issue (#19923) 2024-05-07 17:12:27 +03:00
John Ngei 90e5774dd6 updated invite friends banner image 2024-05-07 15:48:44 +02:00
codemaster be59785a1f fix: notification center blur (#19861) 2024-05-07 06:35:32 -07:00
flexsurfer 45129b8244 Bring the seedphrase backup flow to the new settings #19554 (#19887) 2024-05-07 13:44:31 +02:00
frank 0c6bb61ebe refactor_:remove part of node config for local pair sync (#19826)
https://github.com/status-im/status-go/compare/cba3ac57...f3f48654
2024-05-07 19:33:46 +08:00
Mohsen 7ec77db666 [#19195] fix: communities design issues (#19819) 2024-05-07 13:20:00 +03:00
mmilad75 b907881d59 Validation error not displayed for Incorrect eth address in "Sent To" page #19599 (#19862) 2024-05-06 18:08:56 +03:30
John Ngei 0d7c2684ee fix: border radius on syncing auth bottom sheet 2024-05-06 16:01:21 +02:00
Jamie Caprani 5802097f5f chore(wallet): feature flag graph and hide about action button (#19832) 2024-05-06 06:14:26 -07:00
Parvesh Monu 5fc9722992 hide not implemented comopser features (#19901) 2024-05-06 17:34:56 +05:30
Parvesh Monu 4eaf832b43 fix contact request message is not shown in the 1-1 chat (#19904) 2024-05-06 16:19:21 +05:30
flexsurfer a9b4d86b00 Patch "Show QR Code" functionality (#19893) 2024-05-06 11:58:13 +02:00
Yevheniia Berdnyk 8a24185ad6 e2e: fixes 3.05 2024-05-03 19:32:13 +03:00
Brian Sztamfater 355e144ef7 refactor: suggested routes rendering (#19768)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-05-03 13:18:14 -03:00
flexsurfer d8d1e030e4 Patch "Add nickname" functionality in home->Contacts #19875 (#19891) 2024-05-03 15:55:54 +02:00
Omar BasemandMohamed Javid 9187ec25c1 Wallet: activity items (#19847)
Wallet: activity items (#19847)

---------

Co-authored-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-05-03 17:26:24 +04:00
flexsurfer de29c6f7d9 Alignment of system messages in group chat #19886 (#19890) 2024-05-03 13:44:19 +02:00
flexsurfer e6ee2714d7 feature/hide-all-alert-under-not-implemented-flag (#19889) 2024-05-03 13:07:39 +02:00
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
Shivek Khurana 7b9f4983cb 🎏 Add wallet connect feature flag (#19866) 2024-05-02 20:34:01 +05:30
codemaster 94ab27bcbb fix: wrong color stroke in profile setting (#19815) 2024-05-02 05:45:43 -07:00
frank 041ceda95e feat: retry send raw messages (#19580)
https://github.com/status-im/status-go/compare/cba3ac57...22bea87b
2024-05-02 19:56:50 +08:00
flexsurfer 86c1dbd25d Add a setting to enable telemetry #19811 (#19858) 2024-05-02 06:31:27 +02:00
Omar Basem a094d218d5 Wallet: account screen jump to (#19732)
Wallet: account screen jump to (#19732)
2024-05-01 21:25:52 +04:00
Sean Hagstrom 3951b8a39c tweak: hide any not-implemented actions inside home (#19844) 2024-05-01 18:02:16 +01:00
Omar Basem 1757dc5d53 fix: keypiar name continue (#19859)
fix: keypiar name continue (#19859)
2024-05-01 20:08:00 +04:00
Omar Basem f942092a5e fix: wallet account back button (#19857)
fix: wallet account back button (#19857)
2024-05-01 19:56:03 +04:00
Omar Basem d4be3a6976 Fixes for composer (#19854)
Fixes for composer (#19854)
2024-05-01 16:59:13 +04:00
flexsurfer 6037fe80c4 More reagent atom regression #19812 (#19828) 2024-05-01 12:19:50 +02:00
Sean Hagstrom 6a1fdc5b08 Fix QR share screen for community channel (#19792)
* tweak: add support for displaying channel qr codes with quo/share-qr-code component

* chore: add channel qr-code example to quo preview components

* tweak: integrate common/qr-code component for sharing community channel qr-code

* tweak: add support for showing community channel avatar in share-qr-code header

* tweak: hide wallet tabs for channel qr-code

* tweak: integrate share handler for community channel qr-code

* fix: prevent accidentally rendering the community channel qr-code with nil while closing the share-qr modal

* tidy: extract navigate-back dispatch function

* tidy: use styles namespace

* tidy: use case statement to determine which qr-code components have a header

* tweak: check for share-qr-types that support headers

* tidy: extract navigate-back into static function

* fix: prevent community qr-code from glitching when closing modal
2024-04-30 16:10:53 +01:00
Parvesh Monu 17f6a72590 fix community category divider label margin (#19827) 2024-04-30 19:43:30 +05:30
Sean Hagstrom aaf5b72675 tidy: remove extra event handler for :communities/set-airdrop-address (#19829) 2024-04-30 14:18:50 +01:00
Sean HagstromandYevheniia Berdnyk a1490d414c Ensure users can share a community url (#19710)
* fix: ensure :communities/share-community-url-with-data is defined

* fix: ensure we show the share-sheet when pressing the community share-action

* fix: ensure we use the correct share-sheet title when sharing a community

* e2e: updated inviting contacts to community flow

* tweak: remove extra url message when sharing community url on android

* tweak: remove extra url message when sharing community channel url on android

* tidy: remove redundant event handler for sharing community url

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-04-30 13:44:14 +01:00
Omar Basem 8c26125e52 fix: "key pair" spacing (#19823)
fix: "key pair" spacing (#19823)
2024-04-30 14:30:57 +04:00
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
Lungu Cristian d8e3934a05 fix: community permission context not passing community-id (#19669)
Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-04-30 10:00:36 +03:00
flexsurfer 65b0d1cd17 Feature/remove old screens and code (#19795) 2024-04-30 08:41:47 +02:00
Parvesh Monu b65ac2ab14 fix alert banner issues (#19773) 2024-04-29 21:56:41 +05:30
Jamie Caprani c00eb0d539 chore(wallet): add opensea link to collectible overview cta (#19579) 2024-04-29 09:09:36 -07:00
mmilad75 42e407fbcf Watch-only address balance should not be included in the overall balance by default #19657 (#19716) 2024-04-29 18:04:39 +03:30
mmilad75 e9c2d24cc3 disable button when no network is selected + fix schema errors (#19814) 2024-04-29 17:12:29 +03:30
codemaster d9aa885eb2 fix: reaction drawer issue (#19754) 2024-04-29 06:00:19 -07:00
mmilad75 bd192b0f7d fix issue (#19808) 2024-04-29 16:05:45 +03:30
Mohsen e8008d0aa9 [#19176] fix: onboarding illustration design issue (#19800) 2024-04-29 12:43:51 +03:00
Parvesh Monu 2ec6a3ed06 fix composer misses shadow and swipe rectangle element (#19805) 2024-04-26 20:02:08 +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
Lungu Cristian cd54aa9b92 Add pairing/unpairing of devices (#19692)
* feat: added pairing/unpairing of synced devices

* feat: remove flatlists & add confirmation/toast
2024-04-26 13:24:52 +02:00
Omar Basem 8aa586fe6e Wallet: create account using recovery phrase (#19702)
Wallet: create account using recovery phrase (#19702)
2024-04-26 11:34:55 +04:00
Volodymyr Kozieiev 1e55827c4b Fix for "no routes found" on transaction confirmation page (#19789) 2024-04-25 17:21:37 +02:00
Ibrahem Khalil 03f813c957 Implement context action share community QR code (#19700) 2024-04-25 13:49:17 +02:00
Yevheniia Berdnyk 6d6766dce1 e2e: fix for wallet amount input 2024-04-25 12:11:47 +03:00
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
Ajay Sivan 56ff84f475 Log revealed addresses in status-go (#19712) 2024-04-24 19:28:03 -07:00
Mohsen cdb39452d7 [#19303] fix: edit profile design feedbacks (#19562) 2024-04-24 20:56:32 +03:00
flexsurfer 3794742c8f Reagent atom from theme regression #19729 (#19735) 2024-04-24 15:05:53 +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
Shivek Khurana ce5ae1d191 Add menu to reach saved addresses and show empty state (#19771)
* 💚 Enable wallet on header navigation

- Add settings screen
- Add save address settings screen
- Need to add empty state next

* 🥡 Added empty state for saved-addresses

- Fixed the standard title quo component
- It's flex behaviour was buggy, and it's not being used anywhere

* 🧂PR fixes and lint

- Use callback everywhere

* 🗞️ Move wallet settings to wallet namespace
2024-04-24 11:35:03 +02:00
Volodymyr Kozieiev 3a5122a50c Refactoring of token input screen in send flow (#19750)
* Refactoring for send input screen

* lint fixes

* small comments fixed

* Controlled input logic reimplemented without atom

* remove leftover
2024-04-24 10:25:17 +02:00
Brian Sztamfater 782d038fb0 fix: suggested routes are not calculated with preferred networks (#19668)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-04-24 04:50:25 -03:00
NikolayandJamie Caprani e6f9932dc5 chore(wallet) import private key main screen (#19625)
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-04-23 14:28:49 -07:00
flexsurfer 380603ddce Implement blocked contacts setting inside profile messages settings #… (#19616) 2024-04-23 19:12:00 +02:00
Yevheniia Berdnyk 9b550e4b82 e2e: fixes 23.04 2024-04-23 18:24:20 +03:00
flexsurfer 6b5c807176 App crashes after sync #19655 (#19763) 2024-04-23 15:28:35 +02:00
Icaro Motta 54b2e0e678 Remove support for editing shared addresses while request to join is pending approval (#19623)
This PR completely removes support for editing shared addresses while a user's
request to join is pending approval.

The reason for the removal is that, in status-go, the control node that will
process the message
protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES verifies
the user is already a member of the community, but a user waiting for approval
to join is not yet a member. Removing this check doesn't sound like a good idea
and we want to avoid bugs/complications for the next release. The feature isn't
working anyway, so the purpose of this PR is also to cleanup code that doesn't
work and won't be re-done anytime soon.
2024-04-23 10:08:31 -03: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
Mohsen 696fedcca2 [#19183] fix: scan qr design issues (#19698) 2024-04-23 13:01:08 +03:00
Siddarth Kumar 7a1c29899b skip share wallet component test (#19761) 2024-04-23 11:21:33 +02:00
Siddarth Kumar 9b2f6147b6 upgrade react-native-permissions library to 4.1.5 (#19695)
## 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
2024-04-22 18:01:45 +02:00
Yevheniia Berdnyk 5c801331af e2e: false failure fixes 22.04 2024-04-22 18:04:46 +03:00
Parvesh Monu 96b09eb862 UI in the upper section of the chat differs from the lower section (#19679) 2024-04-22 20:29:29 +05:30
Mohamed Javid e104a9a935 [Fix] Keypair name in account about tab (#19505)
This commit fixes the display of the correct keypair name (where the account is generated from) in the About tab.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-04-22 19:48:01 +05:30
Yevheniia Berdnyk 34930a7136 e2e: fix for reruning tests 2024-04-22 15:22:18 +03:00
Parvesh Monu e6f8df9a52 fix channel header is broken when opening channel with chat history after joining the community (#19677) 2024-04-22 16:13:48 +05:30
jakub f873dfcde0 fix: location of logs generated by fastlane
Currently paths looks wrong like this:
```
.../ios/ios/logs/StatusIm-StatusIm.log
```
Which is wrong because it means CI does not save the file.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-04-22 10:07:06 +02:00
Ajay Sivan 8034167750 Update status-go version to v0.179.7 (#19675) 2024-04-19 09:49:03 -07:00
flexsurfer 702899a9cf remove old bottom sheet (#19689) 2024-04-19 16:17:06 +02:00
Siddarth Kumar 59f536c479 upgrade blur lib to 4.4.0 (#19681)
## 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
2024-04-19 15:03:12 +02:00
Ibrahem Khalil 8353c65602 [19576] Fix group avatar not showing group picture (#19723) 2024-04-19 12:24:03 +02:00
Omar Basem 1f967c6aa1 Fix: category settings item separator line color
Fix: category settings item separator line color
2024-04-19 12:48:25 +04:00
Sean Hagstrom ca53bf7388 Remove Identity Verification tab in Activity Center (#19667)
* tweak: hide the identity verification tab inside the activity center

* tweak: hide not-implemented features by default in dev

* fix: remove nil tabs from when rendering quo tabs
2024-04-19 10:01:02 +02:00
Omar Basem 2e2104d4d1 fix: backup-recovery-phrase check item pressability (#19705)
fix: `backup-recovery-phrase` check item pressability (#19705)
2024-04-18 21:33:56 +04: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
MohsenandYevheniia Berdnyk 8f67f38de9 [#19182] fix: shell share design feedback (#19617)
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-04-18 18:12:29 +03:00
Churikova Tetiana ea4578b3e0 pipleine: update doc 2024-04-18 15:31:47 +01:00
flexsurfer 2b40a4d0c4 Feature/remove reagent atom from theme (#19706) 2024-04-18 16:14:17 +02:00
Brian Sztamfater 17afff272e fix: fix fees calculation and add support for L1 fees for Optimism transactions (#19603)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-04-18 10:35:18 -03:00
Brian Sztamfater 3526355e23 fix: page top is rendering empty avatar icon if no avatar props are sent (#19638) 2024-04-18 09:48:42 -03:00
Flavio Fraschetti f708cdcf50 Feature flag descoped features from MVP to streamline initial release (#19690)
Feature flag descoped features from MVP:
- edit derivation path
- wallet/send/contacts
2024-04-18 07:44:32 -03:00
mmilad75 3af4384e00 Wallet (collectibles) - integrate new Collectible list item component into designs #19140 (#19528) 2024-04-18 13:54:28 +03:30
Siddarth Kumar a6b19c021f swap react-native-mail fork with patch (#19688)
## Summary

This commit swaps the fork of react-native-mail with a patch.

needed for : https://github.com/status-im/status-mobile/issues/18138

## Review & Test notes

Verify if mailing logs still works.

## Platforms
- iOS
- Android

status: ready
2024-04-18 10:59:54 +02:00
Sean Hagstrom a258717e83 chore: update status-go version for account-saving fixes (#19612) 2024-04-18 10:37:11 +02:00
Yevheniia Berdnyk a8395e51a4 e2e: GH report: rerun tests link update 2024-04-18 05:41:36 +03:00
codemaster db501b5efd fix: missing author info in reply messages (#19563) 2024-04-17 15:53:23 -07:00
Siddarth Kumar 44732e9736 upgrade camera-roll lib to 7.5.2 (#19664)
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
2024-04-17 17:14:18 +02:00
Brian Sztamfater d12c05aab6 fix: add external icon to OpenSea button in collectible page (#19647)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-04-17 11:58:27 -03:00
Siddarth Kumar 4134d18cbc nuke unused lib rn-snoopy (#19691)
## Summary

We don't use `rn-snoopy` anymore and this commit nukes it.
2024-04-17 15:27:00 +02:00
Sean Hagstrom 8600c1d3a5 Allow for env variables for configuring delete-message undo time limit for toasts (#19653)
* tweak: allow for env variable to configure undo-time-limit when deleting a message in chat

* tweak: add env variable undo timeout for deleting messages for everyone

* tweak: extend timeout duration for undo toast when deleting a message for a user

* tweak: extend timeout duration for undo toast when deleting a message for everyone
2024-04-17 15:12:27 +02:00
flexsurfer 570c62e30e replace ratom in quo wallet component (#19687) 2024-04-17 14:30:33 +02:00
flexsurfer 549efdb77c Show the users that the keycard feature will be coming soon (#19686) 2024-04-17 13:58:03 +02:00
Parvesh Monu 8807a63989 fix role is not updated correctly when unselecting accounts (#19636) 2024-04-17 16:21:32 +05:30
Alexander c0be0b7670 Update QR code scanner to handle channel and community links (#19507)
* Experiment

* Fix

* Fix

* Fix
2024-04-17 12:27:01 +02:00
John Ngei 6e854428f2 fix: pinned messages empty state drawer margin issues 2024-04-17 10:28:49 +02:00
Icaro Motta c81dd8e3e3 Don't treat dynamic data as a function (#19672)
Sometimes an integration test was throwing "TypeError: Cannot read properties of
null (reading 'call')" because a value was nil in the app-db, but the code was
treating it as if it was always a map and could be called as a function.

The original code wasn't respecting Clojure's nil punning good practices. In
Clojure, it's often recommended to not use dynamic data as functions, because if
they're nil, in CLJS we'll get an exception and as usual in CLJS, the stacktrace
won't be very readable.

We should prefer contains? or get, which will work just fine with nil values,
and only use data as a function if it's static, e.g. a map defined in a def.
2024-04-16 14:48:28 -03:00
Omar Basem 24f4c4a07e Remove watch-only accounts from bridging (#19569)
Remove watch-only accounts from bridging (#19569)
2024-04-16 20:33:03 +04:00
Ajay Sivan 98762c74f1 Community detail token gating component (#19532) 2024-04-16 09:11:18 -07:00
Ibrahem Khalil f3aeddb53a Update doc/troubleshooting.md (#19673) 2024-04-16 17:46:14 +02:00
mmilad75 f5fcc9f45e Wallet: Token Options should be specific to watch only account #18543 (#19583) 2024-04-16 19:02:50 +03:30
Parvesh Monu 9aa9dc1b4c Redirect to community channel when following universal link (#19566) 2024-04-16 20:30:24 +05:30
Sean Hagstrom 61974dae4d Implement share button inside profile settings (#19559)
* tweak: implement the share button inside the profile settings page

* chore: define event and effect handler for opening share sheet

* tidy: refactor share buttons to use open-share event

* tidy: refactor open-share effect to use react-native-share bindings

* tidy: remove unused code for old bindings to react share sheet

* tidy: move effects.share/open definition to navigation effects

* tweak: ensure navigation effects are loaded

* tidy: use open-share dispatch in ui

* tidy: use open-share dispatch instead of calling open function directly

* tidy: refactor react-native.share/open to only receive options and return promise

* tidy: refactor open-share effect to receive map of content and handlers

* tidy: replace strings with keywords

* tweak: always handle failure case when opening share-sheet

* tweak: rename :content to :options

* fix: conditionally call on-error

* tweak: add extra information when logging error from attempting to share-sheet
2024-04-16 13:26:52 +02:00
Parvesh Monu 8b3e639abd fix error on long tap on token-gated channel from the join community screen (#19652) 2024-04-16 16:33:09 +05:30
jakub 7c901fa045 ci: use virtualenv to avoid race conditions
Desktop QA tests also use Pytest packages and their versions are
different, so we can't install them globally, it needs to be done per
build using `WORKSPACE_TMP` as destination.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-04-16 13:13:53 +03:00
frank 8a12ad3510 fix_: logout deadlock (#19640) 2024-04-16 17:50:47 +08:00
Brian Sztamfater c8044cd2f2 fix: wallet header spacing to match other tabs (#19632) 2024-04-16 06:31:09 -03:00
Sean Hagstrom 6872d1a857 fix: do not throw exception when passing nil to utils.address/get-abbreviated-profile-url (#19593) 2024-04-16 09:51:35 +02:00
Brian Sztamfater 98d4969ca5 feat: add ability to tap to disable from networks (#19392) 2024-04-15 12:04:44 -03:00
Parvesh Monu 5412092ca1 fix zero addresses are selected by default when joining a community (#19626) 2024-04-15 17:30:31 +05:30
Parvesh Monu a8695116e2 fix error is shown after scan button is tapped on the browser page (#19601) 2024-04-15 15:24:09 +05:30
Yevheniia Berdnyk 76773a4165 e2e: fix for sharing community flow 2024-04-15 12:11:24 +03:00
yqrashawn 32fc7b14e8 fix: add/rename missing sub :current-chat/one-to-one-chat? (#19628)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-04-15 17:10:12 +08:00
Sean Hagstrom 82a8f9f44d fix: rewire legacy community share button to send invites (#19622) 2024-04-15 10:52:18 +02:00
John Ngei 8df72d0c29 updated standard auth drawer title size and weight 2024-04-13 23:04:49 +02:00
Mohsen 794cd57961 [#19299] fix: design feedback for settings screen (#19609) 2024-04-12 19:37:07 +03:00
John Ngei 6bc29088ab fix: community spacing issues in token gating community page
* fix: community spacing issues in token gating community page

* fix: spacing issues between token rows
2024-04-12 17:35:03 +02:00
codemaster 658f62e8ce Composer-photo selection drawer issues (#19613) 2024-04-12 07:44:35 -07:00
flexsurfer e6b346ca32 migrate reagent part 7 (#19316) 2024-04-12 15:46:17 +02:00
yqrashawn 00b0755a73 feat: system messge icon based on contact customization color (#19558)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-04-12 20:46:09 +08:00
yqrashawn f8cc85f5e2 fix: vertical align texts in multiline input on iOS (#19565)
* fix: vertical align texts in multiline input on iOS

Signed-off-by: yqrashawn <namy.19@gmail.com>

* fix(copy): Chat Key -> Chatkey

---------

Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-04-12 20:25:04 +08:00
Ibrahem Khalil 6ba89d0c6e Community channel avatar is missing on Channel screen (#19459) 2024-04-12 01:18:21 +02:00
Ibrahem Khalil 2614131426 [18979] Implement context action Invite contacts to community (#18989) 2024-04-12 00:12:02 +02:00
flexsurfer cfc43be3cc migrate reagent part6 (#19270) 2024-04-11 16:43:33 +02:00
flexsurfer 3164cc6a6c Chore: setup feature-flag for not-implemented settings (#19591) 2024-04-11 16:43:09 +02:00
Mohsen 5badb5bdb5 [#19178] fix: jump card responsive (#19600) 2024-04-11 17:36:28 +03:00
flexsurfer 292fd78ff8 warning fixes (#19605) 2024-04-11 15:42:29 +02:00
Lungu Cristian c875fb33fa Show token requirements only for token gated channels (#19529)
* fix: use role-permissions? instead of token-permission

token-permissions contains channel-permissions as well, which don't
make the community token-gated

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: hide token requirements from open channels

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fixed tests

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-04-11 16:27:18 +03: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
Jamie Caprani 1d1eae13a9 chore(wallet): move add-account funcitonality into its own folder (#19476) 2024-04-11 12:01:35 +02:00
Jamie Caprani 63a168b6f4 chore: remove old wallet code, signing code and keycard code (#19467) 2024-04-10 10:41:24 -07:00
Ulises Manuel ce7912632c [#18739] Fix ENS resolution (#19238)
* Resolve ENS on address-to-watch screen based on test-net settings

* Resolve ENS on `:wallet/search-ens` event based on test-net settings
2024-04-10 11:09:40 -06:00
Jamie Caprani ec53f17897 chore(wallet): add options menu for collectibles 2024-04-10 17:50:07 +01:00
Shivek Khurana 7987e537c8 🧰 Update GetSuggestedRoutes call (#19560)
- This is to reflect changes made in https://github.com/status-im/status-go/pull/5002/files
2024-04-10 17:09:40 +01:00
Parvesh Monu 074a2b292d fix alert banner flicker in ios (#19495) 2024-04-10 21:16:33 +05:30
Volodymyr Kozieiev 8b417524fa Remove unused subs (#19530)
* Remove unused subs

* lint fix
2024-04-10 16:25:41 +01: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 4940341504 point statusgo to gomobile xcode 15 patch (#19577)
## Summary
A patch is added to `gomobile` on status-go side to fix building with Xcode 15.
related status go PR -> https://github.com/status-im/status-go/pull/5035

## Platforms
- Android
- iOS

status: ready
2024-04-10 20:07:06 +05:30
Ibrahem Khalil 06aa4671b6 Sometimes toast about old join community notification starts appearing on every login (#19557) 2024-04-09 21:46:58 +02:00
andrey 7eaa5f6bb1 revert status-go version 2024-04-09 17:32:54 +02:00
flexsurfer d48f933502 Feature/allow user to select a picture for a group chat #18983 (#19128) 2024-04-09 17:20:17 +02:00
flexsurfer 14d76eb4d4 Remove the bottom context from "Sign in by syncing" #19549 (#19571) 2024-04-09 15:45:07 +02:00
flexsurfer ae1f82f33c Fix the "Choose profile" button in the profile #19551 (#19570) 2024-04-09 15:44:22 +02:00
Ibrahem Khalil c5a3eea048 Drawer in the chat is not fully expanded when reply message is closed and reopened (#19460) 2024-04-09 13:11:31 +02:00
Ibrahem Khalil c847cb5d03 [16315] Implement Community Channel option: view channel members and details (#18489) 2024-04-09 10:38:48 +02:00
Lungu Cristian 4e1851d53c Fix the channel-action when the text is too long (#19462)
* fix: don't increase action with text

* addressed review comments
2024-04-09 10:43:33 +03:00
Alexander edd1d0661d [iOS] Wrong bottom sheet opacity on onboarding and in the activity center (#19319)
* [iOS] Wrong bottom sheet opacity on onboarding and in the activity center

* Blur amount update
2024-04-09 08:36:44 +02:00
Ibrahem Khalil 18fc168537 [Android] The text within buttons is slightly visible when buttons ar… (#19461) 2024-04-09 02:06:57 +02:00
Ibrahem Khalil ca8b404e5b Account selection sheet price (#19295) 2024-04-09 01:53:29 +02:00
Yevheniia Berdnyk f98e5cf11f e2e: fixes 8.04 2024-04-08 23:00:46 +03:00
Volodymyr Kozieiev 5aca098aa2 Support for multiple collectibles transaction on confirmation page (#19502) 2024-04-08 20:43:23 +01:00
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
Ulises Manuel 8e31dae33b [#16953] Implement change asset action in wallet send flow (#19393)
* Refactor :wallet/tokens-filtered sub to filter only when `query` is provided

* Make token input logo pressable and make components more flexible

* Change asset-list's rn/scroll-view -> gesture/scroll-view to make it scrollable on bottom-sheets

* Add bottom-sheet to edit the token to send
2024-04-08 10:52:09 -06: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
Ajay Sivan 681bcbf726 Token gated documentation drawer ui fix (#19394) 2024-04-08 08:14:47 -07:00
Lungu Cristian aeef913f63 Fix chat permission-context (#19284)
* feat: moved permission-context logic to quo component

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* feat: multiple-token-gating and previews

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: refactored quo component

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* feat: request join community on press

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* feat: added shadow (rn-shadow-2)

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: formatting

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test: added tests for permission-context

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* feat: added blur

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: adjusted shadows

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: added shadow mocks

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: shadow rendered below the context

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: addressed review comments

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: replaced seq with string/blank?

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-04-08 17:14:07 +03:00
Omar Basem 74e84644aa Wallet: Derivation Path - Scanning for Activity (#19482)
Wallet: Derivation Path - Scanning for Activity (#19482)
2024-04-08 17:53:41 +04:00
Sean Hagstrom 0e29149363 Truncate text inside contact request notifications (#19499)
* tweak: truncate text inside contact request notifications to be a max of two lines

* tweak: truncate text inside the activity-center contact-requests to be a max of two lines
2024-04-08 13:32:17 +01:00
Parvesh Monu 5fe28a2c9b fix android composer background shadow not visible when image is attached (#19492) 2024-04-08 16:58:17 +05:30
Lungu Cristian 5fba1dbfa3 Fix invalid schemas (#19548)
* fix: account selection invalid schema definition

* fix: token-input invalid schema definition
2024-04-08 13:33:30 +03:00
Ajay Sivan 32098d2548 Community collapsed header title animation fix (#19395) 2024-04-07 14:14:21 -07:00
Yevheniia Berdnyk 60a4aa2f8e e2e: fix for passwrod input 2024-04-05 18:46:23 +03:00
Mohsen f8699c582a [#19265] fix: cursor overlapping placeholder in android (#19526) 2024-04-05 15:25:33 +03:00
Mohamed Javid 9ba6c6262e [Feature] Wallet - Network based assets and fiat balance calculation (#19150)
This commit:

(UI changes)

- adds the feature to filter assets (tokens and collectibles) and balances based on networks
- fixes network color for eth not shown on the multichain address (e.g. Account Options bottom sheet)
- fixes blur type in the confirm button in the network preferences sheet
- fixes the User ability to unselect all networks in the network preferences sheet
- fixes account address and color not shown in network-preferences sheet on Shell > Share Multichain address
- added STT token image

(Non-UI changes)

- Refactors the functions used for balance calculations and network details


Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-04-05 17:18:35 +05:30
Yevheniia Berdnyk 5fc23816a6 e2e: false failures fixes for wallet and image 2024-04-05 13:38:09 +03:00
Sean Hagstrom 59513eae65 Tweak layout of quo/author component to use flex-baseline (#19489)
* tweak: re-structure layout of quo/author component to use flex-baseline for alignment

* tweak: use top on container to balance layout while using top to offset primary-name

* tidy: remove margin-bottom: 0

* tweak: add comments and fix layout glitch
2024-04-05 11:33:35 +01:00
Mohsen aead730d28 [#19406] fix: add min char validation for nickname (#19517) 2024-04-05 08:28:08 +03:00
Yevheniia Berdnyk 5bff89a58f e2e: wallet tests added 2024-04-04 19:50:54 +03:00
Parvesh Monu e1177d20b5 Improve navigate-to-jump-to (#19434) 2024-04-04 22:07:11 +05:30
Lungu Cristian 0a6eaf1c12 fix: reverted the faulty navigation keyword rename (#19487)
Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-04-04 18:35:28 +03:00
Sean Hagstrom d24eb96c9d Use scrollable multiline text-input in contact request form (#19383)
* tweak: augment bottom-sheet component to be aware of keyboard height

* tweak: augment quo input component to allow for styling of the input, the input container, and container

* tweak: augment contact request input to grow until max screen size is reached for the bottom-sheet

* tweak: handle blurring the contact request input when keyboard is dismissed on android

* tidy: refactor with the use-keyboard hook

* tweak: use on-layout for measuring sheet max-height

* tweak: remove use of input-style and flex-direction column

* tidy: remove unused requires

* tidy: use container-style prop

* tidy: fix formatting

* fix: default layout-height to window-height
2024-04-04 15:54:22 +01:00
Sean Hagstrom 3dfd9df935 fix: dismiss keyboard when opening a modal (#19403) 2024-04-04 15:01:54 +01:00
Shivek Khurana d0374d9fd2 🖇️ Connect getSavedAddresses RPC to show or hide save address button (#19508)
* 🖇️ Connect getSavedAddresses

- The save button will not show if the address is already saved

* ⚒️ Fix PR reviews

* 🗑️ Remove code from wallet events ns
2024-04-04 13:51:29 +01:00
Ibrahem Khalil f0026b4d10 Fix background color on communities/chat home (#19520) 2024-04-04 12:35:44 +02:00
Mohsen b9a02f707d [#19351] fix: animate username in profile (#19370) 2024-04-04 13:21:23 +03:00
Parvesh Monu d4e1b63ef7 fix top bar disappearing when removing or blocking contact (#19430) 2024-04-04 15:28:44 +05:30
jakub e9b973196b ci: fix Pulish stage by using getBuildType()
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-04-04 11:35:39 +02:00
Ibrahem Khalil 74149c1ff0 Use correct schema keyword (#19522) 2024-04-04 11:19:35 +02:00
Yevheniia Berdnyk 288f57192a e2e: fixes after testet mode enabled changes 2024-04-03 23:58:11 +03:00
John Ngei a52bc11592 updated community rules to display the actual rules
* updated community rules to display the actual rules

* updated scroll behaviours on community rules inside the bottom sheet

* added standard rules for communities without rules

* fix android scroll issues
2024-04-03 22:40:22 +02:00
Tetiana Churikova 354cda3be5 e2e: updating PR pipeline (#19478) 2024-04-03 18:00:04 +02:00
John Ngei f114908c4d updated leave button background color to community color 2024-04-03 17:38:41 +02:00
yqrashawn b0964eff64 feat: contact CustomizationColor (#19087) 2024-04-03 23:15:26 +08:00
mmilad75 b0d2e6e5d7 Bottom sheet with save and send options not displayed after scanning wallet QR using universal scanner #18928 (#19250) 2024-04-03 18:27:46 +03:30
Siddarth Kumar df0e9313da fix for failing iOS nightly build (#19486)
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.
2024-04-03 18:05:48 +05:30
Lungu CristianandVolodymyr 76bf8d365c Allow to undo muting the chat/channel from toast (#19074)
* feat: added undo action to mute chat toast

* fix: removed trailing spaces from toast text

* test: integration test for mute-chat undo

* fix: added space before newline to toast messages text

* feat: add undo to community mute toast

* fix: integration tests

* fix: integration tests

---------

Co-authored-by: Volodymyr <52490791+VolodLytvynenko@users.noreply.github.com>
2024-04-03 15:12:43 +03:00
Mohamed JavidandYevheniia Berdnyk 41763689e0 [Feature] Show "Testnet mode enabled" banner if testnet enabled (#19348)
This commit 
- adds the "Testnet mode enabled" banner if the User has enabled the testnet
- fixes a E2E bug

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-04-03 16:15:07 +05:30
Mohsen a6a7ec8bc0 [#19264] fix: add contact bottom margin (#19398) 2024-04-03 12:56:40 +03:00
Ibrahem Khalil 7e896979f6 Add biometric auth if available to communities password input (#19336) 2024-04-03 11:18:15 +02:00
Omar Basem 68402ae669 fix: Wrong UI for network preferences bottom sheet (#19475)
fix: Wrong UI for network preferences bottom sheet (#19475)
2024-04-02 22:24:55 +04:00
Flavio Fraschetti 8c67ce0b75 [Wallet]Fraschetti/Temporarily hide Activity Tab on Collectible Detail Page (#19447)
Temporarily hide the collectibles activity tab.
2024-04-02 11:10:57 -03:00
Omar Basem e2b9e12038 feat: Keypair name handling (#19423)
feat: Keypair name handling (#19423)
2024-04-02 15:44:48 +04:00
Shivek Khurana a03cc3c3ab Add methods for fetching and saving addresses (#19356)
*  Add methods for fetching and saving addresses

* 🔨 Fix RPC calls but get addresses not working

* 🔨 Fix rpc call

* 🧰 Fix lint, and change var names
2024-04-02 12:25:28 +01:00
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 68e4cf3632 add logs inside wait-for and before,after logout (#19362)
## Summary

PR made to add logs to help determine why integration test hangs on logout.

## Testing notes

No need for testing since we only ever add logs in test code here.

related to: #19256
2024-04-02 13:54:44 +05:30
Sean Hagstrom dd7795a8b8 Truncate secondary names in username and author components (#19468)
* fix: allow name-container inside message content to shrink so secondary-name can be truncated

* fix: responsively truncate contact profile secondary-name

* fix: ensure home chat-list-items use full available width in layout

* fix: adjust layout of home chat-list-item shrinking with notification counter

* fix: adjust layout of home chat-list-item when displaying notification counter

* tidy: simplify alignment

* tweak: adjust alignment of quo/author component for different text sizes

* tidy: extract styles and reformat notification-layout
2024-04-02 08:14:08 +01:00
Ulises Manuel feb875310e [#19401] Wallet share QR code - multiple fixes (#19425)
* Fix key extractions in re-frame/reg-sub

* Add `:width` to share-qr-code
  By adding this prop, `on-layout` can be skipped and the component can be properly rendered faster.

* Use `share-qr-code`'s `:width` prop in share profile shell

* Fix share qr code for wallet addresses

* Fix the height of the component being cropped.

* Fix the bottom dots not being accurately highlighted.

* Fix the blink when the component is mounted
2024-04-01 09:53:26 -06:00
Parvesh Monu 8b0681c44a fix status and nav bar color (#19089) 2024-04-01 18:52:03 +05:30
Parvesh Monu 9bbde035dc fix 1-1 Chat not removed after user is blocked (#19432) 2024-04-01 18:34:59 +05:30
Flavio Fraschetti 260a741b17 Fraschetti - Add wallet-search-ens-test (#19338)
Introduces comprehensive tests for the ens_addressOf endpoint
2024-04-01 09:11:07 -03:00
Siddarth Kumar 48789e8793 keep existing metro session alive (#19458)
The killing of metro terminal upset a few people and this PR fixes that.

## Summary
Modify build step to check if metro is running already.
If so then we do not attempt to start metro again.
If not then we start metro after building android / iOS.

## Review notes
* case 1
    - `make run-clojure`
    - `make run-metro`
    - `make run-android` or `make run-ios` should work the way it did before.
* case 2
    - `make run-clojure`
    - `make run-android` or `make run-ios` should also work.

## Platforms
- Android
- iOS
2024-04-01 16:47:48 +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
Parvesh Monu e05d5000b1 fix jump-to community card animation (#19437) 2024-04-01 16:05:14 +05:30
John Ngei 3067b814b1 fix: token requirements margin issues 2024-03-31 00:03:34 +01:00
Jamie Caprani e9bbb34797 chore(wallet): clean up root folder (#19417) 2024-03-29 13:21:01 +00:00
jakub 28aeb2dad0 ci: use new Alchemy API tokens from env file
I have created separate API tokens for Mobile project and changed how
they are passed in Jenkins by using a single file.

Depends on:
https://github.com/status-im/status-jenkins-lib/pull/88

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-03-29 00:31:36 +01:00
Ibrahem Khalil fef3165f24 Link preview follow up bug fixes (#19359) 2024-03-28 23:54:20 +02:00
Jamie Caprani 88d1a17a94 chore(wallet): move bridge to its own folder (#19414) 2024-03-28 19:42:43 +00:00
Andrea Maria Piana ed824bdb06 Check permissions even if there's an inflight request 2024-03-28 17:08:16 +00:00
Sean Hagstrom 932fee2857 Update usage of Login/Create/Restore account (#19420)
* update status-go version to v0.178.0

* chore: add fetchBackup as true when restoring account
2024-03-28 16:51:48 +00:00
Jamie Caprani 53874c8343 chore: rename alias of promesa to be more verbose (#19332) 2024-03-28 09:33:16 -07:00
Ibrahem Khalil e6d9ef0298 Add toggle instead of checkbox for addresses for permissions sheet (#19424) 2024-03-28 17:40:50 +02:00
Volodymyr Kozieiev 4aee5af791 Flow for sending multiple collectibles (#19386) 2024-03-28 15:14:17 +00:00
NikolayandJamie Caprani 3ee004afab chore(quo): implement drawer action component (#19289)
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-03-28 14:39:48 +00:00
John Ngeiandbalogunofafrica 6c07fac28b fix: avatar alignment (#19073)
Co-authored-by: balogunofafrica <balogunakanbi.k@gmail.com>
2024-03-28 12:13:23 +01:00
Andrea Maria Piana 98deaa4459 Disable button when request is in flight 2024-03-27 22:42:21 +00:00
Ulises Manuel 7de1f95054 [#18934] universal scanner in wallet receive (#19409)
* Fix linear-gradient breaking when `customization-color` is unknown

* Fix exception when scanning an address due to non-existing navigation route

* Dispatches universal QR code scanner on share address modal
2024-03-27 10:01:28 -06:00
jakub 9e71fc2d14 ci: make contract tests stage optional
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-03-27 14:12:28 +01:00
jakub e44b29f3a6 ci: bump jenkins-lib to fix sepolia token typo
Depends on:
https://github.com/status-im/status-jenkins-lib/commit/8331a433

Also replaces `TARGET` with `PLATFORM` to not conflict with Nix shell.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-03-27 13:10:49 +01:00
Ibrahem Khalil e5ed5e624b Communities - Address for airdrops/permissions screen issues (#19296) 2024-03-27 11:46:42 +02:00
Mohsen f075cd0bdc [#19117] fix: setting over scroll shows gap (#19352) 2024-03-26 19:34:16 +03:00
Mohamed Javid 1d44472aa6 [Feature] Enable Test Networks by default on Dev, E2E and PR builds (#19365)
This commit enables Test Networks in Dev, E2E and PR Builds by default and disables in Release/Nightly Builds.

This enables in create account or restore account flow. If you upgrade the app from the old build with an existing profile, it will use the last saved (test networks enabled) state of that profile.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-03-26 20:55:22 +05:30
Sean Hagstrom 495bc91989 fix: re-route a user's own profile link to their settings page (#19389) 2024-03-26 15:04:49 +00:00
Jamie Caprani bcf8e39e84 chore(onboarding): qualify screen keywords (#19285) 2024-03-26 14:06:43 +00:00
Ibrahem Khalil c86cdf9ac8 Hide community channels when hide channels option is enabled 2024-03-26 12:08:19 +00:00
Andrea Maria Piana 1948c11508 Use env for bash 2024-03-26 12:00:54 +00:00
Ajay SivanandYevheniia Berdnyk 02d4618997 Remove 'Community admins will review your request' text from community overview screen (#19361)
* Remove 'Community admins will review your request' text from community overview screen

* Use the button label 'Request to join' for all communities

* e2e: updated test

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-03-26 04:56:39 -07:00
Lungu Cristian fd4d64c53e Fix chat spacings (#19015)
* fix: chat system messages spacing

* fix: spacing between chat actions and time header

* fix: distance from last message to shell button

* fix: addressed review comment

* fix: conflict bug

* fix: chat spacings
2024-03-26 12:07:48 +02:00
Lungu Cristian 17b64ab3ba Remove not-implemented box from sticker/emoji messages (#19255)
* feat: replaced old emoji component with new one

* feat: replaced old sticker component with the new one

* ref: pass only url to sticker

* fix: renamed ns and passing only needed props

* fix: destructuring instead of select-keys & assoc

* fix: formatting
2024-03-26 11:53:33 +02:00
Parvesh Monu 6a88a34d34 add empty check for keychain credentials server (#19242) 2024-03-26 12:15:35 +05:30
Ibrahem Khalil 3be1532b32 All addresses text is not updated when changing accounts (#19379) 2024-03-25 22:14:40 +02:00
Ibrahem Khalil 44846c80c8 Error when marking a community notification as read in the activity center #19388 (#19390) 2024-03-25 21:36:24 +02:00
Ulises Manuel a405de62e6 [#18833] Confirm button disappearing while editing address (#19186)
* Fix button disappearing when keyboard is hidden

* Improve keyboard scrolling
2024-03-25 09:00:10 -06:00
flexsurfer 06dc9ea1d3 Unable to enter/clear smoothly the data into contacts field #19384 (#19385) 2024-03-25 15:17:08 +01:00
Ajay Sivan 32a4bb1153 fix: very small token values are being displayed in scientific format (#19349) 2024-03-25 06:05:53 -07:00
Sean Hagstrom 418053b21e Tweak UI for contact request notifications (#19337)
* fix: ensure contact-request notifications are displayed as notifications

* fix: provide context-theme for notification sub-components

* fix: adjust font weight for notification text

* fix: adjust alignment of user-avatar inside a notification with a header and body

* tidy: rename override-theme to theme inside notifications

* fix: update notifications component to use `user` prop instead of `avatar`

* tweak: adapt notification to avatar to vertically center when only displaying header or title

* fix: use title font-size for contact-request-accepted notification

* fix: allow for custom avatar component prop in quo notification component

* fix: ensure we use the correct font-weight for contact-request-accepted notification

* tidy: fix formatting
2024-03-25 10:17:47 +00:00
flexsurfer 2528efb538 fix input issues (#19341) 2024-03-25 10:42:20 +01:00
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
Yevheniia Berdnyk ebc12c36e4 e2e: temp fix for jump to 2024-03-22 22:45:22 +02:00
mmilad75 c003db42ae Create Navigation mechanism for wizard type flows #19059 (#19123) 2024-03-22 21:00:35 +03: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
flexsurfer 6f07e8022e Allow user to select a color for the group chat #18982 (#19088) 2024-03-22 14:10:51 +01:00
Omar Basem 38fcb0c1a0 Wallet: Keypair feature flag (#19333)
* Wallet: Keypair feature flag (#19333)
2024-03-22 16:41:36 +04:00
Flavio Fraschetti 0cc414d717 fraschetti/add wallet-get-address-details-contract-test (#19340)
Introduces comprehensive tests for the wallet_getAddressDetails endpoint
2024-03-22 06:51:36 -03:00
Ulises Manuel ad42882c5b Increase debounce timing for fetching routes (#19100) 2024-03-21 11:15:36 -06:00
Jamie Caprani ee35fd52f6 chore(quo): add profile/extended collectible component (#19297) 2024-03-21 08:54:14 -07:00
Andrea Maria Piana fba363d9ea Bump version to 2.27 2024-03-21 15:24:08 +00:00
Alexander 51541f7f0a Fix for "Jump to" button overlapping Logout button on the Profile screen (#19318)
* Fix for "Jump to" button overlapping Logout button on the Profile screen

* Fix for offsets

* Code style

* Fixes
2024-03-21 15:05:49 +01:00
Flavio FraschettiandAjay Sivan 1e37765197 18638- [Communities] Implement Permissions Drawer (#18988)
* Community Permissions Sheet

* Request to join screen: join as role

---------

Co-authored-by: Ajay Sivan <ajayesivan@gmail.com>
2024-03-21 06:18:50 -07:00
Flavio Fraschetti 90913500b4 Fraschetti - Add tests for wallet_getWalletToken (#19210)
- Add tests for wallet_getWalletToken 
- Remove get-main-account 
- Add get-default-address function
- Adapt constants/fixtures for recovered account
2024-03-21 09:29:12 -03:00
yqrashawn 6d74d0396e fix: show pubkey in add contact input when available (#19187) 2024-03-21 19:19:55 +08:00
Ajay Sivan fd24a80904 fix: Long community name not split into two lines (#19223) 2024-03-20 21:28:16 -07:00
Yevheniia Berdnyk ab53450ba8 e2e: changed build name and added wait for session id 2024-03-21 02:16:20 +02:00
Andrea Maria Piana 813d96df10 fix can post
https://github.com/status-im/status-go/compare/f69ee075...894eb575
2024-03-20 22:17:06 +00:00
Brian Sztamfater 6363756c09 fix: unresponsive add watched address screen when entering a multi-chain address (#19185) 2024-03-20 13:58:23 -03:00
Parvesh Monu 5854a473f0 fix duplicate mention (#19203) 2024-03-20 21:31:57 +05:30
Ajay Sivan c2f0060a47 fix: Community admins will review request text is visible even after joining (#19218) 2024-03-20 08:49:24 -07:00
Ajay Sivan 0fdb599d93 fix: unable to swipe b/w activity center tabs (#19033) 2024-03-20 08:37:55 -07:00
Parvesh Monu ef5153f138 fix incorrect unread counter is displayed when a message is removed (#19217) 2024-03-20 20:26:57 +05:30
Brian Sztamfater 463e8a5eec feat: make bridging transactions work after sliding to confirm the transaction (#18986) 2024-03-20 10:07:02 -03:00
Sean Hagstrom 40e6c44b99 fix: revert removal of key in profile settings view (#19329) 2024-03-20 08:35:39 +00:00
Omar Basem fc801213ef Wallet: selecting keypair (#19070)
Wallet: selecting keypair (#19070)
2024-03-19 22:36:08 +04:00
9e5b8b5f9c [#19247] feat: migrate to new contact profile (#19246)
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
Co-authored-by: Sean Hagstrom <sean@seanhagstrom.com>
2024-03-19 20:57:58 +03:00
Sean Hagstrom 772efa90d4 fix: reset profiles list translate-x while unmounting (#19315) 2024-03-19 17:41:43 +00:00
Parvesh Monu 8fb42d2503 Improve navigation code (#19274) 2024-03-19 22:12:30 +05:30
Lungu Cristian 2295b01bc9 Fix drawer message according to desings (#19056)
* fix: bottom-sheet's selected-item was not visible

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: drawer message spacings and removed emojis & identicon

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: bottom-sheet use-callback dependencies

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: added :profile/public-key sub

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test: added :profile/public-key sub test

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: spacings & added reactions to message drawer

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-19 16:23:36 +02:00
codemaster 2ee7db9370 feat: add jump-to button in group-detail screen (#19134) 2024-03-19 07:06:06 -07:00
Ibrahem Khalil 27407b9cbb chore: Fix subs leak and fix schema error (#19321) 2024-03-19 14:14:15 +02:00
Flavio Fraschetti 01a881523f JC-Fraschetti/[Wallet] Add fixtures to recovered accounts and refactor wallet_getDerivedAddresses test (#19287)
* chore: fix contract test for wallet/create-derived-addresses and add asynchronous operations using Promesa library
2024-03-19 05:55:38 -03:00
codemaster 3b5afb5d60 feat: show pinned messages bottom sheet in channel home (#19105) 2024-03-18 12:28:47 -07:00
Omar Basem e5cee4b640 Wallet: Derivation Path screen (#19268)
Wallet: Derivation Path screen (#19268)
2024-03-18 20:44:16 +04:00
Icaro MottaandCristian Lungu 7948582e46 Account selection: Implement features related to editing shared addresses (#19177)
* Fix schema error

* Implement feature to edit shared addresses

* fix: show tokens when sharing all future addresses toggled

* fix: eligibility not checked when toggling all addresses

* Revert "fix: show tokens when sharing all future addresses toggled"

This reverts commit 8443a3432e.

* fix: don't fetch balances on mount if toggled share all

---------

Co-authored-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-18 17:07:15 +02:00
Parvesh Monu 6c5242b3e0 fix bio-metric login (#19293) 2024-03-18 19:50:10 +05:30
Lungu Cristian 60d6a5c3cc Fix pinned messages context tag style (#19245)
* fix: pinned messages context tag style

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* formatting

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-18 12:34:46 +02:00
suchsoon 049822b5bb chore: remove repetitive words (#19189)
Signed-off-by: suchsoon <silverjadebeauty@gmail.com>
2024-03-18 11:10:50 +01:00
Lungu Cristian 02c7460a24 Fix chat navigation buttons when scrolling to top (#19097)
* fix: change nav buttons to :photo when scrolled to top

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: renamed to use-messages-scrolled-to-threshold

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: nav buttons are shown without flicker on mount

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-18 12:05:36 +02:00
Mohamed Javid 10c6bf7156 [Fix] Chain down toast shown for chains unrelated to current network (#19155)
This commit fixes chain down toast shown for chains unrelated to the current network.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-03-16 16:29:16 +05:30
Jamie Caprani d0d7310e82 feat(wallet): add ability to remove wallet account (#19121) 2024-03-15 14:20:28 -07:00
Jamie Caprani 219dd7cb46 chore(quo): add profile - collectibles list item component (#19125) 2024-03-15 13:58:04 -07:00
Parvesh Monu 9da0559b15 fix keycard crash (#19275) 2024-03-15 19:17:55 +05:30
Shivek Khurana aa7db8b883 💾 🗂️ [17653] wallet implement UI for save address bottom sheet (#19079)
* 🚧 Save address UI reached teenage years

* 🚧 Save point

* 📑 Use bottom sheet effect properly

* 📝 Can't get title input to work

* 🎨 Design in place

* 🗺️ Add address box and trigger for network prefs

* 💅 Pixel perfect UI and hide save address button

*  Upgrade to screen tech

* 🤚 Undo changes made to color picker during rebase

* 🧰 Fix screens I broke during rebase

* ❄️ Fix json indent

* ⚒️ Implement PR feedback

* ⛏️ Remove unrelated translations

* 🖼️ Remove container to fix margin issue

- Use rn/use-callback instead of defined functions

* 😶‍🌫️ Hide save address button

* 🔨 Fix lint

*  Remove bottom sheet screen updates

*  Remove empty lines between elements
2024-03-15 10:54:04 +00:00
Brian Sztamfater a06c5fdc02 fix: view-id not updating when navigating inside modals (#19163) 2024-03-14 13:56:30 -03:00
BalogunofAfrica 2a515a82ce fix: polish new chat (#19054) 2024-03-14 17:30:23 +01:00
flexsurfer 69294b196f Display discord bridged posts #19233 (#19248) 2024-03-14 13:46:00 +01:00
BalogunofAfrica 58606dc87c fix: handle limit event (#19066) 2024-03-14 13:13:29 +01:00
Parvesh Monu bccf0f8d11 re add progress root and popover overlay (#19241) 2024-03-14 16:48:08 +05:30
Lungu Cristian aab62dd19e Fix channel-action component (#19031)
* feat: added separate channel-action component & fixed pressed color

* feat: added channel-action preview screen

* fix: moved channel-action/s into separate dirs

* fix: channel-action style prop

* fix: renamed color prop to customization-color

* fix: small button width should be fixed

* fix: removed temp file

* style: formatting
2024-03-14 11:56:47 +02:00
Alexander fa9645d6dd Partial handlers update (re-frame/reg-event-fx instead of rf/defn) (#19005)
* Handlers update (re-frame/reg-event-fx instead of rf/defn)

* Fixes

* Fixes

* Fixes
2024-03-14 10:24:37 +01:00
yqrashawn 614b03d701 fix: duplicate sub key :communities/fetching-community (#18890) 2024-03-14 09:50:06 +08:00
flexsurfer e26d3a856d migrate reagent part 3 (#19165) 2024-03-13 16:46:44 +01:00
Mohsen 98cdf00276 [#19132] feat: block contact with remove contact checkbox (#19213) 2024-03-13 18:33:19 +03:00
flexsurfer eb379791c9 migrate reagent part4 (#19167) 2024-03-13 15:43:39 +01:00
Parvesh Monu 6bda54266b Refactor navigation files (#19068) 2024-03-13 19:09:09 +05:30
flexsurfer 1a8bca56e0 migrate reagent record audio component part5 (#19212) 2024-03-13 14:27:22 +01:00
codemaster 296d868797 fix: remove biometric button in the login screen when disabled biometrics (#19112) 2024-03-13 06:13:20 -07:00
Andrea Maria Piana e002fab376 cache processed description 2024-03-13 12:38:47 +00:00
Icaro Motta 4fa9a27cd9 Rewrite contract tests to use new promise-based API (#19208) 2024-03-13 09:38:32 -03:00
mmilad75 dbcdb18818 The wrong validation is applied for entered amount within send assets page #18751 (#18937) 2024-03-13 14:23:19 +03:30
Ibrahem Khalil 2009199c25 feat: Add internal link preview for communities (#18484) 2024-03-13 00:49:19 +02:00
Sean Hagstrom 103c4b4653 chore: decode emoji-hash and bio from contact payload (#19030) 2024-03-12 17:42:11 +00:00
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
Sean Hagstrom 0efdea6962 Feature: Ignore / Dismiss contact requests from contact profile (#19166)
* chore: add english translation for "contact request ignored"

* feature: integrate action to ignore contact request and display toast

* wip: default to showing "send contact request" after ignoring contact request
2024-03-12 13:48:21 +00:00
Sean Hagstrom d4c8e48441 Add action to remove contact inside contact action menu (#19168)
* chore: add english translation for "Remove contact"

* feature: integrate remove-contact acton in contact-profile action menu
2024-03-12 13:34:59 +00:00
Jamie Caprani 2931ae84ee chore(navigation): qualify wallet screen keywords (#18778) 2024-03-12 11:22:04 +00:00
Lungu Cristian 637efa24cf Clean up biometrics and standard-auth and add tests (#18756)
* ref(biometric): events using reg-event-fx & other

* test(biometric-events): show-message

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix(biometrics): removed unnecessary event

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test(biometrics): tests & schemas for events

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref(standard-auth): refactored authorize

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test(biometrics): fixed event tests

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref(standard-auth): authorize using events

* feat(standard-auth): schemas and removed old auth

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test(standard-auth): added integration tests

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* feat(biometric): added missing schema

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref(biometrics): moved schemas to a separate file

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix(biometric): pressing biometric quickly errors

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: removed namespaced keywords for errors

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref: removed the use of vector cb for biometric fx

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: removed :maybe from fx schema

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref: remove event-fx schema

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* feat: added nested biometrics db keys

* fix: using ExceptionInfo for the error schema

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test: removed clearing fixture and small refactor

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: reset db password inside standard-authentication

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref: use naming convention for effects

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref: renamed not-canceled? to success?

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* rev: removed biometrics schemas :(

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: removed set-in & fix on-close bug

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: onboarding biometric not triggered

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: invalid props bug on onboarding welcome

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: moved side effect cb call into effect

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* test: moved integration test to new location

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: password input theme

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: disabled biometric not triggering fail when checking biometric

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-12 12:14:56 +02:00
Jamie Caprani c57e5cd6db chore: improve share wallet test (#19107) 2024-03-12 08:44:59 +00:00
Parvesh Monu 604e232bda Implement alert banner (#19011) 2024-03-12 14:03:37 +05:30
Volodymyr Kozieiev e4997a2088 Root keys named :wallet/... moved as nested under :wallet root key (#19152) 2024-03-11 21:19:48 +00:00
Sean Hagstrom 459bf1621a Show toast after sending contact request (#19144)
* chore: add english translations for "Contact request sent"

* feature: add toast notification when sending a contact request
2024-03-11 10:10:50 +00:00
Sean Hagstrom ca9346a931 Implement reviewal of contact requests from contact profile (#19119)
* chore: add english translation for contact-request-review

* feature: integrate contact-request-review button

* tweak: render the locked-input label when provided

* tweak: allow locked-input component to grow in height

* chore: add english translation for "ignore"

* feature: add subscription for retrieving a pending contact-request by contact-id

* feature: integrate initial contact request review flow

* tweak: display send-message button on contact profile when contact-request-state is mutual

* tidy: refactor button-wrapper view to be button container-styles

* feature: add toast for accepting contact request
2024-03-11 09:43:18 +00:00
Mohsen 7065f4abd2 [#19101] feat: share contact profile (#19154) 2024-03-10 18:56:45 +03:00
Mohsen e283a72454 [#19048] feat: show contact QR code (#19139) 2024-03-09 00:36:24 +03:00
Ulises Manuel 3c6923963d [#18736] add address to watch using an ENS (#19043)
* Add capability to register an address based on an ENS

* update tests

* Check for existing addresses using an ENS
2024-03-08 12:20:41 -06:00
Mohsen 7a6714eeb2 [#18929] fix: no bottom space under the join button (#18987) 2024-03-08 19:24:02 +03:00
Alexander b3bebe1859 Update status-go version to fix the issue with peer syncing migration (#19127)
* Update `status-go` version to fix the issue with peer syncing migration

https://github.com/status-im/status-go/compare/8e8c1614...f9e7caa5

* Latest `commit-sha1`

* Fixes
2024-03-08 13:41:10 +01:00
Ulises Manuel ad546f9f14 [#18608] Immprove collectibles fetching performance (#18921)
* Add memoized versions to convert keys

* Add placeholder for SVG collectibles due to errors and warnings

* Add events to request collectibles per account

* Update subs to list all accounts collectibles evenly

* Update collectibles tab to pull new data when end is reached

* Use memoized version of key transformation
2024-03-07 12:05:45 -06:00
Mohsen 3145ecd6bf [#19037] feat: new design for manage nickname (#19085) 2024-03-07 15:23:07 +03:00
frank 669a232ad9 fix: peer exchange (#19082) 2024-03-07 18:10:17 +08:00
yqrashawn 29e69c54bd build: less node_modules recopy from nix (#19120) 2024-03-07 13:30:36 +08:00
flexsurfer 5fd0b27589 [#18985] Polish group details view (#19032) 2024-03-06 16:36:52 +01:00
Mohamed Javid 7d6b2ac87a [Feature] Wallet - Handle Blockchain Status (#18850)
This commit adds the feature to handle blockchain status signals from the status-go and shows a toast if the provider for any of the blockchains is down.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-03-06 20:59:52 +05:30
Jamie CapraniandYevheniia Berdnyk 93f488e61a chore(wallet): remove legacy network settings options (#18955)
* e2e: removed unused element

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-03-06 07:05:05 -08:00
Sean Hagstrom f7498ef81f Implement Contact Request flow in Contact Profile (#19039)
* chore: add send-contact-request to i18n translations

* feature: add send-contact-request button on contact profile

* chore: prop drill full-name and profile-picture for the context-tag inside drawer-top component

* chore: add english translation for contact-request-message-prompt text

* feature: integrate contact-request sheet

* tidy: subscribe to contact data inside contact-request view

* tidy: wrap callback with use-callback

* tweak: hide contact-request button if contact-request is already sent
2024-03-06 12:57:02 +00:00
Ibrahem Khalil f1834c6a15 Sort communities by currently active tab (#18812) 2024-03-06 13:13:58 +02:00
Mohamed Javid ffcca1aea3 [Chore] Remove POKT Sepolia and Goerli RPC URL (#19040)
This commit removes the POKT (Grove) URL for Sepolia and Goerli as POKT dropped support.
Now, we will use Infura RPC for Sepolia and Goerli as default.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-03-06 15:50:36 +05:30
Ibrahem Khalil 0937da9e50 Fix usage of ratom to fix wallet share (#18883) 2024-03-06 10:46:48 +02:00
yqrashawn 33e637ff71 fix(style): :resize-method is not avaliable on ios (#18914) 2024-03-06 15:25:43 +08:00
Parvesh Monu a538e2896e fix Blink of shell screen occurs when the Scan sync button is tapped (#19104) 2024-03-06 10:16:58 +05:30
flexsurfer c02cc5d391 The wrong UI is applied for 'sync code' section when light mode is en… (#19110) 2024-03-05 18:59:02 +01:00
Parvesh Monu 613e48ece3 fix the mention highlighted area is only updated after reopening the chat (#19076) 2024-03-05 21:06:22 +05:30
Sean Hagstrom f788d7bc85 [#19035] Add status tag for pending contact request to contact profile (#19075)
* chore: add english translation for contact-profile-request-pending

* feature: integrate status-tag for pending contact-request
2024-03-05 14:07:45 +00:00
Lungu Cristian 7415ebdc78 Updated placeholder for no pinned messages in chat (#18923)
* fix: same placeholder for chat & community pins

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: text linebreak

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-05 15:47:48 +02:00
Alexander 58e9ae0334 Add peer syncing toggle in "Advanced settings" (#18906)
* Add peer syncing toggle in "Advanced settings"

* status-go-version.json

* Fixes
2024-03-05 12:59:06 +01:00
Sean Hagstrom e783deb5af [#18964] Support custom message when sending contact request (#18998)
* tweak: allow for optional message to be sent when making a contact request

* chore: migrate contact-request event handler from `rf/defn` to `rf/reg-event-fx`

* test: add tests for sending a contact request

* chore: make it easier to test on-success and on-error behaviour after sending a contact request

* tidy: use reframe fx for declaring json-rpc/call

* tidy: remove unused success event handler for send a contact request
2024-03-05 10:45:16 +00:00
Parvesh Monu e771d056a0 fix multiple set view-id events dispatched (#19083) 2024-03-05 11:50:00 +05:30
Omar Basem 62f68ff44b Fix: slide button (#18922)
* fix: slide button
2024-03-05 07:50:03 +04:00
Icaro Motta 5d1e1f8005 Make integration tests more enjoyable to use (#19025)
This commit brings numerous improvements to integration tests. The next step
will be to apply the same improvements to contract tests.

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

Improvements:

- Setting up the application and logged account per test is now done with an
  async test fixture, which is a very idiomatic way to solve this problem. No
  need anymore to write macros to wrap day8.re-frame.test/wait-for. The macros
  in test-helpers.integration will be removed once we apply the same
  improvements to contract tests.
- Integration test timeouts can be controlled per test, with a configurable,
  global default (60s).
- Now the integration test suite will fail-fast by default, i.e. a test failure
  short-circuits the entire suite immediately. This option can be overridden on
  a test-by-test basis. This improvement is very useful when investigating
  failures because the error will be shown on the spot, with no need to search
  backwards across lots of logs.
- Noisy messages from re-frame can be silenced with a test fixture. We can
  silence even more in the future if we remove the hardcoded printf call from
  C++ on every signal and control it with Clojure. We can disable most logs as
  well with the more direct (status-im.common.log/setup "ERROR") at the top of
  tests.integration-test.core. We can make verbosity even more convenient to
  control, but I think this should be designed outside this PR.
- Removed dependency on lib day8.re-frame/test for integration tests (see
  detailed explanation below).
- Each call to (our) wait-for can customize the timeout to process re-frame
  event IDs passed to it.
- Syntax is now flat, instead of being nested on every call to wait-for. You
  can now compose other async operations anywhere in a test.

Notes:

- promesa.core/do is essential in the integration test suite, as it makes sync &
  async operations play nice with each other without the developer having to
  promisify anything manually.
- There are lots of logs related to async storage ("unexpected token u in JSON at
  position..."). This isn't fixed yet.

Are we not going to use day8.re-frame.test?

We don't need this library in integration tests and we won't need it in contract
tests. Whether it will be useful after we remove it from integration and
contract tests is yet to be seen (probably not).

A few reasons:

- The async model of promises is well understood and battle tested. The one
  devised in the lib is poorly understood and rigid.
- There's basically no way to correctly integrate other async operations in the
  test, unless they can be fully controlled via re-frame events. For instance,
  how would you control timeouts? How would you retry in a test? How would
  forcefully delay an operation by a few seconds? These things are useful (to me
  at least) when developing integration/contract tests.
- Every call to day8.re-frame.test/wait-for forces you to nest code one more
  level. Code readability suffers from that choice.
- Have you ever looked up the implementation of wait-for? It's quite convoluted.
  One could say the source code is not that important, but many times I had to
  look it up because I couldn't understand the async model they built with their
  macro approach. The de facto primitive in JS for asynchronicity is promises,
  and we fully leverage it in this PR.
- The lib has an interesting macro run-test-sync, but we have no usage for it. I
  used it in status-mobile for a while. At one point, all event unit tests for
  the Activity Center used it (e.g. commit
  08fb0de7b0), but I replaced them with the
  simpler pure function style.
2024-03-04 22:38:42 -03:00
Jamie Caprani 191c876f47 chore(wallet): some minor cleanups: move sheets to appropriate level, remove unused rf event, improve one rf event api (#18895) 2024-03-04 12:34:21 -08:00
Ibrahem Khalil 0be66e28c1 Fix collectible/token icon and name on addresses for permissions screen (#18897) 2024-03-04 18:34:10 +02:00
Nazarii F fcdd6c5a79 Added destructuring section to new-guidelines.md (#18731)
Adds a section explaining the use cases of destructuring function parameters to
improve code style and reduce the chance of bugs.
2024-03-04 11:38:50 -03:00
Icaro Motta 27e177f18b Account selection: Use bottom sheet component (#18919)
Use bottom sheet component as designed in
Figma https://www.figma.com/file/h9wo4GipgZURbqqr1vShFN/Communities-for-Mobile?type=design&node-id=16409-98076&mode=design&t=jrVNb3JnWNurJwP8-0

- Fixes no animation when closing Addresses For Permissions modal:
  https://github.com/status-im/status-mobile/issues/18617
- Fixes drawer is always expanded:
  https://github.com/status-im/status-mobile/issues/18619

Additionally:

- Fixed incorrect code passing a function instance to a style prop, which leads
  to incorrect appearance for settings.category.reorder.view/view.
- Optimized Reagent a little bit by extracting functions that need to close over
  the community ID to the mount phase. That way, we avoid regenerating function
  instances on every re-render and Reagent can avoid a bit of re-work.

The challenge was to make the scrollable content work inside a
bottom sheet, while supporting the designs for a fixed (always visible) header
and footer.
2024-03-04 09:23:30 -03:00
Lungu Cristian f8cd14296f Add Promesa to simplify working with promises (#18767)
* added promesa (clj)

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref(resize): using promesa instead of passing cb

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-04 13:59:52 +02:00
Parvesh Monu 851eb6ea8f fix settings navigation (#19080) 2024-03-04 16:06:59 +05:30
Volodymyr Kozieiev 7754460acc Malli schemas added to components (#18949) 2024-03-01 21:03:35 +00:00
Brian Sztamfater 7d55c98e0a feat: update transaction confirmation page to support bridging transactions (#18887) 2024-03-01 16:26:45 -03:00
Mohsen 0e9847f2c3 [#18963] feat: actions UI for stranger contact profile (#19028) 2024-03-01 16:14:05 +03:00
Sean Hagstrom 1aef3106bd Fix chat UI element colors (#18941)
* chore: add community color subscription

* fix: use configured chat color for chat ui and fallback to community color

* test: ensure community-color subscription returns the community color

* tidy: use resolve-color function instead of custom-color function

* revise: rename community-color to customization-color and default non-community channel color to turquoise
2024-03-01 10:46:29 +00:00
Lungu Cristian a4b973970b Fix account edit confirmation button (#18930)
* fix: confirm button not visible

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: edit account btn text

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: removed bottom-action? prop

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: removed unused on-focus and on-blur props

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* ref: using floating-button-page

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: linting error

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: hide btn when disabled and keyboard hidden

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: react warning and header height (again)

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: replace padding prop with style

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* fix: addressed review comments

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

* chore: removed redundant :f> due to new reagent compiler

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>

---------

Signed-off-by: Cristian Lungu <lungucristian95@gmail.com>
2024-03-01 12:00:32 +02:00
Omar Basem abd2b43ce6 Wallet: finalize kp (#18991)
Wallet: finalize kp
2024-03-01 08:09:36 +04:00
BalogunofAfrica ac78dea8ef fix: use blacklist for parallax (#18971) 2024-02-29 17:13:06 +01:00
Mohsen b1f0d1c3d7 [#18865] fix: separate edit bio and set bio, update number of profile name characters (#18892) 2024-02-29 18:28:09 +03:00
flexsurfer da22063308 Error on login with touch ID enabled #19055 (#19057) 2024-02-29 14:56:44 +01:00
flexsurfer c15084fffa fix watch address input field (#19051) 2024-02-29 14:40:01 +01:00
Omar Basem d637f69a45 Revert account origin sheet (#19034)
Revert account origin sheet (#19034)
2024-02-29 10:13:15 +04:00
Yevheniia Berdnyk 05a810b051 e2e: updated method for a profile picture changing 2024-02-29 02:25:59 +02:00
Ibrahem Khalil 7db35a3cc8 Fix statusbar color on dark screens (#18785) 2024-02-28 18:53:13 +02:00
Siddarth Kumar 1301bbc0d9 chore: bump status-go version to v0.176.2 (#19036) 2024-02-28 20:42:10 +05:30
Anton Iakimov 5f4d4bfc11 ci: cleanup more build artifacts
Should be cleaning artifacts for more than 1+1 build for each branch.
2024-02-28 15:50:47 +01:00
flexsurfer 26dd51c5da [#19004] Password input cursor is jumping when typing password fast (#19029) 2024-02-28 15:23:15 +01:00
Parvesh Monu bd7ced5f25 Fix quo preview navigation (#19003) 2024-02-28 18:34:53 +05:30
Icaro Motta 61f8c51d85 Fix: only run unit tests in test-unit target (#18947) 2024-02-28 09:51:53 -03:00
Mohsen 781b83d13d [#18961] feat: add new contact profile skeleton (#19001) 2024-02-28 15:02:24 +03:00
flexsurfer b7bffb3bd3 migrating to react state. step 2 (#18905) 2024-02-28 11:49:49 +01:00
flexsurfer 047e45d2a3 migrating to react state. step 1 (#18901) 2024-02-28 11:48:23 +01:00
Flavio Fraschetti acc6a3c072 Add the Contract Tests to the mobile CI/CD pipeline (#19017)
* Add the Contract Tests to the mobile CI/CD pipeline

* Increase timeout to 20 minutes
2024-02-28 06:47:45 -03:00
Andrea Maria Piana 7171c7085d Bump version to 0.176.1 (#19024) 2024-02-28 08:35:33 +00:00
Lungu Cristian 6d227b61e1 Add react hooks use-state and use-memo (#19016)
* feat: added use-state and use-memo

* feat: add reagent functional compiler

* test: fixed recovery-phrase tests
2024-02-27 15:36:12 +02:00
Siddarth Kumar bf1a734c4e fix: cleanup wallet push notification subscription (#19014)
fixes #19012

### Summary

The legacy wallet code was removed here -> https://github.com/status-im/status-mobile/pull/18749
as part of that purge we also cleaned up re-frame subscriptions for wallet push notifications.

Since the new wallet is under active development we would not need this toggle in settings just yet.

This commit fixes the app crashing on settings UI.

## Platforms
- Android
- iOS
2024-02-27 17:10:37 +05:30
Siddarth Kumar f8eee09d1b chore: update ios/logs to logs dir (#18974)
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.
2024-02-27 14:21:30 +05:30
Jamie Caprani 42d2690c85 chore: remove legacy wallet code (#18749) 2024-02-25 20:00:56 +00:00
flexsurfer b0133e97cf UI components coding guidelines (#18926)
* UI components coding guidelines
2024-02-23 18:30:46 +01:00
flexsurferandYevheniia Berdnyk 3c4f72c061 Enable functional components by default (#18820)
* enable functional components by default

* e2e: updated counter component locator

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-02-23 18:29:10 +01:00
Sean Hagstrom 265b712fe3 [#18912] resolve schema issues for context-tag (#18927) (#18927)
chore: create profile-picture schema with profile-picture-fn field

fix: update context-tag schema to allow for profile-picture-fn

tidy: move profile-picture schema into the common schema namespaces

tidy: revise docs for user-avatar-internal component to mainly warn about `profile-picture-fn` usage

tidy: rename `profile-picture` schema to `profile-picture-source`

tidy: use profile-picture-source schema in user-avatar schema
2024-02-23 14:01:14 +00:00
jakub 13f87020eb ci: drop NIX_IGNORE_SYMLINK_STORE from Makefile and CI
This is a fix applied when upgrading to macOS Catalina in 2019:

https://github.com/status-im/status-mobile/pull/9218

I do not believe it is necessary any longer.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-02-23 12:14:08 +01:00
Mohamed Javid 4f5480e36f [Feature] Enable Sepolia as default test network (#18917)
This commit:
- enables Sepolia test network by default
- adds a toggle to switch to the Goerli test network

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-23 16:18:35 +05:30
Parvesh Monu 9fab422e0c fix settings navigation (#18854) 2024-02-23 15:09:11 +05:30
frank 6f8aa15b17 fix: sometimes channels do not randomly appear in test community after its creation (#18705) 2024-02-23 12:12:02 +08:00
frank 4469717cc1 fix: sync qr code not visible (#18944) 2024-02-23 10:15:35 +08:00
Yevheniia Berdnyk 5d00c09597 e2e: temp - dict object error info 2024-02-22 22:07:15 +02:00
jakub fee8ef5524 ci: remove starting build of status.im website
This website is now decomissioned and no longer updated.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-02-22 12:46:10 +01:00
yqrashawn 7e228d0e66 chore(schema): for user-avatar component (#18913) 2024-02-22 19:20:13 +08:00
Siddarth Kumar 3c12ac870a chore: fix few outdated things in docs & readme (#18920) 2024-02-22 00:17:09 +05:30
Paul Fitzgerald 321ff9257b feat(communities): add feature to share community channel qr code (#18807) 2024-02-21 05:59:04 -08: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
Andrea Maria Piana cfaed80066 dont display previous state when checking 2024-02-21 11:17:45 +00:00
Ulises Manuel fa9b53854b [#18463] Wallet - Page top refactor (#18755)
* Use page-top in bridge screen

* Use page-top in bridge-to screen

* Use page-top in add-address-to-watch screen

* Use page-top in backup-recovery-phrase screen

* Use page-top in check-your-backup screen

* Add support for title right options to page-top

* Use page-top in check-your-backup screen

* Use page-top in send-to screen

* Use page-top in select-asset screen

* Use page-top in :wallet-share-address screen

* Deprecate text-combinations
2024-02-20 23:24:17 -06:00
Ulises Manuel 680bc33971 [#18545] Add missing linear gradient to dark themed cards (#18689)
* Add missing linear gradient to cards dark themed cards
- Fix the `:ellipsis-mode` property
- Simplify code
2024-02-20 17:29:34 -06:00
mmilad75 c7aa10c789 The last collectible is shown for a moment while opening a new collectible #18750 (#18793)
* fix issue

* move navigation to the event

* move clearing to hook

* revert scroll_page

* resolve comment

* fix duplicate navigation
2024-02-20 18:34:33 +03:30
Ajay Sivan ae08cb161f Check eligibility status after enabling the share all addresses toggle 2024-02-20 14:45:46 +00:00
Volodymyr Kozieiev ae75eaeb33 Link to Malli presentation added to docs (#18849) 2024-02-20 12:43:44 +00:00
Parvesh Monu 424bbc39c4 cleanup leftovers (#18907) 2024-02-20 14:32:03 +05:30
Siddarth Kumar 5a7bfc61cc fix: make run-ios-device script (#18845)
fixes #16310

We used to reply on `react-native cli` and would pass a `--device` flag to deploy the debug variant of `iOS` app on connected `iPhone`.
`react-native cli` under the hood uses `ios-deploy` library to achieve this functionality.
This showed many weird issues, specifically in locating connected devices and failures at build step with ambiguous error messages.

This commit fixes it by using our custom script `run-ios-devices.sh` which does not rely on `ios-deploy`.
We use `libimobiledevice` to identify `UDID` of a connected `iPhone`.
We use `xcrun devicectl device install app` and `xcrun devicectl device process launch` to install and launch the app.

This works well with `Xcode 15` and `iOS 17.x`.
We can now remove `ios-deploy` from `iOS` shell and `nix` overlay.
We also set up a logs folder and add a Readme.

## Review notes

- connect your iPhone to your Laptop via a cable
- `make run-clojure`
- `make run-ios-device`
(note: no need to pass device name now)

## Platforms
- iOS
2024-02-20 10:54:09 +05:30
yqrashawn 50f6c1ef1b fix: password input triggers re-render of whole login view (#18728) 2024-02-20 10:11:22 +08:00
Siddarth Kumar 3c6b38aeea fix: improve iOS simulator selection (#18880)
## Summary

Improve iOS Simulator selection via `make run-ios` command.
Currently : `make run-ios SIMULATOR="iPhone SE (3rd generation)"` would fail because of our scripts inability to deal with this kind of a pattern.

This commit fixes that and makes this script more robust by storing output of `xcrun simctl list devices` in a json file `ios_simulators_list.json` and then using `jq` to properly get `UDIDs` of those simulators.

This script will now also prompt you to download a simulator image if you do not already have it.

The file `ios_simulators_list.json` will also help in future debugging when we want to check a quick summary of iOS simulator status of devs in the future.

We also append `-verbose` to `xcodebuild` for debug `iOS` builds, this helps debugging.

## Review notes
try such options -> `make run-ios SIMULATOR="iPhone SE (3rd generation)"`

## Platform 
- iOS
2024-02-20 07:16:54 +05:30
Siddarth Kumar c44ba69676 fix: we need to tunnel 8081 for connected devices (#18862)
`make run-android` would fail for connected Android devices because the android device was not able to talk to metro bundler.
This was discovered by @J-Son89
This was easily fixed by reverse tcping port 8081.

## Review notes
connect Android device by USB or Wifi
- `make run-clojure`
- `make run-android`
status app must run without any errors on the connected Android device.

we also replace during install on emulator.

otherwise on old emulators `make run-android` fails with :

```
adb: failed to install ./result/app-debug.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install im.status.ethereum.debug without first uninstalling.]
```
2024-02-20 00:52:29 +05:30
Parvesh Monu f394fcc3d5 fix android hardware back button is not working for nested sheet-screens (#18886) 2024-02-19 22:42:34 +05:30
Siddarth Kumar 107f263fb1 chore: improve android & iOS build step (#18900)
fixes #18888

## Summary
`make run-android` was sometimes flaky because we used to send metro to background via `nohup` and then bring it back to foreground after we read metro logs.

Now we do not send metro to background. We first wait for a successful build.
we then install the app on the simulator. After this is done we give command to sleep until metro server has started, Once metro server has started we open the installed app.

In this workflow the command to open the installed app goes in background and metro stays in foreground.
The new workflow should now be less flaky.

## Review notes
`make run-clojure`
`make run-android` OR `make run-ios` should just work 

#### Platforms
- Android
- iOS
2024-02-19 21:11:36 +05:30
Ajay Sivan 678bc548ca Use quo/bottom-actions component in addresses for permissions screen (#18863) 2024-02-19 07:06:35 -08:00
mmilad75 d77033e346 Wallet - Add malli spec to Quo Wallet components (batch 3) (#18783)
* draft

* add account_card

* add account-origin

* add account_overview

* add account_permission

* add address_text

* add confirmation_progress

* wrapping up

* resolve comments and fix ci issues

* fix ci issues

* fix transaction_progress tests

* fix all tests

* fix lint issues

* add network-link

* add token-input

* add wallet-overview

* add context-tag

* add wallet-activity

* add transaction-progress

* add transaction-summary

* add default value to render-with-theme-provider

* draft

* add default value to context-tag schema

* fix lint issues

* resolve comments

* add :string type to image type

* update ?image-source schema
2024-02-19 18:01:07 +03:30
Parvesh Monu 8f85e3c726 fix first tap doesn't work when selecting a photo in the gallery (#18885) 2024-02-19 19:05:31 +05:30
Shivek Khurana ed427cf485 🧪 Extract schema to dedicated namespace (#18858)
* 🧪 Extract schema to dedicated namespace

* ✏️ Fix syntax errors and dep issue

* 🦞 Follow guidelines
2024-02-19 13:16:17 +00:00
BalogunofAfricaandLungu Cristian 9362d12bbd fix: communities review (#18634)
* fix: community tag emoji size

* fix: hide channel category sticky header for none

* fix line wrap

* fix formatting

* refactor emoji component for tags

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-02-19 08:26:32 +01:00
Flavio Fraschetti bfed36d19f [Communities] Account selection: сan't see the entire text of the community rules (#18761)
Resolved the scrolling issue pertaining to community rules. Additionally, will ensure compatibility with iOS devices lacking safe-area-view in the follow-up.
2024-02-18 08:03:52 -03:00
Yevheniia Berdnyk 456ccb4c69 e2e: temp fix for image selection 2024-02-17 19:03:20 +02:00
Andrea Maria Piana be2c697b7c set light client 2024-02-16 16:30:44 +00:00
Ajay Sivan b27f323dd7 FIX: Addresses for permissions info button bg color (#18855) 2024-02-16 06:08:05 -08:00
Mohsen a33e7f2e90 [#18600] feat: implement set bio screen (#18765) 2024-02-16 16:19:44 +03:00
Ajay Sivan 54d9e5ebeb Share all current and future addresses - UI (#18843)
Fixes
- 'Confirm changes' button unexpected enabled state
- The Confirm button remains enabled even after deselecting all addresses when the user has watch-only wallet accounts.
- Disable the Confirm button when the user deselects the accounts with the token required to join.
- Use community color for address checkbox
2024-02-16 04:11:22 -08: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
Nikolay 2e23dc7ad7 chore(wallet): update default placeholder name for account and watched address when adding it #18416 (#18683) 2024-02-15 20:30:38 +00:00
Mohsen dc53bddb66 [#18754] fix: scrollable addresses permission list in android (#18808) 2024-02-15 18:00:21 +03:00
Mohamed Javid 10f9fe11db [Fix] Broken wallet account emoji when syncing devices (#18828)
This commit fixes the broken wallet account emoji when syncing devices by adding a sanitization method for the wallet account emoji. The desktop can handle both variants (raw emoji and img tag); this PR adds the same for mobile.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-15 18:52:59 +05:30
Flavio Fraschetti 2e13cfc47f [Refactor#18748] - Collectible Tag (#18804)
[Refactor Collectible Tag] Improve component schema and add component_spec
2024-02-15 09:52:24 -03:00
Siddarth Kumar e6ea8ae9a9 fix: iOS build stage to install app on simulator (#18839)
fixes #18836

## Summary

While introducing https://github.com/status-im/status-mobile/pull/18784 I missed out on adding an install step to `run-ios.sh` script.

`make run-ios` would work fine for simulators that already have the app installed but would fail for new emulators.
@flexsurfer  discovered this problem.

This commit fixes that by adding an install step to the script.

## Review notes
- `make run-clojure`
- `make run-ios` 
should just work.

## Platforms
- iOS
2024-02-15 17:55:06 +05:30
Alexander 834c0a3800 Design review: create profile password (#18607)
* Design review: create profile password

* Fixes

* Fixes

* Fixes

* Fixes

* Code style fix

* Fixes
2024-02-15 10:42:54 +01:00
Siddarth Kumar 2c96c38339 chore: disable hermes and cleanup gradle vars (#18832)
fixes #18831

We update the nix derivation to build android by passing `hermesEnabled` flag which checks the environment variable and if the environment variable is not set we default `hermesEnabled` to `true`.
This ensures that `hermes` is disabled for debug builds and enabled for release builds.

In this commit we also
- rename `nix/mobile/android/release.nix` → `nix/mobile/android/build.nix` since that nix file no longer generates release only builds.
- cleanup 2 other env vars and use the `gradle` project format
- replace `BUILD_NUMBER` with `verisonCode` for consistency
- replace `androidGradleOpts ` with `buildUrl ` 
- bump `status-jenkins-lib` to v1.8.7
2024-02-15 13:48:11 +05:30
Mohsen 1d2c01c16b [#18752] fix: The W/O address shouldn't be in account selection (#18809) 2024-02-14 20:37:52 +03:00
Andrea Maria Piana 8dc71f6432 Fix translations 2024-02-14 16:12:17 +00:00
Andrea Maria Piana 25f9499454 remove rounding 2024-02-14 16:12:17 +00:00
Siddarth Kumar 42cab08553 chore: Improve DX for building the app locally (#18784)
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`
2024-02-14 19:58:45 +05:30
Jamie Caprani 83523b1923 chore: clean up wallet reframe root keys (#18730) 2024-02-14 04:29:35 -08:00
Mohamed Javid f762cdcf9b [Feature] Wallet - Network filter UI in Wallet home and account screens (#18772)
This commit adds network filter UI in the Wallet home and account screens.

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-14 15:37:04 +05:30
Ibrahem Khalil 357db52720 Use blurred background for all type shell? bottom sheets (#18400) 2024-02-13 22:54:43 +02:00
Yevheniia Berdnyk 5fdaf0054d e2e: updated join community 2024-02-13 15:26:19 +00:00
Andrea Maria Piana 4e3ce54ac4 Reduce renderings in community overview
https://github.com/status-im/status-go/compare/c15f9e73...1ea2bd99

This PR reduces the amount of rendering in community overview.
It limits the amount of data is passed to components to the necessary,
and it creates functions on component initialization so that they won't
cause a re-render.
Performance of the header are very noticeably better on my local
environment, though on nightly builds is less noticeable.

It also removes data from `communities/communities id` as that cause a
re-render of any component subscribed to it.
2024-02-13 15:26:19 +00:00
Andrea Maria Piana 37be08d2d7 Fix permission screen & trailing zeros
https://github.com/status-im/status-go/compare/c15f9e73...b7b7660a

There were a few issues with the permission screen:
1) Wrong permission was displayed when able to join
2) If not able to join, we were showing both admin/member permissions
3) Trailing zeros in token amount
2024-02-13 15:26:19 +00:00
Paul FitzgeraldandJamie Caprani 3c4d27b6ff chore(wallet): connect UI and data model for input page in bridge flow (#18678)
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-02-13 07:24:02 -08:00
jakub c5df51d944 nix: upgrade from 2.13.4 to 2.19.3
We are moving location of symlinks for build derivations for `gcroots`
from `/nix/var/nix/gcroots/per-user` to `.nix-gcroots` in the repo to
avoid errors like this caused by profile migration in `2.14` release:
```
error: creating directory '/nix/var/nix/gcroots/per-user/joe': Permission denied
```
For more details see: https://github.com/NixOS/nix/issues/8564

To upgrade without using `make nix-purge` use `make nix-upgrade`.

Related infra change:
https://github.com/status-im/infra-ci/commit/37c6ce47

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-02-13 13:32:50 +01:00
NikolayandJamie Caprani b1c467de19 feat(wallet): add ui for account origin info (#18725)
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-02-13 03:27:28 -08:00
Shivek Khurana c766d21296 ⚒️ Fix typo (#18794) 2024-02-12 20:50:07 +00:00
e86faa0767 feat(quo): implement wallet - input amount component (#18687)
Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-02-12 07:36:23 -08:00
Shivek Khurana abe0342be0 🚟 Add schema batch 2 (#18696)
* 🚟 Add schema batch 2

*  Add maybe and optionals

* 🧑‍⚖️ Make theme a required prop

* 🍙 Fix misplaced square brackets that broke spec

* 🎨 Assume default theme and fix tests

- Fixes #18734

* ⬆️ Update schema and rebase

* 🧪 Update tests

* 🆙 Update progress bar value to be string or int

* 🔩 Tighten schema
2024-02-12 14:44:40 +00:00
Mohamed Javid 6669c33e33 [Fix] Edited wallet account name persists in other edit account screens (#18729)
This commit fixes the edited wallet account name that persists in other account edit screens.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-12 19:11:17 +05:30
Ajay Sivan 1351a54fd1 fix - Button colors have become darker (#18776) 2024-02-12 05:06:18 -08:00
Ibrahem Khalil da192dcdb3 Dismiss keyboard when opening mute chat drawer (#18486) 2024-02-12 13:05:56 +02:00
Flavio Fraschetti 6e22e63158 [Communities] Add quo Collectible Tag (#18748)
* register and basic imports for collectible tag component

* implement variations and design for collectible tag component

* Refined based on review feedback and implemented schema enhancements
2024-02-12 07:40:12 -03:00
Mohamed Javid d1f22cd2b8 Wallet - Clear input on long press delete (#18732)
This commit allows clearing the amount input (in the send flow) by long-pressing the delete key.

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-10 00:09:15 +05:30
Parvesh Monu 9dacc9e8af error and app freezing when deselecting account (#18759) 2024-02-09 23:32:58 +05:30
Jamie Caprani 9acf67dd5b feat: add basic infrastructure for contract tests (#18665) 2024-02-09 09:10:09 -08:00
Brian Sztamfater ab73c7e56a feat: show estimated fees when calculating route (#18309)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-02-09 13:43:14 -03:00
Yevheniia Berdnyk f1db73d149 e2e: updated deep/universal links tests 2024-02-09 15:51:14 +02:00
Ajay Sivan d78d7719cd Account permissions component malli schema fix (#18770) 2024-02-09 05:44:11 -08:00
Alexander e381998b19 Toast notification design fixes (#18468)
* Toast notification design fixes

* Code style fix

* Smaller fix

* Style fix

* Fixes

* Style fixes

* Fixes

* Fixes
2024-02-09 09:54:14 +01:00
Brian Sztamfater 025c38ae88 fix: address is lost on re-render (#18593)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-02-08 16:29:05 -03:00
mmilad75 523a5809d0 Wallet - Add malli spec to Quo Wallet components (batch 1) #18354 (#18707)
* draft

* add account_card

* add account-origin

* add account_overview

* add account_permission

* add address_text

* add confirmation_progress

* wrapping up

* resolve comments and fix ci issues

* fix ci issues

* fix transaction_progress tests

* fix all tests

* fix lint issues
2024-02-08 20:31:57 +03:30
Icaro Motta 505f2fe624 Communities: Show relevant tokens (#18636)
Show "relevant tokens" in account selection step. Related status-go PR
https://github.com/status-im/status-go/pull/4631.

- Balances are fetched on the account selection screen. Assuming most users
  won't care about selecting addresses, this eliminates unnecessary calls to get
  balances, at the expense of refetching them every time the component is
  mounted. I think for now this is acceptable.
- Relevant tokens is a terminology used in Figma, but more specifically, it
  means "balances for all assets that have at least one Token Criteria
  associated, and for a given address". Or, as I tried to give it a more
  distinct name, "permissioned balances".

Areas that may be impacted: None because all affected code is behind a disabled
feature flag.

Fixes https://github.com/status-im/status-mobile/issues/18126
2024-02-08 11:17:15 -03:00
Ajay Sivan ac32de89f9 Update drawer/bottom-actions component with top & top error variants (#18513) 2024-02-08 02:31:50 -08:00
Mohamed Javid 52a82fffab Bump status-go version to 0.174.2 (#18745)
This commit updates the status-go version to use v0.174.2

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-08 15:19:27 +05:30
Mohamed Javid d1c8f6411d [Feature] Wallet - Display token price (#18438)
This commit adds a feature to display token prices for each token in the Wallet home and Account screens.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-08 13:31:42 +05:30
Mohsen 7b639f2ffe [#18453] feat: implement change accent colour screen (#18517) 2024-02-07 19:49:21 +03:00
Brian Sztamfater ae7ee33f00 fix: ENS regex not being used to detect an ENS on address input (#18626)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-02-07 12:39:49 -03:00
Mohamed Javid c70646bd5c [Fix] Scanned address not populated in send flow (#18727)
This commit fixes the scanned address not pasted/populated in the "Send to" input field.

---

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-07 19:56:42 +05:30
mmilad75andLungu Cristian 484ab919b1 Update Wallet: Share QR Code #18454 (#18479)
* add icon

* fix lint issues

* fix preview props and header icon

* fix watched-address icon condition

* fix header tabs

* draft

* fix network name in multichain mode

* fix lint issues

* update tests

* update comments

* add background color

* update preview file

* update usages

* feat: add schema to quo/share-qr-code component

* test: fixed & re-factored tests after adding schema

* bring back gradient structure

* fix scrolling issue

* fix lint issues

* fix usage

---------

Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2024-02-07 17:08:41 +03:30
Omar Basem 052d88b531 Wallet: bridging - assets list (#18713)
Wallet: bridging - assets list
2024-02-07 16:55:14 +04:00
Omar Basem 0aba789b5c feat: new keypair - check your backup (#18667)
* feat: new keypair - check your backup
2024-02-07 15:53:29 +04:00
Omar Basem 73450d736a Wallet: fix nested scrollviews warning (#18714)
Wallet: fix nested scrollviews warning (#18714)
2024-02-07 09:32:53 +04:00
Siddarth Kumar cc63c8fff5 init: maestro dev automation (#18712)
The purpose of this commit is to allow running `maestro` automations to enhance productivity by **automating** mundane tasks.

Other flows like
- send contact request
- sync devices
- join a community
etc will be a part of follow ups.

In this commit we provide a `make` command to run a very common task like creating account & login :
`make auto-login`

We also allow another `make` command to run any other custom flow :
`make auto-custom FLOW="maestro/create-account-or-login.yaml"`

A `maestro` folder has been added with 3 `yaml` files which are very easy to understand
ref : https://maestro.mobile.dev/api-reference/commands
2024-02-06 23:29:35 +05:30
Jamie Caprani ef6027575f Add a UI for toggling developer feature flags (#18602) 2024-02-06 08:24:45 -08:00
Anton Iakimov 07feff60ec fleets.json: remove go-waku fleets and update some other ENRs 2024-02-06 12:34:56 +01:00
Siddarth Kumar 59c07050b2 chore: remove hermes enable condition (#18723)
We recently disabled `hermes` for debug builds here -> https://github.com/status-im/status-mobile/pull/18675
A side effect of that is when we run `make nix-update-gradle` the `hermes` pom gets removed from `deps.list`
This pom is necessary for release builds.
Currently that pom exists in `deps.list` but someone may accidentally remove it when running `make nix-update-gradle`

In this commit we remove the conditional implementation of `hermes` or `jsc` in `build.gradle`
This ensures that the `hermes` pom we need during release builds is not removed from `deps.list`.

I also ran `make nix-update-gradle` just to be sure.
I compared the apk in this commit to other PRs and the size increased by 2MB.
A small price to pay so that the team can run Malli locally without crashing their debug app frequently.

I've added a FIXME comment in the code for when we want to cut back on bundle size later.
2024-02-06 16:57:05 +05:30
Lungu Cristian 431b6c36ca fix: collectibles scroll crash (#18658) 2024-02-06 13:15:23 +02:00
Yevheniia Berdnyk 2e7a9c82ff e2e: fix for deep/universal links test 2024-02-05 16:08:18 +02:00
Nikolay 32442945ee chore(wallet): connect remove account rpc request (#18601) 2024-02-05 04:29:25 -08:00
Nikolay 19ac0eea08 Collectible counter component #18632 (#18653) 2024-02-05 04:17:49 -08:00
Jamie Caprani 0964424a36 chore: remove old wallet signals and move signals to status-im ns (#18285) 2024-02-05 03:40:58 -08:00
Parvesh Monu b6ce60eccf Disable multiple button presses (#18478) 2024-02-05 15:26:14 +05:30
Omar Basem a6565b52ce fix: test networks short-name->id (#18692)
* fix: test networks short-name->id
2024-02-05 09:15:30 +04:00
John Ngei 154fbb156d added empty state illustrations image for pinned messages 2024-02-02 23:24:34 +01:00
John Ngei 9c884d1173 fixed: input field does not adjust its size to the scanned data from a QR code 2024-02-02 23:14:49 +01:00
Mohamed Javid 4dded72878 Wallet - Add support for Sepolia testnet and Rarible collectible provider (#18519)
This commit adds support for the Sepolia test network and Rarible collectible/collection provider.

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-02-02 19:44:00 +05:30
Ulises Manuel c7bf9f00b5 [#18459] - Add cursor-based input to token-input (#18594) 2024-02-01 20:02:00 -06:00
Ulises Manuel b6ddd8b5ff [#18495] Fix token not ready for next screen (#18532)
* Fix exception thrown re-frame don't have the subs' value ready

* Make Token malli schema more lenient

*  Make `get-standard-crypto-format` able to work with `nil` values

*  Refactor token screen to move subscriptions inside render function

* Make token input reactive to on-swap

* Remove `crypto-currency?` atom to properly react to state changes

* Fix component tests
2024-02-01 17:51:12 -06:00
Yevheniia Berdnyk 3f9cd3a688 e2e: fixes 01.02 2024-02-01 20:36:51 +02:00
Mohsen 675897c9ab [#18313] feat: implement change profile picture (#18440) 2024-02-01 19:45:58 +03:30
Siddarth Kumar df76881c90 chore: disable hermes via gradle project env var (#18675)
fixes #18493

We enabled `hermes` for android in the `react-native` upgrade to `0.72.5`
Although things seemed fine but developers were seeing frequent crashes in their local environment.

After some investigation the crashes were traced to max native call stack depth in `hermes` engine.
Disabling `hermes` for local debug builds helps fix that issue.

This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command.
It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well.
We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds.

We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
2024-02-01 20:56:18 +05:30
Brian Sztamfater e54932057d fix: reintroduce changes for sending erc20 token and collectibles (#18679)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-02-01 12:03:04 -03:00
Volodymyr Kozieiev a95f2a0f52 Implement menu on collectible preview page (#18651) 2024-02-01 12:48:48 +00:00
Icaro Motta 38dbd6687e Disable flag ACCOUNT_SELECTION_ENABLED by default (#18690) 2024-01-31 23:58:37 -03:00
Ajay SivanandIcaro Motta 4633fc22ed Show token permissions only for role permissions (#18549)
Token requirements that are not role permissions (currently channel permissions)
should not be displayed to the user while they see permissions to join.

Admin, Master, Owner or minted token permissions are not membership permissions,
but they still should be displayed so the user understand the role they will
assume after joining.

Co-authored-by: Icaro Motta <icaro.ldm@gmail.com>
2024-01-31 21:03:54 -03:00
Ibrahem Khalil 7e31e028fa Bring back enable-notifications onboarding screen static image (#18654) 2024-01-31 16:01:30 +02:00
Mohamed Javid 067b2d5afb [Fix] Wallet - Route not found (#18682)
This commit fixes the route not fetched bug on the Wallet send flow.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-01-31 16:45:21 +05:30
BalogunofAfrica e4ba0d3062 fix: android shadow (#18504) 2024-01-31 12:02:27 +01:00
Icaro Motta 11e49c0cc3 Fix community logo/name not rendered correctly (#18633) 2024-01-30 19:37:45 -03:00
BalogunofAfrica eda9464b6c fix(ios): button overlap (#18620) 2024-01-30 16:34:12 +01:00
frank 8f3385fc9f fix: endless logout (#18492) 2024-01-30 20:25:53 +08:00
Paul Fitzgerald 7eb4331de1 Chore(wallet): add bridge token page (#18560) 2024-01-30 03:22:45 -08:00
Anton Iakimov 46f01f5eb3 Revert "ci: don't fail on Diawi upload failure"
This reverts commit 36168256bf.
2024-01-30 11:42:04 +01:00
Shivek Khurana 0349b0ed3d 🎡 Don't scroll on press (#18662)
- Hack fix
- Scroll on press breaks something with FlatList
- Which causes some items to not render
- Could be related to scroll view inside scroll view
- But fixing this bug by compromising the UX a tiny bit
2024-01-30 08:32:20 +00:00
Siddarth Kumar f57a26b5f5 Remove hacks from darwin nix purge script (#18656)
## Summary
In this commit we : 
- instead of `cd` to `/Library/LaunchDaemons` and then attempting to `launchctl unload` the nixos plist files we just pass the full path to unload as seen in `nix` documentation here : https://nixos.org/manual/nix/stable/installation/uninstall.html#:~:text=Stop%20and%20remove%20the%20Nix%20daemon%20services%3A

- move killing a process by prompting for confirmation to a new shell script as per feedback from previous PR : https://github.com/status-im/status-mobile/pull/18192#discussion_r1439495310

- fix few small typos

## Platforms
- macOS
2024-01-30 09:00:26 +05:30
Lungu Cristian ab509da60e fix: profile image & customization color for share-qr-code (#18643) 2024-01-29 14:14:51 +02:00
Lungu Cristian 901818492d Replace unmaintained biometrics package (#18531)
* 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
2024-01-29 13:33:46 +02:00
Ibrahem Khalil 302020653b Add lastOpenedAt and JoinedAt for communities (#18439) 2024-01-28 14:59:10 +02:00
Yevheniia Berdnyk 205b74cd34 e2e: remived xfail marks 2024-01-26 20:03:12 +02:00
mmilad75 be618bfafe Wallet: Disable long-press feature on tokens in watch-only accounts. #18597 (#18598)
* add functionality

* update condition
2024-01-26 21:30:01 +03:30
Ulises Manuel 550fa04e33 [#18512] incomplete list of collectibles (#18577)
* Fix var naming react-native-svg namespace

* Update collectible components to show SVGs

* Display collectibles containing collection images

* Show collectibles containing SVG animations as static images

* Reduce collectibles fetching priority

* Add support to visualize SVGs in collectible detail screen
2024-01-26 09:52:04 -06:00
yqrashawnandAjay Sivan 1acf8f0d07 feat: show highest permission role when join community (#18497)
* feat: get revealed accounts for joined community

Signed-off-by: yqrashawn <namy.19@gmail.com>

* Show token requirements only when membership permissions are present.

- Add membership-permissions? to community state.

* feat: show highest permission role in overview and req to join

Signed-off-by: yqrashawn <namy.19@gmail.com>

* feat: get highest perm role in addr for perms

Signed-off-by: yqrashawn <namy.19@gmail.com>

* feat: ui for address for perm drawer

* test: unit test and spec for handle-community

Signed-off-by: yqrashawn <namy.19@gmail.com>

* fix: for #18581

* refactor: based on PR feedback

- move <-rpc to data store
- `role->translation-key`
- highest-permission-role-text -> highest-role-text
- filter out nils for handle community test

Signed-off-by: yqrashawn <namy.19@gmail.com>

---------

Signed-off-by: yqrashawn <namy.19@gmail.com>
Co-authored-by: Ajay Sivan <ajayesivan@gmail.com>
2024-01-26 15:38:10 +08:00
Parvesh Monu d82bf3365d fix bottom tabs blur overlay color (#18621) 2024-01-26 11:44:58 +05:30
Jamie Caprani d8e0d1c36b chore: remove mock data from wallet and feature flag incomplete features (#18569) 2024-01-25 13:13:33 -08:00
Yevheniia Berdnyk ad7a95ed3d e2e: updated deep/universal links tests 2024-01-25 22:20:21 +02:00
Paul Fitzgerald cc24794b74 chore (shell): add indicators to share wallet qrs (#18523) 2024-01-25 19:00:18 +00:00
Omar Basem 1fb6c60f72 Wallet: network receiver preferences (#18583)
* wallet: network receiver preferences
2024-01-25 15:45:45 +04:00
Volodymyr Kozieiev 8999b2b9e8 Implement collectible image preview (#18449)
* Lightbox refactored and moved to common screens that can be reused
* Events renamed
* Unify constants namespace importing
2024-01-25 10:58:12 +00:00
mmilad75 ed7463132a The collectibles are not supported on Optimism and Arbitrum #18507 (#18562)
* add chain id to the request

* add tests

* fix lint issues

* remove OPENSEA_API_KEY

* move subscription to a helper method for chain-ids
2024-01-24 19:17:08 +03:30
Brian Sztamfater d20f10cf8b fix: fix slide button padding on transaction confirmation page (#18585)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-24 10:40:53 -03:00
Brian Sztamfater ebbae051bd fix: fix button color on input amount screen (#18572)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-24 10:27:00 -03:00
mmilad75 521f39b6fb No ability to enter/paste assets exceeds the users's balance #18526 (#18599)
* change functionality

* fix handle-swap

* fix lint issues

* update tests

* change error to error?

* change reset-input-error

* update tests

* fix lint issues
2024-01-24 16:37:47 +03:30
Siddarth Kumar ee1f93defb fix: xcbeautify usage without omitting crucial logs (#18605)
## Summary

I introduced `xcbeautify` inside `make run-ios` command which would sometimes skip spitting crucial logs to the terminal.
In cases where the `react-native-cli` would prompt me of a port being used by another metro server, those prompts would also never reach me since they were piped into `xcbeautify` essentially giving me the impression that `make run-ios` is still doing something when it was actually hung.

This is how `react-native-community/cli` looks for `xcbeautify` ->
https://github.com/react-native-community/cli/blob/main/packages/cli-platform-apple/src/commands/buildCommand/buildProject.ts#L139

This commit fixes the problem by exporting an env variable making `react-native-cli` aware that we have `xcbeautify` installed and this way we now get the full log output we were used to.
2024-01-24 15:28:42 +05:30
John Ngei 3665fe26da fixed: mute-icon when channel is muted 2024-01-24 00:25:16 +01:00
John Ngei 3ec7209fcc Update default wallet name
* updated default wallet name to 'Account 1'

https://github.com/status-im/status-go/compare/ea3e59ff...64c8ce2e

* updated status go
2024-01-23 23:44:47 +01:00
Paul FitzgeraldandAjay Sivan 195826a7f4 chore(quo): add component list item - network list to design system (#18547)
---------

Co-authored-by: Ajay Sivan <ajayesivan@gmail.com>
2024-01-23 11:41:20 -08:00
Ibrahem KhalilandYevheniia Berdnyk 5bb4f3632a [17514] Use OS emojis in emoji picker (#18397)
---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2024-01-23 14:41:43 +02:00
Mohamed Javid 4fe62553ca Wallet - Refresh tokens and prices (#18456)
This commit adds

- RPC call for start wallet which will signal the client to refresh data (tokens, prices, ...etc) every 10 minutes
- Refreshes tokens and prices every 10 minutes on receiving the "wallet-tick-reload" signal

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-01-23 17:59:29 +05:30
BalogunofAfrica cb586c8676 fix: make identifier carousel swipe-able (#18515) 2024-01-23 12:25:03 +01:00
Ibrahem Khalil fd50e4281c Add scroll view to profile tab (#18448) 2024-01-23 12:52:34 +02:00
Ulises Manuel dcbb080217 [#18458] Token input fixes (#18520)
* Add custom keyboard to token-input preview
* Fix token input flickering
2024-01-22 20:01:00 -06:00
Parvesh Monu 97d1b3faa1 fix cannot add existing ENS owned by user (#18567) 2024-01-23 04:42:56 +05:30
Nikolay 9c322397a2 chore(wallet): remove account confirmation UI (#18518) 2024-01-22 10:00:07 -08:00
Mohsen ca2b1d5c8e fix: remove quo preview from nightly builds (#18556) 2024-01-22 19:08:34 +03:30
Jamie Caprani 9a4bc7e250 feat(wallet): connect backend to transaction progress page (#18506) 2024-01-22 14:40:13 +00:00
Paul Fitzgerald c6dbfb6244 chore: add background color gradient to share qr code component (#18503) 2024-01-22 06:08:43 -08:00
Omar Basem 826ab6625e Wallet: token input conversion (#18539)
Wallet: token input conversion
2024-01-20 10:23:19 +04:00
Ulises Manuel a9ec2ca7ba Add support to display token images in token gated communities (#18174) 2024-01-19 20:51:50 -06:00
Parvesh Monu 1e11edc442 Remove last reagent atom from messages/view file (#18551) 2024-01-19 21:41:02 +05:30
codemaster bf8461f007 fix: wrong navigation bar color in transparent screens (#18451) 2024-01-19 07:19:58 -08:00
Mohamed Javid 5926426672 [Fix] Currency symbol on recovered profile (#18433)
This commit fixes the currency symbol not shown on the recovered profile.

--

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-01-19 20:03:28 +05:30
yqrashawn e871357b67 refactor: move perm/airdrop addrs into community (#18571)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-01-19 20:44:17 +08:00
Omar Basem 9f5e53cc63 wallet: fix address inconsistencies (#18558)
wallet: fix address inconsistencies
2024-01-19 15:45:17 +04:00
yqrashawn 61c0650cec fix: do not show community view until it's loaded (#18570) 2024-01-19 16:36:14 +08:00
Omar Basem 7cc570b6d0 wallet: fix route test net (#18553)
wallet: fix route test net
2024-01-19 07:47:37 +04:00
Brian Sztamfater e609e2ff6a fix: crash when selecting a collectible (#18541)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-18 16:05:09 -03:00
Alexander f8cdb3bd7b Style fix (#18191) 2024-01-18 16:23:42 +01:00
yqrashawn fe9a4eac59 feat: re-fetch community info in community overview and channel (#18465)
Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-01-18 22:05:31 +08:00
frank d934dc26ef Remove the invocation of wakuext_chatMentionReplaceWithPublicKey (#18533) 2024-01-18 21:33:37 +08:00
Mohamed Javid ed3cb42572 Wallet - Add token filter and prices fallback for fiat amount calculation (#18398)
This commit:

- Adds a filter to remove tokens with no name or symbol to prevent displaying tokens with no data
- Adds a fallback value (zero) for token fiat value calculation and to prevent crash on token price calculation

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-01-18 15:16:00 +05:30
John Ngei 8a4302c85a fixed: incorrect space between name and message card in selected message item 2024-01-18 00:59:18 +01:00
Ajay Sivan c888c512a2 Communities: Share airdrop address (#18505) 2024-01-17 10:23:20 -08:00
Lungu Cristian 72bf8a8702 fix: composer size when re-entering with unfinished multiline message (#18089)
fix: composer space when expanding after re-entering

fix: composer bottom shadow and maximized state atom

fix: removing composer bottom gradient style changes
2024-01-17 13:24:13 +02:00
mmilad75 49e9b4212b Wallet - Account switcher - add Share Account functionality #18376 (#18444)
* add share account functionality

* add share qr code address functionality

* rename file

* finalize code

* move logic to events and effects

* fix lint issues

* resolve comments

* change translation
2024-01-17 14:12:35 +03:30
Omar Basem 19aa78cc81 Wallet: loading networks (#18491)
Wallet: loading networks
2024-01-17 13:57:02 +04:00
John Ngei 02b8d2140a fixed: spacing between the header and illustration on biometrics page 2024-01-16 22:02:20 +01:00
Siddarth Kumar 72d8c4446f chore: tiny Makefile fixes (#18521)
Here we remove `yarn install` from `make component-test` and  `make component-test-watch` commands.
We also fix an extra `@` present ahead of `@scripts/check-metro-shadow-process.sh` inside `component-test-watch` command.
2024-01-16 23:30:42 +05:30
Siddarth Kumar 09bf6673cf chore: upgrade kotlinPluginVersion to 1.9.0 (#18487)
### Summary

We need to bump `kotlin` Plugin version to `1.9.0` because the `nixpkgs` upgrade will set default `gradle` version to `8.4`.
`gradle` version `8.4` comes with a base `kotlin` version of `1.9.0` which becomes incompatible with our existing version of `1.7`

Otherwise we get errors like this :

```
e: /Users/siddarthkumar/code/experiments/status-mobile/node_modules/@react-native/
gradle-plugin/src/main/kotlin/com/facebook/react/utils/TaskUtils.kt: (25, 7): Class
'kotlin.collections.CollectionsKt__CollectionsKt' was compiled with an incompatible version of Kotlin.
The binary version of its metadata is 1.9.0, expected version is 1.7.1.
The class is loaded from /nix/store/3a228ppiiljfvsrxyq15h25chmiwsmbh-gradle-8.4/lib/gradle/lib/
kotlin-stdlib-1.9.10.jar!/kotlin/collections/CollectionsKt__CollectionsKt.class
.
.
.
```

needed for https://github.com/status-im/status-mobile/pull/18321

In this commit we set `kotlinPluginVersion` to `1.9.0` and update `gradle` dependencies.

#### Platforms
- Android
2024-01-16 21:18:15 +05:30
Brian Sztamfater 455a739318 feat: enable sending erc20 tokens (#18481)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-16 12:02:31 -03:00
Brian Sztamfater ac07109e86 feat: prepare events for sending collectible (#18473)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-16 11:48:46 -03:00
Parvesh Monu 248996ce6f Organize composer worklets (#18528) 2024-01-16 19:01:07 +05:30
yqrashawn a2bf23cc12 fix: handle deep link too early when onboarding (#18363) 2024-01-16 16:08:07 +08:00
Ulises Manuel 0fd7a4b581 Fix summary-tag style (#18474) 2024-01-15 20:42:05 -06:00
Jamie CapraniandPaul Fitzgerald 8d3883c709 feat(communities) enable user to share community channel (#18516)
Co-authored-by: Paul Fitzgerald <paulfitz99@gmail.com>
2024-01-15 12:16:42 -08:00
Omar Basem 8a16017859 Wallet: send token from drawer (#18429)
* feat: send token drawer
2024-01-15 20:57:55 +04:00
Omar Basem fa9b6edd30 Wallet: select-send-address event (#18501)
* Wallet: select-send-address event
2024-01-15 20:21:38 +04:00
Jamie CapraniandPaul Fitzgerald 3e787ff112 feat(shell): add share qr wallet accounts feature(#18511)
Co-authored-by: Paul Fitzgerald <paulfitz99@gmail.com>
2024-01-15 06:39:48 -08: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
Anton Iakimov 36168256bf ci: don't fail on Diawi upload failure 2024-01-15 11:43:19 +01:00
John Ngei 6aa981d4a7 fixed dark border around the community logo on community page
This PR removes the dark border around the community logo on communities page 
reproducible only when the user has not yet joined the community
2024-01-12 18:37:23 +01:00
Ulises Manuel e3ab270933 #[16978] Select collectible to send (#18404)
* Show collectibles to send and add filter capabilities

Additionally,
* Replace the sub `:wallet/collectibles-per-account` by `:wallet/current-viewing-account-collectibles` since 
    it was only used for the current viewing account and simplified the code.
* Refactor the select-asset view.
* Generalize collectibles-tab view
* Add translations for "not found" state
2024-01-12 11:14:39 -06:00
flexsurfer 4165565956 fix subs leak (#18480) 2024-01-12 16:12:10 +01:00
Siddarth Kumar 57ee5cb654 fix: resolve to metro version which fixes crashes (#18475)
### Summary

Metro server often crashes with 
```
status-mobile/node_modules/nullthrows/nullthrows.js:9
  throw error;
  ^

Error: Got unexpected null
```

This commit resolves metro to a commit where this specific issue was fixed.
related PR in metro repo : https://github.com/facebook/metro/pull/1083
2024-01-12 20:32:31 +05:30
Ulises Manuel 5cc027a1f5 [#18461] Update guideline about apply-animations-to-style (#18462) 2024-01-11 19:17:07 -06:00
Icaro Motta a14e228e3a Fix: add back missing clj-kondo config files (#18472)
Fix our issues with auto-generated clj-kondo config files.

- To be extra precise, we now exclude ".clj-kondo/*" from being processed by
  clojure-lsp clean-ns.
- Formatted the .zprintrc file.

Fixes https://github.com/status-im/status-mobile/issues/17947
2024-01-11 20:19:55 -03:00
Icaro Motta 7e2c7abf30 Fix: incorrect props passed to RN's style prop (#18435)
Fix 3 errors in the onboarding screen about unsupported props passed to the style prop.

1x ERROR  Warning: Failed prop type: Invalid props.style key resizeMethod supplied to Image.
2x ERROR  Warning: Failed prop type: Invalid props.style key size supplied to Text.

Related guideline:
https://github.com/status-im/status-mobile/blob/563f1c588d1cdac31629da009a1c894133038d2d/doc/new-guidelines.md#dont-define-properties-in-styles-ns
2024-01-11 20:10:04 -03:00
Omar Basem ec2b95c370 Fix: Asset decimals on select asset screen (#18427)
* fix: assets decimals
2024-01-11 20:44:20 +04:00
Parvesh Monu 623d4a1476 fix improper use of current-chat-id and rename subs (#18389) 2024-01-11 17:20:37 +05:30
Roman Volosovskyi 09408e7811 Reanimate RPC stats screen 2024-01-11 11:04:07 +01:00
Siddarth Kumar 4eff9cc39c fix: don't show trace message when default is set (#18464)
`getEnvWithDefault.nix` prints a trace message in console when a default value is not set. 

In this commit we add a check to see if default value matches the value of that env var.
Otherwise we get log messages like these when running `make run-ios`

```
trace: getEnvWithDefault IOS_STATUS_GO_TARGETS 
(default: ios/arm64;iossimulator/amd64): ios/arm64;iossimulator/amd64
trace: getEnvWithDefault IOS_STATUS_GO_TARGETS 
(default: ios/arm64;iossimulator/amd64): ios/arm64;iossimulator/amd64
```

We also fix a tiny mistake in `make run-ios` status-go target by updating the delimiter to be a semi-colon instead of a comma.
2024-01-11 14:57:28 +05:30
Ulises Manuel 0f43daa836 [#18362] Add support for Reanimated inline styles in Reagent (#18381)
* Modify reanimated/view to support vectors contained in styles
* Add code examples of animated inline styles

Additionally,
*  Fix warning about reactive deref not supported in lazy-seqs
2024-01-10 20:09:32 -06:00
Siddarth Kumar fdfc06d6dd fix: random local make-run ios failures (#18446)
In this commit we build iOS `status-go` for both targets `amd64` and for `arm64` otherwise we get random failures when running `make run-ios`.
Maybe this was an impact of Xcode Upgrade Or RN Upgrade or MacOS Upgrade, it is not clear at the moment.
This will increase the time it took for iOS to be built locally, but it is better to be slow rather than have random build failures.
2024-01-10 22:25:08 +05:30
Brian Sztamfater 162c6dbf89 fix: route not found when attempting to transfer assets to additional eth account (#18325)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-10 12:49:45 -03:00
mmilad75andJamie Caprani da03989c88 Implement about tab on collectible page (#18269)
* add basics

* finalize component

* fix lint issues

* move color to props

* move variants to props

* change file structure

* working

* finalize loader

* fix lint issues

* fix style issues

* add tabs structure

* add basics

* draft codes

* draft

* make codes work after rebase

* fix lint issues

* remove Permissions tab

* revert codes

* finalize code

* fix lint issues

* revert podfile.lock

* create new reg-sub for traits and chain-id

* add real title and description for about tab

* resolve comments

* fix overview tab

* add tests

* resolve comments

---------

Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2024-01-10 18:47:07 +03:30
Yevheniia Berdnyk 433be1daef e2e: fixes 10.01 2024-01-10 16:10:31 +02:00
Mohamed Javid 5a707c0dca Wallet - Initialize event, refactor networks data and bug fix (#18374)
This commit:

- Introduces new event ":wallet/initialize" to group events that need to be called on login
- Refactors wallet networks to use the nested structure in re-frame
- Fixes a bug when updating the testnet network preferences of an account the production network preferences update

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-01-10 18:47:24 +05:30
jakub eb53bbe4ec ci: fix handling of Android builds on Apple ARM64
Now that this PR has been merged:

* https://github.com/status-im/status-mobile/pull/16237

We need to handle ARM using an override.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-01-10 13:05:40 +01:00
jakub 257b0684ef nix: fix regex in clean.sh script
Repo used to be called `status-react`.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-01-10 13:05:39 +01:00
Parvesh Monu 425ef64901 Refactor compose (#18339)
- Removed show-floating-scroll-down-button? reagent atom
- Created event for scroll-to-bottom-fn
- Renamed chat.ui/close-chat
2024-01-10 13:53:35 +05:30
Omar Basem 0e4c1b3c17 refactor: kotlinify log (#18337)
refactor: kotlinify log
2024-01-10 09:05:35 +04:00
Ajay Sivan 1eb9e87383 Move selected addresses for permissions to app db (#18430) 2024-01-09 19:45:17 -08:00
yqrashawn 61b0a2ecac fix: profile screen initial avatar alignment (#18426)
https://github.com/status-im/status-go/compare/debfe1ca...debfe1ca

Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-01-10 10:34:54 +08:00
frank 78576f4aeb fix: mark all notifications as read not work (#18107) 2024-01-10 10:04:49 +08:00
Ibrahem Khalil 9ff70ed990 Add internal-link component for #17116 (#18109) 2024-01-09 14:31:00 +02:00
Ibrahem Khalil 6d5ef17a31 Drop clj-kondo dir from linting (#18328) 2024-01-09 14:19:30 +02:00
Omar Basem 504d92fd57 Wallet: suggested routes list (#18388)
* wallet: suggested routes list
2024-01-09 15:12:11 +04:00
Omar Basem 3ff6013127 kotlinify thread pool (#18366)
chore: Kotlinify thread pool
2024-01-09 14:35:39 +04:00
Lungu Cristian fb13c3016d Biometrics in new settings (#18258)
* feat: added biometrics setting to new-settings

* fix: fix renaming issues from status-im2

* ref: addressed @cammellos' review comments

* fix: open password settings in a modal

* ref: addressed review comments

* fix: disabling biometric clears auth-method from keychain

* chore: quo/overlay seqs the childrend so need to add keys

* fix: don't pass the password unmasked between events to avoid leaks
2024-01-09 10:25:40 +02:00
Yevheniia Berdnyk 4c4ba97308 e2e: added check for deleted 1-1 chat history 2024-01-08 21:49:20 +02:00
Siddarth Kumar f992f4addd fix: boost checksum issue due to jfrog (#18434)
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.
2024-01-08 23:55:36 +05:30
Mohsen b4d27d287a feat: implement edit profile and change name (#18270) 2024-01-08 18:27:07 +03:00
Parvesh Monu fb58d7205e Add dispatch-and-chill to navigation events (#18372) 2024-01-08 19:59:01 +05:30
Parvesh Monu 0208224741 fix delayed display of top bar in chat after sending messages (#18300) 2024-01-08 18:12:07 +05:30
Shivek Khurana b3a2f397f9 🔗 Enable explorer links in wallet->about (#18406) 2024-01-08 12:00:41 +00:00
jakub 5915dd42bd ci: upgrade CI hosts to Xcode 15.1
https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes
https://developer.apple.com/documentation/xcode-release-notes/xcode-15_0_1-release-notes
https://developer.apple.com/documentation/xcode-release-notes/xcode-15_1-release-notes

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-01-07 22:24:35 +01:00
Mohamed Javid a00e44d056 Show aggregated tokens and balance in Wallet home (#18275)
This commit adds the feature to show aggregated tokens and balances in the Wallet home.

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-01-06 00:36:54 +05:30
Icaro Motta b4640dabb9 Run integration tests separately from unit tests (#18304)
- make test still exists, so if you have been using it, as well as make
  test-watch, they should all work exactly the same.
- [Changed] As part of the check stage, Jenkins will run Lint and Unit Tests
  in parallel. Integration Tests run later because running them at the same
  time as Unit Tests caused errors.
- [Added] "make unit-test" and "make unit-test-watch" run unit tests only.
  Watching all unit tests is faster now because we ignore integration tests and
  we only compile shadow-cljs :mock target once. We are at approximately 10-15s
  to re-run all unit tests after saving a watched file, depending on your
  hardware. If you change mocks.js_dependencies.cljs, you must re-run the make
  target.
- [Added] "make integration-test" and "make integration-test-watch" run
  integration tests only. These are much slower than the unit tests.

Fixes https://github.com/status-im/status-mobile/issues/18112
2024-01-05 15:47:03 -03:00
Jamie Caprani 9c62e63035 chore: organise chats context (#18373) 2024-01-05 09:39:01 -08:00
Brian Sztamfater fc72ba6a1e fix: fix height on account card component (#18329)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-05 14:11:11 -03:00
BalogunofAfrica 1919094b46 fix: community buttons (#18392) 2024-01-05 17:17:51 +01:00
Brian Sztamfater e7b92dcf25 fix: increase numbered keyboard touchable area (#18330)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-05 12:55:23 -03:00
Brian Sztamfater 4b3bc73239 fix: always navigate back to shell stack when closing watch account screen (#18324)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-05 12:38:58 -03:00
Jamie Caprani 947a1ef29c feat(wallet): add ability to send a token (#18242) 2024-01-05 07:04:39 -08:00
Ajay Sivan 4edb14bb5f Communities: Share Selective Account (#18382) 2024-01-05 05:34:43 -08:00
Omar Basem c6a7808049 Wallet: Utility Tests (#18371)
* Wallet: utility tests
2024-01-05 16:29:26 +04:00
yqrashawn be2d0feda3 fix: generate_profile_url crash when login (#18364)
* fix: generate_profile_url.cljs$core$IFn$_invoke$arity$2 crash when login

'status_im.common.universal_links.generate_profile_url.cljs$core$IFn$_invoke$arity$2' is undefined

update the function to a fixed arity function

* fix: schema/=> macro for :function schema

Signed-off-by: yqrashawn <namy.19@gmail.com>

---------

Signed-off-by: yqrashawn <namy.19@gmail.com>
2024-01-05 20:08:13 +08:00
Ajay Sivan c91b4339dc Use text-combinations/page-top component in request to join sheet. (#18384) 2024-01-05 02:09:58 -08:00
Yevheniia Berdnyk 5a832871fe e2e: added checks for non-token gated community channels 2024-01-05 00:34:56 +02:00
Brian Sztamfater 205962f582 fix: error is shown when asset is selected on select assets screen (#18326)
Signed-off-by: Brian Sztamfater <brian@status.im>
2024-01-04 11:58:35 -03: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
Yevheniia Berdnyk 85c928f862 e2e: enabled tests for pinning messages 2024-01-04 11:22:58 +02:00
Ulises Manuel 4ff5e4da8b [#17938] Collectibles per account (#18277)
* Update wallet events and subs to handle collectibles per account

Additionally,
 - Move collectibles related events to a new events namespace (`status-im.contexts.wallet.events.collectibles`).
 - Update tests to consider collectibles per account.

* Update collectibles tab to handle a current viewing account
2024-01-03 18:41:12 -06:00
Parvesh Monu fc591f303c fix unable to open add-new-contact screen if hardware button is pressed while qr scanner is open (#18296) 2024-01-03 18:24:58 +05:30
Omar Basem f2c69ab9a8 Wallet: crypto max decimals (#18267)
* wallet: crypto max decimals
2024-01-03 15:48:04 +04:00
Omar Basem 006b637b1b Quo: quiz item (#18306)
* Quo: quiz item
2024-01-03 15:36:17 +04:00
Jamie Caprani f016a9c33c chore: clean up contexts folder to only include larger feature sets (#18286) 2024-01-03 02:25:49 -08:00
Omar Basem 1ce76a4af6 Wallet: network preferences text description (#18319)
Wallet: network preferences text description
2024-01-02 13:45:21 +04:00
Alexander 4a9ca80bc2 Share screen design review (#18148)
* Share screen design review

* Small update

* Update

* Style fix
2024-01-02 10:23:38 +01:00
Ibrahem Khalil e392608697 Fix no message preview on long press on the reaction (#18292) 2023-12-30 11:25:01 +02:00
Siddarth Kumar d495bb6b57 Kotlinify StatusOkHttpClientFactory.java (#18318)
This commit converts  
`android/app/src/main/java/im/status/ethereum/StatusOkHttpClientFactory.java` to
`android/app/src/main/java/im/status/ethereum/StatusOkHttpClientFactory.kt`
2023-12-29 16:57:27 +05:30
Parvesh Monu 7af62c04eb Keep chat screen loaded (#17839) 2023-12-29 14:55:12 +05:30
Tetiana Churikova 169a092e7f e2e: wait for Join button to be available (#18316) 2023-12-28 16:31:54 +01:00
Siddarth Kumar 7a4d79179d chore: add Kotlin support (#18293)
This commit is a pre-requisite to upgrading `react-native` to `0.73.x`, now that react-native has completely moved their android code over from `Java` to `Kotlin` , it is also necessary for us to begin doing the same.

This commit converts just 2 files which are important at the moment.
- `android/app/src/main/java/im/status/ethereum/MainActivity.java`
- `android/app/src/main/java/im/status/ethereum/MainApplication.java`

I will can convert the remaining files in follow ups.
2023-12-28 20:20:25 +05:30
Ulises Manuel 107d1a80c9 Fix token images not being displayed (#18288)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-12-27 12:43:47 -03:00
Omar Basem 01e8c7e480 Wallet: about tab fixes (#18298)
* wallet: about tab fixes
2023-12-27 19:14:09 +04:00
Siddarth Kumar 0a1152bcc6 chore: bump react-native-webview to 13.6.3 (#18295)
We need to upgrade `react-native-webview` as a pre-requisite for upgrading `react-native` to `0.73.x`
else we face this issue while building iOS : https://github.com/react-native-webview/react-native-webview/issues/3233
2023-12-27 09:13:29 +05:30
Yevheniia Berdnyk 734abc221c e2e: tests fixes 2023-12-27 00:50:01 +02:00
Ajay Sivan bec51b7d0e Add :wallet/accounts-with-customization-color subscription (#18302) 2023-12-26 08:12:20 -08:00
Icaro Motta 0b4a1545ae Fix component tests, upgrade Jest & friends, and a few other goodies (#18276)
Fix all component tests after the latest RN upgrade.

Fixes https://github.com/status-im/status-mobile/issues/18157
Closes https://github.com/status-im/status-mobile/pull/18235

Dependency changes

- Upgraded Jest: from 26.6.3 to latest 29.7.0.
- Upgraded @testing-library/jest-native: from 5.3.0 to latest 5.4.3
- Upgraded @testing-library/react-native: from 11.5.4 to 12.4.2
- Removed explicit dependency on jest-circus, this is now the default test
  runner.
- Removed explicit dependency on jest-environment-node. This is handled by the
  package manager.
- Added jest-silent-reporter at version 0.5.0.

### Why component tests were failing?

Many tests were failing because we were using RN Testing Library (RNTL) in an
unreliable fashion. With the recent library upgrades, the unreliability was
excerbated. Other times, the tests were incorrectly arranging data.

### with-redefs does not work with async code

Generally speaking, with-redefs should not be used with async code, assume the
worst. The scope of the macro will cease to exist by the time the async code
runs. In many tests we were using with-redefs, then calling render, but for some
components that use use-effect, JS timers, animations, etc it's unreliable and
were the reason for failures.

It's easy to reproduce too:

```clojure
(defn foo []
  :foo)

(foo)
;; => :foo

(with-redefs [foo (constantly :bar)]
  (foo))
;; => :bar

(js/setTimeout
 (fn []
   (tap> [:calling-foo (foo)]))
 100)
;; Taps [:calling-foo :foo]
;; As you would expect, when running without with-redefs, it prints :foo.

;; So far so good, but whatch what happens with async code:

(with-redefs [foo (constantly :bar)]
  (js/setTimeout
   (fn []
     (tap> [:calling-foo (foo)]))
   100))
;; Taps [:calling-foo :foo]
;; ====> PROBLEM: Taps :foo, not :bar as one might expect
```

### Not waiting on wait-for

When test-helpers.component/wait-for is used, subsequent assertions/etc should
be done after the promise returned by wait-for is resolved. But remember to not
perform side-effects inside the wait-for callback (check out the docs
https://callstack.github.io/react-native-testing-library/docs/api#waitfor).
Most, if not all of our usages of wait-for were not waiting.

#### Improvement 1 - Silence Jest on demand

If you need to re-run component tests frequently, you may want to reduce the
output verbosity. By passing JEST_USE_SILENT_REPORTER=true to make
component-test or make component-test-watch you will see a lot less noise and be
able to focus on what really matters to you.

#### Improvement 2 - Selectively focus/disable tests

Because of our need to first compile CLJS to JS before running tests via Jest,
we couldn't easily skip or focus on specific tests. From this commit onwards, we
should never again have to change the list of requires in files core_spec.cljs.
Commenting out required namespaces gives a bad DX because it causes constant
rebasing issues.

#### Improvement 3 - Translations now work as in prod code (but only English)

Translations performed by *-by-translation-text can be done now without any
workaround under the hood. The query functions are now linted just like
i18n/label, which means static translation keywords must be qualified with :t/,
which is good for consistency.
2023-12-26 11:58:23 -03:00
Siddarth Kumar 46c5f42fad chore: add form-data package for DIWAI uploads (#18299) 2023-12-26 16:08:46 +05:30
Yevheniia Berdnyk 5d21b1f5ae e2e: fix for getting public key 2023-12-24 01:47:16 +02:00
Siddarth Kumar 49c6a44824 chore: update status-go version (#18253) 2023-12-23 10:08:49 +05:30
flexsurfer 31acb8e9c4 improve profile screen performance (#18281) 2023-12-22 16:59:12 +01:00
Jamie CapraniandPaul Fitzgerald eda8c0ccb0 fix(quo): truncation on wallet account card long name (#18259)
---------

Co-authored-by: Paul Fitzgerald <paulfitz99@gmail.com>
2023-12-22 15:48:57 +00:00
codemaster 7915ba85ab fix: theming toast component (#17918) 2023-12-23 01:29:50 +10:00
Yevheniia Berdnyk 1bd6898e1c apk name updated in e2e nightly jenkins file 2023-12-22 16:18:00 +02:00
Siddarth Kumar 10b97843ce feat: add xcbeautify to iOS shell (#18273)
I can't remember the number of times I have had to ask developers to run `make run-ios | xcbeautify` when debugging iOS build failures and they do not have `xcbeautify` installed on their environment.

`xcbeautify` helps make `xcodebuild` output more readable and to identify problems quickly.

This commit adds `xcbeautify` to iOS shell and to  `make run-ios` so that we get readable output by default.
2023-12-22 19:45:59 +05:30
Omar Basem 5eb0baa64d Wallet: best route UI (#18266)
* Wallet: best route UI
2023-12-22 09:40:43 +04:00
yqrashawn a4dc268bc3 feat: spectate community before join (#18070) 2023-12-22 10:21:10 +08:00
Ulises Manuel 5fa9c0cab6 [#17964] emoji screen performance (#18213)
* Fix `->` style in emoji-picker.data

* Make `temp-empty-symbol` component code safer to avoid app crashing

* fix `->` style in `emoji-picker.utils`

* Pass sheet-animating? ratom to bottom-sheet's content component

* Improve emoji picker performance
2023-12-21 15:44:33 -06:00
Omar Basem 4f9544d20c Wallet: receive screen (#18167)
* wallet: receive screen
2023-12-21 22:07:27 +04:00
flexsurfer ad8d537b9c move status-im from utils (#18249) 2023-12-21 18:16:59 +01:00
Yevheniia Berdnyk 5ec5838657 e2e: added validation of encoded data in community and profile urls 2023-12-21 19:00:29 +02:00
Jamie Caprani 4c3d1667ca chore: add outline for transacation-progress page (#18217) 2023-12-21 15:37:18 +00:00
Anton Iakimov 2d22ed810c ci: fix android-e2e nightly builds (#18261) 2023-12-21 14:36:16 +01:00
e59e34d0da Communities: Present the list of airdrop addresses (#18189)
Co-authored-by: Flavio Fraschetti <frasqueti@gmail.com>
Co-authored-by: Ajay Sivan <ajayesivan@gmail.com>
2023-12-21 01:27:59 -08:00
Mohamed Javid 60dfd6ce78 Added assets skeleton in wallet home and account screen (#18197)
This commit:

- Updates the "skeleton-list" component to support the "assets" type
- Adds the assets skeleton to the assets tab in the wallet home and account screen

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-12-21 13:28:52 +05:30
Ajay Sivan 4ca533a534 Move disabled component tests outside of require block to fix lint messup (#18265) 2023-12-20 22:18:59 -08:00
Tetiana Churikova ec41b30794 e2e: updated profile view (#18203) 2023-12-20 21:29:08 +01:00
Ulises Manuel 7cf31651b3 [#18083] Implement Page top component (#18163)
* Add container style and fix `:auto-complete` parameter in address-input

* Add container style to recovery-phrase input

* Add container style and accessibility-label to search-input

* Add page-top component and tests

* Add page top preview
2023-12-20 13:17:39 -06:00
Ajay Sivan 04184b41e5 Wallet/Account Permissions Quo Component (#18224) 2023-12-20 07:54:13 -08:00
Lungu Cristian d0e624afd7 Biometrics button on login screen (#18106)
* feat: login with biometry when switching accounts

* feat: biometry button on login screen

* fix: addressed review comments

* fix: biometry button background

* ref: moved biometrics constants to main constants file

* fix: hide biometric button when not enabled

* feat: standard_auth blur prop

* fix: leftover rename
2023-12-20 17:15:51 +02:00
Volodymyr Kozieiev bf55a2a974 Activity tab on collectible page (#18220) 2023-12-20 14:53:29 +00:00
Omar Basem 8225d91ee0 Wallet: home top insets
Wallet: home top insets
2023-12-20 18:23:27 +04:00
Mohsen f631e1fe9d [#17393] feat: add new setting ui (#18118) 2023-12-20 17:03:49 +03:00
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
flexsurfer 800ca19c08 move keycard native module, removed outdated code (#18252) 2023-12-20 13:53:53 +01:00
mmilad75andJamie Caprani b70493691c Implement Link Card component (#18080)
* add basics

* finalize component

* add test structure

* add tests

* fix lint issues

* move color to props

* move variants to props

* change file structure

* working

* finalize loader

* fix tests

* fix lint issues

* fix style issues

* fix typos

* resolve comments

---------

Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2023-12-20 14:07:04 +03:30
Ajay Sivan a40862c5a9 Disable component tests that use wait-for helper function (#18243) 2023-12-20 02:26:57 -08:00
Parvesh Monu 17c442a373 Add placeholder illustration in jump-to screen (#18229) 2023-12-20 14:56:33 +05:30
Parvesh Monu c74461db3a remove unused react-native-intersection-observer library (#18230) 2023-12-20 14:21:07 +05:30
yqrashawnandYevheniia Berdnyk 4bc5efb855 fix: universal link regex (#18020)
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2023-12-20 11:25:09 +08:00
Yevheniia Berdnyk 711e64bc75 e2e: android14 2023-12-20 01:51:58 +02:00
flexsurfer 602b27105b FINAL BOSS! rename status-im2 to status-im (#18241) 2023-12-19 20:59:07 +01:00
flexsurfer f89fd8ca54 move status-im under legacy (#18237) 2023-12-19 18:41:30 +01:00
flexsurfer 842203a4d0 move community code to status-im2 (#18218) 2023-12-19 15:59:50 +01:00
Siddarth KumarandAnton Iakimov 36c2f4706f Fix crash on x86_64 emulators (#17773)
In this commit we bump jenkins lib tag to enable building e2e with 64bit 

Co-authored-by: Anton Iakimov <yakimant@gmail.com>
2023-12-19 20:11:25 +05:30
Brian Sztamfater a4f99de8d5 feat: implement getSuggestedRoutes in the wallet Send Flow (#18104)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-12-19 02:59:58 -08:00
Parvesh Monu d40f70dca4 Optimize chat screen navigation view (#18055) 2023-12-19 16:01:13 +05:30
Alexander 1df96ae3e0 Invite friends (#17570) (#18124)
* Invite friends (#17570)

* Small update

* Update

* Fix
2023-12-19 10:36:49 +01:00
Siddarth Kumar 771fb111e6 make purge script more robust for Darwin (#18192)
The existing purge script for Darwin would fail and stop at many stages.

This commit makes the script more robust to certain failures that were observed and documented in https://github.com/status-im/status-mobile/issues/16404
2023-12-19 08:46:19 +05:30
Mohamed Javid da61233302 Wallet - Watched Account UI Updates (#18190)
This commit:

- Updates the account switcher in the "page-nav" component to use "account-avatar" instead of "dropdown"
- Updates the account avatar (on the top right corner of the account screen) to display the watched account variant correctly
- Updates the accounts list in the account switcher to display the correct background for the watched account with the eye icon

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-12-18 23:31:36 +05:30
Jamie Caprani 8a869be01c chore(wallet): add images to select address page (#18119) 2023-12-18 03:55:42 -08:00
Siddarth Kumar 8d0bb7ba9e fix: modify permissions of all files to read (#18214)
`react-native-reanimated` generates write protected files during build time which are problematic because we copy over `node_modules` from `nix` store and when replacing them with new node modules we are manually asked to confirm this overwrite.

This used to happen before with `.cxx` files but now it also happens with `.so` files. 

This commit fixes those permissions.

partially fixes #18211
2023-12-18 14:38:34 +05:30
Siddarth Kumar d9a242fcab set make run-metro target to clojure (#18215)
The metro terminal no longer needs to have `android` target anymore.
I had to do this in https://github.com/status-im/status-mobile/pull/17241 

This commit sets the target of metro terminal back to `clojure`.

I tested building `android` and `iOS` on my MacOS and on my linux machines and found no side effect.
Now metro terminal is fast again.
2023-12-18 14:03:24 +05:30
Parvesh Monu 8ba9f45e44 Upgrade react-native-reanimated to 3.6.1 (#18216) 2023-12-18 09:44:53 +05:30
frank e06d8cb106 fix: App gets stuck on syncing process screen when scanning QR code v… (#18140)
* fix: App gets stuck on syncing process screen when scanning QR code via recovered profile with different passwords

* update comment
2023-12-16 10:25:39 +08:00
Ibrahem Khalil f8e935c58d Close chat when closing group chat details (#18149) 2023-12-15 20:28:30 +02:00
Ajay Sivan 5507ae4fa2 Community: Request to join - Show addresses shared (#18180) 2023-12-15 09:13:32 -08:00
Volodymyr Kozieiev 2a5c102b1c Add collectible menu (#18185) 2023-12-15 15:37:08 +00:00
Parvesh Monu 9e27a36f5e Fix empty chat in opened on pressing hashtag in a community channel (#18111) 2023-12-15 18:14:08 +05:30
Ibrahem Khalil 07d8bf0d19 Share community via URL with any privileges (#18131) 2023-12-15 14:29:13 +02:00
Ajay Sivan 31dea1ca13 Quo Wallet/Required-Tokens Component (#18164) 2023-12-14 23:54:42 -08:00
Omar Basem 6f3bf98e83 Wallet: share address (#18121)
* wallet: share address
2023-12-15 08:11:06 +04:00
Mohamed Javid ed53fecf47 Added support for different currencies in wallet accounts price calculation (#18078)
This commit:

- adds support for different currencies in token price calculation in the new wallet UI.
- fixes the token units and prices displayed in the individual account screen

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-12-15 01:08:16 +05:30
flexsurfer 16a52b38e8 move input events (#18183) 2023-12-14 16:24:36 +01:00
Ajay Sivan c1a17d9d53 Show component name in quo preview header (#18175) 2023-12-14 04:43:06 -08:00
Lungu Cristian e790f7177d Chat fixes based on design feedback (#18059)
* fix: chat header position when only a few messages

* fix: system_message add contact icon margin

* fix: fixed last grouped message vertical padding

* fix: show message user info on long press of grouped message

* feat: added mute button to chat's channel-actions

* fix: no custom color in message list background

* fix: composer placeholder color (light theme)

* draft: fix android initial chat position

* fix: scrolling chat to top changed content size

* fix: chat message list header animation and behavior

* fix: android initial chat state

* fix: adjusted the chat avatar animation position

* fix: chat content change with keyboard visible

* ref: small refactor and added some notes

* fix: removed broken require

* fix: mute label for channel chat

* fix: merge conflict fixes
2023-12-14 13:03:21 +02:00
Mohamed Javid b668e4dea4 [Feature] Wallet - Account Switcher for send flow (#18100)
This commit:

- adds another variant ("Select account" bottom sheet) of the account switcher for wallet - send flow
- adds watch-only? key in the account to prevent repetitive account type checks across the codebase

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-12-13 22:49:54 +05:30
Parvesh Monu 879a82c35f Add comment related to refactoring (#18171) 2023-12-13 22:05:00 +05:30
flexsurfer 0eb424bb74 Feature/clean metro logs remove old wallet UI (#18165) 2023-12-13 16:11:30 +01:00
andrey cc4a732f60 temporary disable quo spec 2023-12-13 13:27:58 +01:00
Mohsen 835e97d672 [#17518] fix: try again when sync has error outside the onboarding flow (#17890) 2023-12-13 14:40:33 +03:00
andrey 406904025d remove extra sub 2023-12-13 12:15:57 +01:00
Alexander cb3a19f98f #17945 Scanned address persists in ETH address textbox after reopening 'Add address to watch' screen (#17957) 2023-12-13 10:03:42 +01:00
Omar Basem 424a7b17b0 Wallet: Token item fixes (#18136)
* Wallet: token item fixes
2023-12-13 11:29:57 +04:00
Yevheniia Berdnyk 3ddb76faed e2e: fixes 2023-12-13 02:28:24 +02:00
Jamie Caprani 457c42c5f0 chore(wallet): add flow for selecting own accounts in send flows (#18071) 2023-12-12 05:38:21 -08:00
Nikolay 7564113cb5 feat(wallet) - implement network configuration on an account (#17862) 2023-12-12 05:22:51 -08:00
BalogunofAfrica f1bcc6259a feat: finish enable notifications (#18084) 2023-12-12 13:46:01 +01:00
Parvesh Monu 0dd63490f8 Remove toggle for disabling shell navigation 2023-12-12 17:55:29 +05:30
Ajay Sivan e5179d308b Add Test Networks Enabled option in settings (#17879) 2023-12-12 00:36:43 -08:00
codemaster fc8590a05f fix: no avatar for the first message in 1-1 chat (#18099) 2023-12-11 12:13:16 -08:00
andrey e31db856df ops 2023-12-11 20:47:57 +01:00
flexsurfer 5570181896 move reactions events (#18150) 2023-12-11 17:50:52 +01:00
Siddarth Kumar 761a7df06f upgrade react-native to 0.72.5 (#17241)
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.
2023-12-11 21:22:23 +05:30
BalogunofAfrica f155d95d92 fix: 1:1 chat concerns (#17795) 2023-12-11 14:42:41 +01:00
yqrashawn 72f518d70b feat: add encoded data for profile sharing url (#18019) 2023-12-11 20:35:39 +08:00
frank 9c6584f91b ignore /.clj-kondo/rewrite-clj/rewrite-clj/config.edn which is generated by lint-fix (#18141) 2023-12-11 20:01:09 +08:00
Ajay Sivan 3cd230fed0 Addresses to share cards (#18123) 2023-12-11 00:53:14 -08:00
Ibrahem Khalil 1eb7504c12 Community requests to join when admin is offline (#17941) 2023-12-09 15:28:33 +02:00
Ulises Manuel 0ba057ae9d [#17965] Create token component (#18018)
* Create token component

* Replace token images by new token component

The new component is being used in the following components:
 - token-input
 - network-amount
 - token-tag
 - summary-tag
 - context-tag
 - token-value
 - token-network
 - preview-list

* Rename token image file: eth-token -> eth

* Remove resources/get-token function
2023-12-08 14:13:11 -06:00
Ulises Manuel 8b919f4058 [#17896] Raw balances using big number (#17920)
* Add `utils.money/add` version able to work with `nil`s

* Store token raw-balance as big-number

* Improve account balance calculations using `utils.money` existing functions

* Update `:wallet/tokens-filtered` sub

* Make `prettify-balance` able to work with bignumbers
2023-12-08 13:40:26 -06:00
flexsurfer f79860fb97 move blob to rn, remove unused code, move images events to status-im2 (#18117) 2023-12-08 17:27:21 +01:00
Parvesh Monu 7a6f05a440 fix sometimes add contact screen is closed by itself after scanning QR code (#18101) 2023-12-08 18:53:56 +05:30
Ulises Manuel de4e233884 [#17974] text combinations - username component (#17987)
* Move docstring to be available while using `colors/resolve-color`
* Add text combinations - username component and tests
* Add username related svg icons
2023-12-07 17:44:24 -06:00
Jamie Caprani 55a99da2f5 feat: enable biometrics for standard-auth (#17992) 2023-12-07 08:44:16 -08:00
Yevheniia Berdnyk 6093d56c90 e2e: increased wait time for PN and CR 2023-12-07 18:04:45 +02:00
Parvesh Monu 9cf4556b9d fix app is not opened on the last viewed chat after reopening (#18090) 2023-12-07 17:44:13 +05:30
flexsurfer 536ebf56cb remove obsolete code (#18094) 2023-12-07 11:40:23 +01:00
Siddarth Kumar 3ad345519b nix: bump clang to 15 & patch Glog for CC,CXX flag (#18108)
After upgrading MacOS to Sonoma and Xcode to 15, pod install stage would fail with clang errors.
Turns out that react-native's configure glog script sets 2 additional flags, CC and CXX which conflicts with flags already set in nix iOS shell.

In this commit we :

- bump clang from 10.0.0 to 15.0.7
- patch glog configure script to avoid setting those flags

This fixes the iOS builds.
2023-12-07 15:36:08 +05:30
Omar Basem dc587e493f Wallet: generate new keypair UI (#18045)
* feat: new keypair flow ui
2023-12-07 09:43:36 +04:00
Omar Basem f692ae2222 Wallet: ENS (#18000)
* wallet: ens
2023-12-07 08:00:56 +04:00
frank aa89ebdb93 fix: Marking AC notification as read does not affect correspondent message in chat (#18058) 2023-12-07 10:16:25 +08:00
Brian Sztamfater 198a4d74a5 feat: transaction confirmation page ui (#17812)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-12-06 20:16:08 -03:00
Yevheniia Berdnyk 3b5fe36717 e2e: added test for edit/delete message when offline 2023-12-06 23:19:17 +02:00
Icaro Motta 03444ae4ff Request to join screen - show modal title and community context tag (#18077) 2023-12-06 18:10:47 -03:00
Icaro Motta 390bbdb6ec Add missing clj-kondo linter for nubank/matcher-combinators (#18091) 2023-12-06 13:39:47 -03:00
Flavio Fraschetti 2bc7b62324 Communities - Display community rules at request to join (#18082)
This update introduces a feature that displays community rules to users as they join.
2023-12-06 13:21:17 -03:00
Yevheniia Berdnyk 4376ee8908 e2e: disabled checks because of issues with restored contacts and channel links 2023-12-06 16:57:31 +02:00
Roman Volosovskyi 195f0cfa40 Mark mnemonic as shown on revealing it to the user 2023-12-06 13:51:38 +01:00
Omar Basem ab61d8d5c0 Wallet: Set color and emoji (#17906)
* wallet: set color and emoji
2023-12-06 16:02:53 +04:00
mmilad75 aaf0b8e423 Implement transaction progress component (#17933)
* copy codes

* refactor preview

* refactor deprecated codes in view

* change condition structure in view-internal

* comment unused codes

* refactor title

* fix title style

* fix icon style

* fix context tag

* fix icon and row

* refactor icon-internal

* rename network-state and network-type

* fix progress-container style

* fix progress-box-container style

* fix progress container naming and style

* change progress-bar component

* fix progress box component

* convert to functional component and bring back the animation

* fix progress box for arbitrum-optimism network

* fix text-steps

* fix status-row

* refactor code style

* refactor get-network-text

* resolve comment

* add translations

* remove btn-title prop

* fix dark mode border color

* fix dark mode icon color

* move interval to preview

* add tests ns

* add tests

* fix lint issues

* fix rendering issue

* fix lint issue

* add arbitrum and optimism as separate networks

* create const for progress percentage

* fix progress bar component and preview

* refactor text-steps

* refactor names

* fix lint issues

* rename arbitrum-progress-percentage and optimism-progress-percentage

* update tests

* convert hard-coded color to customization-color

* fix progress_bar tests

* separate state for each network

* add progress percentage for each network and refactor params of functions

* separate epoch number for  each network

* update tests

* fix lint issues

* refactor codes

* fix lint issues

* resolve comments

* add confirmation progress

* use confirmation-progress component in transaction-progress

* fix preview

* add tests

* fix lint issue

* resolve comment

* refactor networks

* change sending state style

* update tests

* fix lint issues

* remove unused code

* add helper for calculate counter step

* add assoc-props to view-networks

* change text-internal props order

* fix colors/resolve-color usage

* refactor view codes

* add get-networks to preview

* add max-value to progress bar style

* remove threading macros in the previews

* remove inline functional components in the previews

* remove optimism-arbitrum checks in the view

* fix lint issues

* add max-progress and min-progress to confirmation-progress

* refactor text-steps

* fix counter structure in transaction-progress

* fix counter structure in confirmation-progress

* fix resolve-color usage

* fix lint issue

* fix tests

* resolve comments

* fix color issue

* fix margins

* fix lint issue
2023-12-06 14:09:52 +03:30
BalogunofAfrica 7e14846f0b fix: use custom color for confirm select (#18068) 2023-12-06 05:10:08 +01:00
frank 5ebd133c63 group ens names with chain-id (#18001) 2023-12-06 10:04:39 +08:00
Icaro Motta 563f1c588d Improve test failure readability (#18049)
Problem: failed equality checks as in "(is (= expected actual))" will give a
single, long line of output that for anything but the simplest data structures
is unreadable by humans, and the output doesn't give a useful diff.

Solution: use library https://github.com/nubank/matcher-combinators and its test
directive "match?" which will pinpoint where two data structures differ. Then,
instead of "(is (= ...", use "(is (match? expected actual)". It works
beautifully.

The library offers other nice matchers, but the majority of the time match? is
sufficient.

Can we use another test runner like Kaocha? kaocha-cljs2
(https://github.com/lambdaisland/kaocha-cljs2) would be able to print better
test errors out of the box, among other features, but I have no clue if it would
work well or at all in our stack (in theory yes, but it's a larger piece of
work).
2023-12-05 17:20:54 -03:00
Yevheniia Berdnyk 6b612588c4 e2e: skipped checks with bugs 2023-12-05 20:54:09 +02:00
Parvesh Monu 6ef113e821 fix messages are marked as read automatically in 1-1/group chats after opening a link (#18066) 2023-12-05 22:27:03 +05:30
Jamie Caprani c25f44c2a0 chore: make new wallet UI default, move set currency to legacy settings, remove add eth network on wallet init (#18027) 2023-12-05 06:35:27 -08:00
frank d039864dca fix: Duplicate 'Contact Added' Notifications When Pair-Device User Accepts Request (#17975)
https://github.com/status-im/status-go/compare/4cc53630...d7e7792b
2023-12-05 19:12:31 +08:00
Alexander a4f1f23d3c Style fixes for pinned messages (#18061)
* Style fixes for pinned messages

* Small code style update
2023-12-05 11:31:45 +01:00
flexsurfer fe20fa4e99 move transport (#18062) 2023-12-05 09:35:17 +01:00
Omar Basem 5c30fd847a Wallet: account real data (#17821)
* wallet: account real data
2023-12-05 10:56:37 +04:00
John Ngei 64de325678 update scan qr code page
* update scan qr code page

* update scan qr code page

* fixed: populate the search input with new identity

* dismiss keyboard when scan qr page is activated
2023-12-05 02:56:27 +03:00
Volodymyr Kozieiev 489557c1a3 Match the changes in collectibles api in status-go (#18033) 2023-12-04 16:44:56 +00:00
Icaro Motta 439fdfa12c Rename effects to :effects.*/* and move them to separate namespaces (#18047) 2023-12-04 12:55:57 -03:00
Mohsen f695dbf115 [#17909] fix: unhandled error when app launched in offline mode (#17973) 2023-12-04 17:48:45 +03:00
flexsurfer 7c45b1e075 update deps (#18056) 2023-12-04 14:49:51 +01:00
flexsurfer 64453716b0 rename onboarding 2 (#18060) 2023-12-04 14:49:05 +01:00
Mohamed Javid 56d135f1f8 Implemented Wallet - Account Switcher (#18003)
This commit:

- Implements the Wallet Account Switcher for easy switching between wallet accounts
- Updates the About tab in the accounts screen to display the correct account address and derivation path along with the profile.
- Updates the account-item component to pass the state from the parent and refactors the depreciated color functions
- Moves the handle-bar in the bottom sheet to a standalone component 
- Adds customization-color in account-origin component

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-12-04 18:47:03 +05:30
Mohsen a7178a4950 [#17572] fix: 'Join Community' notification is not getting dismissed (#17834) 2023-12-04 15:24:06 +03:00
Siddarth Kumar 3cd302b271 fix: get rid of :redef-in-file warning (#18053) 2023-12-04 14:18:43 +05:30
yqrashawn 1e797273b6 fix: change system time backward break image server (#17989) 2023-12-04 16:12:50 +08:00
frank 8ff67bf344 fix: Cannot mark as read messages in communities (#18029)
* fix: Cannot mark as read messages in communities

* rename messenger-response to _messenger-response
2023-12-02 09:05:21 +08:00
Ulises Manuel 3fee21c73a [#17923] text combinations - standard title component (#17939)
* Simplify tag components by turning them to from-1

* Add standard-title component, preview screen and tests
2023-12-01 15:49:49 -06:00
Jamie Caprani f9f328107d chore: add ability to create watch address & some related ui changes on account page (#17868) 2023-12-01 04:29:01 -08:00
Yevheniia Berdnyk 04dee8be45 e2e: updated data for waku backup test 2023-12-01 12:28:26 +02:00
Alexander 52f7fc59ee Updated data-item, monospaced & aligned address (#18008)
* Upd

* Fix
2023-12-01 10:03:08 +01:00
Mohamed Javid b5202b4d28 [Feature] Added activity check on entered watch address (#17970)
This commit 
 - implements the activity check for the entered watch address.
 - added warning colors
 - fixes bottom inset in add address to watch screen

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-12-01 00:28:09 +05:30
Andrea Maria Piana 210cf64ce0 Fix panic syncing community token gated
https://github.com/status-im/status-go/compare/8a4c2d8d...8206ffc7
2023-11-30 13:49:47 +00:00
Lungu Cristian ed270b2162 Enabling biometry without password during sync (#17960)
* feat: added migration for the keychain hashed password

* feat: added sync biometry without password entry

* fix: biometry typo from develop

* ref: moved migration side-effects outside the event

* ref: some renaming for keychain migration

* ref: addressed @cammellos' review comments

* ref: removed unnecessary anon fn

* fix: addressed @ilmotta's review comments

* ref: removed theme from enable-biometrics

* ref: addressed J-Son89's review comments

* test: added tests for mask-data and hash-masked-password

* test: added schema to hash-masked-password and fixed test

* fix: forgot the threading

* ref: improved the masked data schema

* fix: no biometry error when canceled by user

* fix: biometry error wasn't propagated during login

* fix: alert dismiss button not passed properly

* fix: show biometrics NOT_ENROLLED error only once

* lint: removed unused require
2023-11-30 13:40:29 +02:00
Andrea Maria Piana d412fa3c63 Set up skeleton for communities request to join 2023-11-30 09:49:43 +00:00
Yevheniia Berdnyk b7f675aa5c e2e: fix for deep links test 2023-11-30 01:09:42 +02:00
Volodymyr Kozieiev bfa23c182f Add requirement for component tests (#18015) 2023-11-29 18:50:49 +00:00
Mohsen 6b721265af [#17986] feat: implement new settings ui, header section (#17991) 2023-11-29 20:54:11 +03:00
Jamie CapraniandRende11 589a581298 chore(wallet): add ui for send page (#17786) - merged in (#18017)
---------
Co-authored-by: Rende11 <artamonovn@gmail.com>
2023-11-29 05:12:21 -08:00
Yevheniia Berdnyk 0546a87e9a e2e: deep links tests added 2023-11-29 14:09:31 +02:00
Parvesh Monu e5ce7fed3a fix position of the last item in the community chat list and the position of the jump-to button (#17999) 2023-11-29 16:45:30 +05:30
Siddarth Kumar 58d5c3d7a5 don't restrict diawi upload for iOS release builds (#18016)
This commit removes the restriction of uploading iOS release builds to Diawi

Its helpful to have the status app uploaded to Diawi to test release builds on our iPhones.

The installer is very straightforward and makes life easier when we want to try out release builds.
2023-11-28 22:46:58 +05:30
Ibrahem Khalil 6ccea1ddb2 Continue button is invisible behind keyboard in Add Address To Watch … (#17940) 2023-11-28 18:38:06 +02:00
Alex Tumanov a9a17aaae8 Implement dropdown-input based on the original dropdown component (#17927) 2023-11-28 15:21:15 +00:00
Andrea Maria Piana 6d69c278cd Update key in tests 2023-11-28 10:57:10 +00:00
Yevheniia Berdnyk c7e230d070 e2e: changed test order 2023-11-28 12:05:47 +02:00
frank d309aa366d chore: specify light client mode for wakuv2 (#18002) 2023-11-28 14:48:58 +08:00
Jamie Caprani f124ca4252 chore(wallet): add common page-nav component for account switcher (#17946) 2023-11-27 09:16:31 -08:00
Brian Sztamfater 1385e27cf4 feat: select asset screen ui (#17780)
feat: select asset screen ui

Signed-off-by: Brian Sztamfater <brian@status.im>
2023-11-27 11:03:02 -03:00
Volodymyr Kozieiev f82d28c6c9 Show network info on collectible info page (#17980) 2023-11-27 12:29:12 +00:00
Omar Basem a2856cf1c3 Wallet: Emoji picker performance (#17891)
Wallet: Emoji picker navigation perf
2023-11-27 09:57:29 +04:00
Yevheniia Berdnyk e6a7c420a2 e2e: APK upload time limit increased 2023-11-23 12:34:30 +02:00
alwx 671aa67002 Detect image dimensions correctly 2023-11-23 09:28:38 +00:00
Omar Basem dbc8df251a Wallet: Keypair follow up (#17953)
* Wallet: Keypair follow up
2023-11-23 10:00:22 +04:00
Ulises Manuel 279993b658 Add channel-name component (#17903) 2023-11-22 15:54:52 -06:00
Volodymyr Kozieiev 0c1a18b444 Connect collectible overview page to backend (#17884) 2023-11-22 19:40:26 +00:00
Omar Basem 73e9f67dbd Wallet: illustrations (#17931)
* wallet: illustrations
2023-11-21 10:55:46 +04:00
Jamie Caprani 86c5505c94 chore(wallet): hook up qr scanner on watch only flow. (#17829) 2023-11-19 16:26:00 -08:00
Icaro Motta c1dcd7a764 Introduce malli library (#17867)
This commit is the foundational step to start using malli
(https://github.com/metosin/malli) in this project.

Take in consideration we will only be able to realize malli's full power in
future iterations.

For those without context: the mobile team watched a presentation about malli
and went through a light RFC to put everyone on the same page, among other
discussions here and there in PRs.

To keep things relatively short:

1. Unit, integration and component tests will short-circuit (fail) when
   inputs/outputs don't conform to their respective function schemas (CI should
   fail too).
2. Failed schema checks will not block the app from initializing, nor throw an
   exception that would trigger the LogBox. Exceptions are only thrown in the
   scope of automated tests.
3. There's zero performance impact in production code because we only
   instrument. Instrumentation is removed from the compiled code due to the
   usage of "^boolean js.goog/DEBUG".
4. We shouldn't expect any meaningful slowdown during development.

**What are we instrumenting in this PR?**

Per our team's agreement, we're only instrumenting the bare minimum to showcase 2 examples.

- Instrument a utility function utils.money/format-amount using the macro
  approach.
- Instrument a quo component quo.components.counter.step.view/view using the
  functional approach.

Both approaches are useful, the functional approach is powerful and allow us to
instrument anonymous functions, like the ones we pass to subscriptions or event
handlers, or the higher-order function quo.theme/with-theme. The macro approach
is perfect for functions already defined with defn.

**I evaluated the schema or function in the REPL but nothing changes**

- If you evaluate the source function, you need to evaluate schema/=> or
  schema/instrument as well.
- Remember to *var quote* when using schema/instrument.
- You must call "(status-im2.setup.schema/setup!)" after any var is
  re-instrumented. It's advisable to add a keybinding in your editor to send
  this expression automatically to the CLJS REPL, or add the call at the end of
  the namespace you are working on (similar to how some devs add "(run-tests)"
  at the end of test namespaces).

**Where should schemas be defined?**

For the moment, we should focus on instrumenting quo components, so define each
function schema in the same namespace as the component's public "view" var.

To be specific:

- A schema used only to instrument a single function and not used elsewhere,
  like a quo component schema, wouldn't benefit from being defined in a separate
  namespace because that would force the developer to constantly open two files
  instead of one to check function signatures.
- A common schema reused across the repo, like ":schema.common/theme" should be
  registered in the global registry "schema.registry" so that consumers can just
  refer to it by keyword, as if it was a built-in malli schema.
- A common schema describing status-go entities like message, notification,
  community, etc can be stored either in the respective
  "src/status_im2/contexts/*" or registered globally, or even somewhere else.
  This is yet to be defined, but since I chose not to include schemas for them,
  we can postpone this guideline.
2023-11-18 11:04:48 -03:00
Icaro Motta 17ebedd6b8 Fix: resolve our Clojure source dependencies first in the classpath (#17919)
In PR https://github.com/status-im/status-mobile/pull/17867 we have a namespace
named schema.core, but this namespace is taken by library prismatic/schema
already (see https://github.com/plumatic/schema/tree/master/src/cljc/schema), a
library used by our direct dependency on bidi 2.1.6. This leads to a broken
build where the ClojureScript compiler reports undeclared vars
(https://clojurescript.org/reference/compiler-options#warnings).

We change the order Java resolves dependencies via the classpath mechanism. We
now first resolve our own Clojure sources, and then project dependencies.
2023-11-18 08:50:11 -03:00
Jamie CapraniandUlises M 2e2d15adfb chore: add floating button page component (#17737)
Co-authored-by: Ulises M <ulises.ssb@hotmail.com>
2023-11-17 09:16:55 -08:00
Yevheniia Berdnyk 1d1d586223 e2e: added back status link opening 2023-11-17 18:09:57 +02:00
John Ngei 88dd5e04bb enable biometric when user signs in with syncing (#17627) 2023-11-17 17:58:51 +03:00
Lungu CristianandIbrkhalil 8f8c8dede2 Composer collapsing when editing canceled/done (#17785)
* fix: composer height when entering and canceling edit

* fix: blur the composer input when canceling edit

* fix: focusing animation and composer height after blur

* fix: input height when canceling edit while unfocused

* ref: removed arbitrary keyboard check

* fix: moved edit-mentions logic to use-edit to fix unresolved mention

* fix: composer edit should put the cursor at the end

* fix: (potentially) fixing the mention not resolved during edit

* fix: emoji-kb handler changing the height when default kb appears

* Fix text content when editing and reentering chat

* prevent composer when focusing on opening chat with edit/reply

* clean

* Clauxx comments

* Apply for reply

* Lintil soup = yummy

* refactor variable name

* Extract the focusing logic from the data setting logic

* Edge case

* fix: composer mention key & edit re-enter issues

* fix: reply cancel input blur and smooth reply focus

---------

Co-authored-by: Ibrkhalil <vampirekid017@gmail.com>
2023-11-17 11:32:31 +02:00
Yevheniia Berdnyk 2e0643fabe e2e: fixes 15.11 2023-11-16 15:54:35 +02:00
Flavio Fraschetti ec4046e543 Hide channel list at token-gated communities overview (#17901)
This commit hides the categorized channel list for token-gated communities overview.
2023-11-16 10:46:17 +00:00
yqrashawn 4a44161163 chore: lint require i18n-resources first in status-im2.core (#17905) 2023-11-16 11:10:40 +08:00
Icaro Motta b9353b1ccd Fix: actually run integration tests (#17900)
Integration tests weren't running since https://github.com/status-im/status-mobile/pull/17762 was merged a week ago.

This commit also allows individual integration test namespaces to run if you change the :ns-regexp option in shadow-cljs. This is quite handy, since they are relatively slow.

Fixes https://github.com/status-im/status-mobile/issues/17895
2023-11-15 19:51:09 -03:00
jakub 5ceb7c2215 tests/appium: use requests for fetching APK
Also add more context for the error.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-15 18:08:11 +01:00
jakub 2043e9353b tests/appium: refactor conftest.py to be more readable
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-15 18:08:10 +01:00
flexsurfer 7153e4da48 [#17854] [IOS] The tutorial video animation keeps playing after openi… (#17915) 2023-11-15 16:24:27 +01:00
Icaro Motta c7cba5b4d3 Fix: unable to join token-gated communities (#17894)
Fixes the bug by explicitly passing all available addresses to be revealed
to wakuext_requestToJoinCommunity and picking up the first available address
as the airdrop address. This is a temporary solution while we work on the
feature to allow users to choose which addresses to expose.

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

*Areas that may be impacted*: join community flows.

    ----------------------------------------------------------------------
    Community "Request to join" option is enabled.
    User holds more than X ETH.
    Anyone who holds <X> ETH is allowed to Become member in <COMMUNITY>.
    
    Expected: request to join is received by desktop client and accepted,
    mobile user joins the community.
    ----------------------------------------------------------------------
    
    ----------------------------------------------------------------------
    Community "Request to join" option is enabled.
    User holds less than X ETH.
    Anyone who holds <X> ETH is allowed to View and post in <CHANNEL>.
    
    Expected: request to join is received by desktop client and accepted, mobile
    user joins the community, but can't post in <CHANNEL>.
    ----------------------------------------------------------------------
    
    ----------------------------------------------------------------------
    Community "Request to join" option is enabled.
    No token permissions.
    
    Expected: request to join is received by desktop client and accepted,
    mobile user joins the community.
    ----------------------------------------------------------------------
2023-11-15 06:39:12 -03:00
Ulises Manuel 45df308dd0 [#17823] Refactor tokens data app-db (#17880)
* Refactor edit-account view and events:

 - Fix `(fn [])` code style.
 - Avoid overriding clojure.core/type by destructuring the `:type` key.
 - Split the toast callback to a different function.
 - `:wallet/save-account` receives `:on-success` instead of `:callback` to improve readability.

* Refactor app-db for `:wallet/tokens` & `:wallet/tokens-loading?`

- Remove the root sub `:wallet/tokens-loading?`, now it's in app-db in `[:wallet :ui :tokens-loading?]`.
- Remove the root subs `:wallet/tokens`, now the value is returned along with the account data by the sub
  `:wallet/accounts`, it's stored in app-db in `[:wallet :address "0x..." :tokens]`.
- Fix the format of the token data returned by the endpoint `"wallet_getWalletToken"` and the fn `js->clj`,
    - Addresses are no longer keywords (since keywords mustn't start with a number).
    - Keys are now kebab-case.
    - Chain-ids are no longer keywords, now they are integers.
- Update tests.

* Move logic to calculate `:wallet/balances` and change value returned

- Move logic to `status-im2.contexts.wallet.common.utils`
- The `:wallet/balances` value returned by the sub had the following structure:
  [{:address "0x1...", :balance 12345}
   {:address "0x2...", :balance 67890} ...]
  This required a helper function to get the balance for an address (`get-balance-by-address`)
  It has been changed to a map:
  {"0x1..." 12345
   "0x2..." 67890, ...}
  So now we don't need a helper function (just the hashmap itself or `clojure.core/get`).
- Because of the previous change, now the `get-balance-by-address` has been removed.
- The function `get-account-by-address` has zero uses, so it has been removed.
- The test for the sub has been updated.

* Create sub `:wallet/account-cards-data`

This sub returns a vector of maps to render the account cards in the wallet page.
This logic was previously in the `view` namespace, but it was completely calculated from
the subs `:wallet/accounts`, `:wallet/balances` and `:wallet/tokens-loading?`, so it was
clear that's a derived value.
2023-11-14 10:54:26 -06:00
Brian Sztamfater a74c934936 feat: implement summary tag component (#17858)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-11-14 11:50:58 -03:00
andrey c150070cfe remove empty files 2023-11-13 14:50:45 +01:00
Ibrahem Khalilandbalogunofafrica 1b745857e8 [17634] Start rendering syncing UI ASAP (#17755)
* Start rendering syncing UI ASAP

* Consolidating values

* fix: show syncing ui immediately

* fix: error validation

---------

Co-authored-by: balogunofafrica <balogunakanbi.k@gmail.com>
2023-11-13 12:15:53 +01:00
Omar Basem 87c9946092 Wallet: Keypair Screen (#17775)
* wallet: keypair screen
2023-11-13 14:43:43 +04:00
Omar Basem f3e47ac1a2 Wallet: watch address - select random color (#17859)
Wallet: randomize color picker
2023-11-13 14:25:44 +04:00
Yevheniia Berdnyk 83a7402210 e2e: fix for terminated session 2023-11-13 02:27:36 +02:00
Siddarth Kumar 3c297bf5b4 chore: ignore auto generated lint-fix files (#17783)
We get these 2 files auto generated locally as part of make lint-fix

`.clj-kondo/taoensso/encore/config.edn`
`.clj-kondo/taoensso/encore/taoensso/encore.clj`

We don't need them checked in its fine if they're ignored.
This commit adds these folders to `.gitIgnore`

- `.clj-kondo/taoensso/`
- `.clj-kondo/babashka/`
2023-11-10 18:12:03 +05:30
yqrashawn b4919261cb fix: nav conflicts when return from bg from link (#17853) 2023-11-10 09:15:02 +08:00
Icaro Motta ffeb06f36c Communities - Token gated community fixes (#17799)
- Fix: when there are only channel token permissions, don't show the text "You
  hold 0 of these:" because there are no requirements to show.
- Fix: do not show channel token permissions when the user wants to join a
  community. In other words: only "become admin", "become member", "become token
  master", and "become token owner" are taken in consideration.
- Fix: render correct channel lock icon in 3 states (no permission, with
  permissions and locked and with permissions and unlocked).
- Fix: Previously, before having joined a community, all channels had a lock
  icon closed, now the lock icon is only closed when there's a permission set,
  otherwise no icon is shown (the lock is never open before the user joins the
  community).
- Fix: small UI spacing fix, only display community tags component when there's
  at least one tag.
- Bonus fix: community Overview and Discover screens top bar had a regression,
  see the screenshots.

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

### Areas that may be impacted

- Community overview, before and after joining a community.

### Steps to test

Code tested using the Goerli network and with the testnet flag enabled in the
Desktop client. Out of scope: minted tokens.
2023-11-09 20:19:26 -03:00
flexsurfer 69f87ce8b0 [#17611] move status-im.utils.universal-links.core (#17855) 2023-11-09 21:22:15 +01:00
Andrea Maria Piana 27e27aa113 Add contribution status-go doc 2023-11-09 15:34:20 +00:00
Ajay Sivan e48a5c4e83 Quo community-stat component (#17851) 2023-11-09 04:39:42 -08:00
Mohamed Javid 595b1cfc40 [Fix] Move category selector height to emoji picker (#17844)
This commit moves the emoji categories selector height from the "showcase-nav" component to the "emoji-picker" as we should not use any "quo" ns (except "quo.core") inside the "status-im2" ns.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-11-08 23:56:56 +05:30
Volodymyr Kozieiev e573fc914a Respect status-go API changes for collectibles request (#17857) 2023-11-08 18:01:33 +00:00
Yevheniia Berdnyk 4eda8bb6b3 e2e: temp fix for opening a link in Status 2023-11-08 18:47:56 +02:00
Volodymyr Kozieiev bd6a9e577c Updated to status-go with fixed timeouts (#17831) 2023-11-08 15:08:52 +00:00
Mohamed Javid 6bb1779723 Implement edit account and refactor wallet accounts events & subs (#17798)
This commit updates the following:

- Allow users to create new wallet accounts without having to re-login (latest account data is fetched immediately)
- Updates the max length of the wallet account name to 20
- Updates the account cards in the wallet home screen to render the actual account colour
- Updates the (individual) account screen to show the correct color, emoji, name and address
- Allows users to edit account name, colour and emoji
- The rest of the wallet screens would see the updated account information immediately
- Fixes the color (uses profile color) of the context tag and button color in the authentication (enter password) bottom sheet
- Fixes the overflowing of the "+" card in the wallet home when there are two or more accounts.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-11-08 20:09:32 +05:30
codemaster 742c451000 fix: message content text alignment and spacing (#17606) 2023-11-08 05:40:26 -08:00
Alex Tumanov 569036c1d8 Add a button to address watch screen; (#17781)
Add account creation screen

remove icons

remove extra utility and create a new one that would use conventional way of getting an emoji

fix lint

Use button component instead of bottom-actions

Provide global customization color to buttons

Use conventional approach to extract account name

Move to another address

Move to another namespace

Refactor bottom-actions to have button props in maps

Update doc with new icon location

Add spaces between styles

Work on pr comments

Use :on-change-text instead of :on-change for input component
Subscribe to :profile/customization-color directly
Use bottom button from the create-or-edit-account wrapper

Remove extra code
Sort requires

Move ns to proper fileˆ

Fix styles
2023-11-07 16:40:24 +00:00
Brian Sztamfater 188f7f461e feat: address (mocked) suggestions (#17579)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-11-07 12:04:37 -03:00
Yevheniia Berdnyk 422004f146 e2e: fix for creating a new user 2023-11-07 14:43:30 +02:00
David Martin cb005afff2 Split up integration tests (#17762) 2023-11-07 16:47:02 +05:30
Dmitri Akatov a5bb95cd18 add translation linting to the "make lint" pipeline. (#17820) 2023-11-07 11:33:59 +01:00
frank 20ac5cfa41 use timesource(synced) to generate/validate server cert time (#17771) 2023-11-07 16:36:27 +08:00
Dmitri Akatov 1755780950 make clj-kondo hook's name match the fully qualified name of the symbol it's linting (#17817) 2023-11-07 07:10:36 +01:00
Omar Basem a6d7502455 Wallet: bridge screen (#17758)
* wallet: bridge screen
2023-11-07 07:22:38 +04:00
yqrashawn 701df811b0 feat: lint direct require quo component outside src/quo (#17828) 2023-11-07 10:21:58 +08:00
Dmitri Akatov b47c97a4fd Mark utils.re-frame/defn as deprecated (#17788)
Also suggest to use utils.re-frame/reg-event-fx instead of utils.re-frame/defn
2023-11-06 19:09:40 -03:00
Siddarth Kumar 4ac7f0bdda update docs & makefile for iPhone 13 (#17784)
The design team has now decided to keep iPhone 13 as the baseline standard instead of iPhone 11 Pro.

This commit updates the docs on pixel perfection and starting guide.
We also update the default simulator to iPhone 13 for `make run-ios`
2023-11-06 23:55:06 +05:30
Volodymyr Kozieiev 4490676398 Collectibles list on accounts page connected to backend (#17751)
* Collectibles list displayed
2023-11-06 16:39:49 +00:00
Ibrahem Khalil ee019f79f2 Show success toast when user joins community. (#17815) 2023-11-06 16:22:15 +02:00
Alexander dc571b6067 Getting rid of status-im.multiaccounts.core + removing three word random names (#17384) 2023-11-06 14:38:14 +01:00
Dmitri Akatov fb8a7d2d8e proper use of ens-username-owned-continue translation key (#17819) 2023-11-06 09:00:00 +01:00
Dmitri Akatov ac8458d304 remove outdated i18n-test namespace (#17816) 2023-11-06 08:59:34 +01:00
Dmitri Akatov c13b86b882 add Goerli network English translation (#17818) 2023-11-06 07:34:41 +01:00
Siddarth Kumar 609eb04cff stop package bot from complaining (#17810)
fix for warning : Address should end with .git for consistency.
2023-11-04 11:58:19 +05:30
Yevheniia Berdnyk f1de077d9d e2e: making 2 tests independent 2023-11-03 18:02:16 +02:00
Ajay Sivan aa6d44bee1 Adapt to status-go API Changes for Request to Join Community Flow (#17800) 2023-11-03 08:57:56 -07:00
jakub 2a4bb84e35 fix script path for resolving ANDROID_ABI_INCLUDE
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-11-03 15:10:08 +01:00
Ibrahem Khalil 132e53844c New TopBar animation (#17582) 2023-11-03 14:20:10 +02:00
Mohsen 8d3558f1c3 [#17647] fix: generate keys title overlap (#17752) 2023-11-03 14:35:42 +03:00
Alex Tumanov 0eef5204c8 Implement wallet user avatar to match designs (#17703) 2023-11-02 20:29:09 +01:00
Mohamed Javid 9a5ed62e1f [Refactor] selectors component (#17763)
This commit updates the following in the selectors component:

- Introduces the "type" prop (Figma 1-1 property) to the selectors component for easy switching between the selector types while using it on lists.
- Updates the component styles to use the "resolve-color" function as the "custom-color" function is deprecated
- Updates the component usage across the codebase

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-11-02 23:54:59 +05:30
flexsurfer e6068fd4c1 small ns changes (#17793) 2023-11-02 14:23:34 +01:00
Yevheniia Berdnyk 579b382c44 e2e: fix for edit message with a mention 2023-11-02 12:38:26 +02:00
yqrashawnandpavloburykh 859cb19886 fix(universal-link): more new link format, handle old link format (#17721)
Co-authored-by: pavloburykh <pavlo@status.im>
2023-11-02 15:31:49 +08:00
Omar Basem 2d92b515b8 Documentation: composer (#17756)
* Docs: composer
2023-11-02 08:53:22 +04:00
Icaro Motta 972e1eee01 Composer - Fix conflicting touchable and gesture (#17680)
Fix the unreliable swipe behavior of link previews in the chat composer. In many
occasions, we noticed the horizontal scroll wasn't being triggered properly or
not at all. In other occasions, the swipe gesture would incorrectly register a
press on the parent `Touchable` component.

Fixes https://github.com/status-im/status-mobile/issues/16599
2023-11-01 13:31:14 -03:00
Ibrahem Khalil 6c2b437e62 Follow up to fix color picker on wallet (#17748) 2023-11-01 15:18:53 +02:00
Nikolay 94a3e266a9 Edit derivation path (#17741) 2023-11-01 14:04:21 +01:00
Lungu Cristian 716007dc3c fix: removed bounce from lightbox text-sheet (#17664)
fix: improving UI and gestures

fix: expanding on press now works reliably

fix: center text and disable gestures for short messages

feat: added styling for one-lined messages

fix: small opacity fix

ref: small condition change

fix: horizontal swiping being unreliable with vertical scrolling

ref: reusing shared value from lightbox animations

fix: text-sheet bottom gradient not visible on android

fix: addressed qa issues 1,2,4

fix: zoomable-image stuck if moved vertically when full screen

clean: removed unused var

chore: removed unused require

fix: don't allow returning text-sheet down and up in one move

fix: text-sheet bar styling was wrong

fix: adjusted gradient animation with designs

fix: text-sheet bar opacity
2023-11-01 13:20:10 +02:00
Mohsen 233d1b3261 [#17288] refactor: migrate previews to new api (#17776) 2023-11-01 11:31:32 +03:00
Yevheniia Berdnyk 25381b601f e2e: test for sending image with camera 2023-10-31 23:23:04 +02:00
Ulises Manuel 4a874ce48d [#17023] Share qr code variants (#17736)
* Align docstring

* Create share-qr-code component

* Remove empty style file

* Implement common.share-qr-code including call to media server

* Add share-qr-code preview screen

* Use share-qr-code component in shell's share screen

* Add tests and some fixes
2023-10-31 12:35:28 -06:00
mmilad75 ca822ff51d Connect Wallet Home Page to backend - Accounts card (#17447)
* add functionality

* fix lint issues

* change class component to functional component

* fix refactor-data function

* rename events and fix reagent-render structure

* change rf/defn to re-frame/reg-event-fx

* convert camelCase to kebab-case

* refactor on-error callback

* refactor on-success callback

* replace merge with assoc and conj

* refactor calculate-balance structure

* rename reagent-render

* move calculate-balance into a sub

* use created sub in the view

* fix lint issues

* move calculate-balance function to wallet sub

* change on-success callback

* revert podfile.lock

* remove extra line

* add template for test

* edit calculate-balance and calculate-raw-balance

* add tests

* revert podfile.lock and fix lint issues

* rename refactor-data

* add toFixed to get-balance

* fix lint issues

* finalize code

* replace re-frame/reg-event-fx with rf/defn

* resolve comments

* remove use-fixtures in the test

* break down calculate-balance

* fix lint issues

* fix placeholder color

* move accounts to view-internal

* remove accounts param in wallet-2/get-wallet-token

* Connect Wallet Account Page to backend (basic) (#17700)

* pass address to wallet-accounts screen

* move get-balance-by-address to common/utils

* add functionality

* fix lint issues

* move logic to sub

* convert filter+first to some

* change code structure

* rename wallet-2 to wallet

* add tests

* fix lint issues

* fix style

* remove unused code

* remove view-internal defn

* fix lint issues

* fix networks param issue

* fix .toFixed issue
2023-10-31 21:48:21 +03:30
Yevheniia Berdnyk 88b3d7d2e6 e2e: fix for app closed after closing gallery 2023-10-31 12:04:46 +02:00
Yevheniia Berdnyk 90d3a5a39d e2e: test fixes 2023-10-31 02:21:52 +02:00
Mohamed Javid dd8beeb848 [Fix] "network-routing" component test (#17760)
This commit moves the "network-routing" component test to the quo ns from quo2 ns.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-10-30 20:51:31 +05:30
Ajay Sivan abbf29d4ca Remove all status-im.ui.components.react usages in status-im2 (#17750) 2023-10-30 06:37:28 -07:00
Parvesh Monu cebec10aa5 fix bottom message in the chat history is hidden behind the composer with an image in it (#17757) 2023-10-30 15:46:16 +05:30
Smoothieewastaken 55b233c528 docs: Fixed typos (#17749) 2023-10-30 08:06:52 +01:00
Omar Basem 68ad4fe086 Wallet: Address Text (#17732)
* Wallet: address text
2023-10-30 09:40:39 +04:00
Jamie Caprani 06c31f3a12 chore: add sub to get network info (#17650) 2023-10-27 03:54:58 -07:00
Lungu Cristian 954373105d Visual debugging of components (#17729)
* feat: debug/show components from the REPL

* ref: some renames and cleanup

* chore: removed comments/imports

* feat: added remount on every eval & small changes

* doc: added tip to debugging doc

* doc: formatting

* doc: more formatting

* fix: fixed docs and other review comments

* fix: moved & renamed into the dev.component-preview ns

* style: adjusted debugging readme spacing

* fix: removed trailing line
2023-10-27 13:14:01 +03:00
Mohsen 2aeafa30bd [#17423] fix: update sync flow (#17731) 2023-10-27 11:16:56 +03:00
Parvesh Monu 5920c35677 Fixed Some Grammatical Errors in README.md (#17716)
Author: Janumala Akhilendra <82641474+JanumalaAkhilendra@users.noreply.github.com>
2023-10-27 13:17:16 +05:30
Ulises Manuel 1f71883fa4 [#16755] - Network routing component (#17457)
* Add network routing component & animations
* Add basic tests and accessibility labels
2023-10-26 16:07:44 -06:00
Siddarth Kumar c9b3196203 improve make component-test robustness (#17743)
Many times devs run
`make component-test` or `make component-test-watch` when there is already a metro or clojure terminal running on their system.

This causes weird behaviour and it is advised to not run these commands together.

This commit prevents that and shows a warning.
2023-10-26 23:24:23 +05:30
mmilad75 6ebd5b421c Fix account-card component UI (#17589)
* add new type

* fix lint issues

* add tests

* refactor get-test-data function

* resolve comments

* fix imports

* resolve comments

* fix lint issues

* remove extra code

* fix height
2023-10-26 16:46:24 +03:30
Ibrahem Khalil 901644e023 Make color selector take full 0device width to match Figma and add dynamic width (#17465) 2023-10-26 13:20:40 +03:00
Mohsen df256bf2b4 [#17534] fix: Add contact scan QR screen back handler issue (#17694) 2023-10-26 12:38:47 +03:00
Jamie Caprani 56492949f1 feat (wallet): add ability to create new account (#17496) 2023-10-26 01:45:33 -07:00
frank ab2ad0ec12 Don't sync AC notifications, only decisions/state (#17600)
* fix outgoing contact request state not show correctly

* update status-go-version.json
2023-10-26 14:44:06 +08:00
Ibrahem Khalil fe2272b703 Fix Composer not focusing on edit/reply (#17640) 2023-10-26 05:43:49 +03:00
Icaro Motta c0b21aa315 Document how to auto-format Clojure files in VSCode with zprint (#17719)
Document how a VSCode user can configure their editor to auto-format
Clojure(Script) files that respect all the formatter (zprint) settings specified
in status-mobile/.zprintrc.

The result should be that on every file save, the file should be identically
formatted as if you used make lint-fix, at least the part about zprint. If
lint-fix does other things now or in the future that are outside the scope of
zprint, those won't be covered by the VSCode extension.
2023-10-25 23:19:56 -03:00
Nikolay 876b020a32 Token network component (#17667) 2023-10-25 13:35:42 -07:00
Mohsen 8ed7059aa9 [#17230] fix: fetch group member info (#17726) 2023-10-25 21:26:34 +03:00
Omar Basem 125c117bac wallet: token value drawer (#17730)
* wallet: token value drawer
2023-10-25 15:45:45 +04:00
Parvesh Monu 078976806a Don't display "Add Unknown as contact to send a Message" if chat is not loaded (#17704) 2023-10-25 16:38:01 +05:30
Omar Basem 07dd42a7d3 Wallet: Network Preferences drawer (#17710)
* Wallet: Network Preferences drawer
2023-10-25 14:55:17 +04:00
Ajay Sivan 3197adf855 Refactor tag preview screens to new api (#17549) 2023-10-25 03:19:37 -07:00
Ibrahem Khalil 8296bda85b Fix recent album not showing count (#17498) 2023-10-24 17:23:16 +03:00
flexsurfer ca2b3abb1c old wallet fixes (#17697) 2023-10-24 15:36:10 +03:00
Ibrahem Khalil b910f05286 Update react-native-camera-kit to latest beta to enable programmitcal zooming (#17708) 2023-10-24 11:48:36 +03:00
Mohsen c42fc5153d [#17288] refactor: migrate previews to new api (#17695) 2023-10-23 20:40:22 +03:00
codemaster 221c501279 fix: remove qa-only features(unicorn, skull) (#17594) 2023-10-23 22:33:09 +10:00
diana 071d8f0925 e2e: new link format 2023-10-23 11:26:53 +02:00
yqrashawn 04a7f76271 feat: support new universal/deep link format (#17480) 2023-10-22 09:50:48 +08:00
Icaro Motta ca6fd3df66 Upgrade Clojure libraries (#17690)
Upgrades and cleans up all production Clojure dependencies and 1 dev-only
dependency (com.taoensso/tufte).

- Remove warning "WARNING: update-keys already refers to:
  #'clojure.core/update-keys in namespace: io.aviso.exception"
- Remove hickory and mvxcvi/alphabase dependencies they are not used.
- Upgrade com.taoensso/tufte from 2.1.0 to 2.6.3
- Upgrade transit-cljs from 0.8.248 to 0.8.280
- Upgrade cljs-bean from 1.3.0 to 1.9.0
- Remove workaround for com.taoensso/timbre in shadow-cljs.edn
- Upgrade com.taoensso/timbre from 4.10 (Status fork) to 6.3.1
2023-10-20 20:47:23 -03:00
Lungu Cristian 337b1d77d0 fix: crash when selecting photos from cameraroll (#17691) 2023-10-20 22:19:44 +03:00
Yevheniia Berdnyk 17e9ce7513 e2e: added test for Add contact validation 2023-10-20 16:17:11 +03:00
Yevheniia Berdnyk 6436e82990 e2e: join community when node owner is offline 2023-10-20 16:05:21 +03:00
R Adithya KumarandLungu Cristian 7642adf32c [#17395] Temporarily disables image options in edit mode (#17488)
Co-authored-by: Lungu Cristian <lungucristian95@gmail.com>
2023-10-20 14:02:31 +03:00
jakub 2df7a7cf6d nix: do not exclude module files from Gradle deps
This is necessary for the React Native `0.72.5` build to work.
https://github.com/status-im/status-mobile/pull/17241

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-19 14:06:39 +02:00
flexsurfer 4a8a23a4c4 rename to wallet-legacy (#17673) 2023-10-19 13:50:55 +02:00
Ajay Sivan e71c167e8a Fix: Messages/Author component text overflow (#17414) 2023-10-19 00:48:42 -07:00
jakub 9d6ed9305b fix shebang for NixOS usage in scheck-nix-shell.sh
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-18 22:17:25 +02:00
Flavio Fraschetti 3f1d52da8c Update README (#17674)
Add Status App Functionality Demo to docs
2023-10-18 14:33:05 +01:00
Mohamed Javid d5da921e1c Implement Edit Wallet Account Screen (base) (#17637)
This commit

- Adds the base Screen base for the Create/Edit Account/Address
- Adds the Wallet Edit Account screen
- Adds the gradient in the account options bottom sheet
- Adds a new key/prop "right-icon" in the data-item component to prevent overlapping with the icon used in the description and updates its usage.
- Updates the "section-label" component to receive "container-style" (this will prevent adding a wrapping view in the screens)

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-10-18 17:38:58 +05:30
Omar Basem f19ec2a93f Wallet: Buy Tokens drawer (#17654)
* Wallet: buy tokens drawer
2023-10-18 15:24:25 +04:00
Yevheniia Berdnyk 7da899e29f e2e: updated GH report and fixed 2 tests 2023-10-18 13:47:50 +03:00
frank b4b8eb08a6 local pair: optimised finding server cert (#17619)
https://github.com/status-im/status-go/compare/4cc53630...3326362b
2023-10-18 15:41:48 +08:00
Ulises Manuel b6e2e8cba4 [#16858] Input text multiline height (#17536)
* Fix preview screen receiving wrong parameter
* Fix input multiline style on iOS and counter label always showed
* Fix icon metadata and wrong values passed to svg icons
* Use quo/input in add contact sheet
2023-10-17 16:45:03 -06:00
jakub 495aee584e fix broken reference to yarn start in rn-start.sh
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-17 23:47:19 +02:00
Siddarth Kumar 6924d9978d prevent changing deps outside of nix shell (#17662)
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.
2023-10-17 23:35:58 +05:30
Brian Sztamfater 5829eaf77b feat: scan account from QR (#17464)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-10-17 13:47:21 -03:00
Churikova Tetiana 6acae424d7 e2e: add new floating screen 2023-10-17 21:48:46 +05:30
Parvesh Monu e6e29a8521 Implement animations for discover communities screen 2023-10-17 21:48:46 +05:30
yqrashawn 4c2ae2338a chore: add lsp clean-ns in lint-fix (#17661) 2023-10-18 00:17:43 +08:00
flexsurfer 6f9bcd1bb1 rename quo2 (#17660) 2023-10-17 17:27:18 +02:00
jakub 6bbe930425 nix: pin Ruby at 3.1, fastlane shell for nix-update-gems
Since the `default` shell doesn't have Ruby, the `nix-update-gems`
target would incorrectly use the system Ruby instead of the one from Nix.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-17 16:59:49 +02:00
Vitaliy Vlasov 37dceb4df8 update status-go with filter-ping-peers-fix
https://github.com/status-im/status-go/compare/aded258c...abac55c7
Signed-off-by: Vitaly Vlasov <mail@vitv.ly>
2023-10-17 17:51:14 +03:00
Mohsen fc284f466f [#17507] fix: image placeholder issue in create-profile (#17645) 2023-10-17 17:28:00 +03:00
yqrashawn 428d79607e fix: long press & bg color animation for deleted message (#17428) 2023-10-17 13:29:47 +08:00
Omar Basem be6b02304b Wallet: Activity Tab (#17643)
* Wallet: activity tab
2023-10-17 08:00:22 +04:00
Icaro Motta 7ae96e86f1 Enable ns sorting linter and clean+sort all namespaces (#17618) 2023-10-16 22:03:18 +00:00
OMKAR MAKHARE 00e9ee556a Update README.md (#17651)
Replaced & with and
2023-10-16 18:35:41 +02:00
flexsurfer 27cd7d4edd remove quo lib (#17626) 2023-10-16 18:34:00 +02:00
Mohsen ff2dfe1a2f [#17533] fix: 'Sign in' page overlaps 'Main' page (#17608) 2023-10-16 17:57:47 +03:00
Alex Tumanov 024f053af8 implement bottom actions component (#17190) 2023-10-16 07:07:28 -07:00
flexsurfer b970b723a5 move legacy subs step 1 (#17648) 2023-10-16 15:47:20 +02:00
frank 18606c7329 remove SQLCipher dependency for ios (#17642) 2023-10-16 18:01:09 +08:00
Mohsen ea8b8d142b [#17288] refactor: migrate previews to new api (#17624) 2023-10-16 11:52:58 +03:00
Jamie Caprani dd20d8896f remove custom-color-by-theme method, add resolve-color method (#17567) 2023-10-16 01:20:37 -07:00
Icaro Motta 9078c3b61b Composer - Link previews - Adjust for upcoming API breaking changes in status-go (#17573)
Adapt the JSON RPC response to the new shape returned by `wakuext_unfurlURLs` on
v0.170.0. The changes were introduced PR
https://github.com/status-im/status-go/pull/4033. There are no behavioral
changes in the API as far as mobile is concerned at the moment.
2023-10-13 17:10:38 +00:00
jakub d01c337a2c nix: update Clojure dependencies to remove POMs
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-13 15:23:42 +02:00
jakub d1442b306a nix: stop downloading POMs for Clojure dependencies
Clojure dependencies require only JARs to work. Downloading POMs is both
a waste of time, space, and bandwidth. In addition POMs create edge
cases that we would have to handle, an would rather avoid.

For example, the `guice` package which shows up in the classpath
includes a JAR named `guice-4.2.2-no_aop.jar`. The issue with that is
that there is no corresponding POM in the directory:
https://repo1.maven.org/maven2/com/google/inject/guice/4.2.2/

Either we have to make a special case for such packages, or we can just
skip POMs entirely and avoid the mess.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-10-13 15:23:41 +02:00
Omar Basem a2794a120a Wallet: Account Options (#17612)
* wallet: account options
2023-10-13 17:19:14 +04:00
BalogunofAfrica 65e37feb17 fix: chat over scroll (#17568) 2023-10-13 12:44:48 +01:00
flexsurfer ca88de162a [#17435] migrate status-im.notifications (#17603) 2023-10-13 12:40:50 +02:00
Brian Sztamfater edd6b8d62c feat: implement address list item component (#17617)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-10-12 14:59:34 -03:00
BalogunofAfrica 6f8a7bb151 fix: image preview padding (#17545)
* fix: image preview padding

* fix: clear icon

* fix: revert clear icon color
2023-10-12 17:13:04 +01:00
Jamie CapraniandRende11 1b348943be Quo2: add tags/ tiny tag component (#17613)
Co-authored-by: Rende11 <artamonovn@gmail.com>
2023-10-12 04:49:02 -07:00
Icaro Motta 7f960f9be5 Add custom linter for i18n/label translation keywords (#17610)
This commit adds a custom linter to verify i18n/label is called with a qualified
keyword, like :t/foo. More sophisticated linters are possible too.

We also set the stage for other developers to consider more lint automation
instead of manually reviewing conventions in PRs.

If you want to understand how to write custom linters, check out
https://github.com/clj-kondo/clj-kondo/blob/master/doc/hooks.md. You can fire
the Clojure JVM REPL in status-mobile and play with the clj-kondo hook too, it
works beautifully.

Why do we care? By making sure all translation keywords are qualified with "t",
it is trivial to grep or replace them because they're unique in the repo, and
can't be confused with other words if you search by ":t/<something>".

Note: It's a best practice to commit clj-kondo configuration from external
libraries in the .clj-kondo directory. The directory .clj-kondo/babashka is
auto-generated, that's why it was added.
2023-10-11 18:53:34 -03:00
Mohamed Javid 54e347eaea Bottom Sheet Fixes (#17609)
This commit fixes the following issues in the bottom sheet:

- the sheet is cut off at the bottom in the shell (dark blur) theme (the drawers in the onboarding/login flow)
- the incorrect background in the shell (dark blur) theme (the drawers in the onboarding/login flow)
Bug	
- the spacing at the bottom is doubled
- the gradient cover is not shown in the bottom sheet
- the spacing between the selected item and the bottom sheet
- the bottom sheet type in "Create Profile" and "Activity Center" screens

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-10-11 22:05:07 +05:30
John Ngei 5ceca3201d remove left over logs 2023-10-11 17:09:42 +03:00
Jamie Caprani b532966e85 chore: slider button - add error type, blur variant and fix small ui bug (#17473) 2023-10-11 03:39:26 -07:00
Yevheniia Berdnyk 272e8e80d8 e2e: fixed issue with naming 2023-10-10 17:24:28 +03:00
Volodymyr Kozieiev 919ee4b9ab wallet activity design followup fixes (#17590) 2023-10-10 14:54:26 +01:00
Omar Basem d664653921 Wallet: dApps Tab (#17587)
* feat: dapps tab
2023-10-10 16:28:05 +04:00
Mohsen 36dd828a55 [#17446] fix: Display name is not shown in chats after sync (#17591) 2023-10-10 14:36:40 +03:00
Omar Basem bcc175041a Wallet: About Tab (#17556)
* wallet about tab
2023-10-10 09:30:10 +04:00
Ibrahem Khalil d4cc0189d2 Disable scroll to the bottom button when composer is active. 2023-10-09 20:33:20 +03:00
Volodymyr Kozieiev 1770ff24ce Collectible details page (#17520)
Collectible details page
2023-10-09 14:18:43 +01:00
Lungu Cristian 265d9be6c2 Follow-up quo2 reaction selector components (#17304)
* ref: refactored react/react-selector/reactions-selector

feat: added preview multi-select descriptor

feat: finished component

ref: fixed linting

feat: added pinned styles to all reactions

lint: fixed linting

ref: preview customizer for reactions-selector

lint: fixed linting

fix: preview select bg

ref: destructured reaction

* feat: added pinned prop in chat messages

* fix: removed status_im2 require inside quo2 component

* fix: addressed review comments

* lint: fixed linting

* fix: added missing theme arg to theme-color

* chore: removed unnecessary FIXME

* fix: message reactions not working on press
2023-10-09 12:44:12 +03:00
Lungu CristianandYevheniia Berdnyk b432aab701 Changes to onboarding/new-to-status (quo/fonts/spacings/copy) (#17562)
* fix: changes to onboarding/new-to-status (quo/fonts/spacings/copy)

* e2e: updated button  locator

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2023-10-09 10:45:28 +03:00
Ulises Manuel 1abd1e9420 [#16329] QR code variants (#17221)
* Rename wallet-user-avatar's `:color` prop to `:customization-color`
* Refactor QR code component and implement all variants
  - Improve preview screen
* Update QR code usages
* Remove `status-im2.common.qr-code-viewer.view/qr-code-view` component
to keep only one implementation.
* Remove the node dependency:
  "qrcode": "^1.4.1"
2023-10-08 17:42:58 -06:00
Ibrahem Khalil 4dc834b079 Faded first line of composer (#17489) 2023-10-07 11:12:10 +03:00
Mohamed Javid c6a9148e20 [Fix] SVG Icon color (#17561)
This commit fixes the "X" mark in the clear icon displayed in inputs and URL preview components by updating the props for "svg-icon" to add the "color" and "color-2" keys only if it's present and valid.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-10-07 13:20:44 +05:30
Yevheniia Berdnyk 7c1850b901 e2e: some fixes and moved old ui tests to a separate dir 2023-10-07 03:24:51 +03:00
BalogunofAfrica b88dcf1072 fix: back button on 1:1 chat (#17544)
* fix: back button on 1:1 chat

* fix: show close icon only for 1:1 and community chat

* fix: use close icon for only 1:1 chat
2023-10-06 12:47:29 +01:00
yqrashawn afbd890a04 fix: several bugs in 1.25 design feedback (#17548) 2023-10-06 15:32:33 +08:00
John Ngei 933a5a1a9e 1-1 chats bug fixes
* removed horizontal padding for separator line

* fixed: page-nav button backgrounds visibility

* updated top margin

* updated selected item top margin

* fixed: author and  message margins
2023-10-06 00:45:26 +03:00
Icaro Motta 6e897f0ea6 Migrate away from rf/defn and rf/merge (first step) (#17451)
This commit shows how to move away from rf/defn
https://github.com/status-im/status-mobile/blob/f12c7401d167d7adb81f97bdf9c0902b39ee37bc/src/utils/re_frame.clj#L1-L90
& rf/merge
https://github.com/status-im/status-mobile/blob/f12c7401d167d7adb81f97bdf9c0902b39ee37bc/src/utils/re_frame.cljs#L39-L85
and why we should do it.

## Problems

Before jumping to solutions, let's understand the problems first, in no order of
importance.

### Problem 1: Cyclic dependencies

If you ever tried to move event handlers or the functions used inside them to
different files in status-mobile, you probably stumbled in cyclic dependency
errors.

When an event is registered in re-frame, it is globally available for any other
place to dispatch. The dispatch mechanism relies on globally unique keywords,
the so called event IDs, e.g. :chat/mute-successfully. This means that event
namespaces don't need to require other event namespaces, just like you don't
need to require subscription namespaces in views.

rf/merge increases the likelihood of cyclic dependencies because they force
event namespaces to require each other. Although not as common, this happened a
few times with devs in the team and it can be a big hassle to fix if you are
unlucky. It is a problem we should not have in the first place (at least not as
easily).

### Problem 2: We are not linting thousands of lines of code

The linter (clj-kondo) is incapable of understanding the rf/defn macro. In
theory, we could teach clj-kondo what the macro produces. I tried this, but gave
up after a few tries.

This is a big deal, clj-kondo can catch many issues and will continue to catch
more as it continue to evolve. It's hard to precisely count how many lines are
affected, but `find src/ -type f -name 'events.cljs' -exec wc -l {} +` gives us
more than 4k LOC.

### Problem 3: Blocking RN's UI thread for too long

Re-frame has a routing mechanism to manage events. When an event is dispatched,
it is enqueued and scheduled to run some time later (very soon). This process is
asynchronous and is optimized in such a way as to balance responsiveness vs the
time to empty the queue.

>[...] when processing events, one after the other, do ALL the currently queued
>events. Don't stop. Don't yield to the browser. Hog that CPU.
>
>[...] but if any new events are dispatched during this cycle of processing,
>don't do them immediately. Leave them queued.
>
>-- https://github.com/day8/re-frame/blob/master/src/re_frame/router.cljc#L8-L60

Decisions were made (way back in 2017) to reduce the number of registered
re-frame events and, more importantly, to coalesce events into bigger ones with
the rf/merge pattern. I tried to find evidence of real problems that were trying
to be solved, but my understanding is that decisions were largely based on
personal architectural preferences.

Fast-forward to 2023, and we are in a situation where we have many heavy events
that process a LOT of stuff in one go using rf/merge, thus blocking the UI
thread longer than we should. See, for example,
[status-im2.contexts.profile.login.events/login-existing-profile](https://github.com/status-im/status-mobile/blob/3082605d1e9897da1b1784588aa22fdc65c84823/src/status_im2/contexts/profile/login/events.cljs#L69),
[status-im2.contexts.profile.login.events/get-chats-callback](https://github.com/status-im/status-mobile/blob/3082605d1e9897da1b1784588aa22fdc65c84823/src/status_im2/contexts/profile/login/events.cljs#L98),
and many others.

The following excerpt was generally used to justify the idea that coalescing
events would make the app perform better.

> We will reduce the the amount of subscription re-computations, as for each
> distinct action, :db effect will be produced and swapped into app-db only once
>
> -- https://github.com/status-im/swarms/issues/31#issuecomment-346345981

This is in fact incorrect. Re-frame, ever since 2015 (so before the original
discussions in 2017) uses a concept of batching to process events, which means
subscriptions won't re-run after every dispatched event, and thus components
won't re-render either. Re-frame is smarter than that.

> groups of events queued up will be handled in a batch, one after the other,
> without yielding to the browser (previously re-frame yielded to the browser
> before every single event).
>
> -- https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/releases/2015.md#050--2015-11-5

Here's a practical example you can try in a shadow-cljs :mobile REPL to see the
batching behavior in practice.

```clojure
;; A dummy event that toggles between DEBUG and INFO levels.
(re-frame/reg-event-fx :dummy-event
  (fn [{:keys [db]}]
    {:db (update-in db
                    [:profile/profile :log-level]
                    (fn [level]
                      (if (= "DEBUG" level)
                        "INFO"
                        "DEBUG")))}))

(def timer
  (js/setInterval #(re-frame/dispatch [:dummy-event])
                  50))

;; 1. In component status-im.ui.screens.advanced-settings.views/advanced-settings,
;; add a print call to see when it's re-rendered by Reagent because the
;; subscription :log-level/current-log-level will be affected by our dummy event.
;;
;; 2. Also add a print call to the subscription :log-level/current-log-level to
;; see that the subscription does NOT re-run on every dispatch.

;; Remember to eval this expression to cancel the timer.
(js/clearInterval timer)
```

If you run the above timer with 50ms interval, you'll see a fair amount of
batching happening. You can infer that's the case because you'll see way less
than 20 print statements per second (so way less than 20 recomputations of the
subscription, which is the max theoretical limit).

When the interval is reduced even more, to say 10ms (to simulate lots of
dispatches in a row), sometimes you don't see a single recomputation in a 5s
window because re-frame is too busy processing events.

This shows just how critical it is to have event handlers finishing as soon as
possible to relinquish control back to the UI thread, otherwise responsiveness
is affected. It also shows that too many dispatches in a row can be bad, just as
big event handlers would block the batch for too long. You see here that
dispatching events in succession does NOT cause needless re-computations.

Of course there's an overhead of using re-frame.core/dispatch instead of calling
a Clojure function, but the trade-off is clearly documented: the more we
process in a single event, the less responsive the app may be because re-frame
won't be able to relinquish control back to the UI thread. The total time to
process the batch increases, but re-frame can't stop in the middle compared to
when different dispatches are used.

Thus, I believe this rf/merge pattern is harmful as a default practice in an
environment such as ours, where it's desirable end-users feel a snappy RN app. I
actually firmly believe we can improve the app's responsiveness by not
coalescing events by default. We're also preventing status-mobile from taking
the most advantage from future improvements in re-frame's scheduler. I can
totally see us experimenting with other algorithms in the scheduler to best fit
our needs. We should not blindly reduce the number of events as stated here
https://github.com/status-im/status-mobile/pull/2634#discussion_r155243127.

Solution: only coalesce events into one pile when it's strictly desirable to
atomically update the app db to avoid inconsistencies, otherwise, let the
re-frame scheduler do its job by using fx, not rf/merge. When needed, embrace
*eventual app db consistency* as a way to achieve lower UI latency, i.e. write
fast and short events, intentionally use :dispatch-later or other timing effects
to bend the re-frame's scheduler to your will.

There's another argument in favor of using something like rf/merge which I would
like to deconstruct. rf/merge gives us a way to reuse computations from
different events, which is nice. The thing here is that we don't need rf/merge
or re-frame to reuse functions across namespaces. rf/merge complects re-frame
with the need to reuse transformations.

Instead, the solution is as trivial as it gets, reuse app db "transformers"
across events by extracting the logic to data store namespaces
(src/status_im/data_store). This solution has the added benefit of not causing
cyclic dependency errors.

### Problem 4: Clojure's language server doesn't understand code under rf/defn

Nowadays, many (if not most) Clojure devs rely on the Clojure Language Server
https://github.com/clojure-lsp/clojure-lsp to be more effective. It is an
invaluable tool, but it doesn't work well with the macro rf/defn, and it's a
constant source of frustration when working in event namespaces. Renaming
symbols inside the macro don't work, finding references, jumping to local
bindings, etc.

Solution: don't use rf/defn, instead use re-frame's reg-event-fx function and
clojure-lsp will understand all the code inside event handlers.

### Problem 5: Unit tests for events need to "test the world"

Re-frame's author strongly recommends testing events that contain non-trivial
data transformations, and we do have many in status-mobile (note: let's not
confuse with integration tests in status_im/integration_test.cljs). That, and
non-trivial layer-3 subscriptions should be covered too. The reasoning is that
if we have a well developed and tested state layer, many UI bugs can be
prevented as the software evolves, since the UI is partially or greatly derived
from the global state. See re-frame: What to Test?
https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/Testing.md#what-to-test.
See PR Introduce subscription tests
https://github.com/status-im/status-mobile/pull/14472, where I share more
details about re-frame's testing practices.

When we use rf/merge, we make unit testing events a perennial source of
frustration because too many responsibilities are aggregated in a single event.
Unfortunately, we don't have many devs in the team that attempted to write unit
tests for events to confirm my claim, but no worries, let's dive into a real
example.

In a unit test for an event, we want to test that, given a cofx and args, the
event handler returns the expected map of effects with the correct values
(usually db transformations).

Let's assume we need to test the following event. The code is still using the
combo rf/defn & rf/merge.

```clojure
(rf/defn accept-notification-success
  {:events [:activity-center.notifications/accept-success]}
  [{:keys [db] :as cofx} notification-id {:keys [chats]}]
  (when-let [notification (get-notification db notification-id)]
    (rf/merge cofx
              (chat.events/ensure-chats (map data-store.chats/<-rpc chats))
              (notifications-reconcile [(assoc notification :read true :accepted true)]))))
```

As you can see, we're "rf/merging" two other functions, namely ensure-chats and
notifications-reconcile. In fact, ensure-chats is not registered in re-frame,
but it's 99% defined as if it's one because it needs to be "mergeable" according
to the rules of rf/merge. Both of these "events" are quite complicated under the
hood and should be unit tested on their own.

Now here goes the unit test. Don't worry about the details, except for the expected output.

```clojure
(deftest accept-notification-success-test
  (testing "marks notification as accepted and read, then reconciles"
    (let [notif-1          {:id "0x1" :type types/private-group-chat}
          notif-2          {:id "0x2" :type types/private-group-chat}
          notif-2-accepted (assoc notif-2 :accepted true :read true)
          cofx             {:db {:activity-center {:filter        {:type types/no-type :status :all}
                                                   :notifications [notif-2 notif-1]}}}

          expected {:db         {:activity-center {:filter        {:type 0 :status :all}
                                                   :notifications [notif-2-accepted notif-1]}
                                 :chats           {}
                                 :chats-home-list nil}
                    ;; *** HERE ***
                    :dispatch-n [[:activity-center.notifications/fetch-unread-count]
                                 [:activity-center.notifications/fetch-pending-contact-requests]]}
          actual   (events/accept-notification-success cofx (:id notif-2) nil)]
      (is (= expected actual)))))
```

Notice the map has a :dispatch-n effect and other stuff inside of it that are
not the responsibility of the event under test to care about. This happens
because rf/merge forces the event handler to compute/call everything in one go.
And things get MUCH worse when you want to test an event A that uses rf/merge,
but A calls other events B and C that also use rf/merge (e.g. event
:profile.login/get-chats-callback). At that point you flip the table in horror
😱, but testing events and maintaining them should be trivial.

Solution: Use re-frame's `fx` effect.

Here's the improved implementation and its accompanying test.

```clojure
(defn accept-notification-success
  [{:keys [db]} [notification-id {:keys [chats]}]]
  (when-let [notification (get-notification db notification-id)]
    (let [new-notifications [(assoc notification :read true :accepted true)]]
      {:fx [[:dispatch [:chat/ensure-chats (map data-store.chats/<-rpc chats)]]
            [:dispatch [:activity-center.notifications/reconcile new-notifications]]]})))

(re-frame/reg-event-fx :activity-center.notifications/accept-success accept-notification-success)

(deftest accept-notification-success-test
  (testing "marks notification as accepted and read, then reconciles"
    (let [notif-1          {:id "0x1" :type types/private-group-chat}
          notif-2          {:id "0x2" :type types/private-group-chat}
          notif-2-accepted (assoc notif-2 :accepted true :read true)
          cofx             {:db {:activity-center {:filter        {:type types/no-type :status :all}
                                                   :notifications [notif-2 notif-1]}}}

          ;; *** HERE ***
          expected {:fx [[:dispatch [:chat/ensure-chats []]]
                         [:dispatch [:activity-center.notifications/reconcile [notif-2-accepted]]]]}
          actual   (events/accept-notification-success cofx [(:id notif-2) nil])]
      (is (= expected actual)))))
```

Notice how the test expectation is NOT verifying what other events do (it's
actually "impossible" now). Using fx completely decouples events and makes
testing them a joy again.

### Problem 6: Unordered effects

status-mobile still uses the legacy way to describe the effects map, which has
the problem that their order is unpredictable.

> Prior to v1.1.0, the answer is: no guarantees were provided about ordering.
> Actual order is an implementation detail upon which you should not rely.
>
> -- https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/Effects.md#order-of-effects

> In fact, with v1.1.0 best practice changed to event handlers should only
> return two effects :db and :fx, in which case :db was always done first and
> then :fx, and within :fx the ordering is sequential. This new approach is more
> about making it easier to compose event handlers from many smaller functions,
> but more specificity around ordering was a consequence.
>
> -- https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/Effects.md#order-of-effects

### Problem 7: Usage of deprecated effect dispatch-n

We have 35 usages, the majority in new code using dispatch-n, which has been
officially deprecated in favor of multiple dispatch tuples in fx. See
https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/api-builtin-effects.md#L114

### Problem 8: Complexity 🧙‍♂️

Have you ever tried to understand and/or explain how rf/merge and rf/defn work?
They have their fare share of complexity and have tripped up many contributors.

This is not ideal if we want to create a project where contributors can learn
re-frame as quickly as possible. Re-frame is already complicated enough to grasp
for many, the added abstractions should be valuable enough to justify.

Interestingly, rf/merge is a stateful function, and although this is not a
problem in practice, it is partially violating re-frame's spirit of only using
pure functions inside event handlers.

### Problem 9: Using a wrapping macro rf/defn instead of global interceptors

When rf/defn was created inside status-mobile, re-frame didn't have global
interceptors yet (which were introduced 3+ years ago). We no longer have this
limitation after we upgraded our old re-frame version in PR
https://github.com/status-im/status-mobile/pull/15997.

Global interceptors are a simple and functional abstraction to specify functions
that should run on every event, for example, for debugging during development,
logging, etc. This PR already shows this is possible by removing the wrapping
function utils.re-frame/register-handler-fx without causing any breakage.

## Conclusion

By embracing re-frame's best practices for describing effects
https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/FAQs/BestPractice.md#use-the-fx-effect,
we can solve long standing issues that affect every contributor at different
levels and bring the following benefits:

- Simplify the codebase.
- Bring back the DX we all deserve, i.e. Clojure Language Server and clj-kondo
  fully working in event namespaces.
- Greatly facilitate the testability of events.
- Give devs more flexibility to make the app more responsive, because the new
  default would not coalesce events, which in turn, would block the UI thread
  for shorter periods of time. At least that's the theory, but exceptions will
  be found.

The actions to achieve those benefits are:

- Don't use the macro approach, replace rf/defn with
  re-frame.core/reg-event-fx.
- Don't use rf/merge, simply use re-frame's built-in effect :fx.
- Don't call event handlers as normal functions, just as we don't directly call
  subscription handlers. Use re-frame's built-in effect :fx.

## How do we refactor the remainder of the code?

Some numbers first:

- There are 228 events defined with rf/defn in src/status-im2/.
- There are 34 usages of rf/merge in src/status_im2/.

## Resources

- Release notes where fx was introduced in re-frame:
  https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/releases/2020.md#110-2020-08-24
2023-10-05 16:11:45 -03:00
Icaro Motta b73ac6b107 Upgrade clj-kondo and configure new linters (#17543)
- Upgrade clj-kondo to latest version to take advantage of new linters. From
  version 2023.04.14
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230414 to
  2023.09.07
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230907
- Use new linter ":unused-alias" and set at WARN level for the moment, because
  otherwise the PR would increase a bit too much, but it did catch many unused
  "require" aliases. Added in version 2023.09.07
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230907
- Use new linter ":case-symbol-test" and fix the reported errors, added in
  version 2023.07.13
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230713
- Use new linters ":equals-true", ":plus-one", and ":minus-one" and fix reported
  errors, added in version 2023.05.18
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230518
- Raise level from WARN to ERROR for linter "uninitialized-var".
- Explicitly add ":case-duplicate-test" to clj-kondo config, renamed in version
  2023.07.13
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230713
- Explicitly add ":case-quoted-test" to clj-kondo config, renamed in version
  2023.07.13
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230713
- Explicitly add ":deprecated-namespace" to clj-kondo config, added in version
  2023.07.13
  https://github.com/clj-kondo/clj-kondo/blob/master/CHANGELOG.md#20230713

Fixes https://github.com/status-im/status-mobile/issues/17287
2023-10-05 15:50:57 -03:00
Anton Iakimov d80fb0b3de update status/wakuv2 fleets DNS discovery enrtree
https://github.com/status-im/status-go/compare/e1354016...9034f0a9

https://github.com/status-im/infra-misc/issues/171
2023-10-05 18:22:42 +01:00
Andrea Maria Piana ef80fc567f Update waku nodes
https://github.com/status-im/status-go/compare/e1354016...b8041fc8
2023-10-05 18:22:10 +01:00
Siddarth Kumar 7043e03dd4 Enter scan code tab in Syncing (#16852)
* feat: add enter scan code view

This commit adds the enter sync code UI.

Fixes : #16062

Design link : https://www.figma.com/file/V6nlpAWIf2e1XU8RJ9yQPe/Syncing-for-Mobile?node-id=675%3A179729&mode=dev

Review notes :
We do not make use of quo2/input here because currently that component does not allow stretching to fit in sync code which spans upto 3 lines.
2023-10-05 21:05:54 +05:30
Parvesh Monu c2833ae33d fix wrong counter color in jump-to screen (#17554) 2023-10-05 18:46:25 +05:30
Ibrahem Khalil a7f0566050 Copy update (#17487) 2023-10-05 14:04:08 +03:00
Omar Basem 1812cfb8dc fixes (#17519)
Fix onboarding UI
2023-10-05 08:26:44 +04:00
John Ngei d5a71e2ce0 updated selected item view
* updated selected-item view to match design

* fix show bottom margin on selected item on bottom sheet

* fixed image message dimensions

* fix: selected item view issues

* fix: reviews

* fix: bottom sheet shaking when item is selected
2023-10-05 01:42:53 +03:00
Icaro Motta aa2345d35c Reduce Clojure linter warning noise (#17491)
Change the make "lint" target default behavior to NOT show clj-kondo warnings.

In the CI, I kept the same behavior, i.e. show all warnings and errors
simultaneously.

Motivation:
When devs run make lint, most of the time, they don't want to see a long list of
warnings. Their focus is on the errors. Additionally, the majority of devs in
the mobile team see clj-kondo warnings in their editors of choice already.

We (some of us) believe the editor feedback/warnings are sufficiently noisy.

Add the following somewhere in your config files if you want to see
warnings.

    export CLJ_LINTER_PRINT_WARNINGS=true
2023-10-04 16:06:54 -03:00
Volodymyr Kozieiev b534b33a09 Doc updated with instruction how to view db content (#17535)
* Doc updated with instruction to view db content
2023-10-04 19:29:55 +01:00
omahs 69df5a7e2f fix: typos (#17484) 2023-10-04 16:54:32 +02:00
Omar Basem 191f5de6f1 Wallet: Create Account UI (2) (#17468)
* Wallet: create account UI (2)
2023-10-04 14:17:55 +04:00
Omar Basem df2b5147cd Wallet: Add address to watch (#17479)
wallet: add address to watch
2023-10-04 14:04:33 +04:00
Parvesh Monu 4235c71b2f Remove options to create community from mobile from release and nightly builds (#17495) 2023-10-04 15:12:16 +05:30
Mohamed Javid aef2f2cfed Implement wallet-networks type to the page-nav component (#17485)
This commit adds the wallet-networks type to the page-nav component.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-10-04 14:18:34 +05:30
BalogunofAfrica f065aa1c05 fix(identifier): emoji hash line height (#17386) 2023-10-04 08:44:44 +01:00
Vitaliy Vlasov fbe30d7b18 Update status-go to v0.167.6
https://github.com/status-im/status-go/compare/b3213172...e1354016
Signed-off-by: Vitaliy Vlasov <siphiuel@protonmail.com>
2023-10-04 01:16:25 +03:00
Brian Sztamfater 878a1cc285 feat: implement saved contact address list item component (#17400)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-10-03 15:51:11 -03:00
Mohsen 26ae434d07 [#17396] fix: Mention is displayed as public key in PNs (#17461) 2023-10-03 19:53:33 +03:00
Ibrahem Khalil 26a702799c [16845] Wrong buttons background color on community home screen's page nav (#17003) 2023-10-03 19:37:11 +03:00
Ibrahem Khalil f5038f8e24 Only count images in an album in photo selector (#17459) 2023-10-03 19:00:51 +03:00
Tetiana Churikova 5b765f873b e2e: small alignments (#17477) 2023-10-03 14:53:57 +02:00
Jinho Jang a13d3a175b Update ja.json (#17438) 2023-10-03 14:11:42 +02:00
Lungu Cristian dfc972079f fix: show hashtag in chat when replying/copying (#17374) 2023-10-03 11:55:22 +03:00
Lungu Cristian 1286188005 fix: show links inside activity-center mention (#17424) 2023-10-03 11:17:32 +03:00
Volodymyr Kozieiev 9fb37d3a48 Collection avatar component (#17462)
* Collection avatar component
2023-10-02 21:46:47 +01:00
Mohsen ee85d6d596 [#17288] refactor: migrate previews to new api (#17470) 2023-10-02 16:28:35 +03:00
Omar Basem d8d8a6c7a0 Quo2: Token Input followup (#17419)
* Quo2: token input followup
2023-10-02 09:01:39 +04:00
jakub f5f1e6302d ci: use new OpenSea API keys
They are split by both platform and build type.

Depends on:
https://github.com/status-im/status-jenkins-lib/pull/74

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-09-29 16:32:45 +02:00
Mohamed Javid 9c26a54006 Add network-dropdown to wallet-overview component (#17440)
This commit adds the "network-dropdown" component to the "wallet-overview" component.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-09-29 18:53:06 +05:30
codemaster ab868a6ae5 Implement switcher group messaging card (#16802) 2023-09-29 23:11:21 +10:00
Parvesh Monu 695bbcbe81 fix bottom tabs unread badge for group chats (#17454) 2023-09-29 17:59:35 +05:30
Mohamed Javid bf76ca167a Implement dropdown component and update it's usage across the codebase (#17412)
This commit: 

- Removes the existing dropdown component which uses the old button component under the hood
- Implements the Dropdown component
- Updates the usage in the page-nav component for types dropdown, token and wallet-networks
- Updates the usage in the photo selector bottom sheet
- Updates the usage in the Quo2 preview main screen

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-09-29 17:37:27 +05:30
Ulises Manuel af1942dff3 [#17220] - New 64 avatars size (#17283)
* Add 64 size for user-avatar

* Add 64 size for channel-avatar

* Add 64 size for account-avatar

* Add 64 size for wallet-avatar
2023-09-29 03:48:02 -06:00
yqrashawn 1c31127a6f fix: missing/empty user-avatar in component previews (#17430) 2023-09-29 15:30:04 +08:00
Ajay Sivan fe404ab005 Remove old quo code from status_im2 namespace (#17404) 2023-09-28 09:27:31 -07:00
Brian Sztamfater 8869271054 feat: implement account list item component (#17303)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-09-28 12:27:36 -03:00
Brian Sztamfater 5ea78084d1 feat: implement saved address component (#17398)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-09-28 12:13:49 -03:00
Mohsen ba57ab9ae4 [#17288] refactor: migrate previews to new api (#17420) 2023-09-28 15:26:15 +03:00
0522120c66 Standardized in-app authentication (#16916)
* chore: move password input to connected component
---------

Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
Co-authored-by: frank <lovefree103@gmail.com>
2023-09-28 04:23:15 -07:00
Parvesh Monu 6b9b5fa300 Only use animated loading skeleton for ios (#17432) 2023-09-27 20:43:21 +05:30
Omar Basem 77733b3a65 Quo2: Color picker (#17405)
* Quo2: color picker
2023-09-27 15:34:16 +04:00
Volodymyr Kozieiev 79f7b6c6ba Transaction summary design followup fixes (#17360) 2023-09-27 11:54:41 +01:00
flexsurfer db787f9d4b remove status-im.utils.clocks (#17434) 2023-09-27 12:04:40 +02:00
flexsurfer a847f508f9 [#17410] migrate status-im.ethereum.core (#17422) 2023-09-27 11:57:51 +02:00
Lungu Cristian 4152b9318b Quo2: section label (#17219)
* feat: added section-label to quo2

* fix: addressed review comments

* ref: reorder and small change

* fix: blur only for dark and adjusted styling
2023-09-27 12:07:10 +03:00
codemaster 96f476fc2b feat: Implement quo2 code-snippet-preview component (#17235) 2023-09-27 07:41:52 +10:00
Yevheniia Berdnyk 70d6291c57 e2e: some todos and updates 2023-09-26 18:55:42 +03:00
Parvesh Monu 90cb5d3d88 fix group card remains in shell after leaving the group (#17417) 2023-09-26 20:33:56 +05:30
Ibrahem Khalil da5086aae2 [17377-17378] Fix reply view in activity center showing only one phot… (#17388) 2023-09-26 15:59:36 +03:00
Alex Tumanov baf3fb9bbd Remove test tmp folder before each new test run (#17263) 2023-09-26 13:49:24 +02:00
Flavio Fraschetti f12c7401d1 WIP: refactor notifications (#17413)
to accomplish #17288

migrated :

notifications

Issue Opened: A bug has been identified within the activity-logs component and is currently under investigation.
2023-09-25 19:04:03 +01:00
mmilad75 3082605d1e Handle account-card component pressed state bg color (#17234)
Handle account-card component pressed state bg color
2023-09-25 16:30:54 +03:30
Mohsen Ghafouri 1dfab2b416 [#17333] fix: disable ring for small avatar (#17385) 2023-09-25 15:47:38 +03:00
Mohamed Javid a9b63e0f22 Update "Preview List" component to use "Number Tag" for overflow item (#17257)
This commit updates

- the preview-list component to use "number-tag" for overflow items in the list as a follow-up of the PR Update "Preview list" component.

- the usage of the preview-list component in the context-tag (multiuser and multinetwork type) is updated as it was broken.

- the size APIs of preview-list and number-tag and their usage across the codebase to respect the new guidelines.

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-09-25 17:28:20 +05:30
Jamie CapraniandUlises M f47a4a18e8 chore: add docs with size (#17279)
* chore: update guidelines for sizes

* chore: update to size uses in codebase to follow new convention

---------

Co-authored-by: Ulises M <ulises.ssb@hotmail.com>
2023-09-25 05:22:07 -06:00
flexsurfer 723573833e [#17357] move status-im.async-storage.core (#17380) 2023-09-25 12:45:39 +02:00
Ibrahem Khalil 53f40b55f2 Adjust PR template to add before/after (#17402) 2023-09-25 13:42:37 +03:00
Mohsen Ghafouri 6fd5a97b59 [#17288] refactor: migrate previews to new api (#17366) 2023-09-25 13:19:50 +03:00
Mohsen Ghafouri 848cac31ba [#17300] fix: syncing device indicator color and some alignment (#17340) 2023-09-25 11:55:54 +03:00
Omar Basem 7e646f7823 revert podfile (#17406) 2023-09-25 12:40:27 +04:00
flexsurfer b2cae88924 [#17383] migrate status-im.utils.types (#17389) 2023-09-25 09:32:55 +02:00
Omar Basem 1aadffd300 Quo2: keypair blur (#17294)
* quo2: keypair blur
2023-09-25 08:32:04 +04:00
Volodymyr Kozieiev 08689e568a Links to recorded meetings added to docs (#17399) 2023-09-22 16:42:58 +01:00
frank 7543dc9001 fix: identifier rings are displayed on avatars for users with a set ENS (#17346) 2023-09-22 21:51:54 +08:00
Parvesh Monu a99ae74da7 remove messages screen global states (#17365) 2023-09-21 21:21:42 +05:30
Parvesh Monu db41eb303d fix unread badges behavior on Jump-to screen (#17363) 2023-09-21 17:53:38 +05:30
frank e5ef15b531 Prevent Logged In Account Local Pairing / Syncing With Another Account (#17342) 2023-09-21 10:02:42 +08:00
Jamie Caprani e41fb03b6f adjust colors resolver to handle communities color (#17339) 2023-09-21 01:03:02 +02:00
Jamie Caprani 0ae1e9bc5a chore: updating theming in quo2 components and chat (#17199) 2023-09-21 00:41:00 +02:00
flexsurfer ddd0796381 [#17355] status-im.utils.image-processing (#17356) 2023-09-20 16:14:53 +02:00
flexsurfer 92cc49184d move messages legacy view (#17354) 2023-09-20 15:42:57 +02:00
Mohsen Ghafouri 41282a9f5d [#17309] fix: wrong cursor position in a pre-filled composer (#17329) 2023-09-20 16:24:03 +03:00
flexsurfer 5bb954f8a7 [#17351] remove status-im.utils.platform (#17352) 2023-09-20 14:17:52 +02:00
flexsurfer 6a169bd0bd [#17347] move [status-im.utils.http :as http] to status-im2 (#17350) 2023-09-20 14:16:07 +02:00
Siddarth Kumar a15c9788fe add support for Xcode 15 (#17343)
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
2023-09-20 14:41:12 +05:30
Jamie Caprani 6279264ff1 chore: remove colors/dark? method from colors file and update uses (#17202) 2023-09-19 08:16:18 -07:00
frank cb9ae21cf2 process backedup(profile/settings) signal (#17306) 2023-09-19 22:05:59 +08:00
Jamie Caprani 6eb53ca2db fix: update use of setting-item component to match new api (#17244) 2023-09-19 05:05:07 -07:00
Tetiana Churikova 5d6800cee0 e2e: update cython and pyyaml (#17297) 2023-09-19 13:52:30 +02:00
frank d5af6b62a7 fix: display name not displayed after sync (#17311) 2023-09-19 17:18:38 +08:00
BalogunofAfrica f2366219a3 fix: carousel text overflow (#17293) 2023-09-19 09:15:50 +01:00
BalogunofAfrica 95e0715163 fix: intro screen carousel (#17269)
* fix: last slide showing for a split second

* fix: use scale resize-method to load image faster on android
2023-09-19 08:51:55 +01:00
Brian Sztamfater 9479f02b39 feat: wallet select address screen UI in empty state (#17248)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-09-18 16:17:11 -03:00
Parvesh Monu 9df1b854bd Remove use of camel-snake-kebab from shell worklet (#17310) 2023-09-18 16:51:39 +05:30
frank 442600bc28 use new API for ens name registration (#17127)
* use new API for ens name registration

https://github.com/status-im/status-go/compare/4cc53630...223d215e

* update status-go-version.json

* update status-go-version.json

* fix Error:Field validation for 'KeycardPairingDataFile' failed on the 'required' tag

* update status-go-version.json

* fix lint issue
2023-09-16 11:37:06 +08:00
Mohsen Ghafouri b73ea572ee [#17288] refactor: migrate previews (markdown, messages) to new api (#17280) 2023-09-15 19:53:30 +03:00
Siddarth Kumar a24ddbeefa address design feedback on profile share UI (#16257)
This commit adds UI Touchups to profile share screen according to a recent Design Review.
2023-09-15 18:02:13 +05:30
Mohsen Ghafouri a53ba0c4e1 [#17218] fix: android channel name ellipsize completely (#17262) 2023-09-15 14:52:26 +03:00
Volodymyr Kozieiev 4006495b22 fix keyword renaming performance (#17291) 2023-09-15 12:02:44 +01:00
frank 72b8979c79 add doc: How to catch crash on ios use xcode (#17278)
* add doc: How to catch crash on ios use xcode

* addressed feedback from @ilmotta and @siddarthkay
2023-09-15 12:04:11 +08:00
Omar Basem 4d9ebdb9f9 Quo2: Account list card blur (#17271)
* Quo2: account list card blur
2023-09-15 07:43:48 +04:00
Icaro Motta e2f837fcbc Raise clj-kondo linter levels (#17289)
Recently, we changed clj-kondo default fail-level from "warning" to "error", but
we missed the fact that we needed to raise the default level for all linters set
to "warning".
2023-09-14 11:28:43 -03:00
flexsurfer 07d1b13520 temporary remove "curated.communities.update" (#17286) 2023-09-14 15:57:29 +02:00
Lungu Cristian 5d4fbe7ef1 fix: quo2 reaction styles (size + colors) (#17224) 2023-09-14 12:21:11 +03:00
Mohamed Javid 0003800f05 Implement Emoji Picker (#17195)
This commit adds Emoji Picker in the app for usage in Message Composer and Wallet Account.

---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-09-13 23:08:13 +05:30
Icaro Motta dab4d953ec Fix incorrect usage of functional component (#17281)
Every keypress on an input field of the preview descriptor re-rendered the whole
functional component and the input focus was lost.

As we know from past issues, we should never use this pattern:

    (defn component
      []
      [:f>
       (fn []
         ...)])
2023-09-13 13:22:53 -03:00
Brian Sztamfater baa9dff237 feat: implement address input (#17191)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-09-13 10:26:29 -03:00
frank 9706111256 fix unable to reset pwd on ios (#17259) 2023-09-13 09:06:32 +08:00
Omar Basem 344c9ba9b7 Quo2: Settings item blur (#17258)
* quo2: settings item blur
2023-09-12 21:49:10 +04:00
Icaro Motta 6ea31695d6 Do not warn about subscriptions being used in non-reactive contexts (#17240)
Force re-frame to stop warning about subscriptions in non-reactive contexts
while executing subscription tests (i.e. unit tests using the macro
test-helpers.unit/deftest-sub).

The net result? No more hundreds of useless warnings in the output of make test.

    re-frame: Subscribe was called outside of a reactive context.
     See: https://day8.github.io/re-frame/FAQs/UseASubscriptionInAJsEvent/

The warning is actually useful in production code, but in a subscription test we
already know we're never inside a reactive context.
2023-09-12 11:58:06 -03:00
Yevheniia Berdnyk 2c52001e22 e2e: fixes 12.09 2023-09-12 16:46:49 +03:00
Volodymyr Kozieiev dd1f938e85 Transaction summary component (#17163)
* Transaction summary component
2023-09-12 14:44:40 +01:00
mmilad75 fcbe6fe2b4 Implement "Drawer top" component (#17196)
Implement "Drawer top" component
2023-09-12 12:03:15 +03:30
Flavio Fraschetti dfd91c0e5f Bump release to 1.25.0 (#17247) 2023-09-11 14:42:15 +01:00
Flavio Fraschetti 67ea362b83 bump-release-to-1.24.0 (#17246)
bump-release-to-1.24.0
2023-09-11 14:18:39 +01:00
frank a9c840b6ba fix: Sync is hanging in "syncing devices" stage (#17226) 2023-09-11 20:39:12 +08:00
Mustafa Ateş Uzun 599cf0fb24 fix: web-prefixes function (#17239) 2023-09-11 12:37:24 +02:00
Flavio Fraschetti 0842a97cac Fix: composer is separated from the footer #17238
This PR resolves the issue where Composer becomes detached from the footer during the chat history loading phase, specifically when the skeleton screen is displayed. Fixes #17237.
2023-09-11 11:12:46 +01:00
Ajay Sivan 7bb4f9cfe8 Title input component improvements (#17209)
- Add edit icon
- Fix disable style
2023-09-08 04:59:51 -07:00
yqrashawn 50a1e10136 fix: icon size in system message add new :size/s-24 icon-avatar (#17108) 2023-09-08 19:23:32 +08:00
yqrashawn b393d4e037 chore: update status go version for #17110 (#17222) 2023-09-08 11:04:36 +08:00
yqrashawnandFlavio Fraschetti a05156c645 Fix: User-avatar indicator size/position (#17110)
### Commit Summary
Figma https://www.figma.com/file/WQZcp6S0EnzxdTL4taoKDv/Design-System-for-Mobile?type=design&node-id=107-5264&mode=design&t=3IlYad4D0crAiVcf-4

Affected all avatars with status indicator
32x32

Signed-off-by: yqrashawn <namy.19@gmail.com>
Co-authored-by: Flavio Fraschetti <flavio@status.im>
2023-09-07 17:45:23 +01:00
Mohsen Ghafouri cd1bd1c211 [#17207] fix: incorrect mentions alignment in messages (#17212) 2023-09-07 19:25:03 +03:00
Andrea Maria Piana 50af7fb502 Hide featured communities when not fetched 2023-09-07 17:10:38 +01:00
Flavio Fraschetti 3d63854b03 Revise dev guidelines for code deprecation (#17177)
### Commit Summary
This pull request updates our coding guidelines to include a process for marking deprecated functions using metadata in ClojureScript.
2023-09-07 17:00:02 +01:00
Flavio Fraschetti a30a80f8a1 Replace old skeleton with new (#17169)
fixes #17103

### Follow up from #16865

This commit focuses on enhancing the user experience by replacing our legacy skeleton loaders with the latest version. Additionally, it introduces a refined approach for deprecating outdated components and functions to maintain a cleaner codebase.

### Key Changes

Replace existing skeleton loaders with the latest skeleton-list component for improved performance and usability.
Implement a standardized deprecation method, using either naming conventions or metadata annotations, for phasing out old components and functions.
2023-09-07 16:31:11 +01:00
Jamie Caprani 8036c219e8 chore: add transparent outline to notification in top-nav component (#17171) 2023-09-07 07:10:38 -07:00
flexsurfer a8e9b2486b Community logo and title are not aligned on the channels screen #17214 (#17215) 2023-09-07 15:29:35 +02:00
Anton Iakimov b7a090716d nix: set ios status-go targets 2023-09-07 14:15:30 +02:00
Omar Basem 36c87d3857 Quo2 Wallet: Settings Item (#17179)
* feat quo2: settings-item
2023-09-07 15:36:28 +04:00
Alexander c1c8c210e8 Top bar stability & animation improvements (#17170)
* Top bar stability improvements

Style updates

Style updates, bugfixes

* Display name update

* Style fix
2023-09-07 13:13:16 +02:00
Ajay Sivan b645686684 fix: profile input - input field position - Android (#17210) 2023-09-07 03:53:40 -07:00
Omar Basem bd8e332c68 Quo2: divider line (#17211)
* quo2: divider line
2023-09-07 13:50:19 +04:00
Omar Basem 2f13dfe22a New nav bar for preview screens (#17206)
* quo2: preview themes
2023-09-07 11:16:26 +04:00
Ajay Sivan e9d76c2a0b Handle long names in pinned messages (#17078)
Handle long names in all system messages variations
2023-09-06 08:17:31 -07:00
Yevheniia Berdnyk 7609a07cc2 e2e: fixes 6.09 2023-09-06 16:23:24 +03:00
Andrea Maria Piana 155f57ca6b Dont parse unused identicon 2023-09-06 14:09:37 +01:00
frank bf3ad02bb1 point status-go-version.json to the right commit (#17200) 2023-09-06 20:13:12 +08:00
Icaro Motta 0f71c18f57 Disable fn-deprecated warning during development (#17204)
Disable :fn-deprecated warnings from the Closure compiler for the mobile
shadow-cljs target during development. The compiler warnings are no longer
necessary, because we're managing deprecation via clj-kondo.

Without the compiler setting's change, every code reload will generate warnings
for each and every deprecated call in the repo, which can quickly grow to the
hundreds or more, thus making the terminal output horrendous to understand.

Also set clj-kondo's "fail-level" to "error" (the default is "warning").
2023-09-06 08:58:42 -03:00
Yevheniia Berdnyk 69aeffd943 e2e: removed deprecated metods usage 2023-09-06 12:48:57 +03:00
Yevheniia Berdnyk 726b76a290 e2e: split 1-1 chat test group 2023-09-06 12:30:17 +03:00
Yevheniia Berdnyk 56b13cbdca e2e: updated join communities flow 2023-09-06 12:17:08 +03:00
Samuel Hawksby-Robinsonandfrank d63b1240d7 Fix for Android error route ip+net: netlinkrib: permission denied (#17166)
* status-go branch update

https://github.com/status-im/status-go/compare/4cc53630...b9968a75

* comment start-searching-for-local-pairing-peers out

* revert status-go-version.json

---------

Co-authored-by: frank <lovefree103@gmail.com>
2023-09-06 15:24:40 +08:00
Brian Sztamfater b2840a77a5 feat: add custom color to wallet graph (#17149)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-09-05 11:05:54 -03:00
John Ngei 7d1098b5b3 Fix join communities design review bugs
* fix: join communities design review bugs

* updated design fixes
2023-09-05 15:53:59 +03:00
Mohsen Ghafouri 741e40094b [#16859] fix: community channel design review (#17178) 2023-09-05 14:40:05 +03:00
flexsurfer a1babada69 Onboarding screens (#17165)
* Broken back navigation on "Create profile" screen #17155
Onboarding screens layout is broken
#17152
Onboarding Flow - Layout issues in enable biometrics screen
#17151
Onboarding navigation issues
#17129
2023-09-05 13:19:15 +02:00
Siddarth Kumar 7ca17e537e chore: improve make show-ios-devices (#17180)
This commit removes the dependency of the IOS Target for `show-ios-devices` command.
We no longer need the IOS target because the default shell contains the `ios-deploy` library, which is used by this command already.
2023-09-05 14:55:25 +05:30
Yevheniia Berdnyk 37af9d9b97 e2e: updated community channel element 2023-09-05 01:48:49 +03:00
Ajay Sivan dfa30fd14f quo channel component refactor (#17070) 2023-09-04 08:39:23 -07:00
jakub f433956657 nix: refresh Gradle dependenncies using new setup
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-09-04 09:58:21 +02:00
jakub 83f622d349 nix: make fetching Gradle dependencies more generic
Before what we did was essentially guess what files might exist for any
given package. This approach mostly works, but not entirely.
This is especially problematic when dealing with weird edge case
packages like `react-native`, which you can read about here:

https://github.com/react-native-community/discussions-and-proposals/pull/508
https://github.com/react-native-community/discussions-and-proposals/blob/4a06fc64/proposals/0508-out-of-npm-artifacts.md#the-react-native-android-archive

In order to avoid as much the guessing aspect of fetching Gradle
dependencies we are using both HTML listsings of files and
`artifact-metadata.json` files that exist for more recent packages.

This way we can avoid having to add special edge cases that have been
found out when working on React Native 72 upgrade in:
https://github.com/status-im/status-mobile/pull/17062

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-09-04 09:57:53 +02:00
mmilad75 6809311191 Implement "Account origin" Component (#17147)
Implement "Account origin" Component
2023-09-01 20:41:57 +03:30
Yevheniia Berdnyk 5647bb4ac9 e2e: fixes navigation, long press and so on 2023-09-01 18:21:03 +03:00
Volodymyr Kozieiev f3f85f9911 Wallet activity component (#17141)
* Wallet activity component

* Component description added

* removed unnecessary piece

* lint fix

* Review notes

* fix issue with blur preview

* lint fix
2023-09-01 16:20:15 +01:00
diana 5e3255ea57 Docs update: required e2e 2023-09-01 15:26:26 +02:00
Parvesh Monu 77fc7a92d9 Don't display "Add Unknown as contact to send a Message" if chat is not loaded 2023-09-01 18:04:54 +05:30
Jamie Caprani 72455877bd fix: remove hole view code with error (#17164) 2023-09-01 05:11:13 -07:00
Icaro Motta 857c9c2f74 Unshadow remaining core & non-core vars (#17138)
Unshadows all remaining vars in status-mobile, including non
cljs.core/clojure.core ones. The only exceptions are cljs.core/type and
cljs.core/name (which happen quite often, so I'm not sure if it's worth
unshadowing them).
2023-09-01 11:54:53 +00:00
Icaro Motta 1ac7c2f965 Fix: missing community logo in Activity Center (#17159)
The bug was caused, again, by the fact that the component react-native/image
source was a string and it was not wrapped inside the map {:uri "..."}. The
bug was likely introduced by commit 255a3b9172

I decided to change react-native.image for good, similarly to what we do in
react-native/fast-image
(https://github.com/status-im/status-mobile/blob/ebd38295c6e5715a0ee04217b248ac69f9ddceab/src/react_native/fast_image.cljs#L21)
so we can prevent this type of bug in the future.

Fixes https://github.com/status-im/status-mobile/issues/17157
2023-09-01 11:31:19 +00:00
BalogunofAfrica d35dbff044 fix: use custom color for send button (#17146) 2023-09-01 10:47:21 +01:00
yqrashawn 7e9ba0768a fix: support new design ident ring width (#17034) 2023-09-01 16:35:46 +08:00
Jamie Caprani d462810a57 chore: move top nav to quo2 and align with figma (#17043) 2023-08-31 14:11:46 -07:00
Brian Sztamfater 1c730bc692 feat: implement interactive graphs (#17029)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-08-31 13:45:54 -03:00
Mohsen Ghafouri 62030497e5 [#17140] fix: AC tabs are flickering while scrolling them (#17145) 2023-08-31 16:46:53 +03:00
Anton Iakimov ebd38295c6 run-android: set build abis depending on connected devices abis 2023-08-31 13:01:24 +02:00
Siddarth Kumarandandresceballosm 2e63ee8baf feat: add tags - network tags component to quo2
Co-authored-by: andresceballosm <ceballosmarandres@gmail.com>
2023-08-31 02:55:17 -07:00
Ibrahem Khalil a218499f2a [16728] Allow message editing to save link previews (#17117) 2023-08-31 10:59:49 +03:00
Yevheniia Berdnyk e1616ae514 e2e: split community and activity center tests to reduce time 2023-08-31 01:24:01 +03:00
Andrea Maria Piana 70d8a90152 Show collapsed header in communities
Fixes: #16123

This commit changes the behavior when joining communities:

1) If the user hasn't joined a community, they will see the
   non-collapsed header.
2) If the user has already joined the community, they will see a
   collapsed version of the header, in order to have quicker access to
   the chats of the community without having to scroll a lot.

One edge case that is taken care of is the following:
1) User visits a community that has not joined, requests to join.
2) The user is on the community page when the state changes from
   not-joined -> joined.

In this case the user won't see the collapsed header until they leave
the community view (go back to home say and back to communities).

This is done in order to avoid some janky transition between the non
collapsed & collapsed version of the header.

This is slightly different from as mentioned in the issue "visiting the
page for the 2nd time", as that will require larger changes but it
should be an acceptable behavior, since most of the times they will have
to visit the overview to request access.
2023-08-30 21:06:13 +01:00
erikseppanen 8c02291c0b Add number tag component (#17134) 2023-08-30 13:29:59 -04:00
Andrea Maria Piana a00eb6292f Remove 3 words alias
https://github.com/status-im/status-go/compare/347d875a...bf748de2
2023-08-30 16:48:43 +01:00
frank b24dbe585b fix: Rounded edges of color sections of identity rings (#17135)
https://github.com/status-im/status-go/compare/4cc53630...347d875a
2023-08-30 21:28:04 +08:00
Ibrahem Khalil 9ab1b70e0e Pinned messages drawer comments (#16998) 2023-08-30 16:04:08 +03:00
Ibrahem Khalil 3162e2dd3e Design notes for pinned message (#16997) 2023-08-30 15:46:23 +03:00
Andrea Maria Piana 5807b34472 [Fixes: #16219] Correctly handle removal event when out of order
https://github.com/status-im/status-go/compare/d64633e3...bd2c38db
2023-08-30 13:19:34 +01:00
Mohsen Ghafouri bd36699d09 [#16550] fix: device type indicators in syncing screen (#17133) 2023-08-30 12:20:21 +03:00
Parvesh Monu 5dc874a4cd fix Chat input overlaps the last message on IPhone 14 (#17113) 2023-08-30 14:35:14 +05:30
Yevheniia Berdnyk 551ac22085 e2e: updated communities join flow (#17132) 2023-08-30 10:49:31 +02:00
Andrea Maria Piana ca7a519f89 Fix contract call for communities 2023-08-30 09:29:03 +01:00
Omar Basem a4717ae5d0 Feat: wallet create account screen UI (#17118)
* feat: wallet create account
2023-08-29 21:06:36 +04:00
BalogunofAfrica a47998a7a0 fix: resolve activity centre design feedback (#17105) 2023-08-29 16:55:11 +01:00
Flavio Fraschetti 141bf5a333 FF/animate-loading-skeleton (#16865)
New Animated skeleton loader
2023-08-29 15:15:32 +01:00
Mohsen Ghafouri 231272603d [#16861] fix: resolve discover communities design feedbacks (#17128) 2023-08-28 18:09:42 +03:00
Ulises Manuel 255a3b9172 Add missing context tags variants & fix API (#16962)
Add icon-name to group avatar

Add missing context-tags variants and fix the API to match figma

Updates context-tag previous uses

Update use of group-avatar api
2023-08-28 04:37:43 -07:00
Ulises Manuel 6156bfc472 [#16963] Refactor page nav and fix its API (#17031)
* Refactor page-nav and fix API

* Update and fix page-nav in scroll-page component

* Update page-nav uses in quo-preview

* Update page-nav uses in syncing

* Update page-nav uses in communities

* Update page-nav uses in wallet

* Update page-nav uses in onboarding
2023-08-28 02:44:53 -07:00
mmilad75 6870000490 Implement Data Item component (#16960)
Implement Data Item component #16960
2023-08-26 18:33:10 +03:30
Omar Basem 0ef7dc34e4 fix: composer cursor hidden (#17099)
* fix: iOS cursor in chat
2023-08-25 21:33:40 +04:00
Mohamed Javid 0f7e98cbe2 Update "Preview list" component (#17051)
This commit updates the "Preview list" component to support the following types (according to Figma):
- collectibles
- dapps
- accounts
- network
- tokens

Additionally, imports the images for wallet networks and dApps.
---------

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-08-25 21:41:03 +05:30
Mohamed Javid f4d6f64a66 [Feature] Implement "Showcase nav" component (#17100)
This commit implements the "Showcase nav" component which is needed for emoji picker development.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-08-25 21:16:26 +05:30
Yevheniia Berdnyk a416267094 e2e: appium upgrade 2023-08-25 17:32:54 +03:00
Mohsen Ghafouri 2358eb195b [#16846] fix: resolve communities home design feedbacks (#17089)
* [#16846] fix: resolve communities home design feedbacks

* [#16846] fix: ios card shadow cutoff, re #17098
2023-08-25 17:26:53 +03:00
Yevheniia Berdnyk 21be0ed16c e2e: fixes 25.08 2023-08-25 15:59:51 +03:00
Parvesh Monu 89d1bd3f6a fix Jump to button not responding in chat after app returns from background (#17085) 2023-08-25 15:11:18 +05:30
Ajay Sivan 5148a3c748 Quo divider-label component refactor (#17035) 2023-08-24 12:29:26 -07:00
8701f3545d [#16864] Design review: messages home (#17050)
---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
Co-authored-by: Churikova Tetiana <tatiana@status.im>
2023-08-24 14:30:47 +02:00
Mohsen Ghafouri 26eeb43569 [#16846] fix: resolve glow issue in communities home (#17097) 2023-08-24 15:05:31 +03:00
Jamie Caprani 4d7b1baace chore: add Alex to wallet team (#17024) 2023-08-24 13:11:22 +02:00
Yevheniia Berdnyk 89c2b1c818 e2e: nightly fixes 23.08 2023-08-24 04:31:27 +03:00
Icaro Motta 17df7a0d35 DRY up preview screens (#17095)
Migrate 47 out of ~90 preview screens to use the new capabilities found in quo-preview.preview.
2023-08-23 20:56:34 +00:00
erikseppanen 0552713143 Add quo2 dApp component (#17074) 2023-08-23 16:31:28 -04:00
Omar Basem 3223c71526 Feat: wallet empty account UI (#17077)
* feat: wallet account empty
2023-08-23 21:10:46 +04:00
Omar Basem 914604bbe4 UI Fix: wallet graph gradient (#17093)
* fix: wallet graph gradient
2023-08-23 20:19:19 +04:00
Volodymyr Kozieiev 821e39a562 Network dropdown component (#16982) 2023-08-23 14:12:15 +01:00
Ibrahem Khalil 4cef868eab [16866] Action Drawer design review (#17033) 2023-08-23 15:58:23 +03:00
Anton Iakimov 34f7a48503 nix: map android arch to status-go builds
Fixes partially #15595
In order to build less targets, when not needed we introduce this
mapping logic.
If only specific ABI is required - status-go will have the same
arhitecuture.
2023-08-23 12:15:05 +03:00
Omar Basem e0f83384a2 Quo2 Wallet: Network Link (#17049)
* Quo2 Wallet: Network Link component
2023-08-23 12:53:45 +04:00
flexsurfer 8fe7fad540 Audio button does not disappear when changed to 'Send' button #17082 (#17083) 2023-08-22 20:39:44 +02:00
Yevheniia Berdnyk 4dd5d88f0f e2e: updated community tests 703086 and 702786 2023-08-22 21:15:14 +03:00
codemaster 27f11fcb2d fix: group-avatar component usage (#17041) 2023-08-22 23:46:10 +10:00
Ibrahem Khalil 8e7c6fe778 Make undread-indicator as last child of view (#17064) 2023-08-22 14:20:52 +03:00
Andrea Maria Piana 79daa4d529 [Fixes: #17027] Fix spacing between own messages 2023-08-22 09:43:34 +01:00
erikseppanen bdedccdda6 wallet overview: design review fixes (#17046) 2023-08-21 19:38:04 -04:00
Parvesh Monu cace2a32a0 Improve the floating shell button and fix its position in the screens (#16981) 2023-08-21 21:30:32 +05:30
Yevheniia Berdnyk 92403f5d30 e2e: fix for navigation issue 2023-08-21 16:37:48 +03:00
Omar Basem 4c9ccf3069 Quo2 Wallet: Keypair component (#17019)
* Quo2 Wallet: Keypair component
2023-08-21 16:25:50 +04:00
Omar Basem 50f3bb005e Quo2: Wallet Button and Wallet CTAs components (#17006)
* Quo2 Wallet: Button and CTAs
2023-08-21 16:01:34 +04:00
Parvesh Monu a45f353356 fix ios blur blue overlay (#17015) 2023-08-21 16:02:17 +05:30
Mohamed Javid e4a2ac9cce Add gradient background support in bottom sheet (#16986)
This commit adds Gradient Background in the bottom sheet which will be used in Wallet Account Actions, and Switcher bottom sheet.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-08-21 15:43:50 +05:30
Ibrahem Khalil bdfdf687a4 [16827] Disable transparent video looping (#17000) 2023-08-21 11:49:41 +03:00
Alexander 95ec35343c Background shown for [Continue] button on iOS when it shouldn't overlap the color picker (#17044)
* Background shown for [Continue] button on iOS when it shouldn't overlap the color picker

* kebab-case
2023-08-18 22:22:48 +02:00
diana e186f513ed Add design review to pipeline process doc 2023-08-18 15:54:42 +02:00
Yevheniia Berdnyk 774687bef6 e2e: updated test_group_chat_mute_chat to unmute by time 2023-08-18 16:00:55 +03:00
John Ngei 66e3b60703 Add members to open community
* add members to open community

* fix: join open community notification
2023-08-18 15:38:35 +03:00
John Ngei 99294fa8ea update empty state image illustrations to reflect the applied theme
* update empty state image illustrations to reflect the applied theme

* refactored the code to use theme provider
2023-08-17 23:46:01 +03:00
Mohamed Javid e11a761fcc Revert "chore: update group-avatar component (#17014)" (#17039)
This reverts commit 673b1afc3a.
2023-08-17 18:49:38 +05:30
yqrashawn 999588e67d fix: timbre log to react-native start console (#17032) 2023-08-17 20:51:20 +08:00
yqrashawn 9cae50dc88 fix: no ident ring in pinned msg (#17011) 2023-08-17 15:19:15 +08:00
Churikova Tetiana aecad2136e e2e: starting to-dos 2023-08-17 05:09:19 +03:00
codemaster 673b1afc3a chore: update group-avatar component (#17014)
We merge it without QA because it only changes the API and doesn't need design review because nothing has been changed 👍
2023-08-17 06:44:30 +10:00
Icaro Motta b0f748cb73 Refactor Quo preview (#16996)
Improvements to quo previews:

- Change quo-preview.preview code to be more aligned with our guidelines.
- Remove duplication when setting up preview screens in quo-preview.main. Now we
  only need to specify the :name and :component keys and fallback to a good
  default for "{:options {:topBar {:visible true}}".
- Auto-generate descriptor labels based on the key.
- Fix form field colors for dark & light, especially for Android.
- Redesigned form fields to look nicer 💄
- Create component that abstracts away the code for rendering the form fields
  and the preview area. This will aid us in creating more consistent looking
  preview screens and keep things DRY.

How do we use the new code?

Just as before, define a state binding and use it to build up the arguments of
the component. Then, use the preview/preview-container to wrap the component.
You can use certain props to control how the preview is styled, etc, but that's
about it.

    (def descriptor
      [{:type :text :key :label}
       {:key     :chevron-position
        :type    :select
        :options [{:key :left}
                  {:key :right}]}])
    
    (defn view
      []
      (let [state (reagent/atom {:chevron-position :left
                                 :label            "Welcome"})]
        (fn []
          [preview/preview-container {:state state :descriptor descriptor}
           [quo/divider-label @state]])))
2023-08-16 11:30:21 +00:00
Andrea Maria Piana d988296ecf Add next in line for communities 2023-08-16 12:16:32 +01:00
Andrea Maria Piana dc8a09ce75 Update wallet team members 2023-08-16 12:16:08 +01:00
Andrea Maria Piana 0dea703ca0 3 lines community description 2023-08-16 12:15:12 +01:00
Ibrahem Khalil 50134ebeff Fix jump to button showing inside composer (#16999) 2023-08-15 11:31:50 +03:00
yqrashawn a6710f902f feat: render all avatars using media server (#16193) 2023-08-15 09:59:40 +08:00
codemaster115 87a150cec1 fix: lint 2023-08-14 12:30:14 -05:00
codemaster115 98e2d8c6f1 fix: group-avatar component usage 2023-08-14 12:14:17 -05:00
codemaster115 43d72e0ba1 chore: add missing icon asset 2023-08-14 12:14:17 -05:00
codemaster115 5bb309ca30 fix: group-avatar icon 2023-08-14 12:14:17 -05:00
codemaster115 eaa089b78c chore: refactor using group-avatar component 2023-08-14 12:14:14 -05:00
codemaster115 9f12b4335c chore: update group-avatar component 2023-08-14 12:13:03 -05:00
codemaster115 7bc98fcc44 chore: update group-avatar component 2023-08-14 12:13:03 -05:00
Alexander da22f4a809 Use customization-color to inherit custom colour for notification dots / counter (#16947)
* Inherit custom colour for unread notification dots

* Code style update; notification-dot as a separate component

* Code style update; notification-dot as a separate component

* Removed leftovers

* Updates

* Lint fix
2023-08-14 16:27:36 +02:00
Omar Basem 961150ac30 Quo2 Wallet: Account list card (#16893)
* Quo2: account-list-card
2023-08-14 17:00:42 +04:00
Andrea Maria Piana 13e9db198f Pull images from status-go
Fixes: #16885

Images were not "prepared" before being sent to the frontend.

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

https://github.com/status-im/status-go/compare/1ca165c5...d61f983d
2023-08-14 12:33:02 +01:00
Andrea Maria Piana 9eaee8864c Update status-go docs 2023-08-14 10:23:12 +01:00
flexsurfer bf8b31d22d Add preview and counters for CR system messages #16898 (#16969) 2023-08-12 06:39:26 +02:00
Andrea Maria Piana 713cf8bf79 Update version to 0.163.6 2023-08-11 13:21:26 +01:00
Omar Basem 79994e2dbf Wallet Empty Home UI (#16965)
* feat: wallet empty home
2023-08-11 16:06:43 +04:00
frank 715fc13d46 https://github.com/status-im/status-go/compare/9896ec81...daa9ad4e
fix app crash during key generation
2023-08-11 12:46:01 +01:00
frank 1536ff8fa5 revert identity ring colours (#16938)
* revert identity ring colours
2023-08-11 09:30:53 +08:00
Yevheniia Berdnyk 625510d6c9 e2e: Added test for message with hashtag in communtiy channel 2023-08-10 18:09:25 +03:00
Yevheniia Berdnyk 8bab9f8f22 e2e: pulling geth log in teardown if setup is failed 2023-08-10 15:34:41 +03:00
Jamie Caprani 1cb16b4945 chore: add composer button to quo2 and use in app (#16902) 2023-08-10 04:27:25 -07:00
Jamie Caprani 302c54b6c4 Refactor some quo2 components to use best practices
* chore: update quo2 group avatar to best practices

* chore: update quo2 browser-input to best practices

* chore: update quo2 dynamic-button to best practices

* chore: update quo2 tabs to best practices

* chore: cleanup quo2 core file

* chore: use best practices in quo2 banner

* chore: use best practices in quo2 step
2023-08-10 03:59:13 -07:00
Andrea Maria Piana 87574ad78a Align text left in lightbox 2023-08-10 10:27:49 +01:00
Ibrahem Khalil 30175f5d8b feat: Account overview component (#16742) 2023-08-10 09:19:47 +03:00
Tetiana Churikova 5a3d886055 e2e: discover communities (#16957) 2023-08-09 18:14:42 +02:00
Icaro Motta 6550bc058d Document quo best practices and guidelines (#16901) 2023-08-09 11:32:36 -03:00
Alexander 528df179d9 "Your name" input field is dispositioned to the bottom on Create profile screen (Android) (#16923) 2023-08-09 16:06:28 +02:00
Jamie Caprani 6b4b9d99f4 chore: add basic flow for wallet development to begin 2023-08-09 05:45:48 -07:00
Andrea Maria Piana 016b38f15c Various fixes on messaging view 2023-08-09 12:16:35 +01:00
Anton Iakimov 6274bd7cb6 ci: run nightly e2e at 2am, not 4am 2023-08-09 11:43:57 +02:00
Anton Iakimov 2976830497 ci: cleanup e2e tests and builds from jenkins combined job 2023-08-09 11:16:31 +02:00
John Ngei 11c798817e show continue button background on scroll
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
2023-08-09 00:19:01 +03:00
Ulises Manuel Cárdenas 79bf4bb8d5 [#16437] Fix sync QR code not recognized after trying again (#16746)
* Add bind-component function to `react-native.navigation`

* Create helper function to use react-native-navigation lifecycle methods

* Fix sync QR code not recognized after trying again & refactor

* Add atom to manage callbacks when qr code scan fails
2023-08-08 11:53:05 -06:00
Parvesh Monu ff1ae2f4aa Add fallback letter on channel on the community card (#16863) 2023-08-08 18:34:36 +05:30
2869edafdd implement quo2 inputs - locked input component
Co-authored-by: tumanov-alex <uwontrememberthis@gmail.com>
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2023-08-08 05:16:06 -07:00
Mohamed Javid d143b1d0e9 [Quo2] Implement "Progress bar" component (#16905)
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>
2023-08-08 17:15:55 +05:30
frank bf502175f7 fix: process backup messages when recovering account from seed phrase (#16879) 2023-08-08 16:19:48 +08:00
Omar Basem d8680ecf29 Quo2 Wallet: Summary Info (#16881)
* feat: quo2 wallet - summary info
2023-08-08 08:58:53 +04:00
mmilad75andJamie Caprani 24c4cd1509 Implement Quo2 Numbered-Keyboard / Numbered Keyboard component #16606 (#16851)
* Implement Quo2 Numbered-Keyboard / Numbered Keyboard component

* fix lint

* fix margin bottom

* fix android issue

* retructure a bit

* refactor code

* resolve comments

* fix styles

---------

Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2023-08-07 20:35:14 +03:30
Volodymyr Kozieiev 86e16564fa Fetching featured communities (#16829)
Featured communities updated from status-go signal
Community card skeleton now is a part of a component
2023-08-07 16:43:58 +01:00
Anton Iakimov d5c1ecc104 nix: switch status-im config to env vars, cleanup
To help with #15595 changes, refactoring is required.
In this PR we switch from config to env vars.
Doing some cleanup meanwhile.
2023-08-07 14:50:36 +02:00
flexsurfer bc18e8aac5 [#16254] Add new system messages in chat history when accepting a con… (#16775)
* [#16254] Add new system messages in chat history when accepting a contact request
2023-08-07 10:56:54 +02:00
Omar Basem 5b495927ef Quo2 Wallet: Token Value (#16880)
* feat: quo2 wallet - Token Value
2023-08-07 10:34:54 +04:00
erikseppanen 2819c20400 Quo2 wallet: add wallet overview (#16855) 2023-08-04 11:43:39 -04:00
Roman Volosovskyi 18347b44fe Set initial block range for a newly created account (again) 2023-08-04 15:40:34 +02:00
Mohamed Javid bad9aa9e20 [Fix] Crash on onboarding due to nil value (#16884)
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-08-04 17:22:43 +05:30
Yevheniia Berdnyk e5b6378e15 e2e: updated tests with new communitites creation flow 2023-08-04 01:37:33 +03:00
Ulises Manuel Cárdenas 7ad378e9c8 [#16709] chat home banner animation (#16823)
* Small typo fix
* Move header-spacing & empty-state to common.home namespace
* Create common animated banner component for chats and communities
* Add animated banner to chats tab
2023-08-03 13:29:44 -06:00
Mohamed Javid f6ce63734c Update entry points for Quo2 Preview (#16843)
This commit adds two new entry points (button on the top right corner in the navigation bar) for the Quo2 preview screen without having to log in to the app:

- "New to Status"
- "login" 

Additionally, this commit updates the theme switcher to be sticky at the top of the Quo2 preview screen to quickly change the theme without having to scroll all the way top.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-08-03 23:49:01 +05:30
flexsurfer d9b54c47d3 simple quo groups (#16857) 2023-08-03 19:00:07 +02:00
Parvesh MonuandJamie Caprani 109061a112 Enable layout animations by default (#16832)
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
2023-08-03 18:53:15 +05:30
Jamie Caprani 98085cd9c9 chore: adjust quo2 counter component to use customization-color internally (#16799)
* chore: refactor use of customization-color in quo2 counter

* chore: fix uses of counter to use custom colors in app
2023-08-03 04:57:39 -07:00
Mohamed Javid cccf5ed015 Update on-press on collectible component (#16837)
This commit adds the "on-press" prop to the "collectible" component which is required for navigating to other screens, such as the details screen when we will start building the wallet.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-08-03 14:28:14 +05:30
Omar Basem b0e45207df Quo2: Token Input (#16819)
* feat: quo2 token input (1/2)
2023-08-03 09:08:08 +04:00
frank 7b425c1a53 Add method for fast creation of communities (#16806)
* fast create community to test

* fix: in PR builds only token gated community is available

* update status-go-version.json
2023-08-03 08:59:28 +08:00
Yevheniia Berdnyk 049e958992 e2e: added test for markdown support (702809) 2023-08-02 21:53:03 +03:00
Yevheniia Berdnyk 3f433d6f19 e2e: group chat unread messages 2023-08-02 19:05:29 +03:00
Alexander da8ca36369 Top bar UI (design review) (#16820)
* Top bar UI (design review)

* Lint fix

* Show `Online`/`Offline` label only for non-group chats

* Fixed formatting
2023-08-02 17:26:06 +02:00
Jamie Caprani d26db932e8 Button Refactors Final Final (#16772)
* chore: remove use of override-background-color prop in button

* chore: update uses of quo2 button to align with figma

* chore: fix button preview screen

* fix: onboarding customization colors
2023-08-02 08:03:02 -07:00
Jamie Caprani ba859b163a Revert "Set initial block range for a newly created account" (#16842)
This reverts commit ad17c37dc1.
2023-08-02 07:35:13 -07:00
Anton Iakimov 08bca43f0f ci: create e2e nightly run on ci.status.im
Before removing e2e relaled tasks from ci.infra.status.im - let's have a job on devel Jenkins instance.
2023-08-02 15:18:45 +02:00
Roman Volosovskyi ad17c37dc1 Set initial block range for a newly created account 2023-08-02 11:40:59 +02:00
mmilad75 07336edef6 Implement Quo2 Numbered-Keyboard / Keyboard Key component (#16723)
* Implement Quo2 Numbered-Keyboard / Keyboard Key component

* add tests

* fix lint issues

* add derivation-path icon

* add tests

* refactor preview
2023-08-02 11:38:38 +03:30
Flavio Fraschetti 7c73b7ea12 Implement account_card and variants (#16801)
* Implement account_card and variants with tests
2023-08-01 18:00:03 +01:00
jakub 1a97731454 ci: fix use of release Infura key for E2E runs
Depends on: https://github.com/status-im/status-jenkins-lib/pull/71

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-08-01 18:18:53 +02:00
Brian Sztamfater 21807cb761 feat: implement wallet graph component (#16789)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-08-01 11:10:16 -03:00
Omar Basem b8d01c8bb9 Quo2 Wallet: network bridge (#16793)
* feat: quo2 network bridge
2023-08-01 14:44:14 +04:00
frank 99c10519c3 fixed: getting stuck on the "Keys saved" randomly (#16816)
* fixed: getting stuck on the "Keys saved" randomly
2023-08-01 18:23:45 +08:00
Mohamed Javid 81b8c7ca65 Implement Account Avatar Component (#16795)
This commit implements the "Account Avatar" component which is needed for wallet screen development.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-31 21:54:04 +05:30
Yevheniia Berdnyk 96ff8ab382 e2e: fix for creating second user 2023-07-31 15:39:37 +03:00
Omar Basem cf11743f87 Quo2: Network Amount (#16764)
* feat: network amount component
2023-07-31 14:53:27 +04:00
Mohamed Javid 162f02ea27 Implement gradient cover component (#16778)
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>
2023-07-31 12:49:34 +05:30
Omar Basem 0ee0137c72 Camera extra features (#16781)
feat: camera extra features
2023-07-31 09:01:30 +04:00
Ulises Manuel Cárdenas 82645f5df4 [#16481] Fix unread badge in group chats (#16610)
* Small refactor & add customization color to `info-count` component
* Fix notification mark in group chats for no mentions, also notification alignment styles in the component
* Code style: `change > 0` for `pos?`
2023-07-28 13:33:07 -06:00
Ulises Manuel Cárdenas c4b142ea68 [#16446] Communities banner animation (#16567)
* Simplifies community banner and adds style property
* Add animation for communities banner card
* Moves value-in-range to `utils.number` and removes `bounded-val`
* Moves animated values to view namespace
* Make `community.banner` component themeable
2023-07-28 13:18:33 -06:00
Mohsen Ghafouri 3b8f66d2ec [#16377] feat: add calendar component in quo2 preview (#16783) 2023-07-29 00:26:15 +05:30
Icaro Motta b9890a9d44 Upgrade shadow-cljs and ClojureScript (#15417)
This commit upgrades Shadow CLJS from 2.11.16 (released on Feb/21) to latest
2.25.0 (Jul/23), so ~1.5 years worth of upgrades. By upgrading shadow we
can finally use the latest major Clojure version 1.11.x.

Why upgrade shadow?

- Shadow CLJS controls the ClojureScript version we can use. In order to use the
  latest major Clojure version we must upgrade Shadow CLJS.

- Shadow CLJS releases new versions very frequently, and if you take a look at
  its changelog https://github.com/thheller/shadow-cljs/blob/master/CHANGELOG.md, you'll see
  it had tons and tons of bug fixes over the years. I hope some of them help
  improve the DX for certain contributors who recently reported issues with
  it.

- Clojure 1.11 brings new features, bug fixes and even performance improvements
  (although I think the performance mostly impacts Clojure on the JVM). See the
  changelog https://github.com/clojure/clojure/blob/master/changes.md#changes-to-clojure-in-version-1110

Things that can be beneficial to us, or are interesting nonetheless:

- New :as-alias to be used in require, which is like :as but does not require
  the namespace to load. This means namespaced keywords using :as-alias can't
  cause circular dependency errors. This feature would very useful if we used
  namespaced keywords, but we don't, so...
  https://github.com/clojure/clojure/blob/master/changes.md#22-as-alias-in-require
- New macros run-test and run-test-var to run single test with fixtures and
  report.
- New iteration function, useful for processing paginated data.
  https://www.abhinavomprakash.com/posts/clojure-iteration/
- New update-keys function: applies a function to every key in a map.
- New update-vals function: applies a function to every value in a map.

Examples for update-vals and update-keys. They should perform better than the
common reduce-kv approach since they use a transient data structure.

    (let [m {:a 1 :b 2}]
      (update-vals m inc)) ; => {:a 2, :b 3}
    
    (let [m {:a 1 :b 2}]
      (update-keys m name)) ; => {"a" 1, "b" 2}

Why change namespaces within __tests__ directories?

Any namespace with the word --tests-- throws an error, like the one below. I
didn't bother investigating why, so I changed the guidelines to reflect the new
convention. It's probably related to the double dashes in the name.

    Namespace quo2.components.dividers.--tests--.divider-label-component-spec has a
    segment starting with an invalid JavaScript identifier at line 1
2023-07-28 13:40:54 -03: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
Jamie Caprani a8303dbe50 chore: remove uses of override theme prop (#16570) 2023-07-28 02:36:54 -07:00
Tetiana Churikova 43cba161d6 gh: add label to bug template (#16796) 2023-07-27 16:56:12 +02:00
Yevheniia BerdnykandChurikova Tetiana ce08131c01 e2e: new pub key (#16779)
Co-authored-by: Churikova Tetiana <tatiana@status.im>
2023-07-27 13:14:09 +02:00
Ulises Manuel Cárdenas 4f044765e1 [#16278] fix tips in white camera border (#16716)
* Remove unnecessary wrapper
* Fix border tips and refactor
* Add comment about using 1.9 width
2023-07-26 14:08:57 -06:00
Parvesh Monu 7cd9f76043 Fix UI freezing when image is opened from activity center (#16707) 2023-07-26 18:19:10 +05:30
Icaro Motta 238e35a281 Unshadow more Clojure core vars (#16777)
This is a continuation of https://github.com/status-im/status-mobile/pull/16500 (Lint
& fix some shadowed core Clojure(Script) vars).

Notes: As a reminder, the goal is to eventually disallow shadowing core Clojure
vars entirely, but to get there and avoid rebase hell and regressions, we need
to do in smaller steps, especially because we can't safely automate the process
of unshadowing vars.

We are already down from ~500 shadowed core vars to 350 in total.

Why is this PR is using names such as "s", "v" or "sym"? Names such as s or v
are the so called idiomatic names, and are listed in the Clojure Style Guide
https://guide.clojure.style/#idiomatic-names. I used them whenever I felt
appropriate. For the var cljs.core/symbol I opted to use sym, even though the
symbol in question is not necessarily a Clojure symbol, I think the alias
conveys the meaning well enough
(https://www.clojure.org/guides/learn/syntax#_symbols_and_idents).

New vars linted:

- comparator
- identity
- str
- symbol
- val

Outstanding shadowed vars include type, name, hash, comp.
2023-07-26 11:26:12 +00:00
Alexander 57c538e9d0 Update navigation bar to support dark mode (#16762)
* Dark mode top bar

* Fixes

* Style fix
2023-07-26 09:48:51 +02:00
Omar BasemandMilad e49a3ab5cd feat: category reorder component (#16719)
* feat: category reorder component

---------

Co-authored-by: Milad <mmilad.sanati@gmail.com>
2023-07-26 11:11:17 +04:00
Mohamed Javid 1721b40b3f Refactor toast component to use theme context (#16711)
This commit refactors the "Toast" component to use theme context for consistency across the codebase.

Each toast will have its theme provider, which will help the children to use the context properly without interfering with other toast's context.

The following components are refactored to use with-theme / theme-context as it is used in the "Toast":

- "text" component
- "user-avatar" component
- "icon" component
- "circle-timer" component

This commit also updates the icon keyword used in the ":toasts/upsert" event dispatch to respect icon guidelines.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-25 20:36:02 +05:30
mmilad75 ec6800216b Notification Centre - add Empty Content screen (#16715)
* Notification Centre - add Empty Content screen (#16715)
2023-07-25 18:06:00 +03:30
Alexander 15add24cd7 Show authout details in message preview of context drawer (#16765) 2023-07-25 15:34:32 +02:00
Parvesh Monu 28f790b436 fix missing duration value in muted chat button text (#16769) 2023-07-25 17:22:12 +05:30
Tetiana Churikova 9aafe61f5f gh: update templates (#16771) 2023-07-25 12:33:34 +02:00
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
Yevheniia Berdnyk 99dc79842d e2e: nigthly fixes 24.07 2023-07-24 23:14:16 +03:00
Parvesh Monu 2a8e6cb304 Implement activity logs photos component (#16760) 2023-07-25 00:49:26 +05:30
Yevheniia Berdnyk eb3de978ce e2e: mute chats 2023-07-24 17:43:44 +03:00
Brian Sztamfater e672bf9163 feat: onboarding transition for new to status flow (#16554)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-07-24 10:17:36 -03:00
Omar Basem e33c877989 feat: camera screen (1/2) (#16569)
* feat: camera screen (1/2)
2023-07-24 16:46:43 +04:00
BalogunofAfrica c5a486622d feat: browser input (#16487) 2023-07-24 13:28:43 +02:00
flexsurferandYevheniia Berdnyk 00f39225ea Do not show biometrics onboarding screen if biometric is not available (#16744)
* fix biometric screen

* updated e2e

---------

Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
2023-07-24 13:06:35 +02:00
Ulises Manuel Cárdenas 0ac6817488 [#16551] - shared community name in switcher (#16576)
* Fix community tag text ellipsis
* Fix channel card overflow and ellipsis in switcher
2023-07-21 14:15:29 -06:00
Jamie Caprani 33d41dc5d5 Refactor Button and correct use of community color (#16536)
* chore: refactor button and add use for community colors

* chore: update color in button to work with community color

* chore: correct uses of button across app
2023-07-21 06:43:41 -07:00
Omar Basem 76eea91ba2 feat: category quo2 component (#16713)
* feat: category component
2023-07-21 10:13:36 +04:00
Churikova Tetiana 1b2ad33926 e2e: TimeoutException 2023-07-20 20:06:43 +03:00
Mohamed Javid 9731e7039c Refactor Bottom Sheet to use Theme Context (#16710)
This commit updates "Bottom Sheet" to use the theme (for theme provider) provided on the bottom sheet args when dispatching. This will ensure the theme is passed down to its child components where it can consume and render based on the theme.

Changes done:

In Bottom Sheet:
 - Fix Bottom Sheet to use the correct background colour (neutral-95) for dark mode (as per Figma)
 - Fix the Icon colour for danger in light mode
 - Updated Quo2 Preview to provide an option for the bottom sheet theme

In Action Drawer:
 - Refactor the Action Drawer component to consume theme context

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-20 19:43:17 +05:30
Mohamed Javid b14757b120 [Fix] Scroll to bottom on editing message (#16630)
This commit fixes (by skipping) the scroll to the bottom of messages when the user edits a message and sends it.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-20 16:57:09 +05:30
John Ngei 2317e856bf Mute community
* mute and unmute community

https://github.com/status-im/status-go/compare/dfdaa722...e6187aec

* mute and unmute community and all community chats

https://github.com/status-im/status-go/compare/dfdaa722...3abc86e4

* updated statu-go

https://github.com/status-im/status-go/compare/dfdaa722...919123e1

* refactored mute chat drawer

https://github.com/status-im/status-go/compare/d3e650d5...3af0b17c

* refactored mute chat drawer

https://github.com/status-im/status-go/compare/dfdaa722...3af0b17c

* fixing mute channels

* fixed mute community channels

* update community chats mute status

https://github.com/status-im/status-go/compare/dfdaa722...dc50ac21

* added mute and unmute community toast

https://github.com/status-im/status-go/compare/dfdaa722...c06f7a6c

* unmute community when atleast one community channel is unmuted

https://github.com/status-im/status-go/compare/dfdaa722...e691c475

* updated status-go

https://github.com/status-im/status-go/compare/b2e56f5d...c52718cd

* updated status-go version v0.162.5
2023-07-19 16:30:42 +03:00
flexsurfer 32f18c3d3c [#16703] The display name is not resolved in chats for user sender after relogin (#16704) 2023-07-18 10:04:42 +02:00
Andrea Maria Piana e99f6de434 Update version to 0.162.3 2023-07-17 15:53:14 +01:00
Parvesh Monu bb3b3061c6 fix navigation to community from discover communities screen (#16702) 2023-07-17 13:56:46 +05:30
Ibrahem Khalil 0067468d57 Fix failing mute till test (#16453) 2023-07-16 15:02:32 +03:00
Ibrahem Khalil b2cbed444c [161108] Optimize message styling when there's multiple mentions on top of each other (#16505) 2023-07-16 14:40:09 +03:00
Yevheniia Berdnyk 1d0186a12e fix for airplane mode 2023-07-15 00:17:17 +03:00
Parvesh Monu c0e4653129 hide mutual update's system messages (#16674) 2023-07-14 19:29:19 +05:30
Andrea Maria Piana 60f18fc6fb Update readme 2023-07-14 10:42:17 +01:00
Parvesh Monu b531dadf96 fix navigating to chat via the 'Jump to' button breaks composer (#16604) 2023-07-14 13:45:12 +05:30
Andrea Maria Piana 2b0ea01710 Avoid panic when config missing in community 2023-07-14 08:26:21 +01:00
Mohamed Javid 9f5e7ce3f9 Add flash toggle for the camera in sync screen (#16558)
This commit adds a flash toggle for the camera in the "Sign in" and "Scan sync code" screens.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-13 17:33:53 +05:30
Parvesh Monu a340e2a55c fix image long press issue and cropping (#16571) 2023-07-13 14:07:42 +05:30
Icaro Motta 88c4521321 Move status-im.utils.money to utils.money (#16573) 2023-07-12 18:26:04 +00:00
codemaster 645a5b312b fix: banner images/colors in shell (#16239) 2023-07-13 00:56:43 +10:00
Andrés Felipe Ceballos M c55f12ecf8 [#15950] Updated build-image-messages (#16518)
Author: andresceballosm <ceballosmarandres@gmail.com>
2023-07-12 18:34:29 +05:30
Icaro Motta 6c28e9349f Fix & optimize shadows foundation (#16553)
Rewrite the shadows foundation API:

- Fix (implementation & usages): theme changes were not causing shadows to be
  reevaluated.
- Optimization: define all possible shadow values at compile time. Good to
  reduce cycles on garbage collection since recreating the shadow map all the
  time is unnecessary and also to save cycles on computing colors since calls to
  colors/alpha are not memoized.
- API redesign: unify access to Design System shadows in a single function.

None of the actual shadow values changed.

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

API rationale
=============

The quo2.foundations.shadows namespace reflects what's in the Design System >
Foundations > Shadows https://www.figma.com/file/v98g9ZiaSHYUdKWrbFg9eM/Foundations?type=design&node-id=624-965&mode=design&t=CvIotdjbHKHcHjpd-0).
Figma users see these shadows in other components as "Shadow/Normal/Light/03".
Notice the shadow's weight is shown as a number (not the semantic name in Figma,
e.g. "intense", "strong"):

So to make things as easy as possible, I opted for exposing a single public
function named "get", which receives arguments in order of frequency of usage
and which expects shadow weights as numbers so that devs don't need to mentally
translate 1 to "soft", or 3 to "intense".
2023-07-12 11:35:14 +00:00
Icaro Motta 6170686e34 Rewrite Community List component (#16527)
Re-implements the component Community List according to guidelines
and, most importantly, fixes a bunch of issues and tries to achieve 100%
compatibility with Figma.

The new implementation is trying to mirror Figma properties as much as possible.

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

Changelog:

- Refactor to guidelines.
- Fix: original implementation in money/format-amounts had a bug caught by new
  unit tests ("1000000" was formatted incorrectly).
- Fix: Community permission tag correct background when theme is overridden and
  when blur is enabled.
- Fix: Notification dot uses correct colors for dark mode and blur variants.
- Fix: Community stats background when blur is enabled.
- Fix: Community stats icon color when blur is enabled.
- Add: The component's Quo preview screen is smarter and will only show form
  fields (aka descriptors) that are relevant for each component type (engage,
  discover or share).
- Add: replace hardcoded community statistics with an implementation that
  actually accepts real numbers and which are correctly formatted.
- Add: New Quo descriptor type number.
- Add: Component uses correct shadows according to foundations/shadows.
2023-07-12 11:14:24 +00:00
Mohamed Javid 72e56dcf75 [Fix] Login Validation Error (#16562)
This commit fixes the log-in validation issue due to not receiving the "node.login" signal from "status-go".

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-12 16:12:50 +05:30
Jamie Caprani 4801342a42 chore: add doc on pixel perfection (#16539) 2023-07-12 03:31:14 -07:00
Tetiana Churikova 7282ba04bc e2e: fixes shell nav (#16545) 2023-07-12 11:21:39 +02:00
Ibrahem Khalil 2e397f0065 [16524] Fix chevron icon showing when chat is muted (#16528) 2023-07-12 11:28:53 +03:00
Parvesh Monu bcb55a1ab3 Enable shell navigation (#16438) 2023-07-12 13:24:50 +05:30
Alexander 224d6c7cad Top bar fixes (#16506)
* Recent fixes

* More fix attempts (more successful now)

* Updates for `on-content-size-change`

* Lint fix

* Update

* View fixes
2023-07-11 20:30:22 +02:00
Mohamed Javid 126a8705cd [Fix] Seen state in Activity Center when it is open (#16541)
This commit fixes the seen state of notifications, if the user is in the Activity Center screen while receiving a new notification.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-11 20:59:17 +05:30
Jamie Caprani 3fce4816dc feat: add video and animation to generating keys page (#16415) 2023-07-11 07:26:40 -07:00
Omar Basem 704b160964 feat: album selector animation (#16533)
* feat: album selector animation
2023-07-11 15:16:24 +04:00
Ibrahem Khalil 7350c88920 [16467] Fix delete for me doesn't work on chat reopen (#16529) 2023-07-11 13:42:14 +03:00
Omar Basem 7392b9bf50 Lightbox opacity swipe animation, and margins (#16510)
* feat: lightbox animations
2023-07-11 13:41:34 +04:00
Ibrahem Khalil f5948fa016 [16543] Fix muting channel from inside and outside chat page (#16544) 2023-07-10 22:42:15 +03:00
Mohamed Javid 919fbf2091 [Fix] Profile colour in "Jump to" and "View profile" buttons (#16538)
This commit fixes the profile colour in the following screens:

- "View Profile" button on the "Add a contact" page
- "Jump to" button inside the chat
- "Jump to" button in the "Community Overview" screen

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-10 18:44:31 +05:30
Parvesh Monu 728d9d01c5 fix App is not opened on the last viewed chat with biometric login enabled (#16516) 2023-07-10 15:33:31 +05:30
Jamie Caprani 9ac14b6fac chore: update guidelines for figma api to match quo2 component api (#16454) 2023-07-10 02:45:39 -07:00
Brian Sztamfater 4414f8ffd3 fix: onboarding carousel screen overflows affecting navigation (#16514)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-07-07 12:55:38 -03:00
Andrea Maria Piana 1e8ea3fd16 Enable lightclient
https://github.com/status-im/status-go/compare/67050429...67050429
2023-07-07 15:40:24 +01:00
Icaro Motta 17f5ad79f4 Fixes for the Community Channel avatar component (#16379)
- Community channels may not have an emoji, and in such cases, it should fall
  back to a single letter. The component was recently updated in Figma after
  this concern was brought up to designers.
- The default (fallback) color to be used in the list of community channels
  should be the community color, not a default "primary-50" as was before. It's
  a subtle change because the colors are rendered at 10% transparency.
- Rewrote the channel-avatar component to follow guidelines.

Fixes:

- https://github.com/status-im/status-mobile/issues/16332
- https://github.com/status-im/status-mobile/issues/16327
2023-07-07 14:16:50 +00:00
Siddarth Kumar d76e64b1bb fix: profile redirect on newly created account (#16340)
This commit gets rid of the app-state check which is buggy,
The app-state becomes `active` after the universal link code has executed always resulting in the redirect not happening.
2023-07-07 19:21:00 +05:30
flexsurfer ac675e28eb [#16520] ENS setting is unavailable on PRs when test network is set (#16521) 2023-07-07 15:34:02 +02:00
Omar Basem 5755d2e21a Lightbox text sheet (#16471)
* feat: lightbox text
2023-07-07 17:10:04 +04:00
Rahul Pratap cf2a3bfce7 Fixed issues with styling in pinned messages panel. (#16498) 2023-07-07 17:16:12 +05:30
Siddarth Kumar dcda44fab6 fix: ellipsis on compressed-keys as per designs (#16492)
This commit does the following:

- Moves `get-abbreviated-profile-url` from shell share view into `utils.address` and update its usage.

- Adds `get-shortened-compressed-key` to `utils.address` and update the code using `get-shortened-key` to now use `get-shortened-compressed-key` instead.

- Adds test for newly introduced utils.
2023-07-07 16:31:17 +05:30
Yevheniia Berdnyk 362aa476ae e2e: fix for nightly apk upload (#16517) 2023-07-07 11:08:13 +02:00
Jamie Caprani 25b088833d chore: move button into view and style files (#16442)
* chore: move button into view and style files
2023-07-07 00:20:37 -07:00
flexsurfer 3395baa966 fix smthg test folder (#16519) 2023-07-07 08:46:54 +02:00
flexsurfer 4327653b0b [#16422] Merge profile and profile overview into one map in status-go (#16507)
* [#16422] Merge profile and profile overview into one map in status-go
2023-07-06 19:46:21 +02:00
Yevheniia Berdnyk 26dcc16ea6 e2e: fix for endless apk upload + teardown 2023-07-06 17:47:35 +03:00
Icaro Motta 9ed68ee7d1 Lint & fix some shadowed core Clojure(Script) vars (#16500)
It's well known that shadowing core Clojure vars can lead to unexpected bugs. In
fact, it's a common source of bugs in other languages too. In the status-mobile
repository there are, in total, 562 shadowed vars, ~500 are core vars. Excluding
the "old code" we still have 285 offenders.

In status-mobile I've already seen two bugs caused by shadowed vars, both with
the shadowed var "name". But probably other problems happened in the past, and
others will happen in the future if we don't do something about this. This PR is
also my response to my frustration trying to review PRs and checking for
shadowed vars, humans were not meant for that!

In this commit we are enabling ":shadowed-var" to lint certain (not all) core
vars as errors (not warnings). In future PRs we can gradually unshadow more
vars. For the record, name is shadowed 40 times in the new code and 130 in
total, and type is shadowed 93 times in the new code and 124 in total!

What about non-core vars, should we allow shadowing? There are ~70 non-core
shadowed vars. In my opinion, we should also lint and disallow shadowing
non-core vars, since it may cause the same kind of bugs of shadowing core vars.
But this decision can be left for another moment/issue, after we have fixed the
most prominent problem of shadowing core vars.

Which vars are unshadowed in this PR? I fixed 62 errors and unshadowed
cljs.core/iter, cljs.core/time, cljs.core/count, cljs.core/key,
clojure.core/key.

Resources:

- [clj-kondo linter: shadowed-var](https://github.com/clj-kondo/clj-kondo/blob/master/doc/linters.md#shadowed-var)
2023-07-06 10:28:07 +00:00
Parvesh Monu 4d7cf3e94e Replace placeholders on "Jump to" page (#16501) 2023-07-06 15:27:18 +05:30
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
Ibrahem Khalil 229a806f12 [16079] Fix dark mode for communities and messages home (#16382) 2023-07-05 22:34:13 +03:00
Ibrahem Khalil abe653c086 [16469] Fix conditional of selection user's name in confirmation drawer (#16489) 2023-07-05 20:06:19 +03:00
AlexanderandOmar Basem f047665f75 Dynamically calculate composer height to adjust the spacing on the bottom of the list (#16235)
* fix: Android auto scrolling to bottom of chat

---------

Co-authored-by: Omar Basem <omarbasem.0101@gmail.com>
2023-07-05 18:30:27 +04:00
Tetiana Churikova ea3b090265 e2e: change numpocesses (#16494) 2023-07-05 14:59:36 +02:00
Tetiana Churikova c52bf965f7 e2e: more groups (#16483) 2023-07-05 11:55:40 +02:00
Ulises Manuel Cárdenas e260187cf5 [#16073] Password info box
* Refactor: Remove use of f-component

* Fix documentation drawer styles

* Refactor: move title styles to style ns

* Fix StaticSafeAreaInsets not being defined on component tests

* Fix bottom sheet height on Android
2023-07-04 17:08:47 -06:00
Ulises Manuel Cárdenas ca0915c940 #16111 - Toast animation & dismiss gesture
* Enable toast animations and refactor

* Add gesture-handler-root-HOC to detect toast's gestures on Android

* Add comment about flex 0 style
2023-07-04 16:25:08 -06:00
Ulises Manuel Cárdenas 2b4b357c32 [#16378] Fix channel unread counter space
* Makes `divider-label` styles more lenient

* Small refactor to `list-items.channel` component

* Fix styles for `channel-list-component`
  - Refactor `channel-list-component`
  - Add some missing `:style` keys in `status-im2.contexts.communities.overview.view`
  - Fix a warning related to using a `deref` in a `lazy-seq`

* Changes icon keyword namespace from `:main-icons` to `:i`
2023-07-04 16:11:56 -06: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
Yevheniia Berdnyk 8978e92042 e2e: nightly fixes 2023-07-04 20:26:05 +03:00
Brian Sztamfater c2c79cc1ac feat: implement onboarding modal transition for sign in screen (#16167) 2023-07-04 12:43:08 -03:00
Parvesh Monu affd2a5e76 Implement static loading skeleton (#16474) 2023-07-04 16:55:22 +05:30
Yevheniia Berdnyk ef99bf2ad6 e2e: tests for reactions in community and group chats 2023-07-04 13:17:48 +03:00
Jamie Caprani 1f6f907d57 feat: add markdown list component to quo2 (#16411) 2023-07-03 13:08:19 -07:00
Jamie Caprani 97b254c514 chore: update use of theme in page-nav component (#16424) 2023-07-03 08:37:31 -07:00
Yevheniia Berdnyk ca2ed9d37e e2e: fixes for backup users and unread indicator tests 2023-07-03 15:55:05 +03:00
Jamie Caprani e64ff76e0b update theming for profile-input, empty state and predictive keyboard components (#16423)
* chore: remove override-prop from empty-state component

* chore: remove override-prop from profile-input and title-input components

* chore: remove override-prop from predictive-keyboard component
2023-07-03 04:26:33 -07:00
Mohamed Javid 88884064b1 Update Bottom sheet screen to use theme context (#16429)
This commit updates the `bottom-sheet-screen` component (which used `override-theme` from `screen-params` subs) to use the theme from the context provider.

The bottom sheet screen will pick the theme specified in the screen options (to override) as expected. If it's not specified, then it will fall back to the user's theme.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-07-03 13:00:41 +05:30
Anton Iakimov a6e6716311 ci: add shebang to jenkinsfiles 2023-07-02 09:11:54 +02:00
Anton Iakimov 07d037f2e1 nix: downgrade watchman to 4.9.0
watchman was upgraded significantly during the last #14944 (4.9.0 (Aug 16, 2017) to 2023.01.30.00 - 6 years between):
status-im/nixpkgs@4e9c02b

Probably causing developers to have "too many files open" issue #16341

This PR is an attempt to fix the issue by downgrading the watchman

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-07-02 08:46:28 +02:00
Andrea Maria Piana 36a72f2d63 Set nameserver on login 2023-07-01 08:39:12 +01:00
Jamie Caprani 4c0a8d9f6d chore: use with theme for step component (#16399) 2023-06-30 09:02:46 -07:00
Brian Sztamfater 2d860c363a feat: allow navigation inside different stacks (#16419)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-06-30 11:48:35 -03:00
Icaro Motta 186ac482ee Comment time bomb test out (#16452) 2023-06-30 12:47:24 +00:00
Andrea Maria Piana f015eb929a [Fixes: #16203] Fix delete for me replies images
https://github.com/status-im/status-go/compare/09c5223d...b058ab41
2023-06-30 11:14:49 +01:00
Volodymyr Kozieiev bca7ab7925 Use only counter (no unread indicator) for chats bottom bar tab (#16417) 2023-06-29 16:42:08 +01:00
Yevheniia Berdnyk 5f441dfa93 e2e: Reactions in 1-1 chats 2023-06-29 17:49:15 +03:00
Parvesh Monu 5d0aa6a2f7 fix App crashes when jump-to has group chat card (#16431) 2023-06-29 18:10:58 +05:30
flexsurfer d9f7510d13 key-storage cleanup (#16427) 2023-06-29 14:29:39 +02:00
Roman Volosovskyi b953ddb5af [#15944] Set installation name on account creation 2023-06-29 14:06:23 +02:00
Tetiana Churikova 3058ebe018 e2e: small adjustments (#16439) 2023-06-29 14:05:13 +02:00
frank a7ddda40c4 fix: ROW_NUMBER() not work on ios for some reason (#16426)
* fix: ROW_NUMBER() not work on ios for some reason

* update status-go-version.json

* update status-go-version.json

* update status-go-version.json
2023-06-29 19:11:15 +08:00
Tetiana Churikova ba8c08650b e2e: updated wait_to (#16416) 2023-06-28 14:27:57 +02:00
flexsurfer c5a7bf39d7 multiaccounts refactoring part1 (#16414) 2023-06-28 13:48:34 +02:00
Ibrahem Khalil e0a0c6331f [16352] [Bugfix] New message indicator not showing on bottom navigation for unmuted chats and another bug (#16380) 2023-06-27 19:44:28 +04:00
Parvesh Monu b5a96a254a Implement Swipe navigation for floating screen (#16390) 2023-06-27 21:02:54 +05:30
Rahul Pratap 6b0a51720e Update animation for onboarding carousel. (#16294)
* Update animation for onboarding carousel.

* Fixed issues with long press while swipe.

* Fixed issues after generating keys.
2023-06-27 20:45:13 +05:30
Jamie Caprani e0e693791f chore: small refactor to remove some uses of status-im in status-im2 (#16358) 2023-06-27 07:11:07 -07:00
watson cebc50d409 Adjust identifiers page to do highlighting (#15752) 2023-06-27 14:45:10 +01:00
jakub 1503f6b250 nix: use Darwin stat command explicitly
Otherwise if in Nix context we can accidentally use GNU stat which
results in a different output due to different command line flags:
```
[nix-shell:~/status-mobile]$ stat -Lf "%Sg" "/nix/store"
stat: cannot read file system information for '%Sg': No such file or directory
  File: "/nix/store"
    ID: 10000110000001a Namelen: ?       Type: apfs
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 242837545  Free: 199242283  Available: 199242283
Inodes: Total: 7971454780 Free: 7969691320
```
And it should be just owner group name or ID. Which in turn results in:
```
Unknown Nix installtion type!
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-27 13:25:41 +02:00
Jamie Caprani 46182ad308 chore: move activity centre and share into shell namespace (#16395) 2023-06-27 03:48:23 -07:00
Jamie Caprani fa698dbc30 feat: add parallax to biometrics page for whitelisted devices (#16296) 2023-06-27 02:50:27 -07:00
Ibrahem Khalil 79151ee85d Disable image description in lightbox (#16405) 2023-06-27 12:15:04 +03:00
Ibrahem Khalil 4c8671caa0 [15902] BUGFIX - Resolve public keys into the user's name in the confirmation drawer and image description (#16176) 2023-06-27 10:42:01 +03:00
Omar Basem 86219dbad8 feat: save image (#16268)
* feat: save image
2023-06-27 11:03:29 +04:00
Yevheniia Berdnyk cd32806c96 e2e: Updated error message in 702783 2023-06-27 02:52:28 +03:00
frank ab16ca34dd improve: enable collect logs before login (#16392) 2023-06-27 07:42:53 +08:00
Ulises Manuel Cárdenas e2b7a299b4 [#16322] Add carousel tap gesture
* Add tap gesture to carousel

* Updates uses of carousel

* Gestures only detected on carousel content instead of full screen on Android
2023-06-26 14:19:09 -06:00
Anton Iakimov 5dcd64c478 nix: fix Android SDK on Darwin with nixpkgs system override
Android SDK in nixpkg doesn't support `aarch64-darwin`, for details see
https://github.com/status-im/status-mobile/issues/12794

The workaround was to run terminal application with Rosetta or make with `aarch` tool.

This PR overrides system architecture to always be `x86_64` for Android shell and build targets ran by make.
CI is not affected as it runs `nix` directly.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-26 17:33:44 +02:00
Brian Sztamfater 6d6e6b1eff fix: calibrate duration of recorded audio (#15543)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-06-26 11:02:13 -03:00
Brian Sztamfater 60a8b944d9 fix: send user to settings if audio permission is rejected (#16049) 2023-06-26 10:35:13 -03:00
Brian Sztamfater 437cfa9a77 feat: add blur effect on scroll for buttons inside gallery view (#16319)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-06-26 10:19:54 -03:00
Andrea Maria Piana 36aefd0e5a Fix race condition on sending messages
https://github.com/status-im/status-go/compare/d3e650d5...f23cb406
2023-06-26 13:37:20 +01:00
Mohamed Javid ce82e87cd0 Update broken Status development link in ide-setup.md (#16391)
This commit updates the broken link of `Status development` in the `Start and connect the REPL` section of `ide-setup.md`.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-06-26 16:43:58 +05:30
Parvesh Monu 8f21cecf81 fix deleted message remains in preview at Jump to section (#16385) 2023-06-26 16:19:32 +05:30
Parvesh Monu 4a4974b541 Animate floating screen border radius (#16384) 2023-06-26 15:59:43 +05:30
Anton Iakimov 43ef6db7b9 js: remove unused visual tests and detox package #16372
After the nixpkgs upgrade we started to have Xcode command line tools installation popup on each make test, dtrace-provider was failing meanwhile: #16356

It appeared, that it was failing before the upgrade with different issue: #16356

dtrace-provider is a dependency for detox, which was added for visiual tests in #14329
These tests don't run.

This build issues didn't cause any problems, because it was not obligatary.
See NODE_DTRACE_PROVIDER_REQUIRE option, which can enforce this requirement.

See #16356 for more details.

In this PR we disable detox dependency for now.
And also Visual Tests.
2023-06-26 11:59:15 +02:00
Mohamed Javid 6f0d375e8a Refactor "How to pair" screen and add "Find sync code" screen (#16364)
This commit refactors the "How to pair" bottom screen (introduced in #15710) on Syncing page, to be reused in "Sign In" and "Sync new device" screens by moving the UI rendering functions to the common place.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-06-26 15:27:59 +05:30
flexsurfer 9826898b00 followupchanges #16355 (#16371) 2023-06-26 11:36:48 +02:00
Siddarth Kumar 1c50dc7067 nix: skip git-lfs checks failing on darwin
On macOS `git-lfs` checks fail sometimes and they also take a lot of time to execute.

```log
FAIL    github.com/git-lfs/git-lfs/v3/lfshttp   0.820s
FAIL
error: builder for '/nix/store/abd6spw876qvcmlpcwsljsnbpbnvx1fg-git-lfs-3.3.0.drv' failed with exit code 1;
       last 10 log lines:
       >          Error Trace:    certs_test.go:210
       >              Error:          Expected value not to be nil.
       >          Test:           TestCertFromSSLCAPathEnv
       >     certs_test.go:210:
       >               Error Trace:    certs_test.go:210
       >              Error:          Expected value not to be nil.
       >          Test:           TestCertFromSSLCAPathEnv
       > FAIL
       > FAIL    github.com/git-lfs/git-lfs/v3/lfshttp   0.820s
       > FAIL
       For full logs, run 'nix-store -l /nix/store/abd6spw876qvcmlpcwsljsnbpbnvx1fg-git-lfs-3.3.0.drv'.
```
Failures initially observed by me and @smohamedjavid and then today again reported by @yqrashawn

This commit adds a `nix` overlay that skips those checks
2023-06-26 10:49:32 +02:00
Yevheniia Berdnyk fc52d5f062 e2e: added attempts for MaxRetryError handling 2023-06-26 11:12:53 +03:00
flexsurfer e5e68e0e83 [#16092] Auto-rotate breaks UI on Android (#16370) 2023-06-26 06:58:03 +02:00
Ibrahem 125d3239de nix: build derivation from sources if cache fails
This is a workaround for a well known issue of Nix failing to download
bigger packages from Nix cache due to errors like this:
```
HTTP error 200 (curl error: Transferred a partial file)
```
or
```
HTTP error 200 (curl error: Stream error in the HTTP/2 framing layer)
```
From docs: https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-fallback

>If set to true, Nix will fall back to building from source if a binary
>substitute fails. This is equivalent to the --fallback flag. The default is false.

Realted: https://github.com/status-im/infra-ci/issues/17

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-25 23:34:59 +02:00
jakub 33e270fb1c scripts: disable pipefail when greping for SHA
Otherwise it fails early and doesn't work for branches.

I also refactored it a bit so the `pipefail` disbaling is local.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-24 15:55:58 +02:00
Anton Iakimov 7e56e35f56 nix: add missing Apple SDKs to fix make test on macOS
Fixes following error:
```
ld: framework not found IOKit
clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [status_nodejs_addon.target.mk:175: Release/status_nodejs_addon.node] Error 1
```
The `make test` target started to fail on macOS after #14944.

This PR adds 2 Apple SDK frameworks to default shell: `IOKit` and `CoreServices`

The other 2 mentioned in `binding.gyp` are not added, but build is ok.

Resolves: https://github.com/status-im/status-mobile/issues/16356

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-24 10:56:21 +02:00
jakub 5e6d488a3e nix: fix cache usage by modifying global config
Otherwise Nix produces warnings like this:
```
warning: ignoring untrusted substituter 'https://nix-cache.status.im/', you are not a trusted user.
```
Since adding users to `trusted-users` essentially gives them `root`:

>Adding a user to trusted-users is essentially equivalent to giving that user root access to the system.
> — https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-trusted-users

A more kosher approach might be to just add the cache config itself globally.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-23 18:02:38 +02:00
Jamie Caprani 9767c3f3a5 chore:move jump-to functionality inside namespace for shell (#16361) 2023-06-23 16:39:42 +01:00
Jamie Caprani e5778ee300 feat: add new theming mechanism (#16191)
* chore: set react-dom to same version as react
2023-06-23 05:11:50 -07:00
flexsurfer 1591a5e2da [#16157] Pinned list button is absent when user is located at the top… (#16355) 2023-06-23 13:41:49 +02:00
Parvesh Monu 3bb3fefea7 Redirect to onboarding welcome screen if all profiles are removed (#16368) 2023-06-23 17:03:14 +05:30
jakub 33b2e12e3b android: fix Gradle deps, drop Flipper, upgrade Fresco
There are a few fixes here:

* Changes format of Gradle deps to `:buildEnvironment` and `:dependencies`:
    ```
    Cannot locate tasks that match '::buildEnvironment'. The path should not include an empty segment (try ':buildEnvironment' instead).
    ```
* Fix for GNU Parallel tool to use stdin for list of arguments:
    ```
    nix/deps/gradle/generate.sh: line 55: parallel: Argument list too long
    ```
* Update of Facebook Fresco dependencies from `2.2.0` to `2.5.0` to fix:
    ```
     > echo com.facebook.fresco:animated-gif:2.2.0 | ./go-maven-resolver > /dev/null
    finder.go:121: error: 'no pom data' for: <Dep ID=com.facebook.fresco:imagepipeline-native:2.2.0 O=false S=compile >
    finder.go:121: error: 'no pom data' for: <Dep ID=com.facebook.fresco:memory-type-native:2.2.0 O=false S=compile >
    finder.go:121: error: 'no pom data' for: <Dep ID=com.facebook.fresco:imagepipeline:2.2.0 O=false S=compile >
    finder.go:121: error: 'no pom data' for: <Dep ID=com.facebook.fresco:drawee:2.2.0 O=false S=runtime >
    finder.go:121: error: 'no pom data' for: <Dep ID=com.facebook.fresco:memory-type-java:2.2.0 O=false S=compile >
    finder.go:121: error: 'no pom data' for: <Dep ID=com.facebook.fresco:fbcore:2.2.0 O=false S=runtime >
    ```
* Remove Flipper to avoid pulling in Fresco `2.2.0` versions:
    ```
    +--- com.facebook.flipper:flipper-fresco-plugin:0.54.0
    |    +--- com.facebook.fresco:fresco:2.2.0 -> 2.5.0
    |    +--- com.facebook.fresco:flipper:2.2.0
    |    \--- com.facebook.fresco:stetho:2.2.0
    ```

Thanks for help from Sidarth.

Resolves: https://github.com/status-im/status-mobile/issues/16367

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-23 12:02:18 +02:00
Andrea Maria Piana 398810066d Add team member to decision (#16336) 2023-06-23 11:36:07 +02:00
Yevheniia Berdnyk 0cb525aade e2e: updated test_restore_multiaccount_with_waku_backup_remove_switch 2023-06-23 00:50:38 +03:00
Brian Sztamfater be245d5612 fix: close keyboard when start scrolling on chat (#16339)
Signed-off-by: Brian Sztamfater <brian@status.im>
2023-06-22 13:35:55 -03:00
Jamie Caprani 9ec4f91c9e chore: onboarding profile adjustments (#16291)
* remove b&w color as an option

* change system message for minimum display name length to match designs

* update display name validation to match desktop
2023-06-22 08:00:06 -07:00
jakub 7260c23e8e nix: downgrade from 2.14.1 to 2.13.4
Should resolve errors like this:
```
error: file 'nixpkgs' was not found in the Nix search path (add it using $NIX_PATH or -I)
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-22 14:23:47 +02:00
Icaro Motta d300e88062 Fix incorrect background color in Community Overview screen (#16348)
Fixes the main issue #16313, but also other correlated bugs.

- Fix: quo2 component navigation.page-nav does not stretch out to the maximum
  available height when there are only 1 to ~6 community channels.
- Fix: options menu button didn't use the correct background color (it should
  have 40% transparency).
- Fix: Remove bottom-left & bottom-right rounded borders from the bottom of the
  page-nav container.
- Fix: Remove top-left & top-right rounded borders from the screen's header.
- Fix: Use correct background color in the page-nav, now neutral-95 instead of
  neutral-90.
2023-06-22 11:51:06 +00:00
Parvesh Monu 8a4cba56f6 Improve hot reloading (#16349) 2023-06-22 16:55:09 +05:30
Alexander 1953137068 Updated styles and layouts for messages (#16188)
* Messages style

* More styling

* Chat layout

* Formatting fix

* Fixes

* Updates

* Fix

* Styles for pinned messages

* Style fixes

* Style fixes
2023-06-22 11:47:30 +02:00
Ibrahem Khalil 88bb84bb3e [15128-followup] PR comments and cleanup (#16350) 2023-06-22 09:11:17 +03:00
Ibrahem Khalil 7aa40b8adf [14556, 14259] Allow users to mute community channels and to mute chats for specific duration (#15128) 2023-06-22 08:25:17 +03:00
frank db44ee67e6 init status-go logging once app start up (#16325)
https://github.com/status-im/status-go/compare/4cc53630...7da1ed38
2023-06-22 07:45:55 +08:00
Ulises Manuel Cárdenas 83a298f831 [#16335] - Add space before "Forgot password?"
* Add space before "Forgot password?"
* Improves error message
2023-06-21 17:17:01 -06:00
erikseppanen d91e67cae7 Add featured-community data (#16232) 2023-06-21 10:07:00 -04:00
jakub c4b13eb043 nix: use builtins to not depend on channels
We use `builtins.fetchTarball` to avoid having to first import a
`nixpkgs` from existing channels, which breaks if there are no channels.

Otherwise new Nix 2.14 version can result in:
```
error: file 'nixpkgs' was not found in the Nix search path (add it using $NIX_PATH or -I)
```
Which happens due to no default `nixpkgs` channel existing:
```
 > nix-channel --list

```
Resolves: https://github.com/status-im/status-mobile/issues/16342

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-21 15:36:08 +02:00
+2 60545a6608 fix: activity center notifications swipe style (#16222)
* fix: remove placeholder icons

* fix: swipe action button style

* lint fix

* fix: swipe action button space

* fix: lint

* Fix for two separate sections with different colors shown on the chat screen (dark mode)  (#16265)

* Fix for two separate sections with different colors shown on the chat screen (dark mode)

* lint-fix

* temporary hide mutual update's messages (#16290)

* chore: fix unit test for slide button (#16302)

* nix: upgrade interpreter from 2.11.1 to 2.14.1

This is a mild upgrade that should not cause any controversy.

You can read about changes here:
- https://nixos.org/manual/nix/stable/release-notes/rl-2.12.html
- https://nixos.org/manual/nix/stable/release-notes/rl-2.13.html
- https://nixos.org/manual/nix/stable/release-notes/rl-2.14.html

Relevant `infra-ci` change:
- https://github.com/status-im/infra-ci/commit/e4e9796f

The simplest way to upgrade to `2.14` your version locally is using:
```sh
nix-channel --update
nix-env -iA nixpkgs.nixVersions.nix_2_14 nixpkgs.cacert
sudo systemctl daemon-reload
sudo systemctl restart nix-daemon
```
For MacOS the instructions are a bit different:
https://nixos.org/manual/nix/stable/installation/upgrading.html

Keep in mind you should use `nixpkgs.nixVersions.nix_2_14` instead
of just `nixpkgs.nix` to avoid getting newer than `2.14`.

Signed-off-by: Jakub Sokołowski <jakub@status.im>

* nix: add upgrade script for Nix interpreter

Now developers can upgrade to current Nix version using just:
```sh
make nix-upgrade
```
For manual instructions see:
https://nixos.org/manual/nix/stable/installation/upgrading.html

Signed-off-by: Jakub Sokołowski <jakub@status.im>

* fix switcher cards position in ios (#16301)

* Fix community tags and button spacing (#16292)

Linked to https://github.com/status-im/status-mobile/issues/16119, fixes
these issues:

- Clipped community tags. They should extend to the edge of the screen.
- Outdated information box message. Updated according suggestion in Figma
  https://www.figma.com/file/h9wo4GipgZURbqqr1vShFN/Communities-for-Mobile?type=design&node-id=7035-462899&t=wED97E4Mtv9v6OXf-0
- Add correct padding between community tags and the Request to join Community
  button.

* Add decision about team structure & wallet team

* [#16118] bottom nav tab notification color (#16236)

* [#16066] bottom sheet height (#16285)

* Update prettier config for the project. (#16303)

* Update prettier config for the project.

* Add prettier to make lint-fix.

* fix: placeholder icons for join community, identity verification request

* fix: lint

* Make profile photos visible by default (#16095)

* Fix incorrect channel option (#16314)

* e2e: tests fixes

* tests: fix type of shell used for linting

Otherwise Node modules are not installed.

Signed-off-by: Jakub Sokołowski <jakub@status.im>

* nix: upgrade nixpkgs to latest nixos-22.11

Notable upgrades:

* Bash `5.1` to `5.2`
* Git `2.37.3` to `2.40.1`
* Curl `7.85.0` to `8.0.1`
* OpenSSL `3.0.5` to `3.0.8`
* Go `1.18.6` to `1.18.9`
* NodeJS `18.9.1` to `18.16.0`
* Java `1.8.0_322` to `11.0.11`
* Ruby `3.1.2` to `3.1.4`
* Python `2.7.18` to `3.10.11`
* Clojure `1.11.1.1165` to `1.11.1.1273`
* Clj-kondo `v2022.10.05` to `v2023.04.14`
* Zprint `1.2.5` to `1.2.6`
* Bundler `2.3.22` to `2.4.13`
* Gradle `6.9.2` to `6.9.4`
* Android Platform Tools `33.0.2` to `33.0.3`
* Android SDK Tools to Android SDK Command-Line Tools

Removals:

* Zprint since the version in `nixpkgs` was newer than in overlay.
* Xcode wrapper definition was removed since my fixes were merged:
  - https://github.com/NixOS/nixpkgs/pull/204278
  - https://github.com/NixOS/nixpkgs/pull/228696

Signed-off-by: Jakub Sokołowski <jakub@status.im>

* ci: build generic status-go and all shells

When discussing caching of `status-go` with Sid I noticed that the build
we cache daily created from our nightly build is different from the
build we create locally due to a single input.

In a release CI host we can see the IPFS URL is that of Infura:
```
 > find /nix/store -maxdepth 1 -name '*-status-go-*android' | tail -n1
/nix/store/2cc8ilhx5g3k2awbn4sla61n4cml2405-status-go-0.130.1-d2cce5e-android

 > RESULT=$(find /nix/store -maxdepth 1 -name '*-status-go-*android' | tail -n1)

 > nix show-derivation $RESULT | tr ' ' '\n' | grep IpfsGateway
github.com/status-im/status-go/params.IpfsGatewayURL=https://status-im.infura-ipfs.io/ipfs/
```
But for a local build the URL is the default, which is our own gateway:
```
 > nix-build --no-out-link -A targets.status-go.mobile.android
/nix/store/1p53m7a6y1kg3vcyd8d06scf3bsyn5rk-status-go-0.157.2-47711c4-android

 > RESULT=$(nix-build --no-out-link -A targets.status-go.mobile.android)

 > nix show-derivation $RESULT | tr ' ' '\n' | grep IpfsGateway
github.com/status-im/status-go/params.IpfsGatewayURL=https://ipfs.status.im/
```
This difference causes builds of `status-go` that get uploaded to our
Nix cache to not match what developers locally would build, which
results in a cache miss.

This changes the Nix cache CI jobs to instead of building only dependencies
(`buildInuts`) to simply build the generic versions of `status-go` without
nightly specific inputs.

Signed-off-by: Jakub Sokołowski <jakub@status.im>

* nix: fix applying nix.conf by using correct env var

According to this line from the docs:

>The system-wide configuration file sysconfdir/nix/nix.conf (i.e. /etc/nix/nix.conf),
>or $NIX_CONF_DIR/nix.conf if NIX_CONF_DIR is set. Values loaded in this file are not
>forwarded to the Nix daemon. The client assumes that the daemon has already loaded them.

https://nixos.org/manual/nix/stable/command-ref/conf-file.html#description

Our usage of `NIX_CONF_DIR` has been wrong for a while now.
The correct way of applying this config is using `NIX_USER_CONF_FILES`.

In addition the `extra-substituters` no longer exists in the docs.
Use of `trusted-substituters` is necessary according to:

>At least one of the following conditions must be met for Nix to use a substituter:
>
>- the substituter is in the trusted-substituters list
>- the user calling Nix is in the trusted-users list

https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-substituters

Signed-off-by: Jakub Sokołowski <jakub@status.im>

* Upgrade `react-native-camera-kit` library to resolve camera issues in Sign In screen (#16248)

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>

* Update prettier script. (#16324)

* Update prettier script.

* Add target and component-spec to prettierignore.

---------

Signed-off-by: Jakub Sokołowski <jakub@status.im>
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
Co-authored-by: Alexander <alwxndr@gmail.com>
Co-authored-by: flexsurfer <flexsurfer@users.noreply.github.com>
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
Co-authored-by: Jakub Sokołowski <jakub@status.im>
Co-authored-by: Parvesh Monu <parvesh.dhullmonu@gmail.com>
Co-authored-by: Icaro Motta <icaro.ldm@gmail.com>
Co-authored-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
Co-authored-by: Ulises Manuel Cárdenas <90291778+ulisesmac@users.noreply.github.com>
Co-authored-by: Rahul Pratap <rahulpsingh@users.noreply.github.com>
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
Co-authored-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-06-21 22:54:35 +10:00
frank be52ff096d [15524] Support mentioning non Latin nicknames (#16320)
* fix #15524
2023-06-21 15:22:42 +08:00
Ibrahem Khalil 769d974eff Make reactions row scrollable (#16298) 2023-06-20 19:50:25 +03:00
Andrea Maria Piana 66cd3edf7f Use new login endpoint
https://github.com/status-im/status-go/compare/47711c4f...47711c4f

This commit changes the login endpoint so that it uses LoginAccount.
The main difference is that is consistent with the two others we use for
creation/importing, and this will override the networks and use the
secrets provided.
2023-06-20 16:51:15 +01:00
Rahul Pratap bb7ff3239d Update prettier script. (#16324)
* Update prettier script.

* Add target and component-spec to prettierignore.
2023-06-20 19:50:27 +05:30
Mohamed Javid b397411daa Upgrade react-native-camera-kit library to resolve camera issues in Sign In screen (#16248)
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2023-06-20 18:50:05 +05:30
jakub 6f8dc27282 nix: fix applying nix.conf by using correct env var
According to this line from the docs:

>The system-wide configuration file sysconfdir/nix/nix.conf (i.e. /etc/nix/nix.conf),
>or $NIX_CONF_DIR/nix.conf if NIX_CONF_DIR is set. Values loaded in this file are not
>forwarded to the Nix daemon. The client assumes that the daemon has already loaded them.

https://nixos.org/manual/nix/stable/command-ref/conf-file.html#description

Our usage of `NIX_CONF_DIR` has been wrong for a while now.
The correct way of applying this config is using `NIX_USER_CONF_FILES`.

In addition the `extra-substituters` no longer exists in the docs.
Use of `trusted-substituters` is necessary according to:

>At least one of the following conditions must be met for Nix to use a substituter:
>
>- the substituter is in the trusted-substituters list
>- the user calling Nix is in the trusted-users list

https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-substituters

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-20 13:55:07 +02:00
jakub e08d3bd78d ci: build generic status-go and all shells
When discussing caching of `status-go` with Sid I noticed that the build
we cache daily created from our nightly build is different from the
build we create locally due to a single input.

In a release CI host we can see the IPFS URL is that of Infura:
```
 > find /nix/store -maxdepth 1 -name '*-status-go-*android' | tail -n1
/nix/store/2cc8ilhx5g3k2awbn4sla61n4cml2405-status-go-0.130.1-d2cce5e-android

 > RESULT=$(find /nix/store -maxdepth 1 -name '*-status-go-*android' | tail -n1)

 > nix show-derivation $RESULT | tr ' ' '\n' | grep IpfsGateway
github.com/status-im/status-go/params.IpfsGatewayURL=https://status-im.infura-ipfs.io/ipfs/
```
But for a local build the URL is the default, which is our own gateway:
```
 > nix-build --no-out-link -A targets.status-go.mobile.android
/nix/store/1p53m7a6y1kg3vcyd8d06scf3bsyn5rk-status-go-0.157.2-47711c4-android

 > RESULT=$(nix-build --no-out-link -A targets.status-go.mobile.android)

 > nix show-derivation $RESULT | tr ' ' '\n' | grep IpfsGateway
github.com/status-im/status-go/params.IpfsGatewayURL=https://ipfs.status.im/
```
This difference causes builds of `status-go` that get uploaded to our
Nix cache to not match what developers locally would build, which
results in a cache miss.

This changes the Nix cache CI jobs to instead of building only dependencies
(`buildInuts`) to simply build the generic versions of `status-go` without
nightly specific inputs.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-20 13:55:06 +02:00
jakub c97559793c nix: upgrade nixpkgs to latest nixos-22.11
Notable upgrades:

* Bash `5.1` to `5.2`
* Git `2.37.3` to `2.40.1`
* Curl `7.85.0` to `8.0.1`
* OpenSSL `3.0.5` to `3.0.8`
* Go `1.18.6` to `1.18.9`
* NodeJS `18.9.1` to `18.16.0`
* Java `1.8.0_322` to `11.0.11`
* Ruby `3.1.2` to `3.1.4`
* Python `2.7.18` to `3.10.11`
* Clojure `1.11.1.1165` to `1.11.1.1273`
* Clj-kondo `v2022.10.05` to `v2023.04.14`
* Zprint `1.2.5` to `1.2.6`
* Bundler `2.3.22` to `2.4.13`
* Gradle `6.9.2` to `6.9.4`
* Android Platform Tools `33.0.2` to `33.0.3`
* Android SDK Tools to Android SDK Command-Line Tools

Removals:

* Zprint since the version in `nixpkgs` was newer than in overlay.
* Xcode wrapper definition was removed since my fixes were merged:
  - https://github.com/NixOS/nixpkgs/pull/204278
  - https://github.com/NixOS/nixpkgs/pull/228696

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-20 12:53:06 +02:00
jakub fa59843804 tests: fix type of shell used for linting
Otherwise Node modules are not installed.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-20 12:20:54 +02:00
Yevheniia Berdnyk 5b5a29a2e1 e2e: tests fixes 2023-06-20 03:42:14 +03:00
Icaro Motta b1b30b889d Fix incorrect channel option (#16314) 2023-06-19 20:10:46 +00:00
Alexander 51cfdf3e59 Make profile photos visible by default (#16095) 2023-06-19 20:53:22 +02:00
Rahul Pratap c80992b6bf Update prettier config for the project. (#16303)
* Update prettier config for the project.

* Add prettier to make lint-fix.
2023-06-19 19:09:12 +05:30
Ulises Manuel Cárdenas 428616332b [#16066] bottom sheet height (#16285) 2023-06-19 15:22:45 +02:00
Ulises Manuel Cárdenas 2b465cb980 [#16118] bottom nav tab notification color (#16236) 2023-06-19 15:20:37 +02:00
Andrea Maria Piana 850ac3f9f8 Add decision about team structure & wallet team 2023-06-19 14:13:34 +01:00
Icaro Motta 60a39a58a6 Fix community tags and button spacing (#16292)
Linked to https://github.com/status-im/status-mobile/issues/16119, fixes
these issues:

- Clipped community tags. They should extend to the edge of the screen.
- Outdated information box message. Updated according suggestion in Figma
  https://www.figma.com/file/h9wo4GipgZURbqqr1vShFN/Communities-for-Mobile?type=design&node-id=7035-462899&t=wED97E4Mtv9v6OXf-0
- Add correct padding between community tags and the Request to join Community
  button.
2023-06-19 12:49:34 +00:00
Parvesh Monu 472a013cd0 fix switcher cards position in ios (#16301) 2023-06-19 16:41:40 +05:30
jakub 93cf54919f nix: add upgrade script for Nix interpreter
Now developers can upgrade to current Nix version using just:
```sh
make nix-upgrade
```
For manual instructions see:
https://nixos.org/manual/nix/stable/installation/upgrading.html

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-19 12:21:00 +02:00
jakub 5f50a8c39a nix: upgrade interpreter from 2.11.1 to 2.14.1
This is a mild upgrade that should not cause any controversy.

You can read about changes here:
- https://nixos.org/manual/nix/stable/release-notes/rl-2.12.html
- https://nixos.org/manual/nix/stable/release-notes/rl-2.13.html
- https://nixos.org/manual/nix/stable/release-notes/rl-2.14.html

Relevant `infra-ci` change:
- https://github.com/status-im/infra-ci/commit/e4e9796f

The simplest way to upgrade to `2.14` your version locally is using:
```sh
nix-channel --update
nix-env -iA nixpkgs.nixVersions.nix_2_14 nixpkgs.cacert
sudo systemctl daemon-reload
sudo systemctl restart nix-daemon
```
For MacOS the instructions are a bit different:
https://nixos.org/manual/nix/stable/installation/upgrading.html

Keep in mind you should use `nixpkgs.nixVersions.nix_2_14` instead
of just `nixpkgs.nix` to avoid getting newer than `2.14`.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-19 10:58:56 +02:00
Jamie Caprani fdb042f4e9 chore: fix unit test for slide button (#16302) 2023-06-19 01:21:44 -07:00
3867 changed files with 171435 additions and 125961 deletions
+147 -198
View File
@@ -1,62 +1,55 @@
status-im.utils.build/warning-handler
status-im.utils.build/get-current-sha
status-im2.constants/spacing-char
status-im2.constants/arg-wrapping-char
status-im.ios.core/init
status-im.ui.components.camera/aspects
status-im.ui.components.camera/capture-targets
status-im.ui.components.camera/set-torch
status-im.ui.components.camera/request-access-ios
status-im.chat.models.message-content/stylings
status-im.chat.models.message-content/actions
status-im.chat.models.message-content/blank-string
status-im.chat.models.message-content/sorted-ranges
status-im.ethereum.mnemonic/words->passphrase
legacy.status-im.utils.build/warning-handler
legacy.status-im.utils.build/get-current-sha
status-im.constants/spacing-char
status-im.constants/arg-wrapping-char
legacy.status-im.ios.core/init
legacy.status-im.ui.components.camera/aspects
legacy.status-im.ui.components.camera/capture-targets
legacy.status-im.ui.components.camera/set-torch
legacy.status-im.ui.components.camera/request-access-ios
legacy.status-im.chat.models.message-content/stylings
legacy.status-im.chat.models.message-content/actions
legacy.status-im.chat.models.message-content/blank-string
legacy.status-im.chat.models.message-content/sorted-ranges
legacy.status-im.ethereum.mnemonic/words->passphrase
native-module.core/listener
native-module.core/multiaccount-reset
native-module.core/extract-group-membership-signatures
native-module.core/sign-group-membership
native-module.core/update-mailservers
status-im.ethereum.abi-spec/bytes-to-hex
status-im.android.core/init
status-im.chat.models.message/transport-keys
status-im.utils.datetime/week
status-im.utils.datetime/time-ago
status-im.utils.datetime/format-date
status-im.utils.datetime/get-ordinal-date
legacy.status-im.ethereum.abi-spec/bytes-to-hex
legacy.status-im.android.core/init
legacy.status-im.chat.models.message/transport-keys
legacy.status-im.utils.datetime/week
legacy.status-im.utils.datetime/time-ago
legacy.status-im.utils.datetime/format-date
legacy.status-im.utils.datetime/get-ordinal-date
reagent.dom/render
reagent.dom/unmount-component-at-node
reagent.dom/dom-node
reagent.dom/force-update-all
status-im.multiaccounts.create.core/get-new-key-code
status-im.ethereum.decode/string
status-im.ui.screens.network.views/mainnet?
status-im.data-store.chats/event->string
status-im.mailserver.constants/seven-days
status-im.mailserver.constants/connection-timeout
status-im.hardwallet.card/install-applet
status-im.hardwallet.card/install-cash-applet
status-im.multiaccount.login.data-test/all-contacts
status-im.multiaccount.login.data-test/multiaccounts
status-im.multiaccount.login.data-test/get-chats
status-im.multiaccount.login.data-test/transport
status-im.multiaccount.login.data-test/topics
status-im.utils.utils/clear-timeout
status-im.utils.handlers/logged-in
status-im.multiaccounts.model/credentials
status-im.multiaccounts.login.core/contract-fleet?
status-im.multiaccounts.login.core/fetch-nodes
status-im2.config/rpc-networks-only?
status-im2.config/waku-enabled?
status-im.utils.pairing/has-paired-installations?
status-im.tribute-to-talk.core-test/user-cofx
quo.gesture-handler/tap-gesture-handler
quo.gesture-handler/pan-gesture-handler
quo.gesture-handler/long-press-gesture-handler
quo.gesture-handler/pure-native-button
quo.gesture-handler/createNativeWrapper
quo.gesture-handler/animated-raw-button
quo.gesture-handler/states
legacy.status-im.multiaccounts.create.core/get-new-key-code
legacy.status-im.ethereum.decode/string
legacy.status-im.ui.screens.network.views/mainnet?
legacy.status-im.data-store.chats/event->string
legacy.status-im.mailserver.constants/seven-days
legacy.status-im.mailserver.constants/connection-timeout
legacy.status-im.hardwallet.card/install-applet
legacy.status-im.hardwallet.card/install-cash-applet
legacy.status-im.multiaccount.login.data-test/all-contacts
legacy.status-im.multiaccount.login.data-test/multiaccounts
legacy.status-im.multiaccount.login.data-test/get-chats
legacy.status-im.multiaccount.login.data-test/transport
legacy.status-im.multiaccount.login.data-test/topics
legacy.status-im.utils.utils/clear-timeout
legacy.status-im.utils.handlers/logged-in
legacy.status-im.multiaccounts.model/credentials
legacy.status-im.multiaccounts.login.core/contract-fleet?
legacy.status-im.multiaccounts.login.core/fetch-nodes
status-im.config/rpc-networks-only?
status-im.config/waku-enabled?
legacy.status-im.utils.pairing/has-paired-installations?
legacy.status-im.tribute-to-talk.core-test/user-cofx
mocks.js-dependencies/action-button
mocks.js-dependencies/camera
mocks.js-dependencies/dismiss-keyboard
@@ -85,152 +78,108 @@ mocks.js-dependencies/react-navigation-bottom-tabs
mocks.js-dependencies/react-native-haptic-feedback
mocks.js-dependencies/mock
quo.previews.main/init
status-im.chat.models.message-list-test/descending-range
status-im.chat.models.message-list-test/random-range
status-im.ethereum.eip165/supports?
status-im.utils.hex/valid-hex?
status-im.multiaccounts.core/chat-send?
status-im.hardwallet.simulated-keycard/install-cash-applet
status-im.hardwallet.simulated-keycard/sign-typed-data
status-im.utils.core/safe-read-message-content
status-im.ui.components.react/native-modules
status-im.ui.components.react/progress-bar
status-im.utils.fs/move-file
status-im.utils.fs/read-dir
status-im.utils.fs/mkdir
status-im.utils.fs/unlink
status-im.utils.fs/file-exists?
quo.animated/code
quo.animated/eq
quo.animated/neq
quo.animated/greater-or-eq
quo.animated/not*
quo.animated/or*
quo.animated/and*
quo.animated/add
quo.animated/sub
quo.animated/multiply
quo.animated/abs
quo.animated/min*
quo.animated/max*
quo.animated/set
quo.animated/start-clock
quo.animated/stop-clock
quo.animated/bezier
quo.animated/linear
quo.animated/set-value
quo.animated/clock
quo.animated/debug
quo.animated/log
quo.animated/event
quo.animated/on-change
quo.animated/cond*
quo.animated/block
quo.animated/call*
quo.animated/timing
quo.animated/spring
quo.animated/clamp
quo.animated/with-spring
quo.animated/with-timing
quo.animated/re-timing
quo.design-system.colors/white
quo.design-system.colors/black
status-im.transport.core-test/messages
status-im.ethereum.core/sidechain?
status-im.ethereum.core/network-with-upstream-rpc?
status-im.ethereum.core/current-address
status-im.ethereum.core/network->network-name
status-im.ethereum.core/estimate-gas
quo.core/animated-header
quo.core/safe-area-provider
quo.core/safe-area-consumer
quo.core/safe-area-view
status-im.utils.universal-links.core/open!
status-im.transport.filters.core-test/member-2
status-im.ui.screens.chat.ttt/one-to-one-chat-description-container
status-im.ethereum.ens/ttl
status-im.ethereum.ens/addr-hash
status-im.ethereum.ens/name-hash
status-im.ethereum.ens/ABI-hash
status-im.ethereum.ens/pubkey-hash
status-im.network.core/get-network
status-im2.constants/desktop-content-types
status-im2.constants/blocks-per-hour
status-im2.constants/one-earth-day
status-im2.constants/left-pane-min-width
status-im2.constants/system
status-im2.constants/contact-discovery
status-im2.constants/send-transaction-failed-parse-response
status-im2.constants/send-transaction-failed-parse-params
status-im2.constants/send-transaction-no-account-selected
status-im2.constants/send-transaction-invalid-tx-sender
status-im2.constants/web3-get-logs
status-im2.constants/web3-transaction-receipt
status-im2.constants/web3-new-filter
status-im2.constants/web3-new-pending-transaction-filter
status-im2.constants/web3-new-block-filter
status-im2.constants/web3-uninstall-filter
status-im2.constants/web3-get-filter-changes
status-im2.constants/web3-shh-post
status-im2.constants/web3-shh-new-identity
status-im2.constants/web3-shh-has-identity
status-im2.constants/web3-shh-new-group
status-im2.constants/web3-shh-add-to-group
status-im2.constants/web3-shh-new-filter
status-im2.constants/web3-shh-uninstall-filter
status-im2.constants/web3-shh-get-filter-changes
status-im2.constants/web3-shh-get-messages
status-im2.constants/status-create-address
status-im2.constants/event-transfer-hash
status-im2.constants/regx-rtl-characters
status-im2.constants/desktop-msg-chars-hard-limit
status-im2.constants/debug-metrics
status-im2.constants/scan-qr-code
status-im2.constants/ipfs-proto-code
status-im2.constants/swarm-proto-code
status-im.multiaccounts.update.publisher/publish-update!
status-im.utils.async/task-queue
status-im.utils.async/async-periodic-run!
status-im.desktop.core/app-root
status-im.desktop.core/init
status-im.chat.models-test/test-db
quo.design-system.spacing/padding-vertical
status-im.utils.money/percent-change
status-im.utils.platform/isMacOs?
status-im.utils.platform/isNix?
status-im.utils.platform/isWin?
status-im.utils.platform/android-version>=
legacy.status-im.chat.models.message-list-test/descending-range
legacy.status-im.chat.models.message-list-test/random-range
legacy.status-im.ethereum.eip165/supports?
legacy.status-im.utils.hex/valid-hex?
legacy.status-im.multiaccounts.core/chat-send?
legacy.status-im.hardwallet.simulated-keycard/install-cash-applet
legacy.status-im.hardwallet.simulated-keycard/sign-typed-data
legacy.status-im.utils.core/safe-read-message-content
legacy.status-im.ui.components.react/native-modules
legacy.status-im.ui.components.react/progress-bar
react-native.fs/move-file
react-native.fs/read-dir
react-native.fs/mkdir
react-native.fs/unlink
react-native.fs/file-exists?
legacy.status-im.ui.components.colors/white
legacy.status-im.ui.components.colors/black
legacy.status-im.ui.components.core/animated-header
legacy.status-im.ui.components.core/safe-area-provider
legacy.status-im.ui.components.core/safe-area-consumer
legacy.status-im.ui.components.core/safe-area-view
legacy.status-im.utils.universal-links.core/open!
legacy.status-im.transport.filters.core-test/member-2
legacy.status-im.ui.screens.chat.ttt/one-to-one-chat-description-container
legacy.status-im.ethereum.ens/ttl
legacy.status-im.ethereum.ens/addr-hash
legacy.status-im.ethereum.ens/name-hash
legacy.status-im.ethereum.ens/ABI-hash
legacy.status-im.ethereum.ens/pubkey-hash
legacy.status-im.network.core/get-network
status-im.constants/desktop-content-types
status-im.constants/blocks-per-hour
status-im.constants/one-earth-day
status-im.constants/left-pane-min-width
status-im.constants/system
status-im.constants/contact-discovery
status-im.constants/send-transaction-failed-parse-response
status-im.constants/send-transaction-failed-parse-params
status-im.constants/send-transaction-no-account-selected
status-im.constants/send-transaction-invalid-tx-sender
status-im.constants/web3-get-logs
status-im.constants/web3-transaction-receipt
status-im.constants/web3-new-filter
status-im.constants/web3-new-pending-transaction-filter
status-im.constants/web3-new-block-filter
status-im.constants/web3-uninstall-filter
status-im.constants/web3-get-filter-changes
status-im.constants/web3-shh-post
status-im.constants/web3-shh-new-identity
status-im.constants/web3-shh-has-identity
status-im.constants/web3-shh-new-group
status-im.constants/web3-shh-add-to-group
status-im.constants/web3-shh-new-filter
status-im.constants/web3-shh-uninstall-filter
status-im.constants/web3-shh-get-filter-changes
status-im.constants/web3-shh-get-messages
status-im.constants/status-create-address
status-im.constants/event-transfer-hash
status-im.constants/regx-rtl-characters
status-im.constants/desktop-msg-chars-hard-limit
status-im.constants/debug-metrics
status-im.constants/scan-qr-code
status-im.constants/ipfs-proto-code
status-im.constants/swarm-proto-code
legacy.status-im.multiaccounts.update.publisher/publish-update!
legacy.status-im.utils.async/task-queue
legacy.status-im.utils.async/async-periodic-run!
legacy.status-im.desktop.core/app-root
legacy.status-im.desktop.core/init
legacy.status-im.chat.models-test/test-db
legacy.status-im.ui.components.spacing/padding-vertical
legacy.status-im.utils.money/percent-change
utils.debounce/clear-all
status-im.transport.db/create-chat
status-im.utils.priority-map/priority-map
status-im.utils.priority-map/priority-map-by
status-im.utils.priority-map/priority-map-keyfn
status-im.utils.priority-map/empty-message-map
status-im.wallet.choose-recipient.core/use-default-eth-gas
status-im.ui.components.animation/decay
status-im.ui.components.animation/remove-all-listeners
status-im.ui.components.animation/stop-animation
status-im.ui.components.animation/animated
status-im.ui.components.animation/add
status-im.ui.components.animation/subtract
status-im.ui.components.animation/get-layout
status-im.wallet.transactions-test/uri-query-data
quo.react-native/touchable-highlight
status-im.utils.name/shortened-name
status-im.ui.components.button.haptic/trigger
status-im.contact.db/filter-dapps
status-im.contact.db/filter-group-contacts
status-im.contact.db/legacy-pending?
status-im.utils.transducers-test/preview-call-1
status-im.utils.transducers-test/preview-call-2
status-im.utils.types/to-string
status-im.chat.db/datemark?
status-im.chat.db/gap?
status-im.chat.db/map->sorted-seq
status-im.utils.snoopy/status-module-filter
status-im.utils.snoopy/websocket-filter
status-im.utils.snoopy/touches-filter
status-im.utils.snoopy/native-animation-filter
status-im.utils.snoopy/keyboard-observer-filter
status-im.utils.multihash/hex
status-im.utils.multihash/decode-array
legacy.status-im.transport.db/create-chat
legacy.status-im.utils.priority-map/priority-map
legacy.status-im.utils.priority-map/priority-map-by
legacy.status-im.utils.priority-map/priority-map-keyfn
legacy.status-im.utils.priority-map/empty-message-map
legacy.status-im.wallet.choose-recipient.core/use-default-eth-gas
legacy.status-im.ui.components.animation/decay
legacy.status-im.ui.components.animation/remove-all-listeners
legacy.status-im.ui.components.animation/stop-animation
legacy.status-im.ui.components.animation/animated
legacy.status-im.ui.components.animation/add
legacy.status-im.ui.components.animation/subtract
legacy.status-im.ui.components.animation/get-layout
legacy.status-im.wallet.transactions-test/uri-query-data
legacy.status-im.utils.name/shortened-name
legacy.status-im.ui.components.button.haptic/trigger
legacy.status-im.contact.db/filter-dapps
legacy.status-im.contact.db/filter-group-contacts
legacy.status-im.contact.db/legacy-pending?
legacy.status-im.utils.transducers-test/preview-call-1
legacy.status-im.utils.transducers-test/preview-call-2
legacy.status-im.utils.types/to-string
legacy.status-im.chat.db/datemark?
legacy.status-im.chat.db/gap?
legacy.status-im.chat.db/map->sorted-seq
legacy.status-im.utils.snoopy/status-module-filter
legacy.status-im.utils.snoopy/websocket-filter
legacy.status-im.utils.snoopy/touches-filter
legacy.status-im.utils.snoopy/native-animation-filter
legacy.status-im.utils.snoopy/keyboard-observer-filter
legacy.status-im.utils.multihash/hex
legacy.status-im.utils.multihash/decode-array
+1
View File
@@ -0,0 +1 @@
{:lint-as {babashka.fs/with-temp-dir clojure.core/let}}
+1
View File
@@ -0,0 +1 @@
{:hooks {:macroexpand {sci.core/copy-ns sci.core/copy-ns}}}
+9
View File
@@ -0,0 +1,9 @@
(ns sci.core)
(defmacro copy-ns
([ns-sym sci-ns]
`(copy-ns ~ns-sym ~sci-ns nil))
([ns-sym sci-ns opts]
`[(quote ~ns-sym)
~sci-ns
(quote ~opts)]))
+84 -20
View File
@@ -1,23 +1,87 @@
{:lint-as {status-im.utils.views/defview clojure.core/defn
status-im.utils.views/letsubs clojure.core/let
reagent.core/with-let clojure.core/let
status-im.utils.fx/defn clj-kondo.lint-as/def-catch-all
utils.re-frame/defn clj-kondo.lint-as/def-catch-all
quo.react/with-deps-check clojure.core/fn
quo.previews.preview/list-comp clojure.core/for
status-im.utils.styles/def clojure.core/def
status-im.utils.styles/defn clojure.core/defn
test-helpers.unit/deftest-sub clojure.core/defn
taoensso.tufte/defnp clojure.core/defn}
:linters {:consistent-alias {:level :error
:aliases {clojure.string string
clojure.set set
clojure.walk walk
taoensso.timbre log}}
:invalid-arity {:skip-args [status-im.utils.fx/defn utils.re-frame/defn]}
{:config-paths ["status-im"]
:output {:exclude-files ["src/user.cljs" "src/dev/user.cljs"]}
:lint-as {legacy.status-im.utils.views/defview clojure.core/defn
legacy.status-im.utils.views/letsubs clojure.core/let
reagent.core/with-let clojure.core/let
legacy.status-im.utils.fx/defn clj-kondo.lint-as/def-catch-all
utils.re-frame/defn clj-kondo.lint-as/def-catch-all
quo.react/with-deps-check clojure.core/fn
quo.previews.preview/list-comp clojure.core/for
legacy.status-im.utils.styles/def clojure.core/def
legacy.status-im.utils.styles/defn clojure.core/defn
test-helpers.unit/deftest-sub clojure.core/defn
test-helpers.unit/deftest-event clojure.core/defn
taoensso.tufte/defnp clojure.core/defn}
:linters {:case-duplicate-test {:level :error}
:case-quoted-test {:level :error}
:case-symbol-test {:level :error}
:clj-kondo-config {:level :error}
:cond-else {:level :error}
:condition-always-true {:level :error}
:conflicting-alias {:level :error}
:consistent-alias {:level :error
:aliases {clojure.set set
clojure.string string
clojure.walk walk
malli.core malli
malli.dev.pretty malli.pretty
malli.dev.virhe malli.virhe
malli.error malli.error
malli.generator malli.generator
malli.transform malli.transform
malli.util malli.util
promesa.core promesa
schema.core schema
status-im.feature-flags ff
taoensso.timbre log}}
:deprecated-namespace {:level :warning}
:docstring-blank {:level :error}
:equals-true {:level :error}
:inline-def {:level :error}
:invalid-arity {:skip-args [legacy.status-im.utils.fx/defn
utils.re-frame/defn]}
:loop-without-recur {:level :error}
:minus-one {:level :error}
:misplaced-docstring {:level :error}
:missing-body-in-when {:level :error}
:missing-clause-in-try {:level :error}
:missing-else-branch {:level :error}
:multiple-async-in-deftest {:level :error}
:not-empty? {:level :error}
:plus-one {:level :error}
:redundant-do {:level :error}
:redundant-let {:level :error}
:refer-all {:level :error}
:shadowed-fn-param {:level :error}
:shadowed-var {:level :error
;; We temporarily use :include to define an
;; allowlist of core Clojure vars. In the
;; future, as we progressively fix shadowed
;; vars, we should be able to delete this
;; option and lint all vars.
:exclude [type name]}
:self-requiring-namespace {:level :error}
:single-operand-comparison {:level :error}
:syntax {:level :error}
:unbound-destructuring-default {:level :error}
:underscore-in-namespace {:level :error}
:uninitialized-var {:level :error}
:unknown-require-option {:level :error}
:unreachable-code {:level :error}
:unresolved-namespace {:level :error}
;; TODO remove number when this is fixed
;; https://github.com/borkdude/clj-kondo/issues/867
:unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY
number
status-im.test-helpers/restore-app-db]}}
:unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY
number
legacy.status-im.test-helpers/restore-app-db]}
:unresolved-var {:level :error}
:unsorted-required-namespaces {:level :error}
:unused-alias {:level :warning}
:unused-binding {:level :error}
:unused-import {:level :error}
:unused-namespace {:level :error}
:unused-private-var {:level :error}
:unused-referred-var {:level :error}
:use {:level :error}}
:config-in-ns {mocks.js-dependencies {:linters {:clojure-lsp/unused-public-var {:level :off}}}}}
+9
View File
@@ -0,0 +1,9 @@
{:lint-as {promesa.core/-> clojure.core/->
promesa.core/->> clojure.core/->>
promesa.core/as-> clojure.core/as->
promesa.core/let clojure.core/let
promesa.core/plet clojure.core/let
promesa.core/loop clojure.core/loop
promesa.core/recur clojure.core/recur
promesa.core/with-redefs clojure.core/with-redefs
promesa.core/doseq clojure.core/doseq}}
+2
View File
@@ -0,0 +1,2 @@
{:lint-as {malli.experimental/defn schema.core/defn}
:linters {:unresolved-symbol {:exclude [(malli.core/=>)]}}}
@@ -0,0 +1,4 @@
{:linters
{:unresolved-symbol
{:exclude [(cljs.test/is [match? thrown-match?])
(clojure.test/is [match? thrown-match?])]}}}
@@ -0,0 +1,5 @@
{:lint-as
{rewrite-clj.zip/subedit-> clojure.core/->
rewrite-clj.zip/subedit->> clojure.core/->>
rewrite-clj.zip/edit-> clojure.core/->
rewrite-clj.zip/edit->> clojure.core/->>}}
+21
View File
@@ -0,0 +1,21 @@
(ns cljs.test
(:require [clj-kondo.hooks-api :as hooks]))
(defn deftest
"Verify test name passed to `cljs.test/deftest` is suffixed with -test and not
prefixed with test-."
[{:keys [node]}]
(let [[_ test-name-node & _] (:children node)
test-name (str (hooks/sexpr test-name-node))]
(when (and (hooks/token-node? test-name-node)
(or (not (re-find #"^.*-test$" test-name))
(re-find #"^test-.*$" test-name)))
(hooks/reg-finding! (assoc (meta test-name-node)
:message "Test name should be suffixed with -test"
:type :status-im.linter/inconsistent-test-name)))))
(comment
;; Invalid
(deftest {:node (hooks/parse-string "(deftest foo-tes (println :hello))")})
(deftest {:node (hooks/parse-string "(deftest test-foo-test (println :hello))")})
)
+11
View File
@@ -0,0 +1,11 @@
{:hooks
{:analyze-call
{utils.i18n/label utils.i18n/label
test-helpers.component/get-all-by-translation-text utils.i18n/label
test-helpers.component/get-by-translation-text utils.i18n/label
test-helpers.component/query-all-by-translation-text utils.i18n/label
test-helpers.component/query-by-translation-text utils.i18n/label
cljs.test/deftest cljs.test/deftest}}
:linters {:status-im.linter/invalid-translation-keyword {:level :error}
:status-im.linter/inconsistent-test-name {:level :error}}}
+26
View File
@@ -0,0 +1,26 @@
(ns utils.i18n
(:require [clj-kondo.hooks-api :as hooks]))
(defn label
"Verify call to `utils.i18n/label` pass the translation keyword qualified with `t`."
[{:keys [node]}]
(let [[_ translation-key-node & _] (:children node)]
(when (and (hooks/keyword-node? translation-key-node)
(not= "t" (-> translation-key-node hooks/sexpr namespace)))
(hooks/reg-finding! (assoc (meta translation-key-node)
:message "Translation keyword should be qualified with \"t\""
:type :status-im.linter/invalid-translation-keyword)))))
(comment
;; Valid
(label {:node (hooks/parse-string "(i18n/label :t/foo {:var \"hello\"})")
:cljc false
:lang :cljs
:filename ""
:config {}
:ns ""
:context nil})
;; Invalid
(label {:node (hooks/parse-string "(i18n/label :foo)")})
)
+1
View File
@@ -0,0 +1 @@
{:hooks {:analyze-call {taoensso.encore/defalias taoensso.encore/defalias}}}
@@ -0,0 +1,16 @@
(ns taoensso.encore
(:require
[clj-kondo.hooks-api :as hooks]))
(defn defalias [{:keys [node]}]
(let [[sym-raw src-raw] (rest (:children node))
src (if src-raw src-raw sym-raw)
sym (if src-raw
sym-raw
(symbol (name (hooks/sexpr src))))]
{:node (with-meta
(hooks/list-node
[(hooks/token-node 'def)
(hooks/token-node (hooks/sexpr sym))
(hooks/token-node (hooks/sexpr src))])
(meta src))}))
-37
View File
@@ -1,37 +0,0 @@
module.exports = {
"testRunner": "jest",
"testRegex": "\\.visual\\.js$",
"runner-config": "visual-test/config.json",
"devices": {
"simulator": {
"type": "ios.simulator",
"device": {
"type": "iPhone 11 Pro"
}
}
},
"apps": {
"ios.release": {
"name": "StatusIm",
"type": "ios.app",
"binaryPath": "ios/build/Build/Products/Release-iphonesimulator/StatusIm.app",
"build": "make release-ios"
},
"ios.debug": {
"name": "StatusIm",
"type": "ios.app",
"binaryPath": process.env.TEST_BINARY_PATH,
"build": "make run-ios SIMULATOR='iPhone 11 Pro'"
}
},
"configurations": {
"ios.sim.release": {
"device": "simulator",
"app": "ios.release"
},
"ios.sim.debug": {
"device": "simulator",
"app": "ios.debug"
}
}
}
+5 -3
View File
@@ -4,7 +4,6 @@ DEFAULT_NETWORK=mainnet_rpc
DEV_BUILD=1
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=0
FLEET=status.prod
GROUP_CHATS_ENABLED=1
LOG_LEVEL=info
MAILSERVER_CONFIRMATIONS_ENABLED=1
@@ -22,14 +21,17 @@ KEYCARD_TEST_MENU=0
QR_READ_TEST_MENU=1
ENABLE_ROOT_ALERT=1
ENABLE_QUO_PREVIEW=1
MAX_IMAGES_BATCH=5
APN_TOPIC=im.status.ethereum.pr
COMMUNITIES_ENABLED=1
DATABASE_MANAGEMENT_ENABLED=1
DELETE_MESSAGE_ENABLED=1
COLLECTIBLES_ENABLED=1
COMMANDS_ENABLED=1
TWO_MINUTES_SYNCING=1
SWAP_ENABLED=1
STICKERS_TEST_ENABLED=1
LOCAL_PAIRING_ENABLED=1
TEST_STATEOFUS=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=0
ENABLE_ALERT_BANNER=0
+7 -2
View File
@@ -2,7 +2,7 @@ DEBUG_WEBVIEW=1
DEFAULT_NETWORK=goerli_rpc
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=0
FLEET=status.prod
FLEET=status.staging
GROUP_CHATS_ENABLED=1
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=0
@@ -21,7 +21,6 @@ COMMANDS_ENABLED=1
KEYCARD_TEST_MENU=1
QR_READ_TEST_MENU=1
ENABLE_ROOT_ALERT=0
MAX_IMAGES_BATCH=5
APN_TOPIC=im.status.ethereum.pr
VERIFY_TRANSACTION_CHAIN_ID=5
VERIFY_ENS_CHAIN_ID=5
@@ -33,3 +32,9 @@ DELETE_MESSAGE_ENABLED=1
TWO_MINUTES_SYNCING=1
STICKERS_TEST_ENABLED=1
LOCAL_PAIRING_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=1
DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000
DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
ENABLE_ALERT_BANNER=0
+3 -2
View File
@@ -3,7 +3,6 @@ DEBUG_WEBVIEW=1
DEFAULT_NETWORK=goerli_rpc
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=0
FLEET=status.prod
GROUP_CHATS_ENABLED=1
LOG_LEVEL=debug
MAILSERVER_CONFIRMATIONS_ENABLED=1
@@ -26,7 +25,6 @@ VERIFY_TRANSACTION_CHAIN_ID=5
VERIFY_ENS_CHAIN_ID=5
TEST_STATEOFUS=1
BLANK_PREVIEW=0
MAX_IMAGES_BATCH=5
DATABASE_MANAGEMENT_ENABLED=1
COMMUNITIES_ENABLED=1
COMMUNITIES_MANAGEMENT_ENABLED=1
@@ -35,3 +33,6 @@ TWO_MINUTES_SYNCING=1
ENABLE_QUO_PREVIEW=1
STICKERS_TEST_ENABLED=1
LOCAL_PAIRING_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
ENABLE_ALERT_BANNER=1
+3 -2
View File
@@ -2,7 +2,6 @@ DEBUG_WEBVIEW=1
DEFAULT_NETWORK=mainnet_rpc
ETHEREUM_DEV_CLUSTER=1
EXTENSIONS=0
FLEET=status.prod
GROUP_CHATS_ENABLED=1
LOG_LEVEL=info
MAILSERVER_CONFIRMATIONS_ENABLED=1
@@ -17,8 +16,10 @@ RPC_NETWORKS_ONLY=0
PARTITIONED_TOPIC=0
CONTRACT_NODES=1
ENABLE_ROOT_ALERT=1
MAX_IMAGES_BATCH=5
BLANK_PREVIEW=0
COMMUNITIES_ENABLED=1
DATABASE_MANAGEMENT_ENABLED=1
DELETE_MESSAGE_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=0
TEST_NETWORKS_ENABLED=0
ENABLE_ALERT_BANNER=1
+2 -2
View File
@@ -2,7 +2,6 @@ DEBUG_WEBVIEW=0
DEFAULT_NETWORK=mainnet_rpc
ETHEREUM_DEV_CLUSTER=0
EXTENSIONS=0
FLEET=status.prod
GROUP_CHATS_ENABLED=1
LOG_LEVEL=
MAILSERVER_CONFIRMATIONS_ENABLED=1
@@ -18,4 +17,5 @@ PARTITIONED_TOPIC=0
ENABLE_ROOT_ALERT=1
MAX_IMAGES_BATCH=1
DELETE_MESSAGE_ENABLED=1
COLLECTIBLES_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=0
TEST_NETWORKS_ENABLED=0
+3 -3
View File
@@ -1,4 +1,4 @@
module.exports = {
root: true,
extends: '@react-native-community',
};
root: true,
extends: '@react-native',
};
+1 -1
View File
@@ -43,4 +43,4 @@ As a <user|developer|...>, I want to <task> so that <goal>.
[comment]: # (if on Android please replicate bug whilst running adb logcat)
```
...
```
```
+4 -5
View File
@@ -1,8 +1,8 @@
---
name: Bug Report
about: Bug Report
name: MVPBug Report
about: MVPBug Report
title: ''
labels: bug
labels: ['E:Mobile Bug MVP', ':1234: low prio']
assignees: ''
---
@@ -22,8 +22,7 @@ assignees: ''
### Reproduction
1) Open Status
2)
1.
### Additional Information
+30
View File
@@ -0,0 +1,30 @@
---
name: Wont fix Report
about: to facilitate future handling, identify and address non-urgent issues that won't be prioritized in the near future
title: ''
labels: likely_wont_fix
assignees: ''
---
## Problem
#### Expected behavior
#### Actual behavior
### Reproduction
1.
### Additional Information
- Status version: release
- Operating System: Android, iOS
[comment]: # (Please, add logs/notes if necessary)
+22
View File
@@ -63,4 +63,26 @@ Documentation change PR (review please): https://github.com/status-im/status.im/
<!-- (PRs will only be accepted if squashed into single commit.) -->
### Before and after screenshots comparison
| Figma (if available) | iOS (if available) | Android (if available)
| --- | --- | --- |
| Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. | Please embed Image/Video here of the before and after. |
status: ready <!-- Can be ready or wip -->
<!-- Uncomment this section for status-go upgrade/dogfooding pull requests
- Specify potentially impacted user flows in _Areas that maybe impacted*.
- Ensure that _Steps to test_ is filled in.
### Risk
Described potential risks and worst case scenarios.
Tick **one**:
- [ ] Low risk: 2 devs MUST perform testing as specified above and attach their results as comments to this PR **before** merging.
- [ ] High risk: QA team MUST perform additional testing in the specified affected areas **before** merging.
-->
+12
View File
@@ -36,6 +36,10 @@ project.xcworkspace
**/android/.project
**/android/.settings/org.eclipse.buildship.core.prefs
local.properties
*.hprof
.cxx/
*.keystore
!debug.keystore
# Atom
.tags*
@@ -79,6 +83,9 @@ shim.js
figwheel_server.log
.nrepl-port
# FlowStorm (Clojure debugger)
repl-client-debug
# Lein
#
.lein-failures
@@ -123,6 +130,8 @@ fastlane/README.md
# Clj
.cpcache/
src/user.cljs
src/dev/user.cljs
# emacs
.dir-locals.el
@@ -190,3 +199,6 @@ test/appium/tests/users.py
## git hooks
lefthook.yml
## build time logs
/logs/*.log
+1
View File
@@ -0,0 +1 @@
{:clean {:ns-inner-blocks-indentation :keep}}
+4 -4
View File
@@ -1,10 +1,10 @@
{
"include": [
"target/test/status_im/**"
"target/test/legacy/status_im/**"
],
"exclude": [
"target/test/status_im/test/**",
"target/test/status_im/ui/**"
"target/test/legacy/status_im/test/**",
"target/test/legacy/status_im/ui/**"
],
"report-dir": "./coverage-report",
"all": true,
@@ -14,4 +14,4 @@
"exclude-after-remap": false,
"extension": [".js"],
"reporter": ["lcovonly"]
}
}
+15
View File
@@ -0,0 +1,15 @@
/*
# Format top-level js files.
!*.js
# Ignore all except src/js/**/*.js
!/src/
/src/*
!/src/js
!/src/js/**/*.js
# Ignore all except translations/en.json
!/translations/
/translations/*
!/translations/en.json
+11 -5
View File
@@ -1,7 +1,13 @@
module.exports = {
bracketSpacing: false,
bracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
tabWidth: 4,
arrowParens: 'always',
printWidth: 120,
semi: true,
singleQuote: true,
tabWidth: 2,
trailingComma: 'all',
useTabs: false,
// JSON sorting
jsonSortOrder: '{ "/.*/": "caseInsensitiveLexical" } ',
plugins: ['prettier-plugin-sort-json'],
};
+12
View File
@@ -0,0 +1,12 @@
{
"editor.formatOnSave": true,
"clojure.format.enable": false,
"[clojure]": {
"editor.defaultFormatter": "rflagreca.vscode-clj-zprint"
},
"vscode-clj-zprint.IgnoreExternalFiles": false,
"vscode-clj-zprint.CommunityFormatting": false,
"vscode-clj-zprint.OptionsMap": "",
"vscode-clj-zprint.width": "",
"vscode-clj-zprint.Styles.UseOnlyTheseStyles": false
}
+50 -39
View File
@@ -1,51 +1,62 @@
;; -*- mode: clojure -*-
;; vi: ft=clojure
{:width 105
:style [;; community style
;; https://github.com/kkinnear/zprint/blob/main/doc/reference.md#community
:community
{:width 105
:remove {:fn-force-nl #{:noarg1-body}}
;; no comma in map
:no-comma
:style
[;; community style https://github.com/kkinnear/zprint/blob/main/doc/reference.md#community
:community
:custom-justify
;; no comma in map
:no-comma
;; respect all newlines
;; https://github.com/kkinnear/zprint/blob/main/doc/reference.md#respect-nl
:respect-nl
:custom-justify
;; respect blank line
;; https://github.com/kkinnear/zprint/blob/main/doc/reference.md#respect-bl
:respect-bl
;; respect all newlines https://github.com/kkinnear/zprint/blob/main/doc/reference.md#respect-nl
:respect-nl
;; respect blank line https://github.com/kkinnear/zprint/blob/main/doc/reference.md#respect-bl
:respect-bl
;; hang multiline left-hand-thing https://github.com/kkinnear/zprint/issues/273
:multi-lhs-hang]
;; hang multiline left-hand-thing
;; https://github.com/kkinnear/zprint/issues/273
:multi-lhs-hang]
:fn-map
{"reg-sub" :arg1-pair
"h/describe" :arg1-body
"h/test" :arg1-body
"global.describe" :arg1-body
"global.test" :arg1-body
"list-comp" :binding
"defview" :arg1-body
"letsubs" :binding
"with-let" "let"
"testing" :arg1-body
"deftest-sub" :arg1-body
"wait-for" :arg1-body
"with-deps-check" :arg1-body
"->" [:noarg1-body
{:list {:constant-pair? false :force-nl? false}
:next-inner-restore [[:list :constant-pair?]]}]
"set!" "reset!"
"assoc-when" "assoc"
"assoc-some" "assoc"
"conj-when" "conj"
"conj-some" "conj"}
:remove {:fn-force-nl #{:noarg1-body}}
{"reg-sub" :arg1-pair
"h/describe" :arg1-body
"h/describe-skip" :arg1-body
"h/describe-only" :arg1-body
"h/test" :arg1-body
"h/test-skip" :arg1-body
"h/test-only" :arg1-body
"test/async" :arg1-body
"test/use-fixtures" :arg1-body
"global.describe" :arg1-body
"global.test" :arg1-body
"list-comp" :binding
"defview" :arg1-body
"letsubs" :binding
"with-let" "let"
"reg-event-fx" :arg1-pair
"reg-fx" :arg1-pair
"testing" :arg1-body
"deftest-sub" :arg1-body
"deftest-event" :arg1-body
"test-async" :arg1-body
"wait-for" :arg1-body
"with-deps-check" :arg1-body
"schema/=>" :arg1-body
"->" [:noarg1-body
{:list {:constant-pair? false :force-nl? false}
:next-inner-restore [[:list :constant-pair?]]}]
"set!" "reset!"
"assoc-when" "assoc"
"assoc-some" "assoc"
"conj-when" "conj"
"conj-some" "conj"}
:style-map
{:no-comma {:map {:comma? false}}
{:no-comma {:map {:comma? false}}
:custom-justify
{:doc "Justify everything using pre-1.1.2 approach"
:binding {:justify? true :justify {:max-variance 1000}}
+179 -86
View File
@@ -14,17 +14,17 @@ WHITE := $(shell tput -Txterm setaf 7)
YELLOW := $(shell tput -Txterm setaf 3)
RESET := $(shell tput -Txterm sgr0)
HELP_FUN = \
%help; \
while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \
print "Usage: make [target]\n\nSee STARTING_GUIDE.md for more info.\n\n"; \
for (sort keys %help) { \
print "${WHITE}$$_:${RESET}\n"; \
for (@{$$help{$$_}}) { \
$$sep = " " x (32 - length $$_->[0]); \
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
}; \
print "\n"; \
}
%help; \
while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \
print "Usage: make [target]\n\nSee STARTING_GUIDE.md for more info.\n\n"; \
for (sort keys %help) { \
print "${WHITE}$$_:${RESET}\n"; \
for (@{$$help{$$_}}) { \
$$sep = " " x (32 - length $$_->[0]); \
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
}; \
print "\n"; \
}
HOST_OS := $(shell uname | tr '[:upper:]' '[:lower:]')
# This can come from Jenkins
@@ -32,31 +32,30 @@ ifndef BUILD_TAG
export BUILD_TAG := $(shell git rev-parse --short HEAD)
endif
# We don't want to use /run/user/$UID because it runs out of space too easilly.
# We don't want to use /run/user/$UID because it runs out of space too easily.
export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG)
# This has to be specified for both the Node.JS server process and the Qt process.
export REACT_SERVER_PORT ?= 5001
# Default metro port used by scripts/run-android.sh.
export RCT_METRO_PORT ?= 8081
# Fix for ERR_OSSL_EVP_UNSUPPORTED error.
export NODE_OPTIONS += --openssl-legacy-provider
# The path can be anything, but home is usually safest.
export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore
# Our custom config is located in nix/nix.conf
export NIX_CONF_DIR = $(PWD)/nix
export NIX_USER_CONF_FILES = $(PWD)/nix/nix.conf
# Location of symlinks to derivations that should not be garbage collected
export _NIX_GCROOTS = /nix/var/nix/gcroots/per-user/$(USER)/status-mobile
export _NIX_GCROOTS = ./.nix-gcroots
# Defines which variables will be kept for Nix pure shell, use semicolon as divider
export _NIX_KEEP ?= TMPDIR,BUILD_ENV,STATUS_GO_SRC_OVERRIDE
export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\
BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\
ANDROID_GRADLE_OPTS,ANDROID_ABI_SPLIT,ANDROID_ABI_INCLUDE,\
STATUS_GO_SRC_OVERRIDE,STATUS_GO_IPFS_GATEWAY_URL
# Useful for Android release builds
TMP_BUILD_NUMBER := $(shell ./scripts/version/gen_build_no.sh | cut -c1-10)
# MacOS root is read-only, read nix/README.md for details
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
export NIX_IGNORE_SYMLINK_STORE=1
endif
#----------------
# Nix targets
#----------------
@@ -81,6 +80,10 @@ nix-gc-protected:
@echo -e "$(YELLOW)The following paths are protected:$(RESET)" && \
ls -1 $(_NIX_GCROOTS) | sed 's/^/ - /'
nix-upgrade: SHELL := /bin/sh
nix-upgrade: ##@nix Upgrade Nix interpreter to current version.
nix/scripts/upgrade.sh
nix-gc: export TARGET := nix
nix-gc: nix-gc-protected ##@nix Garbage collect all packages older than 20 days from /nix/store
nix-store --gc
@@ -101,7 +104,7 @@ nix-update-clojure: export TARGET := clojure
nix-update-clojure: ##@nix Update maven Nix expressions based on current clojure setup
nix/deps/clojure/generate.sh
nix-update-gems: export TARGET := default
nix-update-gems: export TARGET := fastlane
nix-update-gems: ##@nix Update Ruby gems in fastlane/Gemfile.lock and fastlane/gemset.nix
fastlane/update.sh
@@ -136,7 +139,7 @@ _install-hooks: ##@prepare Create prepare-commit-msg git hook symlink
# Remove directories and ignored files
clean: SHELL := /bin/sh
clean: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders
clean: _fix-node-perms _tmpdir-rm ios-clean android-clean ##@prepare Remove all output folders
git clean -dXf
# Remove directories, ignored and non-ignored files
@@ -153,10 +156,12 @@ pod-install: export TARGET := ios
pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock
cd ios && pod install; cd --
FLEETS_FILE := ./resources/config/fleets.json
update-fleets: ##@prepare Download up-to-date JSON file with current fleets state
curl -s https://fleets.status.im/ \
| sed 's/"warning": "/"warning": "DO NOT EDIT! /' \
> resources/config/fleets.json
> $(FLEETS_FILE)
echo >> $(FLEETS_FILE)
$(KEYSTORE_PATH): export TARGET := keytool
$(KEYSTORE_PATH):
@@ -191,6 +196,10 @@ xcode-clean: XCODE_HOME := $(HOME)/Library/Developer/Xcode
xcode-clean: ##@prepare Clean XCode derived data and archives
rm -fr $(XCODE_HOME)/DerivedData/StatusIm-* $(XCODE_HOME)/Archives/*/StatusIm*
ios-simulator-cache-clean: SHELL := /bin/sh
ios-simulator-cache-clean: ##@prepare Clean iOS Simulator Caches
rm -rf ~/Library/Developer/CoreSimulator/Cache
#----------------
# Release builds
#----------------
@@ -205,7 +214,7 @@ build-fdroid: ##@build Build release for F-Droid
build-android: export BUILD_ENV ?= prod
build-android: export BUILD_TYPE ?= nightly
build-android: export BUILD_NUMBER ?= $(TMP_BUILD_NUMBER)
build-android: export ORG_GRADLE_PROJECT_versionCode ?= $(TMP_BUILD_NUMBER)
build-android: export ANDROID_ABI_SPLIT ?= false
build-android: export ANDROID_ABI_INCLUDE ?= armeabi-v7a;arm64-v8a;x86
build-android: ##@build Build unsigned Android APK
@@ -217,6 +226,7 @@ release-android: keystore build-android ##@build Build signed Android APK
@scripts/sign-android.sh result/app-release-unsigned.apk
release-ios: export TARGET := ios
release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64
release-ios: export BUILD_ENV ?= prod
release-ios: watchman-clean ios-clean jsbundle ##@build Build release for iOS release
xcodebuild \
@@ -257,7 +267,7 @@ run-clojure: ##@run Watch for and build Clojure changes for mobile
run-metro: export TARGET := clojure
run-metro: ##@run Start Metro to build React Native changes
@scripts/start-react-native.sh
@scripts/run-metro.sh
run-re-frisk: export TARGET := clojure
run-re-frisk: ##@run Start re-frisk server
@@ -265,28 +275,27 @@ run-re-frisk: ##@run Start re-frisk server
# TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix
run-android: export TARGET := android
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors.
# https://github.com/status-im/status-mobile/issues/18493
run-android: export ORG_GRADLE_PROJECT_hermesEnabled := false
run-android: ##@run Build Android APK and start it on the device
npx react-native run-android --appIdSuffix debug
@scripts/run-android.sh
SIMULATOR=iPhone 11 Pro
SIMULATOR=iPhone 13
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
run-ios: export TARGET := ios
run-ios: ##@run Build iOS app and start it in a simulator/device
ifneq ("$(SIMULATOR)", "")
npx react-native run-ios --simulator="$(SIMULATOR)"
else
npx react-native run-ios
endif
run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
run-ios: ##@run Build iOS app and start it in on the simulator
@scripts/run-ios.sh "${SIMULATOR}"
show-ios-devices: export TARGET := ios
show-ios-devices: ##@other shows connected ios device and its name
xcrun xctrace list devices
# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded
run-ios-device: export TARGET := ios
run-ios-device: ##@run iOS app and start it on a connected device by its name
ifndef DEVICE_NAME
$(error Usage: make run-ios-device DEVICE_NAME=your-device-name)
endif
react-native run-ios --device "$(DEVICE_NAME)"
run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64
run-ios-device: ##@run iOS app and start it on the first connected iPhone
@scripts/run-ios-device.sh
#--------------
# Tests
@@ -294,71 +303,114 @@ endif
# Get all clojure files, including untracked, excluding removed
define find_all_clojure_files
$$(comm -23 <(sort <(git ls-files --cached --others --exclude-standard)) <(sort <(git ls-files --deleted)) | grep -e \.clj$$ -e \.cljs$$ -e \.cljc$$ -e \.edn)
$$(comm -23 <(sort <(git ls-files --cached --others --exclude-standard)) <(sort <(git ls-files --deleted)) | grep -E '((\.clj-kondo\/status-im)|(src).*\.clj[sc]?$$)|((\.clj-kondo\/(status-im|config))|(src).*\.edn$$)|shadow-cljs\.edn')
endef
lint: export TARGET := default
lint: export TARGET := clojure
lint: export CLJ_LINTER_PRINT_WARNINGS ?= false
lint: ##@test Run code style checks
@sh scripts/lint-re-frame-in-quo-components.sh && \
clj-kondo --config .clj-kondo/config.edn --cache false --lint src && \
@sh scripts/lint/re-frame-in-quo-components.sh && \
sh scripts/lint/direct-require-component-outside-quo.sh && \
sh scripts/lint/require-i18n-resource-first.sh && \
clj-kondo --config .clj-kondo/config.edn --cache false --fail-level error --lint src $(if $(filter $(CLJ_LINTER_PRINT_WARNINGS),true),,| grep -v ': warning: ') && \
ALL_CLOJURE_FILES=$(call find_all_clojure_files) && \
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES
scripts/lint/translations.clj && \
zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \
sh scripts/lint/trailing-newline.sh && \
node_modules/.bin/prettier --check .
# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271
lint-fix: export TARGET := default
lint-fix: export TARGET := clojure
lint-fix: ##@test Run code style checks and fix issues
ALL_CLOJURE_FILES=$(call find_all_clojure_files) && \
zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES && \
zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES
zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES && \
clojure-lsp --ns-exclude-regex ".*/\.clj-kondo/.*|.*/src/status_im/core\.cljs|.*/src/test_helpers/component_tests_preload\.cljs$$" clean-ns && \
sh scripts/lint/trailing-newline.sh --fix && \
node_modules/.bin/prettier --write .
shadow-server: export TARGET := clojure
shadow-server:##@ Start shadow-cljs in server mode for watching
yarn shadow-cljs server
test-watch: export TARGET := clojure
test-watch: ##@ Watch tests and re-run no changes to cljs files
yarn install
nodemon --exec 'yarn shadow-cljs compile mocks && yarn shadow-cljs compile test && node --require ./test-resources/override.js target/test/test.js' -e cljs
test-watch-for-repl: export TARGET := clojure
test-watch-for-repl: ##@ Watch tests and support REPL connections
yarn install
rm -f target/test/test.js
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
'yarn shadow-cljs compile mocks && yarn shadow-cljs watch test --verbose' \
'until [ -f ./target/test/test.js ] ; do sleep 1 ; done ; node --require ./test-resources/override.js ./target/test/test.js --repl'
test: export TARGET := clojure
test: ##@test Run tests once in NodeJS
# Here we create the gyp bindings for nodejs
yarn install
_test-clojure: export TARGET := clojure
_test-clojure: export WATCH ?= false
_test-clojure: status-go-library
_test-clojure:
ifeq ($(WATCH), true)
yarn node-pre-gyp rebuild && \
yarn shadow-cljs compile mocks && \
nodemon --exec "yarn shadow-cljs compile test && node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO" -e cljs
else
yarn node-pre-gyp rebuild && \
yarn shadow-cljs compile mocks && \
yarn shadow-cljs compile test && \
node --require ./test-resources/override.js target/test/test.js
node --require ./test-resources/override.js "$$SHADOW_OUTPUT_TO"
endif
test: export SHADOW_OUTPUT_TO := target/test/test.js
test: export SHADOW_NS_REGEXP := .*-test$$
test: ##@test Run all Clojure tests
test: _test-clojure
run-visual-test-ios: export TARGET := clojure
run-visual-test-ios: XCODE_DERIVED_DATA := $(HOME)/Library/Developer/Xcode/DerivedData
run-visual-test-ios: APPLICATION_NAME := StatusIm-brfnruzfrkkycpbndmdoeyrigthc
run-visual-test-ios: export TEST_BINARY_PATH := $(XCODE_DERIVED_DATA)/$(APPLICATION_NAME)/Build/Products/Debug-iphonesimulator/StatusIm.app
run-visual-test-ios: ##@test Run tests once in NodeJS
detox test --configuration ios.sim.debug
test-watch-for-repl: export TARGET := default
test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js
test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$
test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections
yarn install && shadow-cljs compile mocks && \
concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \
'yarn shadow-cljs watch test --verbose' \
"until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl"
component-test-watch: export TARGET := clojure
component-test-watch: export COMPONENT_TEST := true
component-test-watch: export BABEL_ENV := test
component-test-watch: ##@ Watch tests and re-run no changes to cljs files
yarn install
nodemon --exec 'yarn shadow-cljs compile component-test && jest --config=test/jest/jest.config.js' -e cljs
test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js
test-unit: export SHADOW_NS_REGEXP := ^(?!tests\.integration-test)(?!tests\.contract-test).*-test$$
test-unit: ##@test Run unit tests
test-unit: _test-clojure
component-test: export TARGET := clojure
component-test: export COMPONENT_TEST := true
component-test: export BABEL_ENV := test
component-test: ##@test Run component tests once in NodeJS
yarn install
test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js
test-integration: export SHADOW_NS_REGEXP := ^tests\.integration-test.*$$
test-integration: ##@test Run integration tests
test-integration: _test-clojure
test-contract: export SHADOW_OUTPUT_TO := target/contract_test/test.js
test-contract: export SHADOW_NS_REGEXP := ^tests\.contract-test.*$$
test-contract: ##@test Run contract tests
test-contract: _test-clojure
test-android: jsbundle
test-android: export TARGET := android
test-android: ##@test Android Gradle test
cd android && ./gradlew test
test-component-watch: export TARGET := clojure
test-component-watch: export COMPONENT_TEST := true
test-component-watch: export BABEL_ENV := test
test-component-watch: export JEST_USE_SILENT_REPORTER := false
test-component-watch: ##@ Watch tests and re-run no changes to cljs files
@scripts/check-metro-shadow-process.sh
rm -rf ./component-spec
nodemon --exec 'yarn shadow-cljs compile component-test && jest --config=test/jest/jest.config.js --testEnvironment node ' -e cljs
test-component: export TARGET := clojure
test-component: export COMPONENT_TEST := true
test-component: export BABEL_ENV := test
test-component: export JEST_USE_SILENT_REPORTER := false
test-component: ##@test Run component tests once in NodeJS
@scripts/check-metro-shadow-process.sh
rm -rf ./component-spec
yarn shadow-cljs compile component-test && \
jest --config=test/jest/jest.config.js
jest --clearCache && jest --config=test/jest/jest.config.js --testEnvironment node
# Reference: https://flow-storm.github.io/flow-storm-debugger/user_guide.html#_debugging_react_native_applications
run-flow-storm: export SHADOW_CLJS_BUILD_ID := :mobile
run-flow-storm: export TARGET := clojure
run-flow-storm: export GDK_DPI_SCALE := 1.0
run-flow-storm: ##@run Start FlowStorm debugger
clj -Sforce -Sdeps '{:deps {com.github.jpmonettas/flow-storm-dbg {:mvn/version "3.7.5"}}}' \
-X flow-storm.debugger.main/start-debugger \
:port 7888 \
:repl-type :shadow \
:build-id $(SHADOW_CLJS_BUILD_ID)
#--------------
# Other
@@ -370,25 +422,47 @@ geth-connect: ##@other Connect to Geth on the device
build/bin/geth attach http://localhost:8545
ios-clean: SHELL := /bin/sh
ios-clean: ios-simulator-cache-clean
ios-clean: ##@prepare Clean iOS build artifacts
git clean -dxf -f target/ios
android-clean: export TARGET := gradle
android-clean: SHELL := /bin/sh
android-clean: ##@prepare Clean Gradle state
git clean -dxf -f ./android/app/build; \
[[ -d android/.gradle ]] && cd android && ./gradlew clean
rm -rf android/.gradle \
rm -rf android/build \
rm -rf ~/.gradle
android-ports: export FLOWSTORM_PORT := 7722
android-ports: export TARGET := android-sdk
android-ports: ##@other Add proxies to Android Device/Simulator
adb reverse tcp:8081 tcp:8081 && \
adb reverse tcp:3449 tcp:3449 && \
adb reverse tcp:4567 tcp:4567 && \
adb reverse tcp:$(FLOWSTORM_PORT) tcp:$(FLOWSTORM_PORT) && \
adb forward tcp:5561 tcp:5561
android-devices: export TARGET := android-sdk
android-devices: ##@other Invoke adb devices
adb devices
android-pull-geth: export TARGET := android-sdk
android-pull-geth: export VERSION ?= debug
android-pull-geth:
adb pull "/storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log"
android-tail-geth: export TARGET := android-sdk
android-tail-geth: export VERSION ?= debug
android-tail-geth:
adb shell 'while true; do cat; sleep 1; done < /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log'
android-clean-geth: export TARGET := android-sdk
android-clean-geth: export VERSION ?= debug
android-clean-geth:
adb shell 'rm /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log'
android-logcat: export TARGET := android-sdk
android-logcat: ##@other Read status-mobile logs from Android phone using adb
adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :'
@@ -402,6 +476,10 @@ _list: SHELL := /bin/sh
_list:
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
patch-file: export TARGET := default
patch-file: ##@other Generates patch file for npm deps
@scripts/patch-npm-lib.sh
#--------------
# REPLs
#--------------
@@ -411,3 +489,18 @@ repl-clojure: ##@repl Start Clojure repl for mobile App
yarn shadow-cljs cljs-repl mobile
repl-nix: nix-repl ##@repl Start an interactive Nix REPL
#--------------
# Dev Automation Flows
#--------------
auto-login: export TARGET := default
auto-login: ##@auto runs flow for login or onboarding app on simulator/emulator
maestro test "maestro/create-account-or-login.yaml"
auto-custom: export TARGET := default
auto-custom: ##@auto runs any custom maestro automation flow on simulator/emulator
ifndef FLOW
$(error Usage: make automate FLOW=your-maestro-flow-file.yaml)
endif
maestro test "$(FLOW)"
+19 -24
View File
@@ -2,9 +2,11 @@
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt="Get it on Google Play" height="80"/>](https://play.google.com/store/apps/details?id=im.status.ethereum)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80"/>](https://f-droid.org/packages/im.status.ethereum/)
[<img src="doc/github_badge.png" alt="Get it on Github" height="80"/>](https://github.com/status-im/status-mobile/releases)
Join us in creating a browser, messenger, and gateway to a decentralized world. Status is a free (libre) open source mobile client targeting Android & iOS built entirely on [Ethereum](https://ethereum.org/) technologies. That's right, no middle men and `go-ethereum` running directly on your device.
[Get it on Github](https://github.com/status-im/status-mobile/releases)
Join us in creating a browser, messenger, and gateway to a decentralized world. Status is a free (libre) open source mobile client targeting Android & iOS built entirely on [Ethereum](https://ethereum.org/) technologies. That's right, no middlemen and `go-ethereum` running directly on your device.
[![Getting started with Status](https://i.imgur.com/C0aZZEL.jpg)](https://www.youtube.com/watch?v=oDCSEmS9c3o "Getting started with Status")
@@ -12,52 +14,49 @@ Join us in creating a browser, messenger, and gateway to a decentralized world.
We believe in a medium of pure free trade, economies with fair, permission-less access and a world without intermediaries. We want to create policies that can exist between friends or scale globally, we want to communicate securely and be uninhibited by legacy systems.
We want to take responsibility for our data, the way we conduct ourselves privately and promote this way of life to a mass audience.
We want to take responsibility for our data, and the way we conduct ourselves privately and promote this way of life to a mass audience.
We want deep insights into our own economies so we can make informed, data-driven decisions on how to make our lives better. The Ethereum blockchain, Smart Contracts, Swarm and Whisper provides us a path forward.
We want deep insights into our own economies so we can make informed, data-driven decisions on how to make our lives better. The Ethereum blockchain, Smart Contracts, Swarm and Whisper provide us with a path forward.
If this interests you, **help us make Status a reality** - anyone can contribute and we need everyone at any skill level to participate.
## How to Contribute?
Go straight to the [docs](https://status.im/docs) or [join our chat](https://join.status.im/chat/public/status) and choose what interests you:
Go straight to the [docs](doc/) and choose what interests you:
- **Developer** Developers are the heart of software and to keep Status beating
we need all the help we can get! If you're looking to code in ClojureScript or
Golang then Status is the project for you! We use React Native and there is even
some Java/Objective-C too! Want to learn more about it? Start by reading our
[Developer Introduction](https://status.im/developer_tools/) which guides you
[Developer Introduction](doc/starting-guide.md) which guides you
through the technology stack and start browsing [beginner
issues](https://github.com/status-im/status-mobile/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22good%20first%20issue%22%20).
Then you can read how to [Build
Status](https://status.im/technical/build_status/), which talks about managing
project dependencies, coding guidelines and testing procedures. The [doc/](doc/)
directory also has valuable information for contributors.
Status](doc/starting-guide.md), which talks about managing
project dependencies, coding guidelines and testing procedures.
Check out our [coding guidelines](doc/new-guidelines.md).
- **Community Management**
Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes a lot of work but the people you'll meet and long lasting relationships you form will be well worth it, check out our [Mission and Community Principles](https://status.im/about)
Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes a lot of work but the people you'll meet and the long-lasting relationships you form will be well worth it, check out our [Mission and Community Principles](https://status.app/manifesto)
- **Specification / Documentation**
John Dewey once said "Education is not preparation for life; education is life *itself* ". Developers & Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, head over to our [docs](https://status.im/docs) and see how you can improve what we have.
John Dewey once said, "Education is not preparation for life; education is life *itself* ". Developers and Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, check out our [docs](doc/) and see how you can improve what we have.
- **Blog Writing**
Content is King, keeping our blog up to date and informing the community of news helps keep everyone on the same page. [Jump into our chat](https://join.status.im/chat/public/status) and discuss with the team how you can contribute!
Content is King, keeping our blog up to date and informing the community of news helps keep everyone on the same page.
- **Testers**
It's bug hunting season! Status is currently under active development and there is sure to be a bunch of learning, [build status from scratch](https://status.im/technical/build_status/) or if an android user check out our [nightly builds](https://status.im/nightly). You can shake your phone to submit bug reports, or start browsing our [Github Issues](https://github.com/status-im/status-mobile/issues). Every bug you find brings Status closer to stable, usable software for everyone to enjoy!
It's bug-hunting season! Status is currently under active development and there is sure to be a bunch of learning, [build status from scratch](doc/starting-guide.md) or if an android user checks out our [nightly builds](https://status.im/nightly). You can shake your phone to submit bug reports, or start browsing our [Github Issues](https://github.com/status-im/status-mobile/issues). Every bug you find brings Status closer to stable, usable software for everyone to enjoy!
- **Security**
Status is a visual interface to make permanent changes on the Blockchain, it handles crypto-tokens that have real value and allows 3rd party code execution. Security is paramount to its success. You are given permission to break Status as hard as you can, as long as you share your findings with the community!
- **Evangelism**
Help us spread the word! Tell a friend *right now*, in fact tell **everyone** - yell from a mountain if you have to, every person counts! If you've got a great story to tell or have some interesting way you've spread the word about Status let us know about it in our [chat](https://join.status.im/chat/public/status)
## Status API
View our [API Docs](https://status.im/developer_tools/status_web_api.html) and learn how to integrate your DApp into Status. You can read more about how to add your DApp to Status [here](https://status.im/developer_tools/add_your_dapp.html).
Help us spread the word! Tell a friend *right now*, in fact, tell **everyone** - yell from a mountain if you have to, every person counts! If you've got a great story to tell or have some interesting way you've spread the word about Status let us know about it in our [chat](https://join.status.im/chat/public/status)
## Give me Binaries!
You can get our Beta builds for both Android and iOS on our [website](https://status.im), through our [nightly builds](https://status.im/nightly/) or by [building it yourself](https://status.im/technical/build_status/).
You can get our Beta builds for both Android and iOS on our [website](https://status.app), through our [nightly builds](https://status.im/nightly/), or by [building it yourself](doc/starting-guide.md).
## Core Contributors
@@ -68,12 +67,8 @@ Without the dedication of these outstanding individuals, Status would not exist.
## Contact us
Feel free to email us at [support@status.im](mailto:support@status.im) or better yet, [join our chat](https://join.status.im/chat/public/status).
Feel free to email us at [support@status.im](mailto:support@status.im).
## License
Licensed under the [Mozilla Public License v2.0](https://github.com/status-im/status-mobile/blob/develop/LICENSE.md)
## Testing Supported by
[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SFBWQ3k5R2tnT2t6UGsxU1h1U0g3VFlCNnoxVTRHYWNoTDhsb1laaTJZWT0tLUZMUm5sSVFBSU9qSWM1RUJvK1I3Z3c9PQ==--ad15ae7992b432b33743749d40318952415bd98f)](https://www.browserstack.com/automate/public-build/SFBWQ3k5R2tnT2t6UGsxU1h1U0g3VFlCNnoxVTRHYWNoTDhsb1laaTJZWT0tLUZMUm5sSVFBSU9qSWM1RUJvK1I3Z3c9PQ==--ad15ae7992b432b33743749d40318952415bd98f)
+1 -1
View File
@@ -25,7 +25,7 @@
### Redesign
* Quo2, Switcher Navigation by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13167
* quo, Switcher Navigation by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13167
* Switcher and Bottom Tabs Animations and UI Performance Improvements by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13470
* feat: add token tag component (#13599) by @J-Son89 in https://github.com/status-im/status-mobile/pull/13644
* [13565] icon-avatar component by @ibrkhalil in https://github.com/status-im/status-mobile/pull/13692
+1 -1
View File
@@ -1 +1 @@
1.23.0
2.29.0
+90 -239
View File
@@ -1,128 +1,75 @@
apply plugin: "com.android.application"
apply plugin: "org.jetbrains.kotlin.android"
apply plugin: "com.facebook.react"
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
import com.android.build.OutputFile
import com.sun.org.apache.xalan.internal.xsltc.compiler.Copy
/**
* The react.gradle file registers a task for each build variant:
* - bundlePrJsAndAssets
* - bundleDebugJsAndAssets
* - bundleReleaseJsAndAssets
* These basically call `react-native bundle` with the correct arguments during the Android build
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
* bundle directly from the development server. Below you can see all the possible configurations
* and their defaults. If you decide to add a configuration block, make sure to add it before the
* `apply from: "../../node_modules/react-native/react.gradle"` line.
*
* project.ext.react = [
* // the name of the generated asset file containing your JS bundle
* bundleAssetName: "index.android.bundle",
*
* // the entry file for bundle generation
* entryFile: "index.js",
*
* // whether to bundle JS and assets in debug mode
* bundleInDebug: false,
*
* // whether to bundle JS and assets in release mode
* bundleInRelease: true,
*
* // whether to bundle JS and assets in another build variant (if configured).
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
* // The configuration property can be in the following formats
* // 'bundleIn${productFlavor}${buildType}'
* // 'bundleIn${buildType}'
* // bundleInFreeDebug: true,
* // bundleInPaidRelease: true,
* // bundleInBeta: true,
*
* // whether to disable dev mode in custom build variants (by default only disabled in release)
* // for example: to disable dev mode in the staging build type (if configured)
* devDisabledInStaging: true,
* // The configuration property can be in the following formats
* // 'devDisabledIn${productFlavor}${buildType}'
* // 'devDisabledIn${buildType}'
*
* // the root of your project, i.e. where "package.json" lives
* root: "../../",
*
* // where to put the JS bundle asset in debug mode
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
*
* // where to put the JS bundle asset in release mode
* jsBundleDirRelease: "$buildDir/intermediates/assets/release",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in debug mode
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
*
* // where to put drawable resources / React Native assets, e.g. the ones you use via
* // require('./image.png')), in release mode
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
*
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
* // date; if you have any other folders that you want to ignore for performance reasons (gradle
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
* // for example, you might want to remove it from here.
* inputExcludes: ["android/**", "ios/**"],
*
* // override which node gets called and with what additional arguments
* nodeExecutableAndArgs: ["node", "--max-old-space-size=8192"],
*
* // supply additional arguments to the packager
* extraPackagerArgs: []
* ]
*/
/*
Enabling Hermes on x86 devices is crashing the app after a few reloads,
this flag can be used to disable Hermes while building app.
https://github.com/status-im/status-mobile/issues/14031
* This is the configuration block to customize your React Native Android app.
* By default you don't need to apply any configuration, just uncomment the lines you need.
*/
react {
/* Folders */
// The root of your project, i.e. where "package.json" lives. Default is '..'
// root = file("../")
// The folder where the react-native NPM package is. Default is ../node_modules/react-native
// reactNativeDir = file("../node_modules/react-native")
// The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen
// codegenDir = file("../node_modules/@react-native/codegen")
// The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js
// cliFile = file("../node_modules/react-native/cli.js")
def disableHermes = System.getenv('DISABLE_HERMES') == 'true'
/* Variants */
// The list of variants to that are debuggable. For those we're going to
// skip the bundling of the JS bundle and the assets. By default is just 'debug'.
// If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants.
// debuggableVariants = ["liteDebug", "prodDebug"]
project.ext.react = [
nodeExecutableAndArgs: ["node", "--max-old-space-size=16384"],
entryFile: "index.js",
/* NOTE: Hermes engine is required for Android 64-bit builds running on 64 devices,
* to guard against a hang in the UI thread after invoking status-go.
* Also a clean and rebuild is required when changing this. */
enableHermes: !disableHermes,
/* Disable 'The first definition was here.' warnings */
hermesFlagsRelease: ["-w"],
/* FIXME: Workaround for crash caused by missing libhermes-executor-release.so.
* https://github.com/facebook/react-native/issues/32928 */
deleteDebugFilesForVariant: { false },
enableVmCleanup: false,
bundleInPr: true,
inputExcludes: ["android/**", "ios/**", "react-native/**", "src/**", "test/**"]
]
/* Bundling */
// A list containing the node command and its flags. Default is just 'node'.
nodeExecutableAndArgs = ["node", "--max-old-space-size=16384" ]
//
// The command to run when bundling. By default is 'bundle'
// bundleCommand = "ram-bundle"
//
// The path to the CLI configuration file. Default is empty.
// bundleConfig = file(../rn-cli.config.js)
//
// The name of the generated asset file containing your JS bundle
// bundleAssetName = "MyApplication.android.bundle"
//
// The entry file for bundle generation. Default is 'index.android.js' or 'index.js'
// entryFile = file("../js/MyApplication.android.js")
//
// A list of extra flags to pass to the 'bundle' commands.
// See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle
// extraPackagerArgs = []
// NOTE: Uncomment if building RN from a fork
// configurations.all {
// exclude group: 'com.facebook.react', module: 'react-native'
// }
apply from: "../../node_modules/react-native/react.gradle"
/* Hermes Commands */
// The hermes compiler command to run. By default it is 'hermesc'
// hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc"
//
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
// hermesFlags = ["-O", "-output-source-map"]
}
/**
* Run Proguard to shrink the Java bytecode in release builds.
* Set this to true to Run Proguard on Release builds to minify the Java bytecode.
*/
def enableProguardInReleaseBuilds = false
def enableProguardInReleaseBuilds = true
/**
* The preferred build flavor of JavaScriptCore.
* The preferred build flavor of JavaScriptCore (JSC)
*
* For example, to use the international variant, you can use:
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
*
* The international variant includes ICU i18n library and necessary data
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
* give correct results when using with locales other than en-US. Note that
* give correct results when using with locales other than en-US. Note that
* this variant is about 6MiB larger per architecture than default.
*/
def jscFlavor = 'org.webkit:android-jsc:+'
@@ -134,15 +81,7 @@ def jscFlavor = 'org.webkit:android-jsc:+'
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
* and the benefits of using Hermes will therefore be sharply reduced.
*/
def enableHermes = project.ext.react.get("enableHermes", false);
/**
* Architectures to build native code for.
*/
def reactNativeArchitectures() {
def value = project.getProperties().get("reactNativeArchitectures")
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
def enableHermes = hermesEnabled.toBoolean();
def getCommitHash = { ->
if (project.hasProperty("commitHash")) {
@@ -168,6 +107,7 @@ def getVersionCode = { ->
def getVersionName = { ->
new ByteArrayOutputStream().withStream { stdOut ->
// TODO: probably not used, cleanup
if (project.hasProperty("releaseVersion")) {
return project.releaseVersion
}
@@ -197,13 +137,27 @@ def getEnvOrConfig = { varName ->
android {
ndkVersion rootProject.ext.ndkVersion
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
compileSdk rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17
}
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
externalNativeBuild {
cmake {
// This version must match cmakeVersions inside nix/pkgs/android-sdk/compose.nix
version "3.22.1"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
namespace "im.status.ethereum"
defaultConfig {
applicationId "im.status.ethereum"
minSdkVersion rootProject.ext.minSdkVersion
@@ -219,70 +173,8 @@ android {
abiFilters getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";")
}
}
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
ndkBuild {
arguments "APP_PLATFORM=android-21",
"APP_STL=c++_shared",
"NDK_TOOLCHAIN_VERSION=clang",
"GENERATED_SRC_DIR=$buildDir/generated/source",
"PROJECT_BUILD_DIR=$buildDir",
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
"NODE_MODULES_DIR=$rootDir/../node_modules"
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
cppFlags "-std=c++17"
// Make sure this target name is the same you specify inside the
// src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
targets "rndiffapp_appmodules"
}
}
}
}
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
ndkBuild {
path "$projectDir/src/main/jni/Android.mk"
}
}
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
afterEvaluate {
// If you wish to add a custom TurboModule or component locally,
// you should uncomment this line.
// preBuild.dependsOn("generateCodegenArtifactsFromSchema")
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
// Due to a bug inside AGP, we have to explicitly set a dependency
// between configureNdkBuild* tasks and the preBuild tasks.
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
configureNdkBuildRelease.dependsOn(preReleaseBuild)
configureNdkBuildDebug.dependsOn(preDebugBuild)
reactNativeArchitectures().each { architecture ->
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
dependsOn("preDebugBuild")
}
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
dependsOn("preReleaseBuild")
}
}
}
}
/**
* Arbitrary project metadata
* https://docs.gradle.org/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html
@@ -314,10 +206,6 @@ android {
doNotStrip '*/mips/*.so'
doNotStrip '*/mips64/*.so'
}
dexOptions {
jumboMode true
javaMaxHeapSize "8g"
}
splits {
abi {
reset()
@@ -344,6 +232,7 @@ android {
}
release {
minifyEnabled enableProguardInReleaseBuilds
shrinkResources enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig null
}
@@ -351,12 +240,13 @@ android {
initWith release
applicationIdSuffix ".pr"
versionNameSuffix ".pr"
debuggable false
debuggable false
matchingFallbacks = ["release"]
// necessary to make react-native-config's code generation work
resValue "string", "build_config_package", "im.status.ethereum"
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
@@ -372,6 +262,7 @@ android {
}
}
aaptOptions {
// disable PNG optimization as for some reason it cannot be trusted to provide deterministic output (see https://f-droid.org/en/docs/Reproducible_Builds/)
cruncherEnabled = false
@@ -383,65 +274,33 @@ android {
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.facebook.soloader:soloader:0.10.3+'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
implementation "androidx.core:core-splashscreen:1.0.0"
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
exclude group:'com.facebook.fbjni'
}
// TODO Uncomment once Flipper does not cause webview crashes in Debug mode
// debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
// exclude group:'com.facebook.flipper'
// }
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
}
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
implementation("androidx.core:core-splashscreen:1.0.0")
if (enableHermes) {
//noinspection GradleDynamicVersion
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
exclude group: 'com.facebook.fbjni' }
} else {
implementation jscFlavor
implementation("com.facebook.react:hermes-android")
} else {
// https://github.com/status-im/status-mobile/issues/18493
// we don't use hermes for debug builds because it crashes too often
implementation(jscFlavor)
}
// react-native-screens
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
implementation 'androidx.multidex:multidex:2.0.1' // only needed if minSdkVersion is less than 21 (https://developer.android.com/studio/build/multidex)
implementation project(':react-native-dialogs')
implementation("androidx.appcompat:appcompat:1.1.0-rc01")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02")
implementation("androidx.multidex:multidex:2.0.1") // required by status-mobile/android/app/src/main/java/im/status/ethereum/MainApplication.java
implementation project(':react-native-blur')
// Force using exact RN version instead of relying on gradle dependency resolution
// https://docs.gradle.org/current/userguide/introduction_dependency_management.html#sec:dependency_resolution
// NOTE: Uncomment if building RN from a fork
//compile ("com.facebook.react:react-native:0.55.4") { force = true } // From node_modules
implementation project(':react-native-status')
implementation project(':react-native-status-keycard')
implementation 'com.github.status-im:function:0.0.1'
implementation 'com.facebook.fresco:fresco:2.2.0'
implementation 'com.facebook.fresco:animated-gif:2.2.0'
implementation "com.squareup.okhttp3:okhttp-tls:4.9.2"
implementation("com.github.status-im:function:0.0.1")
implementation("com.facebook.fresco:fresco:2.5.0")
implementation("com.facebook.fresco:animated-gif:2.5.0")
implementation("com.squareup.okhttp3:okhttp-tls:4.11.0")
implementation("com.google.prefab:cli:2.0.0")
implementation("com.android.tools.build:aapt2:8.1.1-10154469")
}
if (isNewArchitectureEnabled()) {
// If new architecture is enabled, we let you build RN from source
// Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
// This will be applied to all the imported transtitive dependency.
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute(module("com.facebook.react:react-native"))
.using(project(":ReactAndroid"))
.because("On New Architecture we're building React Native from source")
substitute(module("com.facebook.react:hermes-engine"))
.using(project(":ReactAndroid:hermes-engine"))
.because("On New Architecture we're building Hermes from source")
}
}
}
def getLocalNDKDir = { ->
def rootDir = project.rootDir
@@ -476,11 +335,3 @@ task hemroidBuild(type: Exec) {
preBuild.dependsOn hemroidBuild
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
def isNewArchitectureEnabled() {
// To opt-in for the New Architecture, you can either:
// - Set `newArchEnabled` to true inside the `gradle.properties` file
// - Invoke gradle with `-newArchEnabled=true`
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}
+13 -1
View File
@@ -58,6 +58,9 @@
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
# to fix : java.security.KeyStoreException: BKS not found
-keep class org.bouncycastle.** { *; }
# okio
-keep class sun.misc.Unsafe { *; }
@@ -75,4 +78,13 @@
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
}
# react-native-config
# https://github.com/lugg/react-native-config?tab=readme-ov-file#problems-with-proguard
-keep class im.status.ethereum.BuildConfig {*;}
# react-native-navigation
# to fix : java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
# at com.reactnativenavigation.views.element.animators.PropertyAnimatorCreator.getChildClass(Unknown Source:13)
-keep class com.reactnativenavigation.** {*;}
+2 -4
View File
@@ -3,11 +3,9 @@
xmlns:tools="http://schemas.android.com/tools">
<!-- These are added by React Native for debug mode, but actually aren't needed in release mode -->
<uses-permission tools:node="remove" android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- Remove licensing permission since we don't license our app and it blocks F-Droid submissions. -->
<uses-permission tools:node="remove" android:name="com.android.vending.CHECK_LICENSE"/>
<application tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" android:usesCleartextTraffic="true" >
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
</application>
<application tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" android:usesCleartextTraffic="true" />
</manifest>
@@ -1,73 +0,0 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
package im.status.ethereum;
import android.content.Context;
import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.android.utils.FlipperUtils;
import com.facebook.flipper.core.FlipperClient;
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
import com.facebook.flipper.plugins.inspector.DescriptorMapping;
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
// import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
// import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.network.NetworkingModule;
import okhttp3.OkHttpClient;
public class ReactNativeFlipper {
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
if (FlipperUtils.shouldEnableFlipper(context)) {
final FlipperClient client = AndroidFlipperClient.getInstance(context);
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
client.addPlugin(new ReactFlipperPlugin());
client.addPlugin(new DatabasesFlipperPlugin(context));
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
client.addPlugin(CrashReporterPlugin.getInstance());
// TODO Uncomment once Flipper does not cause webview crashes in Debug mode
// NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
// NetworkingModule.setCustomClientBuilder(
// new NetworkingModule.CustomClientBuilder() {
// @Override
// public void apply(OkHttpClient.Builder builder) {
// builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
// }
// });
// client.addPlugin(networkFlipperPlugin);
client.start();
// Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
// Hence we run if after all native modules have been initialized
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
if (reactContext == null) {
reactInstanceManager.addReactInstanceEventListener(
new ReactInstanceManager.ReactInstanceEventListener() {
@Override
public void onReactContextInitialized(ReactContext reactContext) {
reactInstanceManager.removeReactInstanceEventListener(this);
reactContext.runOnNativeModulesQueueThread(
new Runnable() {
@Override
public void run() {
client.addPlugin(new FrescoFlipperPlugin());
}
});
}
});
} else {
client.addPlugin(new FrescoFlipperPlugin());
}
}
}
}
+46 -10
View File
@@ -1,10 +1,17 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto"
package="im.status.ethereum">
android:installLocation="auto">
<queries>
<intent>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<data android:mimeType="*/*" />
</intent>
</queries>
<!-- non-dangerous permissions -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
@@ -17,11 +24,11 @@
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<application
@@ -33,7 +40,8 @@
android:name=".MainApplication"
android:largeHeap="true"
android:usesCleartextTraffic="true"
android:extractNativeLibs="true">
android:extractNativeLibs="true"
android:requestLegacyExternalStorage="true">
<!-- After upgrading Android Gradle Plugin to 4.2.0 and above we must get rid of `extractNativeLibs="true"`
and use`useLegacyPackaging` flag in our app's `build.gradle`-->
<meta-data android:name="commitHash" android:value="${commitHash}"/>
@@ -62,19 +70,47 @@
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="join.status.im" />
<data android:scheme="https" android:host="join.status.im" />
<!-- Handles http and https URLs for status.app -->
<data android:scheme="http" android:host="status.app" />
<data android:scheme="https" android:host="status.app" />
<!-- Community paths -->
<data android:pathPattern="/c/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/c/.*" android:host="status.app" android:scheme="https" />
<!-- Community channel paths -->
<data android:pathPattern="/cc/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/cc/.*" android:host="status.app" android:scheme="https" />
<!-- User paths -->
<data android:pathPattern="/u/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/u/.*" android:host="status.app" android:scheme="https" />
<!-- Private chat paths -->
<data android:pathPattern="/p/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/p/.*" android:host="status.app" android:scheme="https" />
<!-- Community request paths -->
<data android:pathPattern="/cr/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/cr/.*" android:host="status.app" android:scheme="https" />
<!-- Group chat paths -->
<data android:pathPattern="/g/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/g/.*" android:host="status.app" android:scheme="https" />
<!-- Wallet paths -->
<data android:pathPattern="/wallet/.*" android:host="status.app" android:scheme="http" />
<data android:pathPattern="/wallet/.*" android:host="status.app" android:scheme="https" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="status-im" />
<data android:scheme="status-app" />
<data android:scheme="ethereum" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
<service android:name="im.status.ethereum.pushnotifications.ForegroundService"></service>
<service
android:name="im.status.ethereum.pushnotifications.ForegroundService"
android:foregroundServiceType="specialUse">
<property
android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="local notifications"/>
</service>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
@@ -1,260 +0,0 @@
package im.status.ethereum;
import android.content.Context;
import android.annotation.TargetApi;
import androidx.annotation.Nullable;
import android.app.AlertDialog;
import android.app.ActivityManager;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Looper;
import android.preference.PreferenceManager;
import androidx.core.app.ActivityCompat;
import android.util.Log;
import android.view.WindowManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.provider.Settings;
import android.os.Bundle;
import android.os.Handler;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
import com.reactnativenavigation.NavigationActivity;
import com.facebook.react.modules.core.PermissionListener;
import androidx.core.splashscreen.SplashScreen;
import com.facebook.react.ReactActivity;
import java.util.Properties;
import im.status.ethereum.module.StatusThreadPoolExecutor;
import im.status.ethereum.MainApplication;
public class MainActivity extends NavigationActivity
implements ActivityCompat.OnRequestPermissionsResultCallback{
@Nullable private PermissionListener mPermissionListener;
private boolean keepSplash = true;
private final int SPLASH_DELAY = 3200;
private static void registerUncaughtExceptionHandler(final Context context) {
final Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(final Thread thread, final Throwable t) {
// High priority, so don't use StatusThreadPoolExecutor
new Thread() {
@Override
public void run() {
Looper.prepare();
new AlertDialog.Builder(context)
.setTitle("Error")
.setMessage(t.toString())
.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int id) {
dialog.dismiss();
defaultUncaughtExceptionHandler.uncaughtException(thread, t);
}
}).show();
Looper.loop();
}
}.start();
}
});
}
private ActivityManager getActivityManager() {
return (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
}
private ActivityManager.MemoryInfo getAvailableMemory(final ActivityManager activityManager) {
final ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
return memoryInfo;
}
protected void configureStatus() {
// Required because of crazy APN settings redirecting localhost (found in GB)
Properties properties = System.getProperties();
properties.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
properties.setProperty("https.nonProxyHosts", "localhost|127.0.0.1");
}
private Intent createNotificationSettingsIntent() {
final Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
} else {
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + getPackageName()));
}
return intent;
}
private void tryToEmit(String eventName, WritableMap event) {
try {
((MainApplication) getApplication()).getReactNativeHost()
.getReactInstanceManager()
.getCurrentReactContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("url", event);
} catch(Exception e) {/* we expect NPE on first start, which is OK because we have a fallback */}
}
@Override
public void onNewIntent(final Intent intent) {
super.onNewIntent(intent);
if (intent.getDataString() != null && intent.getData().getScheme().startsWith("app-settings")) {
startActivity(createNotificationSettingsIntent());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
setTheme(R.style.DarkTheme);
// Make sure we get an Alert for every uncaught exceptions
registerUncaughtExceptionHandler(MainActivity.this);
// Report memory details for this application
final ActivityManager activityManager = getActivityManager();
Log.v("RNBootstrap", "Available system memory "+getAvailableMemory(activityManager).availMem + ", maximum usable application memory " + activityManager.getLargeMemoryClass()+"M");
setSecureFlag();
// NOTE: Try to not restore the state https://github.com/software-mansion/react-native-screens/issues/17
super.onCreate(null);
if (!shouldShowRootedNotification()) {
configureStatus();
} else {
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setMessage(getResources().getString(R.string.root_warning))
.setPositiveButton(getResources().getString(R.string.root_okay), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
rejectRootedNotification();
dialog.dismiss();
configureStatus();
}
})
.setNegativeButton(getResources().getString(R.string.root_cancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
MainActivity.this.finishAffinity();
}
})
.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
dialog.dismiss();
MainActivity.this.finishAffinity();
}
})
.create();
dialog.show();
}
Runnable r = new Runnable() {
@Override
public void run() {
System.loadLibrary("status-logs");
// when app is started but the Activity has been destroyed, the deep linking url event is
// not emitted when coming back to foreground. This is a workaround. If the problem is
// resolved in react-native this code should be removed
if (getIntent().getData() != null) {
WritableMap event = Arguments.createMap();
event.putString("url", getIntent().getDataString());
// on first start emit will (silently) fail, but the regular deep linking handler will work
tryToEmit("url", event);
}
}
};
splashScreen.setKeepOnScreenCondition(() -> keepSplash);
Handler handler = new Handler();
handler.postDelayed(() -> keepSplash = false, SPLASH_DELAY);
StatusThreadPoolExecutor.getInstance().execute(r);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent);
}
private static final String REJECTED_ROOTED_NOTIFICATION = "rejectedRootedNotification";
private static final Integer FREQUENCY_OF_REMINDER_IN_PERCENT = 5;
private boolean shouldShowRootedNotification() {
if (RootUtil.isDeviceRooted() && BuildConfig.ENABLE_ROOT_ALERT == "1") {
if (userRejectedRootedNotification()) {
return ((Math.random() * 100) < FREQUENCY_OF_REMINDER_IN_PERCENT);
} else return true;
} else {
return false;
}
}
private boolean userRejectedRootedNotification() {
SharedPreferences preferences = getPreferences(0);
return preferences.getBoolean(REJECTED_ROOTED_NOTIFICATION, false);
}
private void rejectRootedNotification() {
SharedPreferences preferences = getPreferences(0);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(REJECTED_ROOTED_NOTIFICATION, true);
editor.commit();
}
private void setSecureFlag() {
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
final boolean setSecure = sharedPrefs.getBoolean("BLANK_PREVIEW", false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && setSecure) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
@TargetApi(Build.VERSION_CODES.M)
public void requestPermissions(String[] permissions, int requestCode, PermissionListener listener) {
mPermissionListener = listener;
requestPermissions(permissions, requestCode);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (mPermissionListener != null && mPermissionListener.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
mPermissionListener = null;
}
}
}
@@ -0,0 +1,236 @@
package im.status.ethereum
import android.annotation.TargetApi
import android.app.ActivityManager
import android.app.AlertDialog
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.content.SharedPreferences
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.preference.PreferenceManager
import android.provider.Settings
import android.util.Log
import android.view.WindowManager
import androidx.annotation.Nullable
import androidx.core.app.ActivityCompat
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import com.facebook.react.ReactActivityDelegate
import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.WritableMap
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
import com.facebook.react.defaults.DefaultReactActivityDelegate
import com.facebook.react.modules.core.DeviceEventManagerModule
import com.facebook.react.modules.core.PermissionListener
import com.reactnativenavigation.NavigationActivity
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView
import im.status.ethereum.MainApplication
import im.status.ethereum.module.StatusThreadPoolExecutor
import java.util.Properties
class MainActivity : NavigationActivity(), ActivityCompat.OnRequestPermissionsResultCallback {
@Nullable
private var mPermissionListener: PermissionListener? = null
private var keepSplash = true
private val SPLASH_DELAY = 3200
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
protected fun getMainComponentName(): String {
return "StatusIm"
}
private fun registerUncaughtExceptionHandler(context: Context) {
val defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler()
// High priority, so don't use StatusThreadPoolExecutor
Thread.setDefaultUncaughtExceptionHandler { thread, t ->
Thread {
Looper.prepare()
AlertDialog.Builder(context)
.setTitle("Error")
.setMessage(t.toString())
.setNegativeButton("Exit") { dialog, id ->
dialog.dismiss()
defaultUncaughtExceptionHandler.uncaughtException(thread, t)
}.show()
Looper.loop()
}.start()
}
}
private fun getActivityManager(): ActivityManager {
return getSystemService(ACTIVITY_SERVICE) as ActivityManager
}
private fun getAvailableMemory(activityManager: ActivityManager): ActivityManager.MemoryInfo {
val memoryInfo = ActivityManager.MemoryInfo()
activityManager.getMemoryInfo(memoryInfo)
return memoryInfo
}
protected fun configureStatus() {
// Required because of crazy APN settings redirecting localhost (found in GB)
val properties = System.getProperties()
properties.setProperty("http.nonProxyHosts", "localhost|127.0.0.1")
properties.setProperty("https.nonProxyHosts", "localhost|127.0.0.1")
}
private fun createNotificationSettingsIntent(): Intent {
val intent = Intent()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
intent.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
intent.putExtra(Settings.EXTRA_APP_PACKAGE, packageName)
} else {
intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
intent.addCategory(Intent.CATEGORY_DEFAULT)
intent.data = Uri.parse("package:$packageName")
}
return intent
}
private fun tryToEmit(eventName: String, event: WritableMap) {
try {
(getApplication() as MainApplication).reactNativeHost
.getReactInstanceManager()
.getCurrentReactContext()
?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
?.emit("url", event)
} catch (e: Exception) { // we expect NPE on first start, which is OK because we have a fallback
}
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
if (intent.dataString != null && intent.data!!.scheme!!.startsWith("app-settings")) {
startActivity(createNotificationSettingsIntent())
}
}
override fun onCreate(savedInstanceState: Bundle?) {
val splashScreen = installSplashScreen();
setTheme(R.style.DarkTheme)
// Make sure we get an Alert for every uncaught exceptions
registerUncaughtExceptionHandler(this)
// Report memory details for this application
val activityManager = getActivityManager()
Log.v("RNBootstrap", "Available system memory " + getAvailableMemory(activityManager).availMem + ", maximum usable application memory " + activityManager.largeMemoryClass + "M")
setSecureFlag()
// NOTE: Try to not restore the state https://github.com/software-mansion/react-native-screens/issues/17
super.onCreate(null)
if (!shouldShowRootedNotification()) {
configureStatus()
} else {
val dialog = AlertDialog.Builder(this)
.setMessage(resources.getString(R.string.root_warning))
.setPositiveButton(resources.getString(R.string.root_okay)) { dialog, which ->
rejectRootedNotification()
dialog.dismiss()
configureStatus()
}
.setNegativeButton(resources.getString(R.string.root_cancel)) { dialog, which ->
dialog.dismiss()
finishAffinity()
}
.setOnCancelListener {
it.dismiss()
finishAffinity()
}
.create()
dialog.show()
}
val r = Runnable {
System.loadLibrary("status-logs")
// when app is started but the Activity has been destroyed, the deep linking url event is
// not emitted when coming back to foreground. This is a workaround. If the problem is
// resolved in react-native this code should be removed
if (intent.data != null) {
val event = Arguments.createMap()
event.putString("url", intent.dataString)
// on first start emit will (silently) fail, but the regular deep linking handler will work
tryToEmit("url", event)
}
}
splashScreen.setKeepOnScreenCondition { keepSplash }
val handler = Handler()
handler.postDelayed({ keepSplash = false }, SPLASH_DELAY.toLong())
StatusThreadPoolExecutor.getInstance().execute(r)
}
override fun onDestroy() {
super.onDestroy()
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
val intent = Intent("onConfigurationChanged")
intent.putExtra("newConfig", newConfig)
sendBroadcast(intent)
}
private val REJECTED_ROOTED_NOTIFICATION = "rejectedRootedNotification"
private val FREQUENCY_OF_REMINDER_IN_PERCENT = 5
private fun shouldShowRootedNotification(): Boolean {
if (RootUtil.isDeviceRooted() && BuildConfig.ENABLE_ROOT_ALERT == "1") {
return if (userRejectedRootedNotification()) {
(Math.random() * 100) < FREQUENCY_OF_REMINDER_IN_PERCENT
} else true
} else {
return false
}
}
private fun userRejectedRootedNotification(): Boolean {
val preferences = getPreferences(0)
return preferences.getBoolean(REJECTED_ROOTED_NOTIFICATION, false)
}
private fun rejectRootedNotification() {
val preferences = getPreferences(0)
val editor = preferences.edit()
editor.putBoolean(REJECTED_ROOTED_NOTIFICATION, true)
editor.commit()
}
private fun setSecureFlag() {
val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this)
val setSecure = sharedPrefs.getBoolean("BLANK_PREVIEW", false)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && setSecure) {
window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
} else {
window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
}
}
@TargetApi(Build.VERSION_CODES.M)
override fun requestPermissions(permissions: Array<String>, requestCode: Int, listener: PermissionListener) {
mPermissionListener = listener
super.requestPermissions(permissions, requestCode)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
if (mPermissionListener != null && mPermissionListener!!.onRequestPermissionsResult(requestCode, permissions, grantResults)) {
mPermissionListener = null
}
}
}
@@ -1,117 +0,0 @@
package im.status.ethereum;
import androidx.multidex.MultiDexApplication;
import android.content.Context;
import android.webkit.WebView;
import im.status.ethereum.newarchitecture.MainApplicationReactNativeHost;
import java.lang.reflect.InvocationTargetException;
import com.facebook.react.PackageList;
import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage;
import com.facebook.react.ReactApplication;
import cl.json.RNSharePackage;
import com.facebook.react.ReactNativeHost;
import com.reactnativenavigation.NavigationApplication;
import com.reactnativenavigation.react.NavigationReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.modules.network.OkHttpClientProvider;
import com.reactnativecommunity.blurview.BlurViewPackage;
import java.util.List;
import im.status.ethereum.keycard.RNStatusKeycardPackage;
import im.status.ethereum.module.StatusPackage;
import im.status.ethereum.pushnotifications.PushNotificationPackage;
import im.status.ethereum.StatusOkHttpClientFactory;
import com.facebook.react.bridge.JSIModulePackage;
import com.swmansion.reanimated.ReanimatedJSIModulePackage;
public class MainApplication extends NavigationApplication {
private final ReactNativeHost mReactNativeHost = new NavigationReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
StatusPackage statusPackage = new StatusPackage(RootUtil.isDeviceRooted());
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(statusPackage);
packages.add(new ReactNativeDialogsPackage());
packages.add(new RNStatusKeycardPackage());
packages.add(new PushNotificationPackage());
packages.add(new BlurViewPackage());
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@Override
protected JSIModulePackage getJSIModulePackage() {
return new ReanimatedJSIModulePackage();
}
};
private final ReactNativeHost mNewArchitectureNativeHost = new MainApplicationReactNativeHost(this);
@Override
public ReactNativeHost getReactNativeHost() {
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
return mNewArchitectureNativeHost;
} else {
return mReactNativeHost;
}
}
@Override
public void onCreate() {
super.onCreate();
// If you opted-in for the New Architecture, we enable the TurboModule system
ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
OkHttpClientProvider.setOkHttpClientFactory(new StatusOkHttpClientFactory());
WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1");
//initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
}
/**
* Loads Flipper in React Native templates. Call this in the onCreate method with something like
* initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
*
* @param context
* @param reactInstanceManager
*/
private static void initializeFlipper(
Context context, ReactInstanceManager reactInstanceManager) {
if (BuildConfig.DEBUG) {
try {
/*
We use reflection here to pick up the class that initializes Flipper,
since Flipper library is not available in release mode
*/
Class<?> aClass = Class.forName("im.status.ethereum.ReactNativeFlipper");
aClass
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
.invoke(null, context, reactInstanceManager);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}
@@ -0,0 +1,59 @@
package im.status.ethereum
import android.webkit.WebView
import androidx.multidex.MultiDexApplication
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.bridge.JSIModulePackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint
import com.facebook.react.modules.network.OkHttpClientProvider
import com.reactnativenavigation.NavigationApplication
import com.reactnativenavigation.react.NavigationReactNativeHost
import cl.json.RNSharePackage
import com.reactnativecommunity.blurview.BlurViewPackage
import im.status.ethereum.keycard.RNStatusKeycardPackage
import im.status.ethereum.module.StatusPackage
import im.status.ethereum.pushnotifications.PushNotificationPackage
import im.status.ethereum.StatusOkHttpClientFactory
class MainApplication : NavigationApplication() {
private val mReactNativeHost = object : NavigationReactNativeHost(this) {
override fun getUseDeveloperSupport(): Boolean {
return BuildConfig.DEBUG
}
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
// Packages that cannot be autolinked yet can be added manually here
add(StatusPackage(RootUtil.isDeviceRooted()))
add(RNStatusKeycardPackage())
add(PushNotificationPackage())
add(BlurViewPackage())
}
override fun getJSMainModuleName(): String = "index"
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}
override val reactNativeHost: ReactNativeHost
get() = mReactNativeHost
override fun onCreate() {
super.onCreate()
OkHttpClientProvider.setOkHttpClientFactory(StatusOkHttpClientFactory())
WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1")
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
DefaultNewArchitectureEntryPoint.load()
}
}
}
@@ -0,0 +1,88 @@
package im.status.ethereum
import android.util.Log
import com.facebook.react.modules.network.OkHttpClientFactory
import com.facebook.react.modules.network.OkHttpClientProvider
import okhttp3.OkHttpClient
import okhttp3.tls.HandshakeCertificates
import java.io.ByteArrayInputStream
import java.lang.RuntimeException
import java.lang.reflect.Field
import java.lang.reflect.Method
import java.security.cert.CertificateFactory
import java.security.cert.X509Certificate
import im.status.ethereum.module.StatusPackage
class StatusOkHttpClientFactory : OkHttpClientFactory {
companion object {
private const val TAG = "StatusOkHttpClientFactory"
private const val SLEEP_DURATION = 500L // milliseconds
}
override fun createNewNetworkModuleClient(): OkHttpClient? {
val certPem = getCertificatePem().takeIf { it.isNotEmpty() }
?: return logAndReturnNull("Certificate is empty, cannot create OkHttpClient without a valid certificate")
val cert = try {
induceSleep()
// Convert PEM certificate string to X509Certificate object
CertificateFactory.getInstance("X.509")
.generateCertificate(ByteArrayInputStream(certPem.toByteArray())) as? X509Certificate
?: return logAndReturnNull("Certificate could not be parsed as non-null")
} catch (e: Exception) {
return logAndReturnNull("Could not parse certificate", e)
}
val clientCertificates = try {
induceSleep()
// Create HandshakeCertificates object with our certificate
HandshakeCertificates.Builder()
.addPlatformTrustedCertificates()
.addTrustedCertificate(cert)
.build()
} catch (e: Exception) {
return logAndReturnNull("Could not build HandshakeCertificates", e)
}
return try {
OkHttpClientProvider.createClientBuilder()
.sslSocketFactory(clientCertificates.sslSocketFactory(), clientCertificates.trustManager)
.build()
} catch (e: Exception) {
logAndReturnNull("Could not create OkHttpClient", e)
}
}
private fun getCertificatePem(): String {
return try {
// Create OkHttpClient with custom SSL socket factory and trust manager
StatusPackage.getImageTLSCert().takeIf { !it.isNullOrBlank() }
?: logAndReturnEmpty("Certificate PEM string is null or empty")
} catch (e: Exception) {
logAndReturnEmpty("Could not getImageTLSCert", e)
}
}
private fun induceSleep() {
try {
// induce half second sleep because sometimes a cert is not immediately available
// TODO : remove sleep if App no longer crashes on Android 10 devices with
// java.lang.RuntimeException: Could not invoke WebSocketModule.connect
Thread.sleep(SLEEP_DURATION)
} catch (e: InterruptedException) {
Log.e(TAG, "Sleep interrupted", e)
}
}
private fun logAndReturnNull(message: String, e: Exception? = null): Nothing? {
Log.e(TAG, message, e)
return null
}
private fun logAndReturnEmpty(message: String, e: Exception? = null): String {
Log.e(TAG, message, e)
return ""
}
}
@@ -1,77 +0,0 @@
package im.status.ethereum;
import android.util.Log;
import com.facebook.react.modules.network.OkHttpClientFactory;
import com.facebook.react.modules.network.OkHttpClientProvider;
import okhttp3.OkHttpClient;
import okhttp3.Interceptor;
import okhttp3.tls.HandshakeCertificates;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.lang.RuntimeException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import im.status.ethereum.module.StatusPackage;
class StatusOkHttpClientFactory implements OkHttpClientFactory {
private static final String TAG = "StatusOkHttpClientFactory";
public OkHttpClient createNewNetworkModuleClient() {
X509Certificate cert = null;
HandshakeCertificates clientCertificates;
String certPem = "";
// Get TLS PEM certificate from status-go
try {
// induce half second sleep because sometimes a cert is not immediately available
// TODO : remove sleep if App no longer crashes on Android 10 devices with
// java.lang.RuntimeException: Could not invoke WebSocketModule.connect
Thread.sleep(500);
certPem = StatusPackage.getImageTLSCert();
} catch(Exception e) {
Log.e(TAG, "Could not getImageTLSCert",e);
}
// Convert PEM certificate string to X509Certificate object
try {
// induce half second sleep because sometimes a cert is not immediately available
// TODO : remove sleep if App no longer crashes on Android 10 devices
// java.lang.RuntimeException: Could not invoke WebSocketModule.connect
Thread.sleep(500);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
cert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certPem.getBytes()));
} catch(Exception e) {
Log.e(TAG, "Could not parse certificate",e);
}
// Create HandshakeCertificates object with our certificate
try {
// induce half second sleep because sometimes a cert is not immediately available
// TODO : remove sleep if App no longer crashes on Android 10 devices
// java.lang.RuntimeException: Could not invoke WebSocketModule.connect
Thread.sleep(500);
clientCertificates = new HandshakeCertificates.Builder()
.addPlatformTrustedCertificates()
.addTrustedCertificate(cert)
.build();
} catch(Exception e) {
Log.e(TAG, "Could not build HandshakeCertificates", e);
return null;
}
// Create OkHttpClient with custom SSL socket factory and trust manager
try {
return OkHttpClientProvider.createClientBuilder()
.sslSocketFactory(clientCertificates.sslSocketFactory(), clientCertificates.trustManager())
.build();
} catch(Exception e) {
Log.e(TAG, "Could not create OkHttpClient", e);
return null;
}
}
}
@@ -1,103 +0,0 @@
package im.status.ethereum.newarchitecture;
import android.app.Application;
import androidx.annotation.NonNull;
import com.facebook.react.PackageList;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
import com.facebook.react.bridge.JSIModulePackage;
import com.facebook.react.bridge.JSIModuleProvider;
import com.facebook.react.bridge.JSIModuleSpec;
import com.facebook.react.bridge.JSIModuleType;
import com.facebook.react.bridge.JavaScriptContextHolder;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.UIManager;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.react.fabric.CoreComponentsRegistry;
import com.facebook.react.fabric.FabricJSIModuleProvider;
import com.facebook.react.fabric.ReactNativeConfig;
import com.facebook.react.uimanager.ViewManagerRegistry;
import im.status.ethereum.BuildConfig;
import im.status.ethereum.newarchitecture.components.MainComponentsRegistry;
import im.status.ethereum.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
import java.util.ArrayList;
import java.util.List;
/**
* A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
* TurboModule delegates and the Fabric Renderer.
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
public class MainApplicationReactNativeHost extends ReactNativeHost {
public MainApplicationReactNativeHost(Application application) {
super(application);
}
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
// TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
// packages.add(new TurboReactPackage() { ... });
// If you have custom Fabric Components, their ViewManagers should also be loaded here
// inside a ReactPackage.
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@NonNull
@Override
protected ReactPackageTurboModuleManagerDelegate.Builder
getReactPackageTurboModuleManagerDelegateBuilder() {
// Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
// for the new architecture and to use TurboModules correctly.
return new MainApplicationTurboModuleManagerDelegate.Builder();
}
@Override
protected JSIModulePackage getJSIModulePackage() {
return new JSIModulePackage() {
@Override
public List<JSIModuleSpec> getJSIModules(
final ReactApplicationContext reactApplicationContext,
final JavaScriptContextHolder jsContext) {
final List<JSIModuleSpec> specs = new ArrayList<>();
// Here we provide a new JSIModuleSpec that will be responsible of providing the
// custom Fabric Components.
specs.add(
new JSIModuleSpec() {
@Override
public JSIModuleType getJSIModuleType() {
return JSIModuleType.UIManager;
}
@Override
public JSIModuleProvider<UIManager> getJSIModuleProvider() {
final ComponentFactory componentFactory = new ComponentFactory();
CoreComponentsRegistry.register(componentFactory);
// Here we register a Components Registry.
// The one that is generated with the template contains no components
// and just provides you the one from React Native core.
MainComponentsRegistry.register(componentFactory);
final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
ViewManagerRegistry viewManagerRegistry =
new ViewManagerRegistry(
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
return new FabricJSIModuleProvider(
reactApplicationContext,
componentFactory,
ReactNativeConfig.DEFAULT_CONFIG,
viewManagerRegistry);
}
});
return specs;
}
};
}
}
@@ -1,30 +0,0 @@
package im.status.ethereum.newarchitecture.components;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.soloader.SoLoader;
/**
* Class responsible to load the custom Fabric Components. This class has native methods and needs a
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
* folder for you).
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
@DoNotStrip
public class MainComponentsRegistry {
static {
SoLoader.loadLibrary("fabricjni");
}
@DoNotStrip private final HybridData mHybridData;
@DoNotStrip
private native HybridData initHybrid(ComponentFactory componentFactory);
@DoNotStrip
private MainComponentsRegistry(ComponentFactory componentFactory) {
mHybridData = initHybrid(componentFactory);
}
@DoNotStrip
public static MainComponentsRegistry register(ComponentFactory componentFactory) {
return new MainComponentsRegistry(componentFactory);
}
}
@@ -1,40 +0,0 @@
package im.status.ethereum.newarchitecture.modules;
import com.facebook.jni.HybridData;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.soloader.SoLoader;
import java.util.List;
/**
* Class responsible to load the TurboModules. This class has native methods and needs a
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
* folder for you).
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
public class MainApplicationTurboModuleManagerDelegate
extends ReactPackageTurboModuleManagerDelegate {
private static volatile boolean sIsSoLibraryLoaded;
protected MainApplicationTurboModuleManagerDelegate(
ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
super(reactApplicationContext, packages);
}
protected native HybridData initHybrid();
native boolean canCreateTurboModule(String moduleName);
public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
protected MainApplicationTurboModuleManagerDelegate build(
ReactApplicationContext context, List<ReactPackage> packages) {
return new MainApplicationTurboModuleManagerDelegate(context, packages);
}
}
@Override
protected synchronized void maybeLoadOtherSoLibraries() {
if (!sIsSoLibraryLoaded) {
// If you change the name of your application .so file in the Android.mk file,
// make sure you update the name here as well.
SoLoader.loadLibrary("status-im_appmodules");
sIsSoLibraryLoaded = true;
}
}
}
-39
View File
@@ -1,39 +0,0 @@
THIS_DIR := $(call my-dir)
include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
# If you wish to add a custom TurboModule or Fabric component in your app you
# will have to include the following autogenerated makefile.
# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
include $(CLEAR_VARS)
LOCAL_PATH := $(THIS_DIR)
# You can customize the name of your application .so file here.
LOCAL_MODULE := rndiffapp_appmodules
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
# If you wish to add a custom TurboModule or Fabric component in your app you
# will have to uncomment those lines to include the generated source
# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
#
# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
# Here you should add any native library you wish to depend on.
LOCAL_SHARED_LIBRARIES := \
libfabricjni \
libfbjni \
libfolly_runtime \
libglog \
libjsi \
libreact_codegen_rncore \
libreact_debug \
libreact_nativemodule_core \
libreact_render_componentregistry \
libreact_render_core \
libreact_render_debug \
libreact_render_graphics \
librrc_view \
libruntimeexecutor \
libturbomodulejsijni \
libyoga
LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall
include $(BUILD_SHARED_LIBRARY)
@@ -1,20 +0,0 @@
#include "MainApplicationModuleProvider.h"
#include <rncore.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string moduleName,
const JavaTurboModule::InitParams &params) {
// Here you can provide your own module provider for TurboModules coming from
// either your application or from external libraries. The approach to follow
// is similar to the following (for a library called `samplelibrary`:
//
// auto module = samplelibrary_ModuleProvider(moduleName, params);
// if (module != nullptr) {
// return module;
// }
// return rncore_ModuleProvider(moduleName, params);
return rncore_ModuleProvider(moduleName, params);
}
} // namespace react
} // namespace facebook
@@ -1,11 +0,0 @@
#pragma once
#include <memory>
#include <string>
#include <ReactCommon/JavaTurboModule.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string moduleName,
const JavaTurboModule::InitParams &params);
} // namespace react
} // namespace facebook
@@ -1,38 +0,0 @@
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainApplicationModuleProvider.h"
namespace facebook {
namespace react {
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
MainApplicationTurboModuleManagerDelegate::initHybrid(
jni::alias_ref<jhybridobject>) {
return makeCxxInstance();
}
void MainApplicationTurboModuleManagerDelegate::registerNatives() {
registerHybrid({
makeNativeMethod(
"initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
makeNativeMethod(
"canCreateTurboModule",
MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
});
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string name,
const std::shared_ptr<CallInvoker> jsInvoker) {
// Not implemented yet: provide pure-C++ NativeModules here.
return nullptr;
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string name,
const JavaTurboModule::InitParams &params) {
return MainApplicationModuleProvider(name, params);
}
bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
std::string name) {
return getTurboModule(name, nullptr) != nullptr ||
getTurboModule(name, {.moduleName = name}) != nullptr;
}
} // namespace react
} // namespace facebook
@@ -1,30 +0,0 @@
#include <memory>
#include <string>
#include <ReactCommon/TurboModuleManagerDelegate.h>
#include <fbjni/fbjni.h>
namespace facebook {
namespace react {
class MainApplicationTurboModuleManagerDelegate
: public jni::HybridClass<
MainApplicationTurboModuleManagerDelegate,
TurboModuleManagerDelegate> {
public:
// Adapt it to the package you used for your Java class.
static constexpr auto kJavaDescriptor =
"Lcom/rndiffapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
static void registerNatives();
std::shared_ptr<TurboModule> getTurboModule(
const std::string name,
const std::shared_ptr<CallInvoker> jsInvoker) override;
std::shared_ptr<TurboModule> getTurboModule(
const std::string name,
const JavaTurboModule::InitParams &params) override;
/**
* Test-only method. Allows user to verify whether a TurboModule can be
* created by instances of this class.
*/
bool canCreateTurboModule(std::string name);
};
} // namespace react
} // namespace facebook
@@ -1,48 +0,0 @@
#include "MainComponentsRegistry.h"
#include <CoreComponentsRegistry.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/components/rncore/ComponentDescriptors.h>
namespace facebook {
namespace react {
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
std::shared_ptr<ComponentDescriptorProviderRegistry const>
MainComponentsRegistry::sharedProviderRegistry() {
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
// Custom Fabric Components go here. You can register custom
// components coming from your App or from 3rd party libraries here.
//
// providerRegistry->add(concreteComponentDescriptorProvider<
// AocViewerComponentDescriptor>());
return providerRegistry;
}
jni::local_ref<MainComponentsRegistry::jhybriddata>
MainComponentsRegistry::initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate) {
auto instance = makeCxxInstance(delegate);
auto buildRegistryFunction =
[](EventDispatcher::Weak const &eventDispatcher,
ContextContainer::Shared const &contextContainer)
-> ComponentDescriptorRegistry::Shared {
auto registry = MainComponentsRegistry::sharedProviderRegistry()
->createComponentDescriptorRegistry(
{eventDispatcher, contextContainer});
auto mutableRegistry =
std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
mutableRegistry->setFallbackComponentDescriptor(
std::make_shared<UnimplementedNativeViewComponentDescriptor>(
ComponentDescriptorParameters{
eventDispatcher, contextContainer, nullptr}));
return registry;
};
delegate->buildRegistryFunction = buildRegistryFunction;
return instance;
}
void MainComponentsRegistry::registerNatives() {
registerHybrid({
makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
});
}
} // namespace react
} // namespace facebook
@@ -1,24 +0,0 @@
#pragma once
#include <ComponentFactory.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
namespace facebook {
namespace react {
class MainComponentsRegistry
: public facebook::jni::HybridClass<MainComponentsRegistry> {
public:
// Adapt it to the package you used for your Java class.
constexpr static auto kJavaDescriptor =
"Lcom/rndiffapp/newarchitecture/components/MainComponentsRegistry;";
static void registerNatives();
MainComponentsRegistry(ComponentFactory *delegate);
private:
static std::shared_ptr<ComponentDescriptorProviderRegistry const>
sharedProviderRegistry();
static jni::local_ref<jhybriddata> initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate);
};
} // namespace react
} // namespace facebook
-10
View File
@@ -1,10 +0,0 @@
#include <fbjni/fbjni.h>
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainComponentsRegistry.h"
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
return facebook::jni::initialize(vm, [] {
facebook::react::MainApplicationTurboModuleManagerDelegate::
registerNatives();
facebook::react::MainComponentsRegistry::registerNatives();
});
}
+28 -36
View File
@@ -1,28 +1,23 @@
import org.apache.tools.ant.taskdefs.condition.Os
// Top-level build file where you can add configuration options common to all sub-projects/modules.
/**
* Project-wide gradle configuration properties for use by all modules
*/
ext {
RNNKotlinVersion = "1.6.20"
RNGH_kotlinVersion = "1.6.20"
// kotlin_version is needed for react-native-camera-kit library
kotlin_version = project.kotlinPluginVersion
RNNKotlinVersion = project.kotlinPluginVersion
RNGH_kotlinVersion = project.kotlinPluginVersion
buildToolsVersion = project.buildToolsVersion
minSdkVersion = Integer.valueOf(project.minSdkVersion)
compileSdkVersion = Integer.valueOf(project.compileSdkVersion)
targetSdkVersion = Integer.valueOf(project.targetSdkVersion)
supportLibVersion = project.supportLibVersion
gradlePluginVersion = project.gradlePluginVersion
kotlinVersion = project.kotlinPluginVersion
kotlinPluginVersion = project.kotlinPluginVersion
if (System.properties['os.arch'] == "aarch64") {
// For M1 Users we need to use the NDK 24 which added support for aarch64
ndkVersion = "24.0.8215888"
} else {
// Otherwise we default to the side-by-side NDK version from AGP.
ndkVersion = "21.4.7075529"
}
kotlinToolsVersion = project.kotlinPluginVersion
ndkVersion = "25.2.9519653"
}
buildscript {
@@ -33,11 +28,9 @@ buildscript {
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${project.ext.kotlinPluginVersion}"
classpath "com.android.tools.build:gradle:${project.ext.gradlePluginVersion}"
classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("de.undercouch:gradle-download-task:5.0.1")
// WARNING: Do not place your application dependencies here!
// They belong in the individual module build.gradle files.
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
}
}
@@ -51,45 +44,44 @@ subprojects {
defaultConfig {
targetSdkVersion rootProject.ext.targetSdkVersion
}
// Speed up Tests Stage
tasks.withType(Test).configureEach {
// https://docs.gradle.org/current/userguide/performance.html#execute_tests_in_parallel
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
// https://docs.gradle.org/current/userguide/performance.html#fork_tests_into_multiple_processes
forkEvery = 100
// https://docs.gradle.org/current/userguide/performance.html#disable_reports
reports.html.required = false
reports.junitXml.required = false
}
// Speed up Java Compile Stage
// https://docs.gradle.org/current/userguide/performance.html#run_the_compiler_as_a_separate_process
tasks.withType(JavaCompile).configureEach {
options.fork = true
}
}
}
}
}
apply plugin: "com.facebook.react.rootproject"
allprojects {
beforeEvaluate {
if (System.env.STATUS_GO_ANDROID_LIBDIR == null || System.env.STATUS_GO_ANDROID_LIBDIR == "") {
throw new GradleException('STATUS_GO_ANDROID_LIBDIR environment variable is not valid!')
}
}
repositories {
exclusiveContent {
// We get React Native's Android binaries exclusively through npm,
// from a local Maven repo inside node_modules/react-native/.
// (The use of exclusiveContent prevents looking elsewhere like Maven Central
// and potentially getting a wrong version.)
filter {
includeGroup "com.facebook.react"
}
forRepository {
maven {
url "$rootDir/../node_modules/react-native/android"
}
}
}
mavenLocal()
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
maven { url("$rootDir/../node_modules/react-native/android") }
// Android JSC is installed from npm
maven { url("$rootDir/../node_modules/jsc-android/dist") }
// For geth, function, and status-go
flatDir { dirs "libs", System.env.STATUS_GO_ANDROID_LIBDIR }
// Everything Else
google()
jcenter() // Required for @react-native-community/blur:3.6.1, can be removed after updating to 3.6.1+
mavenCentral()
// maven { url "https://www.jitpack.io" }
maven { url 'https://mvnrepository.com/artifact/com.github.gundy/semver4j'}
}
}
+15 -15
View File
@@ -21,15 +21,14 @@
# $keytool -genkey -v -keystore ./status-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias status
# Version requirements used throughout the Gradle scripts
kotlinVersion=1.6.20
minSdkVersion=23
compileSdkVersion=31
targetSdkVersion=31
buildToolsVersion=31.0.0
minSdkVersion=24
compileSdkVersion=34
targetSdkVersion=34
buildToolsVersion=34.0.0
supportLibVersion=28.0.0
# This should match version from nix/mobile/android/maven-and-npm-deps/maven/default.nix
gradlePluginVersion=7.2.2
kotlinPluginVersion=1.6.20
# This should match version from nix/pkgs/aapt2/default.nix
gradlePluginVersion=7.4.2
kotlinPluginVersion=1.9.0
android.useAndroidX=true
android.enableJetifier=true
@@ -42,21 +41,22 @@ KEYSTORE_KEY_PASSWORD=password
# By default we build a mostly universal APK
ANDROID_ABI_SPLIT=false
# Some platforms are excluded though
ANDROID_ABI_INCLUDE=armeabi-v7a;arm64-v8a;x86
ANDROID_ABI_INCLUDE=armeabi-v7a;arm64-v8a;x86;x86_64
org.gradle.jvmargs=-Xmx8704M
org.gradle.jvmargs=-Xmx8704M -XX:+UseParallelGC
versionCode=9999
commitHash=unknown
# Flipper
FLIPPER_VERSION=0.54.0
# Use this property to enable support to the new architecture.
# This will allow you to use TurboModules and the Fabric render in
# your application. You should enable this flag either if you want
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=false
# Use this property to enable or disable the Hermes JS engine.
# If set to false, you will be using JSC instead.
# Disabled for debug builds to avoid 'maximum call stack exceeded' errors.
# https://github.com/status-im/status-mobile/issues/18493
hermesEnabled=false
+1 -9
View File
@@ -12,18 +12,10 @@ apply from: file("../node_modules/@react-native-community/cli-platform-android/n
include ':react-native-nfc-manager'
project(':react-native-nfc-manager').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-nfc-manager/android')
include ':app'
include ':react-native-dialogs'
project(':react-native-dialogs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-dialogs/android')
include ':react-native-status'
project(':react-native-status').projectDir = new File(rootProject.projectDir, '../modules/react-native-status/android')
include ':react-native-status-keycard'
project(':react-native-status-keycard').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-status-keycard/android')
include ':react-native-blur'
project(':react-native-blur').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/blur/android')
includeBuild('../node_modules/react-native-gradle-plugin')
if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
include(":ReactAndroid")
project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
include(":ReactAndroid:hermes-engine")
project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine')
}
includeBuild('../node_modules/@react-native/gradle-plugin')
+1 -1
View File
@@ -1,4 +1,4 @@
{
"name": "StatusIm",
"displayName": "StatusIm"
}
}
+3 -23
View File
@@ -1,24 +1,4 @@
module.exports = {
"presets": [
"module:metro-react-native-babel-preset"
],
"plugins": [
"react-native-reanimated/plugin"
],
"env": {
"test": {
"presets": [
'@babel/preset-react',
[
'@babel/preset-env',
{
targets: {
node: '14',
},
},
],
],
}
}
}
presets: ['module:@react-native/babel-preset'],
plugins: ['react-native-reanimated/plugin', '@babel/plugin-transform-named-capturing-groups-regex'],
};
+9 -8
View File
@@ -1,10 +1,11 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent { label 'linux && x86_64 && nix-2.11' }
agent { label 'linux && x86_64 && nix-2.19' }
options {
timestamps()
@@ -14,7 +15,7 @@ pipeline {
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '20',
artifactNumToKeepStr: '10',
artifactNumToKeepStr: '1',
))
/* Allows combined build to copy */
copyArtifactPermission('/status-mobile/*')
@@ -33,10 +34,10 @@ pipeline {
}
environment {
LANG = "en_US.UTF-8"
LC_ALL = "en_US.UTF-8"
LANGUAGE = "en_US.UTF-8"
TARGET = "android${utils.isE2EBuild() ? "-e2e" : ""}"
LANG = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
PLATFORM = "android${utils.isE2EBuild() ? "-e2e" : ""}"
BUILD_ENV = 'prod'
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
FASTLANE_DISABLE_COLORS = 1
@@ -70,7 +71,7 @@ pipeline {
}
stage('Upload') {
steps { script {
def urls = apks.collect { s3.uploadArtifact(it) }
def urls = apks.collect { s5cmd.upload(it) }
if (urls.size() > 1) { /* Return only the universal APK. */
env.PKG_URL = urls.find { it.contains('universal') }
} else { /* If no universal is available pick first. */
+30 -30
View File
@@ -1,4 +1,7 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
import groovy.json.JsonBuilder
pipeline {
agent { label 'linux' }
@@ -8,13 +11,11 @@ pipeline {
disableConcurrentBuilds()
/* Prevent Jenkins jobs from running forever */
timeout(time: 40, unit: 'MINUTES')
/* Allow copying of artifacts from this job. */
copyArtifactPermission('/status-mobile/e2e/*')
/* Limit builds retained */
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '10',
artifactNumToKeepStr: '1',
))
}
@@ -36,8 +37,6 @@ pipeline {
stage('Prep') {
steps { script {
println("Current JOB: ${env.JOB_NAME}")
/* just for a shorter access */
btype = utils.getBuildType()
} }
}
stage('Build') {
@@ -48,9 +47,6 @@ pipeline {
stage('Android') { steps { script {
apk = jenkins.Build('status-mobile/platforms/android')
} } }
stage('Android e2e') { steps { script {
apke2e = jenkins.Build('status-mobile/platforms/android-e2e')
} } }
stage('Tests') { steps { script {
jenkins.Build('status-mobile/platforms/tests')
} } }
@@ -60,9 +56,7 @@ pipeline {
steps { script {
sh('rm -f pkg/*')
jenkins.copyArts(ios)
//jenkins.copyArts(iose2e)
jenkins.copyArts(apk)
jenkins.copyArts(apke2e)
sha = "pkg/${utils.pkgFilename(ext: 'sha256')}"
dir('pkg') {
/* generate sha256 checksums for upload */
@@ -76,11 +70,11 @@ pipeline {
/* object for easier URLs handling */
urls = [
/* mobile */
Apk: utils.pkgUrl(apk), Apke2e: utils.pkgUrl(apke2e),
iOS: utils.pkgUrl(ios), /*iOSe2e: utils.pkgUrl(iose2e),*/
Apk: utils.pkgUrl(apk),
iOS: utils.pkgUrl(ios),
Diawi: utils.getEnv(ios, 'DIAWI_URL'),
/* upload the sha256 checksums file too */
SHA: s3.uploadArtifact(sha),
SHA: s5cmd.upload(sha),
]
/* add URLs to the build description */
jenkins.setBuildDesc(urls)
@@ -89,11 +83,9 @@ pipeline {
stage('Publish') {
when { expression { params.PUBLISH } }
steps { script {
switch (btype) {
case 'nightly':
/* Create JSON file with newest build URLs */
s3.updateBucketJSON(urls, 'latest.json');
build(job: 'website/status.im', wait: false);
switch (utils.getBuildType()) {
case 'nightly': /* Create JSON file with newest build URLs */
updateBucketJSON(urls, 'latest.json');
break;
case 'release':
github.publishReleaseFiles(repo: 'status-mobile');
@@ -101,17 +93,6 @@ pipeline {
}
} }
}
stage('Run e2e') {
when { expression { btype == 'nightly' && params.PUBLISH } }
steps { script {
e2eApk = utils.getEnv(apke2e, 'SAUCE_URL')
build(
job: 'status-mobile/e2e/status-app-nightly',
parameters: [string(name: 'APK_URL', value: e2eApk)],
wait: false
)
} }
}
}
}
@@ -135,3 +116,22 @@ def Boolean getPublishDefault(Boolean previousValue) {
if (previousValue != null) { return previousValue }
return false
}
/* Helper for updating JSON with newest builds. */
def updateBucketJSON(urls, fileName) {
/* latest.json has slightly different key names */
def content = [
DIAWI: urls.Diawi,
APK: urls.Apk, IOS: urls.iOS,
APP: urls.App, MAC: urls.Mac,
WIN: urls.Win, SHA: urls.SHA
]
def filePath = "${pwd()}/pkg/${fileName}"
/* it might not exist */
sh "mkdir -p ${pwd()}/pkg"
def contentJson = new JsonBuilder(content).toPrettyString()
println "${filePath}:\n${contentJson}"
writeFile(file: filePath, text: contentJson)
return s5cmd.upload(filePath)
}
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
agent { label 'linux' }
triggers {
// Nightly at 0am
cron 'H 0 * * *'
}
parameters {
string(
name: 'BRANCH',
description: 'Name of the branch to checkout and build.',
defaultValue: 'develop',
)
}
options {
timestamps()
disableConcurrentBuilds()
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '1',
))
}
stages {
stage('Build') {
steps {
script {
apk_build = jenkins.Build('status-mobile/platforms/android-e2e')
apk_build_number = apk_build.getNumber().toString()
}
}
}
stage('Run e2e') {
steps {
build(
job: 'status-mobile/e2e/status-app-nightly',
parameters: [
string(name: 'APK_BUILD_NUMBER', value: apk_build_number),
string(name: 'BRANCH', value: env.BRANCH),
]
)
}
}
}
}
+9 -11
View File
@@ -1,10 +1,11 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent { label 'macos && arm64 && nix-2.11 && xcode-14.3' }
agent { label 'macos && arm64 && nix-2.19 && xcode-15.1' }
parameters {
string(
@@ -22,7 +23,7 @@ pipeline {
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '20',
artifactNumToKeepStr: '10',
artifactNumToKeepStr: '1',
))
/* Allows combined build to copy */
copyArtifactPermission('/status-mobile/*')
@@ -33,13 +34,11 @@ pipeline {
}
environment {
LANG = "en_US.UTF-8"
LC_ALL = "en_US.UTF-8"
LANGUAGE = "en_US.UTF-8"
TARGET = 'ios'
LANG = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
PLATFORM = 'ios'
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
/* See nix/README.md */
NIX_IGNORE_SYMLINK_STORE = 1
FASTLANE_DISABLE_COLORS = 1
BUNDLE_PATH = "${HOME}/.bundle"
}
@@ -64,7 +63,7 @@ pipeline {
}
post {
failure {
archiveArtifacts 'ios/logs/*'
archiveArtifacts 'logs/*'
}
}
}
@@ -76,7 +75,6 @@ pipeline {
}
}
stage('Upload') {
when { expression { !utils.isReleaseBuild() } }
steps { script {
env.DIAWI_URL = ios.uploadToDiawi()
env.PKG_URL = env.DIAWI_URL
+39 -29
View File
@@ -1,20 +1,21 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
/* Options section can't access functions in objects. */
def isPRBuild = utils.isPRBuild()
pipeline {
agent { label 'linux && x86_64 && nix-2.11' }
agent { label 'linux && x86_64 && nix-2.19' }
options {
timestamps()
/* Prevent Jenkins jobs from running forever */
timeout(time: 15, unit: 'MINUTES')
timeout(time: 20, unit: 'MINUTES')
/* Limit builds retained */
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '20',
artifactNumToKeepStr: '10',
artifactNumToKeepStr: '1',
))
/* Abort old PR builds. */
disableConcurrentBuilds(
@@ -28,51 +29,53 @@ pipeline {
description: 'Specify build type. Values: pr / e2e / nightly / release',
defaultValue: 'pr',
)
booleanParam(
name: 'RUN_CONTRACT_TESTS',
description: 'Whether to run optional and slow contract tests.',
defaultValue: false,
)
}
environment {
LANG = "en_US.UTF-8"
LC_ALL = "en_US.UTF-8"
LANGUAGE = "en_US.UTF-8"
TARGET = 'tests'
LANG = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
PLATFORM = 'tests'
BUILD_ENV = 'prod'
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
LOG_FILE = utils.pkgFilename(ext: 'log', arch: 'tests')
CLJ_LINTER_PRINT_WARNINGS = 'true'
}
stages {
stage('Checks') {
stage('Test') {
parallel {
stage('Lint') {
steps {
sh """#!/bin/bash
set -eo pipefail
make lint 2>&1 | tee ${LOG_FILE}
"""
}
steps { make('lint') }
}
stage('Tests') {
steps {
sh """#!/bin/bash
set -eo pipefail
make test 2>&1 | tee -a ${LOG_FILE}
"""
}
stage('Unit') {
steps { make('test-unit') }
}
stage('Component') {
steps { make('test-component') }
}
}
}
stage('Component Tests') {
steps {
sh """#!/bin/bash
set -eo pipefail
make component-test 2>&1 | tee -a ${LOG_FILE}
"""
stage('Heavy Test') {
parallel {
stage('Contract') {
when { expression { params.RUN_CONTRACT_TESTS } }
steps { make('test-contract') }
}
stage('Integration') {
steps { make('test-integration') }
}
}
}
stage('Upload') {
steps {
script {
env.PKG_URL = s3.uploadArtifact(LOG_FILE)
env.PKG_URL = s5cmd.upload(LOG_FILE)
}
}
}
@@ -83,3 +86,10 @@ pipeline {
always { sh 'make purge' }
}
}
def make(target) {
sh """#!/bin/bash
set -eo pipefail
make ${target} 2>&1 | tee -a ${LOG_FILE}
"""
}
+34 -12
View File
@@ -1,4 +1,5 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
@@ -6,38 +7,59 @@ pipeline {
parameters {
string(
name: 'APK_URL',
description: 'URL of APK uploaded to SauceLabs.',
name: 'APK_BUILD_NUMBER',
description: 'platform/e2e build number for apk artifact',
)
string(
name: 'KEYWORD_EXPRESSION',
description: 'This will run tests which contain names that match the given string expression (Optional)',
defaultValue: '',
)
string(
name: 'BRANCH',
description: 'Name of the branch to checkout and build.',
defaultValue: 'develop',
)
string(
name: 'TR_CASE_IDS',
description: 'IDs of the TestRail case, separated by a comma (Optional)',
defaultValue: '',
)
}
options {
disableConcurrentBuilds()
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '1',
))
}
environment {
/* Avoid race conditions with other builds using virtualenv. */
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
}
stages {
stage('Fetch') {
when { expression { !params.APK_URL } }
steps { script {
copyArtifacts(
projectName: "status-mobile/nightly",
filter: '*-x86.apk',
/* WARNING: This copies the latest available artifact. */
selector: lastWithArtifacts(),
projectName: "status-mobile/platforms/android-e2e",
filter: 'result/*-x86_64.apk',
selector: specific(env.APK_BUILD_NUMBER),
)
apk_path = "${env.WORKSPACE}/${utils.findFile('*-x86.apk')}"
apk_path = "${env.WORKSPACE}/${utils.findFile('result/*-x86_64.apk')}"
} }
}
stage('Setup') {
steps { script {
dir('test/appium') {
sh 'pip3 install --user -r requirements.txt'
sh "python3 -m venv ${VIRTUAL_ENV}"
sh 'pip3 install -r requirements.txt'
}
} }
}
@@ -73,11 +95,11 @@ pipeline {
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
sh """
python3 -m pytest \
--numprocesses 4 \
--numprocesses 8 \
--rerun_count=2 \
--testrail_report=True \
-m testrail_id \
-m \"new_ui_critical or new_ui_medium\" \
-m \"nightly\" \
-k \"${params.KEYWORD_EXPRESSION}\" \
--apk=${params.APK_URL ?: apk_path}
"""
+17 -6
View File
@@ -1,4 +1,5 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
@@ -34,18 +35,27 @@ pipeline {
description: 'OBSOLETE ARGUMENT TO BE REMOVED',
defaultValue: 'DUMMY',
)
/* Commented to use TEST_MARKERS values from job params
string(
name: 'TEST_MARKERS',
description: 'Marker expression for matching tests to run.',
defaultValue: 'new_ui_critical',
defaultValue: 'smoke',
)
*/
}
options {
disableConcurrentBuilds()
timeout(time: 90, unit: 'MINUTES')
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '1',
))
}
environment {
/* Avoid race conditions with other builds using virtualenv. */
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
}
stages {
@@ -73,7 +83,8 @@ pipeline {
stage('Setup') {
steps { script {
dir('test/appium') {
sh 'pip3 install --user -r requirements.txt'
sh "python3 -m venv ${VIRTUAL_ENV}"
sh 'pip3 install -r requirements.txt'
}
} }
}
@@ -122,7 +133,7 @@ pipeline {
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
sh """
python3 -m pytest \
--numprocesses 4 \
--numprocesses 8 \
--rerun_count=2 \
--testrail_report=True \
-k \"${params.KEYWORD_EXPRESSION}\" \
+14 -2
View File
@@ -1,4 +1,5 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
@@ -27,8 +28,18 @@ pipeline {
options {
disableConcurrentBuilds()
buildDiscarder(logRotator(
numToKeepStr: '10',
daysToKeepStr: '30',
artifactNumToKeepStr: '1',
))
}
environment {
/* Avoid race conditions with other builds using virtualenv. */
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
}
stages {
stage('Prep') {
@@ -45,7 +56,8 @@ pipeline {
stage('Setup') {
steps { script {
dir('test/appium') {
sh 'pip3 install --user -r requirements.txt'
sh "python3 -m venv ${VIRTUAL_ENV}"
sh 'pip3 install -r requirements.txt'
}
} }
}
+6 -7
View File
@@ -1,16 +1,15 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
agent { label 'macos' }
environment {
LANG = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
TARGET = 'ios'
LANG = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
PLATFORM = 'ios'
FASTLANE_DISABLE_COLORS = 1
/* See nix/README.md */
NIX_IGNORE_SYMLINK_STORE = 1
/* avoid writing to r/o /nix */
GEM_HOME = '~/.rubygems'
}
+42 -21
View File
@@ -1,4 +1,5 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
agent { label params.AGENT_LABEL }
@@ -17,22 +18,23 @@ pipeline {
}
environment {
/* See nix/README.md */
NIX_IGNORE_SYMLINK_STORE = 1
/* we source .bash_profile to be able to use nix-store */
NIX_SSHOPTS = "-o StrictHostKeyChecking=no source .profile;"
NIX_SSHOPTS = "-oStrictHostKeyChecking=no"
NIX_CONF_DIR = "${env.WORKSPACE}/nix"
NIX_STORE_CMD = '/nix/var/nix/profiles/default/bin/nix-store'
NIX_SSH_REMOTE = "ssh://${params.NIX_CACHE_USER}@${params.NIX_CACHE_HOST}?remote-program=${env.NIX_STORE_CMD}"
}
options {
timestamps()
disableConcurrentBuilds()
/* Prevent Jenkins jobs from running forever */
timeout(time: 300, unit: 'MINUTES')
timeout(time: 120, unit: 'MINUTES')
/* Limit builds retained */
buildDiscarder(logRotator(
numToKeepStr: '20',
daysToKeepStr: '30',
artifactNumToKeepStr: '1',
))
}
@@ -41,18 +43,21 @@ pipeline {
steps { script {
nix.shell('nix-env -i openssh', sandbox: false, pure: false)
/* some build targets don't build on MacOS */
uname = sh(script: 'uname', returnStdout: true)
os = sh(script: 'uname', returnStdout: true).trim()
arch = sh(script: 'arch', returnStdout: true).trim()
} }
}
stage('Build status-go') {
steps { script {
def platforms = ['mobile.android', 'mobile.ios']
if (uname != "Darwin") {
platforms.removeAll { it == "ios" }
}
platforms.each { os ->
def platforms = ['mobile.android', 'mobile.ios', 'library']
if (os != 'Darwin') { platforms.removeAll { it == 'mobile.ios' } }
/* FIXME: "'x86_64-darwin' with features {} is required to build" */
if (arch == 'arm64') { platforms.removeAll { it == 'mobile.android' } }
platforms.each { platform ->
/* Allow for Android builds on Apple ARM. */
env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, platform)
nix.build(
attr: "targets.status-go.${os}.buildInputs",
attr: "targets.status-go.${platform}",
sandbox: false,
link: false
)
@@ -72,9 +77,11 @@ pipeline {
}
stage('Build android deps') {
steps { script {
/* Allow for Android builds on Apple ARM. */
env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, 'android')
/* Build/fetch deps required to build android release. */
nix.build(
attr: 'targets.mobile.android.release.buildInputs',
attr: 'targets.mobile.android.build.buildInputs',
sandbox: false,
pure: false,
link: false
@@ -83,12 +90,20 @@ pipeline {
}
stage('Build nix shell deps') {
steps { script {
def shells = ['android', 'ios', 'fastlane', 'keytool', 'clojure', 'gradle']
if (os != 'Darwin') { shells.removeAll { it == 'ios' } }
/* FIXME: "'x86_64-darwin' with features {} is required to build" */
if (arch == 'arm64') { shells.removeAll { it == 'android' } }
/* Build/fetch deps required to start default Nix shell. */
nix.build(
attr: 'shells.default.buildInputs',
sandbox: false,
link: false
)
shells.each { shell ->
/* Allow for Android builds on Apple ARM. */
env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, shell)
nix.build(
attr: "shells.${shell}.buildInputs",
sandbox: false,
link: false
)
}
} }
}
stage('Upload') {
@@ -97,8 +112,7 @@ pipeline {
nix.shell("""
find /nix/store/ -mindepth 1 -maxdepth 1 -type d \
-not -name '*.links' -and -not -name '*-status-mobile-*' \
| xargs nix copy \
--to ssh-ng://${params.NIX_CACHE_USER}@${params.NIX_CACHE_HOST}
| xargs nix copy --to ${NIX_SSH_REMOTE}
""",
pure: false
)
@@ -109,7 +123,14 @@ pipeline {
post {
always { script {
nix.shell('nix-store --optimize', pure: false)
nix.shell('nix/scripts/clean.sh', pure: false)
} }
}
}
def nixSysOverride(os, arch, target='android') {
return (
os == 'Darwin' &&
arch == 'arm64' &&
target =~ /.*android$/
) ? 'x86_64-darwin' : ''
}
+6 -7
View File
@@ -1,16 +1,15 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
agent { label 'linux' }
environment {
LANG = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
TARGET = 'ios'
LANG = 'en_US.UTF-8'
LANGUAGE = 'en_US.UTF-8'
LC_ALL = 'en_US.UTF-8'
PLATFORM = 'ios'
FASTLANE_DISABLE_COLORS = 1
/* See nix/README.md */
NIX_IGNORE_SYMLINK_STORE = 1
/* avoid writing to r/o /nix */
GEM_HOME = '~/.rubygems'
}
+1
View File
@@ -1,3 +1,4 @@
#!/usr/bin/env groovy
/**
* This job runs daily and executes `pod repo update` on MacOS
* This is done to avoid issues with out of date repo causing errors like:
+2 -1
View File
@@ -1,4 +1,5 @@
library 'status-jenkins-lib@v1.7.9'
#!/usr/bin/env groovy
library 'status-jenkins-lib@v1.9.1'
pipeline {
agent {
+14
View File
@@ -10,6 +10,8 @@
[Coding guidelines](new-guidelines.md)
[UI components coding guidelines](ui-guidelines.md)
[Release Checklist](release-checklist.md)
[Release Guide](release-guide.md)
@@ -24,6 +26,11 @@
[Patching](patching.md)
[Creating a pixel perfect UI](pixel-perfection.md)
[Contributing to status-go](status-go-changes.md)
[Malli schemas (recorded demo)](https://www.youtube.com/watch?v=SlRio70aYVI) ([slides](files/forging-code-with-schemas-sep-2023-slides.pdf))
## Testing
@@ -34,6 +41,13 @@
[Component tests (jest) overview](component-tests-overview.md)
## Project details
[status-go introduction (recorded meeting)](https://drive.google.com/file/d/1B7TljmTZ8fHkqJH8ChU1Cp4FGDFM03gq/view)
[re-frame usage (recorded meeting)](https://drive.google.com/file/d/1qv_E0CEGzQpu_zGXD0gCTU5EvhC2k8Jy/view)
[status app functionality demo](https://drive.google.com/file/u/0/d/1PmwsMLTLDNNIdv5_6wvMOwoj2PfT50c6/view)
## Misc
+6 -6
View File
@@ -16,14 +16,14 @@ Both of these links are showing it for React-Testing-Library (not Native) howeve
## Running the tests
To run these tests there are two methods.
`make component-test`
`make test-component`
setups and runs the test suite once.
`make component-test-watch`
`make test-component-watch`
setups and runs the test suite and watches for code changes will then retrigger the test suite.
## Writing Tests
New test files will need their namespace added to either the file "src/quo2/core_spec.cljs" or "src/status_im2/core_spec.cljs. These locations may update overtime but it is dependent on the entrypoint in shadow-cljs config discussed below.
New test files will need their namespace added to either the file "src/quo/core_spec.cljs" or "src/status_im2/core_spec.cljs. These locations may update overtime but it is dependent on the entrypoint in shadow-cljs config discussed below.
### Best practices
@@ -38,7 +38,7 @@ There is a file of utility functions defined in "src/test_helpers/component.cljs
## Configuration
Status Mobile has a bespoke tech stack, as such there is more complexities to configuring the tests.
### Shadow-CLJS
### Shadow-CLJS
the configuration for compiling our tests are defined in the "shadow-cljs.edn" file.
The three main parts of this are
`:target :npm-module`
@@ -47,9 +47,9 @@ Needed for the configuration we are using
a vector of entry points for the test files.
and the `ns-regexp` to specify what tests to find. Since we have multiple forms of tests we decided that "component-spec" is the least likely to detect the wrong file type.
It's worth knowing that our tests are compiled to JS and then run in the temporary folder `component-tests`.
It's worth knowing that our tests are compiled to JS and then run in the temporary folder `component-tests`.
### Jest
There is also further configuration for Jest in "test/jest". There is a jest config file which has some mostly standard configuration pieces, where the tests live, what environment variables are set etc. This is documented by Jest here: https://jestjs.io/docs/configuration
There is also a setup file which is used to set some global and default values. Additionally this file is used to mock some of the react native (among other) dependencies
There is also a setup file which is used to set some global and default values. Additionally this file is used to mock some of the react native (among other) dependencies.
+105
View File
@@ -20,6 +20,39 @@ A server will be started at http://localhost:4567. It might show "not connected"
More details about re-frisk are on the [project page](https://github.com/flexsurfer/re-frisk).
## Debugging with FlowStorm
[FlowStorm](http://www.flow-storm.org/) is a free and open-source time-travel
debugger for Clojure and ClojureScript. It is capable of recording almost any
code execution path in the Status' mobile app.
FlowStorm is independent of editor/IDE, but a tighter [integration with
Emacs](https://github.com/jpmonettas/cider-storm) is available.
If you are developing with Android, run `make android-ports` first. If you are
behind a firewall, allow TCP traffic on port `7722`, then:
```bash
make run-flow-storm
```
You will know FlowStorm is correctly running if you see the status bar with
green `REPL` and `RUNTIME` indicators.
With FlowStorm running, you can now add `#trace` on any top-level form, reload
the code, or evaluate the traced form in the REPL, and FlowStorm will start
recording data. Avoid `#rtrace` (with `r`) because it can cause massive spikes
in CPU which will make the app hang and you might need to forcefully kill
processes.
```clojure
#trace ; => Add this line to tell FlowStorm to instrument the function.
(defn say-hello []
(str "Hello world"))
```
There are other ways to debug, but this is a good start.
## Enabling debug logs
Calls to `log/debug` will not be printed to the console by default. It can be enabled under "Advanced settings" in the app:
@@ -45,6 +78,42 @@ To do this:
![geth.log path](images/debugging/geth-path.png)
## Inspecting database content
Encrypted database can be found using commands:
```
cd ~/Library/Developer/CoreSimulator/Devices
find ./ -name accounts.sql
```
To get unencrypted database you need to export it first:
- open the status app in simulator
- on login screen enter the correct password without logging in
- using repl execute statement to export db:
```
(re-frame.core/dispatch [:multiaccounts.login.ui/export-db-submitted])
```
- save generated `export.db` file
Now you can locate the `export.db` and open it with preferred db viewer.
**Android:**
```sh
adb root
adb pull /storage/emulated/0/Android/data/im.status.ethereum.debug/files/Download/export.db /path/to/store/export.db
```
If you're using a release build, change the path to `/storage/emulated/0/Android/data/im.status.ethereum/files/Download`
**iOS**
```
cd ~/Library/Developer/CoreSimulator/Devices
find ./ -name export.db
```
## Tips
### From @ilmotta:
@@ -62,3 +131,39 @@ Also to inspect logs in a more flexible manner, instead of the strict output fro
```
adb logcat | grep 'ReactNativeJS\|StatusModule\|GoLog'
```
### From @clauxx (visual debugging):
When building/fixing/refactoring components, it can be annoying to set-up the component for instant visual feedback (i.e. finding it in the UI when fixing/refactoring; finding a place for it when building from scratch). Very often if the location of the screen containing your component nested deeply in the app, you might have to do a lot of repeated navigation, nevermind logging in every time the app reloads (even with fast refresh disabled this happens quite often).
To alleviate this discomfort and make the development cycle more *pleasant*, you can use one of the following options (*_both of which involve the ... REPL ༼ つ ╹ ╹ ༽つ, so make sure you have that set-up with your IDE/editor_*)
#### REPL-ing to a screen
This one is straightforward, just evaluate a navigation dispatch form from anywhere:
```cljs
(comment (rf/dispatch [:navigate-to :your-favorite-buggy-screen]))
```
> TIP: you can run this from an untracked user namespace `(ns user)`, from which you can experiment or interact with the REPL. This is where I usually keep my development navigation forms.
#### REPL-ing a component
This is also straighforward, but there are some small differences. Just like above, we only have to evaluate a dispatch form, as follows:
```cljs
;; example debugging a quo component, although it could be any other component e.g. from the `status-im2` ns.
(comment (re-frame/dispatch [:dev/preview-component
[quo/slide-button
{:track-icon :face-id
:track-text "preview component example"
:customization-color :blue
:on-complete identity}]]))
```
When evaluated, a full-screen bottom sheet will appear with your component inside. You can make changes to the props or the component internals and re-evaluate the changed forms, after which the component will be re-mounted without running a reload (unless you save the file). Other times it's quicker to just hit save and the component will be reloaded as usual (except for the props you evaluated, which have to be re-evaluated when changed).
> TIP: You can have multiple versions of the component as separate comments to check for the component variations
> TIP: You can leave `comment` blocks at the end of component files (other than quo, since can be previewed in other ways) with usages of components, which other developers can use for visualisation/testing.
@@ -18,7 +18,7 @@ While neat in theory, it has some serious downsides:
As a result of that, more dynamic/state requiring things (like the live tx detail in `/send` command messages) were very hard to do,
so instead of "eating our own dogfood", we decided to side-step the API and implement such things as hard-coded logic in the app, while partly
retaining the js code for "easier" things (like parameter declaration).
Needles to say, such efforts produced code of very poor quality, riddling our app with hard-coded "magic" everywhere in the codebase, completly
Needles to say, such efforts produced code of very poor quality, riddling our app with hard-coded "magic" everywhere in the codebase, completely
defeating the point of "dogfooding" while still requiring more effort and being much more error prone (no way to unit test jail logic) because
of the need to asynchronously communicate with jail for leftover logic in command messages (the parts not hardcoded in app).
+1 -1
View File
@@ -13,7 +13,7 @@ accepted
There was a generally dissatisfaction with our PR flow process from multiple stakeholders, including devs, QA and design. These largely centered around size, speed of integration and quality of PRs.
For more details, please see pain points in the meeting notes held end of February here: https://notes.status.im/C5pj8g7gQOu9Wo8PtDZsMw?edit# as well as the preceeding Discuss thread: https://discuss.status.im/t/better-pull-requests-process/1044
For more details, please see pain points in the meeting notes held end of February here: https://notes.status.im/C5pj8g7gQOu9Wo8PtDZsMw?edit# as well as the preceding Discuss thread: https://discuss.status.im/t/better-pull-requests-process/1044
Also see conversations in Core Dev Call #12 and #13: https://github.com/status-im/pm/
+1 -1
View File
@@ -45,4 +45,4 @@ The `State` field in the Pivotal story is used to track the progress of a Pivota
| 5 points | 2 - 3 days |
| 8 points | ~1 week |
We should avoid 8 point stories by breaking them down into smaller stories as much as possible.
We should avoid 8 point stories by breaking them down into smaller stories as much as possible.
+3 -3
View File
@@ -18,7 +18,7 @@ The whitepaper also proposes that the deposit is only forfeited to the recipient
Considering:
- the absence of efficient ways to perform anonymous transactions (zk-snarks could be used in the future for that)
- the impossibility to prove that a recipient has made an actual reply and not some kind of automated reply (captcha solution was proposed, but wouldn't be pratical until we can use a solution such as swarm feeds that allow users to make free updates to their captcha without on-chain transactions)
- the impossibility to prove that a recipient has made an actual reply and not some kind of automated reply (captcha solution was proposed, but wouldn't be practical until we can use a solution such as swarm feeds that allow users to make free updates to their captcha without on-chain transactions)
- the limited time to develop the feature
We opted for a solution that:
@@ -28,8 +28,8 @@ We opted for a solution that:
## Manifests
Since TtT related informations aren't stored on chain, they need to be stored somewhere else.
For the first iteration of TtT we opted for IPFS, which is already used accross the app for other forms of content, through Infura IPFS gateway.
Since TtT related information aren't stored on chain, they need to be stored somewhere else.
For the first iteration of TtT we opted for IPFS, which is already used across the app for other forms of content, through Infura IPFS gateway.
On IPFS we store what we call a ttt manifest, which is a json file with the following format:
+30
View File
@@ -0,0 +1,30 @@
# 0014. Team-structure
| Date | Tags |
|---|---|
| 2023-06-16 | wallet team |
## Status
Proposed
## Context:
In order to try out vertical team, which is a structure that is wanted by the company, we will be creating a wallet team within the mobile team.
Some member of the mobile team will join the current wallet team, which is composed by developers from desktop and lead by @alaibe, on a voluntary basis.
The responsibilities of the team are to implement the new wallet UI, with the support of the current wallet team, which will be assisting with the status-go work.
## Decision
The team members for the initial wallet team are:
- @rasom
- @OmarBasem
- @vkjr
- @J-Son89
- @briansztamfater
- @smohamedjavid
- @ulisesmac
- @erikseppanen
- @mmilad75
- @tumanov-alex
+46
View File
@@ -0,0 +1,46 @@
# 0015. Team-structure
| Date | Tags |
|---|---|
| 2023-06-16 | changes in team structure |
## Status
Proposed/partially implemented
## Context:
Currently, there is only a single team lead in the mobile development team, and after a meeting with the design team, it has been identified that the mobile app lacks polishness. One of the main issues identified is a lack of oversight in certain areas. To address this problem, it has been decided to create an additional role within the team. For each section of the mobile app (communities, syncing & onboarding, activity center & shell, wallet, messaging), a person will be selected to fulfill the responsibilities outlined below.
## Decision
The decision is to create an additional role within the mobile development team for each section. The individuals selected for these roles will have the following responsibilities:
- Ensure GitHub issues are created for new features/designs of the section.
- Ensure issues are adequately described and linked as best as possible.
- Ensure issues have a grooming session where other developers can provide their feedback before working on the set of issues.
- Ensure all relevant parties are invited, such as designers, QA, Product Owner, leads, etc., as needed (including the designer who created the feature).
- Ensure there is consensus among the developers working on the section about the decided strategy approach. Ideally, this consensus should be documented.
- Ensure UI quality by organizing designer reviews and guaranteeing pixel perfection.
- Ensure overall implementation is satisfactory based on the predefined requirements.
- Ensure alignment between desktop, web, and mobile versions for the respective section in collaboration with the mobile developers and design team.
- Act as a point of contact for the design team with respect to the section.
- Ensure that someone goes through the designs once they are created with the respective designer.
- Assist the design team with technical feasibility analysis and address any product concerns.
- Facilitate the growth of the next team member into the role.
The people identified for each sections are as follow:
- Messaging @flexsurfer, followed by @alwx
- Syncing & Onboarding @siddarthkay
- Communities @ilmotta, followed by @ajayesivan
- Activity Center & Shell @J-Son89, followed by @Parveshdhull
- Wallet (once the vertical team is created) @J-Son89, followed by @briansztamfater
This will be a rotating post, every 4 months it will go to the next in line.
The wallet team might have longer times for rotation, as stability might be more important. That's still to be decided.
# Follow-up Actions
- Find suitable next in line for Messaging, Onboarding, Communities
@@ -0,0 +1,31 @@
### How should the paste button behave when clipboard is empty?
This question first came up as a review comment to this PR
https://github.com/status-im/status-mobile/pull/16852
There were 2 considerations :
- Either keep the paste button disabled when there is nothing in the clipboard OR
- Always keep the paste button enabled
There were positives and negatives for both approaches.
Positives of keeping paste button disabled when there is nothing in clipboard would require us to
check the value of clipboard as soon as the component is mounted (i.e when the user first sees
the screen). In iOS this means a native permissions dialog would appear requesting for permissions
to paste from the clipboard.
Negatives of this approach is that as soon as any user navigates to this screen they are greeted with
this popup which can be annoying sometimes.
Positives of keeping paste button always enabled is that we can trigger a request to the clipboard on
tap of the paste button which would trigger the native permissions dialog requesting for permissions
to paste from the clipboard.
In this case seeing this dialog is okay because the user has initiated a paste action.
Negatives of this approach is that in the event the clipboard is empty the user will still see the
system dialog and on approving nothing will be pasted (because the clipboard was empty).
This behaviour can be confusing.
On consulting the Design Team via discord it was concluded that out of the two approaches
having the paste button always enabled is a better UX overall.
+7 -17
View File
@@ -20,12 +20,6 @@ required by bignumber.js otherwise there is a compilation error
used to generate guids and random values in `status-im.utils.random`
## "create-react-class": "15.6.2"
fixed version because even bugfix update causes compilation error with current version of react-native (0.59)
internal react library, used by figwheel for instance but also probably react
## "emojilib": "^2.4.0"
used for emojis
@@ -113,11 +107,6 @@ used for profile picture
used for storing password when user saves password
TODO: check if fork is necessary, merge with upstream?
## "react-native-languages": "^3.0.2"
TODO DEPRECATED, should be replaced with https://github.com/react-native-community/react-native-localize
used to get user language and interact with i18n.js
## "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v3.0.8_status"
used to send email to support when phone is shaked
@@ -131,6 +120,7 @@ TODO: update once bug is fixed for Android that causes crash when app is back fr
## "react-native-shake": "^3.3.1"
used to send email to support when phone is shaked
## "react-native-lottie-splash-screen": "^1.0.1"
used to make splash screen with lottie animation during initial loading for android, also used as replacement of "react-native-splash-screen" for iOS
@@ -144,9 +134,9 @@ used for keycard
used for svg icons, mostly collectibles are using svg
TODO: updating requires a pod update on iOS
## "react-native-touch-id": "^4.4.1"
## "react-native-biometrics": "^3.0.1"
used for touch-id identification
used for biometric authentication on Android and iOS
## "react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v8.0.7_3"
@@ -157,10 +147,10 @@ used for browser
used for native navigation
fixed because even bugfix version upgrade causes runtime errors with current version of react-native
## "rn-emoji-keyboard": "https://github.com/status-im/rn-emoji-keyboard"
Used for taking emoji input, for custom emoji thumbnails for community channels
## "react-native-draggable-flatlist": "https://github.com/computerjazz/react-native-draggable-flatlist"
A drag-and-drop-enabled FlatList component for React Native
## "react-native-shadow-2": "https://github.com/SrBrahma/react-native-shadow-2"
A shadow component that is consistent across both platforms
+2 -2
View File
@@ -4,7 +4,7 @@
![](images/export-icons/export-icons.gif)
1. Export from figma 2 pngs 2x and 3x put them in `./resources/images/icons`
1. Export from figma 2 pngs 2x and 3x put them in `./resources/images/icons2`
2. if necessary, rename file so that filename contains only lower case chars, e.g. `"Icon-Name@2x.png"` should be renamed to `"icon_name@2x.png"`.
3. In the app `icon_name.png` still can be accessed as `icon-name`, so in order to use can add the next code:
```clojure
@@ -12,4 +12,4 @@
[vector-icons/icon :icon-name {:color ...}]
```
2x@2x
4. If you want paltform specific icon use `.android` or `.ios` suffixes. Example `icon_name@2x.android.png`.:w
4. If you want platform specific icon use `.android` or `.ios` suffixes. Example `icon_name@2x.android.png`.:w
+40
View File
@@ -0,0 +1,40 @@
# How to catch crash on ios use xcode
## Overview
Sometimes, we can't reproduce crash with local dev build, probably because your built version differs from the one QA team used.
The QA team mostly used the PR build version. In this guide we will try to make a build as close as possible to the PR build for iOS.
You may notice various configuration files starting with .env (such as .env, .env.e2e, .env.jenkins) in the project.
The usage of these files and environment variables injected at build time on CI will not be covered in this guide.
This guide covers how to configure Xcode to capture a crash stack trace with a physical iOS device. This allows debugging crashes by inspecting the stack trace.
I will use [issue #17255](https://github.com/status-im/status-mobile/issues/17255) as an example to reproduce and analyze a crash.
## Prerequisites
- A physical ios device (simulator is not considered in this doc)
- Xcode installed
## Steps
1. Prepare Status Mobile
1. Open Terminal, cd to project root
2. Run `make run-clojure` in one tab
3. Run `make run-metro` in a second tab
4. Run `make pod-install` in a third tab
2. Configure Xcode Project
1. Open Xcode
2. Open a project or file, navigate to folder `path_to_root_directory_of_status_mobile/ios`
3. Set Scheme `StatusImPR` as current scheme ![](images/how-to-catch-crash-on-ios/choose-scheme-StatusImPR.png)
4. Edit scheme ![](images/how-to-catch-crash-on-ios/edit-scheme.png)
5. Change `Info` ![](images/how-to-catch-crash-on-ios/config-release.png)
6. Change `Diagnostics` ![](images/how-to-catch-crash-on-ios/change-diagnostics.png)
7. Set automatically manage signing ![](images/how-to-catch-crash-on-ios/automatically-manage-signing.png)
3. Update Code
1. Edit `src/status_im2/setup/dev.cljs`, comment out lines 47-52 ![](images/how-to-catch-crash-on-ios/edit-dev.png)
2. Edit `shadow-cljs.edn`, comment out `re-frisk-remote.preload`, otherwise it will try to connect `localhost:4567` on physical device which could slow down performance ![](images/how-to-catch-crash-on-ios/edit-shadow-cljs.png)
4. Reproduce Crash And Analyze
1. Choose your physical ios device as target device and Run
2. Follow reproduce steps from [issue #17255](https://github.com/status-im/status-mobile/issues/17255) mentioned and xcode will halt at crash point ![](images/how-to-catch-crash-on-ios/located-stack-trace.png)
3. Inspect stack trace to identify root cause. From the stack trace, we can locate the crash happened in `api/geth_backend.go:1048`(createTempDBFile) clearly! ![](images/how-to-catch-crash-on-ios/located-go-code.png)
## Links
- [changes](https://github.com/status-im/status-mobile/commit/4306d419de15e737e8ded3a749cc5e8d6a06e627) to source code
+4 -4
View File
@@ -19,7 +19,7 @@ For now we support e2e for Android only.
## What's happening when any e2e job is running
Whenever we need to push set of test scripts we create 16 parallel sessions (max, but depending on amount of cases that are included in job) and each thread: 1) uploads Android .apk file to SauceLabs -> 2) runs through the test steps -> 3) receives results whether test failed on particular step or succeeded with no errors -> 3) Parse test results and push them as a Github comment (if the suite ran against respective PR) and into TestRail.
We push **whole automation test suite (currently 155, amout is changing)** against each nightly build (if the nightly builds job succeeded). Results of the test run are saved in TestRail.
We push **whole automation test suite (currently 155, amount is changing)** against each nightly build (if the nightly builds job succeeded). Results of the test run are saved in TestRail.
And also we push set of autotests whenever PR with successful builds got moved in to `E2E Tests` column from [Pipeline for QA dashboard ](https://github.com/status-im/status-react/projects/7).
In that case we save results in TestRail as well and push a comment with test results in a respective PR.
@@ -49,8 +49,8 @@ Params to specify:
- apk: [url_to_apk_build_here]
- pr_id: pull request number (e.g. 1234)
- branch: branch name from which the test are taken (in most of cases `develop`)
- keyword expression: tests by area (let's say `ens` or `chat`, thay can be combined`ens or chat or send_tx`. All keywords can be found in testrail, ping Chu for details)
- test_marks: tests by priorities (by default: `critical or high or medium`, which corresponds the whole suite; to lauch the same suite as in PRs, use `critical or high`)
- keyword expression: tests by area (let's say `ens` or `chat`, they can be combined`ens or chat or send_tx`. All keywords can be found in testrail, ping Chu for details)
- test_marks: tests by priorities (by default: `critical or high or medium`, which corresponds the whole suite; to launch the same suite as in PRs, use `critical or high`)
- testrail_case_id: here is the list of test cases which you may find in test rail (4-digit value)
For easier access you can hit `Rerun tests` in GH comment and testrail_case_id/ apk_name/ pr_id will be filled automatically. For making sure that tests are being rerun on most recent e2e build it is recommended to paste link to the last e2e build in apk_name field. The list of PR builds can be found in Jenkins Builds block on PR page.
@@ -64,7 +64,7 @@ tests (otherwise some PRs could wait their turn of the scheduled Jenkins job til
## Analysing test results (and why test fails to pass)
After automated test run finished test results could be found in GH comment (if the test suite ran agaist PR) and TestRail. There are two states of the test: Passed and Failed. Test failure happens when certain condition of test step has not met or automated test can not proceed execution because it can not find the respective element on screen it expects should be there.
After automated test run finished test results could be found in GH comment (if the test suite ran against PR) and TestRail. There are two states of the test: Passed and Failed. Test failure happens when certain condition of test step has not met or automated test can not proceed execution because it can not find the respective element on screen it expects should be there.
Several examples of when test fails to succeed:
+49 -25
View File
@@ -17,9 +17,10 @@ You can use any Clojure enabled editor. Here are instructions for developing the
- [REPL!](#repl)
- [Connecting to REPL to IntelliJ](#connecting-to-repl-to-intellij)
- [Connecting REPL and IntelliJ to `status-mobile`](#connecting-repl-and-intellij-to-status-mobile)
- [Using Calva](#using-calva)
- [Start and connect the REPL](#start-and-connect-the-repl)
- [Use the REPL](#use-the-repl)
- [Visual Studio Code](#visual-studio-code)
- [Set up the REPL](#set-up-the-repl)
- [Auto-format files on save](#auto-format-files-on-save)
- [Using Emacs with CIDER](#using-emacs-with-cider)
## Using Cursive
@@ -90,7 +91,7 @@ Press the green run button
<img src="images/ide-setup/8_REPL_6.png" width=75% />
You should now see an dialog with the following message:
You should now see a dialog with the following message:
```shell
Connecting to remote nREPL server...
@@ -121,10 +122,9 @@ See below:
Do the following:
Ensure you have 3 terminals running the following
Ensure you have 2 terminals running the following
- `make run-clojure`
- `make run-metro`
- `make run-ios` / `make run-android`
[See the STARTING GUIDE for details](STARTING_GUIDE.md#development)
@@ -160,24 +160,24 @@ Following the above should give you the below result:
For additional details on issues you may face when setting up REPL with Cursive [see this document](https://notes.status.im/9Gr7kqF8SzC_SmYK0eB7uQ?view#Connecting-Cursive--IntelliJ-IDEA-to-REPL-Problems)
## Using Calva
## Visual Studio Code
For VS Code users.
### Set up the REPL
0. Install Calva.
1. Install Calva extension.
2. Open the `status-mobile` folder.
3. Start [Status development](starting-guide.md#development) (Starting the
`run-clojure` and `run-metro` jobs in split view in the VS Code integrated
terminal works great).
4. Run the VS Code command: **Calva: Connect to a running REPL Server in the
project**.
- Select the project type `shadow-cljs`.
- Accept the suggested connection `host:port`.
- Select to connect to the `:mobile` build.
### Start and connect the REPL
1. Open the `status-mobile` folder.
1. Start [Status development](STARTING_GUIDE.md#development) (Starting the `run-clojure` and `run-metro` jobs in split view in the VS Code integrated terminal works great.)
1. Run the VS Code command: **Calva: Connect to a running REPL Server in the project**
1. Select the project type `shadow-cljs`
1. Accept the suggested connection `host:port`
1. Select to connect to the `:mobile` build
### Use the REPL
Open any `.cljs` file in the project and evaluate forms in it. See https://calva.io/try-first/ for some starter tips and links. Confirm that your REPL is connected to the app by evaluating:
Open any `.cljs` file in the project and evaluate forms in it. See
https://calva.io/try-first/ for some starter tips and links. Confirm that your
REPL is connected to the app by evaluating:
```clojure
(js/alert "Hello from Status App!")
@@ -185,9 +185,35 @@ Open any `.cljs` file in the project and evaluate forms in it. See https://calva
🎉 Tada! You are ready to use the REPL to improve Status.im! 🎉
Please consider bookmarking [calva.io](https://calva.io/) for quick access to the Calva documentation.
Consider bookmarking [calva.io](https://calva.io/) for quick access to the Calva
documentation.
## Using Emacs/Cider
### Auto-format files on save
We format Clojure code with [zprint](https://github.com/kkinnear/zprint). We
recommend configuring VSCode to auto-format Clojure files on every save,
otherwise you'll need to constantly rely on the much slower `make lint-fix`
command.
1. Create a file `~/.zprintrc` and enable the `:search-config?` option. This is
necessary so the VSCode extension finds the project's `.zprintrc`.
```bash
echo "{:search-config? true}" > ~/.zprintrc
```
2. Install the extension
[vscode-clj-zprint](https://github.com/rflagreca/vscode-clj-zprint). By the
way, did you know this extension is written in ClojureScript?
3. Copy the recommended settings from our repository in
[.vscode/settings.example.json](/.vscode/settings.example.json) and merge it
with your workspace settings in `.vscode/settings.json`.
The extension `vscode-clj-zprint` is only available for VSCode. If you are using
VSCodium, you'll need to build the `vsix` (extension) yourself (it's easy, only
`yarn` and `vsce` are required).
## Using Emacs with CIDER
1. Install Emacs/Cider/etc. (there is a lot of variability in how to manage things in emacs, so please google for help with this)
2. Add a local ~/.shadow-cljs/config.edn file like below (corresponding to the version numbers of the packages you are using):
@@ -198,5 +224,3 @@ Please consider bookmarking [calva.io](https://calva.io/) for quick access to th
[cider/cider-nrepl "0.28.4"]
[cider/piggieback "0.5.2"]]}
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Some files were not shown because too many files have changed in this diff Show More