* 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
* 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
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>
* 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
* 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
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.
* 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
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
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
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>
* 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
Resolved the scrolling issue pertaining to community rules. Additionally, will ensure compatibility with iOS devices lacking safe-area-view in the follow-up.
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
* 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
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>
This commit adds network filter UI in the Wallet home and account screens.
---------
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
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.
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
* 🚟 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
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>
* 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
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>
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
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>
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>
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>
* 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
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.
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>
- 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
* 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
* 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>
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>
This commit fixes the currency symbol not shown on the recovered profile.
--
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
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>
fix: composer space when expanding after re-entering
fix: composer bottom shadow and maximized state atom
fix: removing composer bottom gradient style changes
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.
* 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
* 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
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>
* 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
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>
* 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>
* 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