* 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
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.
* 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
* 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
* 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
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>
* 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
* 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
* 🖇️ Connect getSavedAddresses
- The save button will not show if the address is already saved
* ⚒️ Fix PR reviews
* 🗑️ Remove code from wallet events ns
* 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
* 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>
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>
## 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
## 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
* 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
* 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
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
* 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
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>
* 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>
* 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
* 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
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
* 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>
* 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>
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>
* 🚧 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
* 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