* Share usage data screen image done
* Update login by syncing and login using recovery phrase images
* Small refactor: remove `merge` and add a `let` binding
* Fix modal entering expected animation
* Remove password disclaimer, update copy and simplify implementation
* Remove non-existing wallet event
* Skip profile configuration for the "create profile" onboarding flow
* Include flow for new profiles when another profile already exists
* Add explanation about temp username
* Point 20 to a constant
* Simplify create profile password screen
* Fix password creation screen jump on mount
* e2e: updated tests
* Completely remove the "create profile" onboarding screen
* e2e: updated tests with recovering user
---------
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
This commit fixes the token/networks going to zero/disabled in the "Bridge to" screen when the user navigates back from the input screen.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This change adds a new action to the action-drawer for opened communities. Now opened communities can be closed by users by pressing on the "Close community" action. Note, that this action will only be available to communities displayed in communities list under the opened tab.
Add WebSocket keep-alive mechanism using ping/pong frames to maintain connection stability:
- Add ping timer that sends ping every 30 seconds
- Automatically reconnect if ping fails
- Properly cleanup timer on disconnect
- Add logging for StatusGo server requests
This helps prevent connection timeouts and ensures timely detection of connection issues.
Improves tracking of login and successful onboarding completion according to
requests from non-technical analytics users and to synchronize with desktop. We
now publish two new events user-logged-in and onboarding-completed.
Fixes https://github.com/status-im/status-mobile/issues/21679
Areas that may be impacted: no impact is expected whatsoever, but login and
onboarding code were lightly touched.
- Event user-logged-in is always published, whenever the profile login is
successful. If the user created a profile, we publish both
onboarding-completed and user-logged-in.
- Event onboarding-completed is published if the user created a profile,
recovered using seed phrase or paired devices successfully.
This commit replaces the fallback for an unknown token image (where we display the first letter of the token name) with the default token image
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This change adds support for displaying the keycards inside the keycards settings screen. Note, that the keycards that are displayed are the keycards that are associated to the user's profile keypair.
This change fixes some of the re-rendering issues that occur inside the contact list when creating a new chat. Most important is that we avoid extra re-renders by configuring the flat-list with stable props. And we also avoid re-rendering avatar images each time the avatar component re-renders.
This commit explicitly specifies location and version of `CryptoSwift` pod in attempt to fix errors like this in CI.
```
None of your spec sources contain a spec satisfying the dependencies: `CryptoSwift (= 1.8.0), CryptoSwift`.
```
This commit
- adds container-style prop to the wallet card component
- makes the Buy and Receive CTAs (cards) width flexible as we display two cards, and it needs to fill the screen width.
NOTE: The component's fixed width is 161, but in certain phones, it's small and does not fill the screen's whole width.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
In Google Play and App Store, it is desirable to use en-GB (English UK) as the
default locale for legal reasons. We heard from F-Droid folks that en-GB is not
as well supported as en-US
https://github.com/status-im/status-mobile/issues/21665.
In this PR we go back to en-US as the default locale in fastlane and update the
text for English (UK) standards. Google Play and App Store shouldn’t be affected
and will use en-GB as the default locale.
Fixes https://github.com/status-im/status-mobile/issues/21665
This commit:
- Removes the usage of deprecated "wallet_filterActivityAsync RPC" and updates it to "wallet_startActivityFilterSessionV2" with other supporting activity filter session RPCs
- Removes deprecated "wallet_checkRecentHistoryForChainIDs" RPC as we no longer support past transaction history
- Added support for Bridge, Swap and Approval activities
- Added context for the sender and receiver if the address is known (own accounts or saved addresses)
- Added support for viewing, copying and sharing links to TX details on block explorer
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This commit:
- adds wallet-card component
- adds Buy and Receive CTAs above the assets list in the wallet home if the balance is zero
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
https://github.com/status-im/status-go/compare/032eb5b6...c014fbfc
- Rename LOG_REQUEST_GO env variable to API_LOGGING_ENABLED across all env files
- Rename requests.log to api.log for consistency
- Remove standalone initLogging functionality from native modules as it's now
handled within InitializeApplication
- Add logging configuration (logEnabled, logLevel, apiLoggingEnabled) to
InitializeApplication params
- Add logDir parameter for Android to ensure proper log file location
This change consolidates logging initialization into the InitializeApplication
flow and makes the naming more consistent with its actual functionality.
This commit fixes the error thrown when tapping the From or To sections in the transaction confirmation screen.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
Integrates the optimizations coming from the status-go PR
https://github.com/status-im/status-go/pull/6106. Now messenger filters are
set-up concurrently and we can call the endpoint wakuext_chatsPreview twice:
once for non-community chats and once for community chats. This way, the user
should be able to see some data render before the slow part ends
(community-related data).
Fixes https://github.com/status-im/status-mobile/issues/21456
Areas that may be impacted
- Login
- Loading of data after login (contacts, chats, etc)
Primarily, this change fixes an issue related to the Keycard PIN error message not being visible displayed on some devices. Additionally, this change also clears the PIN entry state after failing to enter the correct Keycard PIN. And this change also allows for the PIN entry component to have two separate error modes: one for the entire component and another for just the info text.
* [#21557] feat: show from account page in swap flow
* [#21557] feat: add disabled state to account-item
* [#21557] fix: apply suggestion
* [#21557] fix: add format address util and rename screen
* [#21557] fix: check and count account with token balance
* [#21557] fix: check for root screen
* chore: upgraded watchman, otherwise it's not used with current metro
The latest metro version requires watchman capabilities that are not
available in the version we locked, so it was not used. Instead we
used the "node watcher", which is slower and buggier (at least for me
metro was timing out quite often)
* fix: watchman ignore .clj-kondo, .shadow-cljs
* Rework login and logout flow to keep biometrics valid
- Move logout logic to a new namespace, the implementation no longer uses `rf/defn`
* Code style fixes
* Fix warning: "null is not an image" in login
* Fix biometric icons used all over the app
---------
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
This commit fixes ParaSwap contract address displayed on the setting approval cap for a token.
Since we get the approval contract address in the swap proposal, we take that as higher precedence over the hardcoded value in the constants file
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
* feat: hide token price-change info if no token balance
* fix: show dapps header button only on account screen
* ref: renamed to above-zero? and using it where needed
* fix: removed bridge icon from submit button
This commit should help with potential freezes right after login, especially in
low-end devices and for users with more data.
The default behavior for the effect :json-rpc/call is to transform the
response to CLJS data using (js->clj data :keywordize-keys true), even if the
result is never used. The problem is that the response from
wakuext_startMessenger can be a very large struct! This PR simply adds the
missing line :js-response true.
https://github.com/status-im/status-mobile/blob/ca22b67d0e82a3cb123be2174b3ef2157e676e08/src/status_im/common/json_rpc/events.cljs#L85-L87
type MessengerResponse struct {
Contacts []*Contact
Invitations []*GroupChatInvitation
CommunityChanges []*communities.CommunityChanges
AnonymousMetrics []*appmetrics.AppMetric
Mailservers []mailservers.Mailserver
CommunityStorenodes []storenodes.Storenode
Bookmarks []*browsers.Bookmark
Settings []*settings.SyncSettingField
IdentityImages []images.IdentityImage
CustomizationColor string
WatchOnlyAccounts []*accounts.Account
Keypairs []*accounts.Keypair
AccountsPositions []*accounts.Account
TokenPreferences []walletsettings.TokenPreferences
CollectiblePreferences []walletsettings.CollectiblePreferences
DiscordCategories []*discord.Category
DiscordChannels []*discord.Channel
DiscordOldestMessageTimestamp int
BackupHandled bool
// notifications a list of notifications derived from messenger events
// that are useful to notify the user about
installations map[string]*multidevice.Installation
notifications map[string]*localnotifications.Notification
requestsToJoinCommunity map[string]*communities.RequestToJoin
chats map[string]*Chat
removedChats map[string]bool
removedMessages map[string]*RemovedMessage
deletedMessages map[string]string
communities map[string]*communities.Community
communitiesSettings map[string]*communities.CommunitySettings
activityCenterNotifications map[string]*ActivityCenterNotification
activityCenterState *ActivityCenterState
messages map[string]*common.Message
pinMessages map[string]*common.PinMessage
discordMessages map[string]*protobuf.DiscordMessage
discordMessageAttachments map[string]*protobuf.DiscordMessageAttachment
discordMessageAuthors map[string]*protobuf.DiscordMessageAuthor
currentStatus *UserStatus
statusUpdates map[string]UserStatus
clearedHistories map[string]*ClearedHistory
verificationRequests map[string]*verification.Request
trustStatus map[string]verification.TrustStatus
emojiReactions map[string]*EmojiReaction
savedAddresses map[string]*wallet.SavedAddress
ensUsernameDetails []*ensservice.UsernameDetail
updatedProfileShowcaseContactIDs map[string]bool
seenAndUnseenMessages map[string]*SeenUnseenMessages
}
This change resolves an issue with un-opened, joined, and pending communities being visible inside the "opened" communities tab. With this change, the "opened" community tab will only display spectated (opened) communities that have not been joined or pending to be joined.
This change fixes the appearance of the disclaimer checkbox inside the create/change password forms to use the user's customization color. Additionally, this change also changes the password-hint success icons to use the check-circle because of its solid opacity.
related issue : https://github.com/status-im/status-mobile/issues/15447
This commit makes use of https://github.com/gradle/github-dependency-graph-gradle-plugin to generate deps so that we may get rid of the AWK script that parses `gradle` output to figure out `gradle` dependencies.
credits to Vedran for doing initial research on this dependency generator plugin.
We still miss a few dependencies and are not completely able to get rid of the hack list step just yet.
I also moved `react-native-share` out of `pluginManagement ` block in `android/settings.gradle` because it does not belong there.
This commit
- fixes the networks/chains supported by the token based on the token list fetched from status-go instead of relying on the balance-per-chain map as status-go returns balance for chains only if there is a positive balance
- adds supported-networks key to token data map for network details
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This change refactors the navigation-screens namespace to organise each screen definition into a group based on the app features. It also adds some metrics tracking to all the of the screens defined in the navigation-screens namespace.
Additionally, in this change we've introduced a new build configuration for shadow-cljs which allows us to conditionally include code for certain shadow-cljs builds. In this case, we've decided to only exclude the metrics re-frame interceptor from being required when running the component-tests build. This is due to a complication with the metrics interceptor depending on the navigation-screens namespace, which would eventually require many other third-party dependencies that do not have mocks defined for the component tests. To avoid defining more mocks, we've avoided requiring the metrics interceptor for now.
* fix: filter tokens by balance on select asset
* feat: added network-list-with-positive-balance
* fix: swaps error when using networks with balance
* fix: hide send/bridge/swap when no token balance
This commit:
- Adds a PDF viewer screen to view PDFs within the app instead of opening them on the system browser
- Updates the swap provider (ParaSwap) terms and conditions to be displayed within the app
- Increases APK size limit to 80 MB
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
Co-authored-by: Siddarth Kumar <siddarthkay@gmail.com>
* Make `->bignumbers` more general
* Fix case when there are not enough assets to pay gas fees:
- Fix the UI to match Figma
- Fix logic to handle the case
- Perform refactoring to surrounding code
* Change `defonce ^:const` -> `def ^:const` in `status-im.contexts.chat.messenger.messages.list.view` to be more REPL friendly
* Remove animations from `status-im.contexts.chat.messenger.messages.pin.banner.style`
* Simplify placeholder for messages
* Replace shared-value with a ratom usage since no animations were performed.
* Fix the style for the new designs and remove now unnecessary animations
* Improve chat component implementation
The previous implementation has two main problems:
1. It is creating atoms and ratoms in non-form-2-components.
2. Conditionally uses a hook: `rn/use-mount` in `lazy-chat-screen`.
The new implementation fixes the previous problems, improves the readability and passes only the props needed to its children.
* Remove action buttons from the chat screen
* Remove now unused code
* Replace reanimated/view -> rn/view where no animations are made
* feat: moved disconnect logic to function
* ref: moved rpc calls to rpc ns
* ref: moved session approval logic to function
* fix: small fixes for sessions
* test: wallet-connect/on-session-delete event test
* test: added event tests for wc sessions
* fix: require sessions events ns
* fix: the wallet was loaded after wc sometimes
* feat: added type data flattening + tests
* feat: added typed data flattened ui
* ref: moved typed data utils into their own ns
* ref: small changes & formatting
* feat: show typed data view only for typed data requests
* ref: moved typed-data? into sub
* fix: tests and styling
This commit
- Stops route calculation when the user
- changes FROM account
- changes the send (input) amount
- goes back from the routes calculation page
- after the transaction is successfully submitted
- goes back from tx confirmation page for collectibles
- Prevents the keyboard being dismissed while entering the password on the transaction confirmation page
- Fixes multiple edit tiles/boxes added to receiver routes
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This change adapts the code to avoid persisting the string `"<0.01"` in the wallet-send UI state. This change also modifies some of the BigNumber utility functions to validate that only BigNumbers are used with the utility functions. And the this change also tries to stop requesting route suggestions after exiting the wallet-send flow.
This change adds a re-frame event for `:open-url` which will allow UI components to open a url using the re-frame effect `:effects/open-url`. Additionally, some code was refactored to use the `:open-url` event instead of directly opening the urls with the `open-url` function.
This commit fixes the max value that is not updated when the user switches the token/network in the input amount screen
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
nix: use nixpkgs unstable for gradle 8.8
nix: ldflags are expected to be a list
chore: fix deprecated vendorSha256
nix: bump jdk to 17 & pass java version to gradle
make: set universalApk false in run-android target
nix: fix --replace deprecation warning
- https://github.com/NixOS/nixpkgs/pull/260776
ios: update pod and gem lockfiles
nix: bump nodejs to 20.12.2
nix: add Xcode 16.0 to allowed versions
chore: upgrade rn-image-crop-picker lib
nix: full path for missing dep in node_modules sh
e2e: removed redundant element
---------
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
* Fix not joined drawer options for token gated communities
* Remove `show-not-implemented-features?` flag for token gated options
* Fix component tests
As recommended in
https://github.com/status-im/status-go/pull/5570#discussion_r1692345230 [1] and
https://github.com/status-im/status-go/pull/5570#discussion_r1690794119 [2], we set
the Waku config flag WakuV2EnableMissingMessageVerification to true. The flag
can't be toggled in the UI because there's no supporting endpoint for that in
status-go at the moment.
[1] I doubt the hash based store-query going to be as expensive as legacy-store.
Because we only query hashes and if we miss any messages we fetch them which
would improve message reliability.
https://github.com/status-im/status-go/pull/5511 is expensive as it doesn't
query hashes rather full messages. I think we can keep this new flag enabled by
default and provide a switch in the app in case it becomes expensive to disable
it.
[2] we can keep this enabled for mobile by default. The reason
WakuV2EnableStoreConfirmationForMessagesSent was disabled is as it was giving
bad UX to users where messages were sent but still showing as not sent due to
storeNode performance issues. But this flag doesn't give any bad UX, so we can
keep it enabled by default.
Fixes https://github.com/status-im/status-mobile/issues/20879
* WC: Last account that established connection is not selected when connecting through global scanner
* WC: Last account that established connection is not selected when connecting through global scanner
* Fixes
this commit implemented logging request/response between status-mobile and status-go.
to access `requests.log`, shake your phone and share the logs.
TBD:
- adding `device id` into request to proxy server, we can implement it in a separate PR if needed.
- not sure if we need logging the request made in the backend that not asked by frontend directly
This commit:
- fixes crash while sending an ERC115 collectible
- fixes routes are fetched if we enter 0 in the input
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This commit fixes the delay in showing the currency symbol in the wallet by moving the RPC call to login phase 1 along with wallet initialisation. This helps us to improve the wallet UX by skipping the waiting to start the messenger.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
* fixed overlapping last message by the composer when there is a pinned message
* prevent a user who is not a member of a community from pinning or unpinning channel messages
---------
Co-authored-by: Ulises M <ulises.ssb@hotmail.com>
* Fix input amount step skipped while sending a token
* Rename events to remove the `wallet` unnecessary suffix
* Code style fixes
* Fix React warnings:
1. About unique key in `select-address.tabs.view` along with a refactor
2. The deprecated `:keyboard-should-persist-taps` as `true` in `send.select-address.view`
* Hide account switcher while sending a collectible
* Fix tests
In my previous PR -> https://github.com/status-im/status-mobile/pull/21163 I had attempted to build universalAPK only for release builds but had missed out on these changes.
This commit ensures `universalApk` value of `gradle` config is properly set.
This commit also points to my branch in `status-jenkins-lib` which modifies the APK size restrictions.
Its not `110 MB` for Universal APKs and `70 MB` for Individual Architecture APKs
* [#20150] feat: wallet connect pairing via deep links
* [#20150] feat: redirect to the dapp after finish response
* [#20150] test: add tests for events and utils
* [#20150] fix: reviewer's feedback
This change attempts to fix the calendar component specs to avoid errors with finding multiple elements with the same text. Prior to this change it was possible for multiple elements to be found with the same number of the day, like "5", which caused the tests helpers to thrown an exception. Now the specs will use a different test helper to avoid the exceptions, and we've adjusted the test data to avoid duplicate day numbers too.
This commit:
- fixes profile with ENS can edit their name
- fixes identicon ring is shown for the profile with ENS
- updates the profile URL for the profile with ENS
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
* wip, small renamings
* Added metamask regex
* Added tests for metamask conversion
* Add metamask address to shell scanner and wallet address scanner
* unify address functions usage
* address-related functions moved to a dedicated namespace
* minor fixes
* fix lint and tests
* review notes fixes
* return back function
* lint fix
* Support metamask addresses without suffix, prefixed `:ethereum`
This commit removes passing random emoji on account creation for the default wallet account, as status-go will set this.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
This change updates the Android icon assets for all builds (debug, PR, and release). This change attempts to support the Android adaptive icons and the monochrome/themeable icons for upcoming Android releases.
The issue occurred because we updated the theme value after setting the root
(not before), which caused the root to be initialized with the old theme value.
* Open metrics modal when changing metrics in settings
* Move privacy policy & terms of use components under `status-im.common`
* Add a link to the Privacy Policy in the metrics modal
* Update privacy policy and terms of use content
* Remove extra function wrapper
This commit:
- hides keypairs with empty origin in selection while creating an account
- hides remove account button for accounts with empty origin
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
We make the wallet closer to being offline-first, that is, once data is loaded,
going offline won’t cause unnecessary data re-fetches which currently cause all
balances and data to stay loading forever or eventually balances end up zeroed.
Areas that may be impacted: read-only data displayed in the wallet and editing
accounts.
Fixes https://github.com/status-im/status-mobile/issues/21066
This change changes the initial onboarding screen to require users to manually accept the terms-of-use and privacy-statement before continuing to onboard into the app.
---------
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
* chore: add english translation for "Beta"
* tweak: add beta tags to communities and chat home screen titles
* fix: use smaller size for beta tags on chat and communities home screens
* chore(wallet): feature flag adding watch only accounts
* e2e: disabled test for watch-only accounts
---------
Co-authored-by: Yevheniia Berdnyk <ie.berdnyk@gmail.com>
This change will now allow for customizing the port number when running the metro server. The environment variable `RCT_METRO_PORT` can now be set when executing commands like `make run-ios`, `make run ios-device`, and `make run-android`. Though, it should be noted that `make clean` may need to be ran before attempting to set or change `RCT_METRO_PORT` since the react-native app will have statically built code that references the value of RCT_METRO_PORT from compile time and not runtime.
* 📈 Capture onboarding funnel
* ⏩ Faster lookup
* ✅ Capture how many people enabled metrics
- It technically captures disabled too
- But we'll never know if someone disabled
- Because that info won't be transmitted
* ✏️ Fix tests
* 🧯 Fix lint
Creating this PR for regression testing the comparability of feature sync
between different versions(mainly current PR build vs v2.29) after adding
backend fallback pairing support. Because frontend haven't added the invocations
relate to fallback pairing API yet, so fallback pairing won't support with
current build.
relate status-go PR https://github.com/status-im/status-go/pull/5614
Testing notes expected: sync should work as before between different versions
like following: v2.29 <-> PR build PR build <-> recent desktop build
NOTE: It breaks with v1 of pairing, but that's ancient (last year I believe), so
safe to break.
This commit uses "usd" currency as default for the fiat price calculation for the tokens.
Every currency has a different format - decimal which we need to rely on a separate RPC to fetch currency format and do the calculation. So, this PR will change to use usd as the default for v2.30.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
* fix(wallet): fix bridge transactions
Signed-off-by: Brian Sztamfater <brian@status.im>
* add support for approve transactions
Signed-off-by: Brian Sztamfater <brian@status.im>
---------
Signed-off-by: Brian Sztamfater <brian@status.im>
* feat: removed wallet connect feature flag
* fix: show pending requests when logging out and in
* fix: don't show requests across (test/main)nets
* format: added env newlines
* fix: network state reset on network type change
* fix: reject typed-data if wrong chain-id
* chore: added logs for future debugging
* fix: create password for small screen
* feat: use floating button page
Signed-off-by: yqrashawn <namy.19@gmail.com>
* fix: use keyboard will show for ios
Signed-off-by: yqrashawn <namy.19@gmail.com>
* fix: safe area bottom on devices without physical home button
Signed-off-by: yqrashawn <namy.19@gmail.com>
* feat(create-password): tips and checkbox stick with confirm button
* fix: floating button blur after rebase
* fix(floating-button): absolute content avoid keyboard view
---------
Signed-off-by: yqrashawn <namy.19@gmail.com>
In this commit:
- we set `ANDROID_ABI_SPLIT` to `true`
- we set `ANDROID_ABI_INCLUDE` to `arm64-v8a` for debug & PR android builds
- release builds would still contain `armeabi-v7a;arm64-v8a` and there is no change for E2E android builds
- we point to relevant changes in `status-jenkins-lib` which also introduces a size check for this `apk`.
The agreed threshold is 100 MB.
* 🥅 Filter connected dapps based on testnet mode
- Fixes#20794
* 🥅 Remove map, just filter
* 💿 Rebase
* ❌ Remove greedy fetch
* 🙅♀️ Properly reject proposals and requests
* 🎗️ Remove newline and move `set`
- `set` was applied at the wrong place here
* ✏️ Address review comments
* 👀 Read proposal to reject from state
* ◀️ Bring back network filtering
* 🧹 Cleanup
* ✏️ Move comment around
* 🎣 Use filter operable accounts helper
* ➕ Add back events deleted during rebase
* 🧰 Fix Issue 2, Testnet sessions not visible
* 🖊️ Fix lint
* 🔗 Make testnet filtering more explicit
* 🥢 Use union instead of two subsets call
* ✏️ Fix lint
* 🔇 Undo changes that creeped in an unrelated ns
* add v2 method
* rename v2 to get-suggested-route
* remove timestamp check on success
* handle async signal for suggestion
* fix stop get suggested routes
* address feedback
* rename get-suggest-route
* prefer lazy seq
* fix formatting
* update suggested routes success
* refactor get-in calls in start-get-suggested-routes
* move transformations to data store
* clean suggested routes immediately
* fix lint
* pass precision as ar
* change test name
* fix big number division error (issues 1,2)
* only trigger router fetch when there address (to/from)
* check response data for error response when routes received via signal
* update status-go
* fix: test failure
* update status go
* handle error message for generic errors
We do a few things to reduce the initial load and make the app more responsive
after login. The scenario we are covering is a user who joined communities with
a large number of members and/or which contain token-gated channels with many
members.
- Related to https://github.com/status-im/status-mobile/issues/20283
- Related to https://github.com/status-im/status-mobile/issues/20285
- Optimize how we convert a community from JS to CLJS. Community members and
chat members are no longer transformed to CLJS, they are kept as JS. Read more
details below.
- Delay processing lower-priority events by creating a third login phase. The
goal is to not put on the same queue we process communities less important
events, like fetching the count of unread notifications. Around 15 events
could be delayed without causing trouble (and this further prevent a big chain
of more events to be dispatched right after login).
- Tried to use re-frame's flush-dom metadata, but removed due to uncertainty,
check out the discussion:
https://github.com/status-im/status-mobile/pull/20729#discussion_r1683047969
Use re-frame’s support for the flush-dom metadata whenever a signal arrives.
According to the official documentation, this should tell re-frame to only
process the event after the UI has been updated. It’s hard to say if this
makes any difference, but the theory is sound.
- Reduce the amount of data returned to the subscription that renders a list of
communities. We were returning too much, like all members, chats, token
permissions, etc.
Other things I fixed or improved along the way:
- Because members are now stored as JS, I took the opportunity to fix how
members are sorted when they are listed.
- Removed a few unused subs.
- Configured oops to not throw during development (in production the behavior is
to never throw). This means oops is now safe to be used instead of interop
that can mysteriously fail in advanced compilation.
- Show compressed key instead of public key in member list for the account
currently logged in.
Technical details
The number one reason affecting the freeze after login was coming from
converting thousands of members inside communities and also because we were
doing it in an inefficient way using clojure.walk/stringify-keys. We shouldn't
also transform that much data on the client as the parent issue created by
flexsurfer correctly recommends. Ever since PR
https://github.com/status-im/status-mobile/pull/20414 was merged, status-go
doesn't return members in open channels, which greatly helps, for example, to
load the Status community. The problem still exists for communities with
token-gated channels with many members.
The current code in develop does something quite inefficient: it fetches the
communities, then transforms them recursively with js->clj and keywordizes keys,
then transforms again all the potentially thousands of member IDs back to
strings. This PR changes this. We now shallowly convert a community and ignore
members because they can grow too fast. From artificial benchmarks simulating
many members in token-gated channels, or communities with thousands of members,
the improvement is noticeable.
You will only really notice improvements if you have spectated or joined a
community with 1000+ members and/or a community with many token-gated channels,
each containing perhaps hundreds of members.
What's the ideal solution?
We should consider removing community members and channel members from the
community entity returned by status-go entirely. The members should be a
separate resource and paginated so that the client doesn't need to worry
about the number of members, for the most part.
This commit removes two toggles from legacy advanced settings
- "Testnet mode" - duplicate toggle as the user can switch to testnet from wallet settings
- "Enable Goerli as test network" - Goerli is depreciated and wallet services use Sepolia testnet as default.
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
* feat: only initialize wc if internet online
* feat: no internet toast for session establishment
* feat: no internet banner on session requests
* feat: reloading walletconnect on connection change
* fix: re-initialize only when previously failed to
* fix: removed legacy net-info ns
* ref: renamed :network-status to :network/status
* ref: moved network subs to own "category"
* fix: device network fx args
* fix: tests & showing persisted dapps when offline
* fix: addressed review comments
* fix: rebase issues
* fix: linting
* fix: usage of web3-wallet (#20864)
* fix: moved networks to contextx and renaming
* ref: moved building supported namespaces into fx
Equality checks in tests using = give a bad experience by default on test
failures containing nested data structures. We use the cljs.test directive
match? from matcher-combinators library to help compare nested structures. The
problem with match? is that its default matcher for maps (embeds) can be too
permissive, and this causes surprises.
Here we upgrade matcher-combinators to latest, where a new matcher called
nested-equals is available. This matcher won't allow extra keys in maps. This
matcher eliminates the need for manually adding nested equals matchers as we
have to do currently.
- Upgrades matcher-combinators from 3.8.8 to 3.9.1 (latest as of 2024-07-19)
What changes?
When asserting in tests, we now have the option to use match-strict? or match?.
Both directives are available by integrating with cljs.test. The code
implementing the new match-strict? directive was 100% copied from the library
matcher-combinators because we need to wrap the expected value ourselves with
matcher-combinators.matchers/nested-equals. It's ugly code, but it's how we can
integrate with cljs.test/assert-expr.
This commit:
- prevents the user from saving their wallet address as the saved address
- fixes button not capturing taps when the keyboard is open in saved address flows
Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
2024-07-24 19:46:59 +05:30
1092 changed files with 26176 additions and 18302 deletions
@@ -92,7 +92,7 @@ For particular example it was failed on `Recover access(password:qwerty, keycard
Not all features of the app could be covered by e2e at the moment:
- Colours or place of an element on UI.
- Real ETH/token transactions. That’s the main reason we have separate .apk build for automation needs - it defaults to Goerli network. Also it has enabled keycard test menu, ENS names and chat commands are also on Goerli network (the same in PR builds, but not in nightlies / release)
- Real ETH/token transactions. That’s the main reason we have separate .apk build for automation needs - it defaults to Sepolia network. Also it has enabled keycard test menu, ENS names and chat commands are also on Sepolia network (the same in PR builds, but not in nightlies / release)
- Autologin/Biometric related actions (autologin available when device meets certain conditions like the it has set unlock password and device is not rooted: all emulators are rooted in SauceLabs)
Status Backend Server is a http server that runs status-go, it exposed endpoints come from [mobile/status.go](https://github.com/status-im/status-go/blob/master/mobile/status.go) so that you can call them through http requests. It brings the following benefits:
- When verifying changes made in status-go, you only need to run these commands once (unless modifying Kotlin/Objective-C code):
-`make clean && make run-clojure`
-`make run-android` or `make run-ios`
This avoids repeatedly rebuilding and saves development time.
- Debug status-go while running status mobile app
## Solution to use Status Backend Server for mobile development
`StatusBackendClient` is the entry point to use Status Backend Server. We need always to call `status-im.setup.status-backend-client/init` whether `STATUS_BACKEND_SERVER_ENABLED` is `1` or not. If it's not enabled, the invocation to functions in `native-module.core` will be delegated to built-in status-go library, otherwise it will be delegated to status-go running in status-backend server. Currently, all functions has usages in `native-module.core` should be supported delegated to.
NOTE: not all the native functions used `StatusBackendClient`, only the corresponding functions in `native-module.core` has usages should be supported delegated to ATM.
related [PR](https://github.com/status-im/status-mobile/pull/21550)
## Usage
### Add environment variables to your local machine:
```shell
# enable using status backend server or not, otherwise it will use built-in status-go library
exportSTATUS_BACKEND_SERVER_ENABLED=1
#The host should contain an IP address and a port separated by a colon.
#The port comes from your running status backend server.
#If you run it by PORT=60000 make run-status-backend , then host will likely be 127.0.0.1:60000
You need to change `STATUS_BACKEND_SERVER_ROOT_DATA_DIR` to your preferred directory and ensure it exists, it should be in absolute path.
All the db files and log files(api.log/geth.log) and keystore files etc will be stored in this directory.
### Start the status backend server:
```shell
PORT=60000 make run-status-backend
```
MAKE SURE the status-backend is checked out to a revision that's at least compatible with the revision in status-mobile/status-go-version.json before starting the server.
For the Android simulator, you need to reverse the port:
```shell
adb reverse tcp:60000 tcp:60000
```
However, there is restriction when use adb reverse, we use random port for media server. So I'd suggest use "10.0.2.2:60000" as `STATUS_BACKEND_SERVER_HOST`.
### Debug status-go using IDEA
Assume you've already set up the development environment for status-go, open status-go project use IDEA, run `make generate` with terminal in the status-go project root directory to ensure all the generated files are up to date, then open `cmd/status-backend/main.go` file, navigate to function `main()`, click the green play button on the left of `main()`, choose `Modify Run Configuration`, in `Program arguments` section, add `--address=localhost:60000 --media-https=false`, then click `OK`, finally click the green play button on the left of `main()` again and choose `Debug ...`.
Basically, you don't have to run `make generate` again and again, just run it once at the beginning. So you can re-run and debug it faster!
## Known Android simulator issues
- Issue#1: Android simulator may not display images due to TLS certificate validation issues with the image server
- solution: use http instead of https for media server with set env: `export STATUS_BACKEND_SERVER_MEDIA_SERVER_ENABLE_TLS=0`, you also need to set env variable `STATUS_BACKEND_SERVER_IMAGE_SERVER_URI_PREFIX` to "http://10.0.2.2:" so that `image_server.cljs` can work, and to make `/accountInitials` work, you need to copy `Inter-Medium.ttf` to your host machine from the android simulator, let's say you store it in `/Users/mac/Downloads/Inter-Medium.ttf`, then you need to update `get-font-file-ready` manually in `image_server.cljs` to return the correct path so that status backend server can access it.
- Issue#2: exportUnencryptedDatabaseV2/import-multiaccount does not work for android, probably cause of tech debt, I found it during creating the draft PR.
- Issue#3: unable to invoke `multiaccounts_storeIdentityImage` to change avatar image.
- The reason is that we path the absolute path of the image to the backend server, but the image file is stored in the android simulator. the backend server cannot access it as it runs in the host machine.
If you're using ios simulator, you can skip above issues!
## Details for issue#1 if you're interested
- we use `react-native-fast-image` which use okhttpclient behind
- we were using custom cert for https
- we fetch the custom cert through endpoint `ImageServerTLSCert`
- we fetched it through built-in status-go before, now we need to fetch it through status backend server
- we expect `OkHttpClientProvider.setOkHttpClientFactory(StatusOkHttpClientFactory())` to be invoked early(will trigger fetching wrong custom cert via built-in status-go since StatusBackendClient is not initialised yet!) in `MainApplication.kt` before executing clojure code, otherwise we will get black screen after `make run-android` . After deep research, I found there's no way to update the cert okhttpclient used to the correct one return from status backend server
يجمع Status بين برنامج مراسلة مجهول الهوية يركز على الخصوصية ومحفظة العملات المشفرة الآمنة في أداة اتصال قوية واحدة. يمكنك الدردشة مع الأصدقاء والمجتمعات المتنامية. وشراء وتخزين وتبادل الأصول الرقمية.
Status هو نظام تشغيل Ethereum الخاص بك.
محفظة Ethereum آمنة
تتيح لك محفظة العملات المشفرة Status إرسال وتخزين وتبادل أصول Ethereum بأمان مثل ETH وSNT والعملات المستقرة مثل DAI، بالإضافة إلى المقتنيات. تحكم بثقة في عملاتك المشفرة والأصول الرقمية من خلال تطبيق محفظة Ethereum متعددة السلاسل، والذي يدعم الشبكة الرئيسية وArbitrum وOptimism. تدعم محفظة blockchain Status حاليًا أصول ETH وERC-20 وERC-721 وERC-1155 فقط؛ ولا تدعم Bitcoin.
PRIVATE MESSENGER
أرسل محادثات فردية وجماعية خاصة دون أن يتجسس أحد على اتصالاتك. Status هو تطبيق مراسلة يلغي عمليات نقل الرسائل المركزية لمزيد من الخصوصية والمراسلة الآمنة. يتم تشفير جميع الرسائل باستخدام تشفير من البداية إلى النهاية. بالإضافة إلى ذلك، لا تكشف أي رسالة عن هوية المؤلف أو المستلم المقصود، لذلك لا أحد، ولا حتى Status، يعرف من يتحدث إلى من أو ما قيل.
اربح مع DEFI
استخدم عملتك المشفرة مع أحدث تطبيقات التمويل اللامركزية والبورصات اللامركزية (DEX) مثل Maker وAave وUniswap وSynthetix وPoolTogether وZerion وKyber والمزيد.
تواصل مع مجتمعك
استكشف مجتمعاتك وأصدقائك المفضلين وتواصل معهم ودردش معهم. سواء كانت مجموعة صغيرة من الأصدقاء أو مجموعة فنانين أو تجار عملات مشفرة أو منظمة كبيرة قادمة - أرسل رسائل نصية وتواصل مع مجتمعات Status.
إنشاء حساب خاص
ابق خاصًا من خلال إنشاء حساب مجهول الهوية. عند إنشاء حسابك المجاني، لن تضطر أبدًا إلى إدخال رقم هاتف أو عنوان بريد إلكتروني أو حساب مصرفي. يتم إنشاء مفاتيح المحفظة الخاصة بك محليًا وتخزينها بشكل آمن لضمان حصولك أنت فقط على حق الوصول إلى أموالك ومعاملاتك المالية.
يجمع Status بين برنامج المراسلة الخاص ومحفظة التشفير الآمنة ومتصفح لتطبيقات إيثريوم اللامركزية في أداة اتصال واحدة قوية. الدردشة مع الأصدقاء والمجتمعات المتزايدة. شراء الأصول الرقمية وبيعها وتخزينها وتبادلها. تصفح الإنترنت اللامركزي دون استغلال بياناتك.
Status هو نظام تشغيل إيثريوم الخاص بك
برنامج المراسلة الخاص
أرسل دردشات خاصة 1: 1 ، ومجموعات خاصة ، ودردشات عامة دون وسطاء غير ضروريين في اتصالاتك. Status عبارة عن تطبيق نصي يزيل نقاط الاختناق المركزية من رسائلك يمنحك لمزيد من الخصوصية والمراسلة الآمنة. تطبيق مراسلة مشفر مع تشفير شامل وخصوصية بشكل افتراضي بحيث لا يمكن لأي شخص آخر غيرك والمرسل إليه استعراض رسائلك - ولا حتى Status. يعتبره البعض برنامج مراسلات سريًه.
مدفوعات بلا حدود، من النظير إلى النظير
يتيح ماسنجر Status لأي شخص في أي مكان إرسال مدفوعات عالمية مباشرة في الدردشة حيث انه متكامل بسلاسة مع محفظة العملات المشفرة.
محفظة إيثريوم آمنة
تتيح لك محفظة تشفير Status إرسال أصول إيثريوم وتخزينها وتداولها وتبادلها بأمان مثل ETH و SNT والعملات المستقرة القيمة مثل DAI و NFTs. يمكنك التحكم بكل ثقة في عملتك المشفرة والأصول الرقمية باستخدام تطبيق محفظة إيثريوم هذه . تدعم محفظة البلوكتشين الخاصة Status حاليًا أصول ERC-20 و ERC-721 فقط ؛ لا تدعم البيتكوين.
اكسب مع DEFI
دع عملاتك المشفرة تعمل مع أحدث تطبيقات التمويل اللامركزية والتبادلات اللامركزية (DEX) مثل Maker و Aave و Uniswap و Synthetix و PoolTogether و Zerion و Kyber وغيرهم الكثير.
متصفح تطبيقات الويب 3 اللامركزية
تصفح الويب الآمن وأدنو من النظام الإيكولوجي المتنامي للتطبيقات اللامركزية باستخدام المتصفح الآمن. يتيح Status الوصول إلى أكثر من مجرد DeFi - اكتشف أحدث الأسواق والمقتنيات والألعاب والشبكات الاجتماعية مثل SuperRare و Gitcoin و Dragonereum و Axie Infinity و Open Sea و CryptoKitties و Decentraland وغيرهم الكثير.
تواصل مع مجتمعك
استكشف وتواصل ودردش مع مجتمعاتك و أصدقائك المفضلين لديك. سواء كانت مجموعة صغيرة من الأصدقاء ، أو مجموعة فنانين ، أو تجار تشفير ، أو المؤسسة الكبيرة التالية - أرسل رسائل نصية وتواصل مع مجتمعات Status.
بثّ اﻷنشطة اﻹجتماعية
شارك ما يدور في ذهنك وانشر التحديثات مع جهات الاتصال الخاصة بك في شبكة تواصل اجتماعية لامركزية حديثة ومقاومة للرقابة.
إنشاء حساب خاص
حافظ على خصوصيتك مع إنشاء حساب مستعار. عند إنشاء حسابك المجاني ، لن تضطر أبدًا إلى إدخال رقم هاتف أو عنوان بريد إلكتروني أو حساب مصرفي. يتم إنشاء المفاتيح الخاصة بالمحفظة الخاصة بك وتخزينها على جهازك لضمان وصولك إلى أموالك ومعاملاتك المالية فقط.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.