Commit Graph

316 Commits

Author SHA1 Message Date
Mohamed Javid 3483bb1107
[Fix] Community Context for Mention or Replies Notification in Activity Center (#15234)
* [Fix] Community Context for Mention or Replies Notification in Activity Center

ebc1fc33...71f778ec

* [Update] Status Go Version
2023-03-03 22:57:32 +05:30
Icaro Motta 1f1ab30a4e
Use new RPC endpoints to fetch and count unread notifications (#15245)
There are endpoint changes in the status-go PR #3237
https://github.com/status-im/status-go/pull/3237) that will cause breakage in
the Mobile & Desktop clients. The Desktop team has already implemented the
changes and is waiting for Mobile to do the same.

The new endpoints are generally better, more ergonomic to use. There's also a
new endpoint to allow fetching multiple unread counters for all types of
notifications so we can finally remove the dreadful workaround in mobile calling
`status-go` 10+ times in a row.

- Fixes https://github.com/status-im/status-mobile/issues/15119
- Fixes https://github.com/status-im/status-mobile/issues/15229
2023-03-03 12:43:41 -03:00
Roman Volosovskyi 8f75874868
[#15042] Fix inconsistent contact request state on syncing 2023-03-02 12:45:37 +01:00
Siddarth Kumar 0c9a195ca9
Improve QR code Handler mobile side PR (#15168)
* point to the relevant branch on status-go

a9bfed21...6839f458

* update commit-sha1

* bump version to latest status-go
2023-03-01 18:15:49 +05:30
frank b75e1304d8
added param deviceType (#15136) 2023-02-28 21:43:10 +08:00
flexsurfer c667d05929
bump status-go v0.133.2 (#15200) 2023-02-27 17:44:36 +01:00
flexsurfer 80f063d0dd
[#15056] Can't see display/ens/name when mentioning in community (#15085) 2023-02-27 12:51:53 +01:00
Icaro Motta 1806cb792a
Allow users to swipe to delete or swipe to toggle unread notification status (#15106)
Adds support for swiping left/right on some types of notifications. Swiping left
(from left to right) shows a blue button allowing the user to mark the
notification as read/unread. Swiping right (from right to left) shows a red
button, allowing the user to delete the notification for good.

Related PR in status-go https://github.com/status-im/status-go/pull/3201.

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

Technical notes
===============

How's the performance? It feels near native performance in a production release
in a mid-range smartphone. So I'd say it's pretty good, but let me know if you
find any issue.

- I refrained from trying to eliminate all code duplication in this PR. Some
  notifications will behave differently, especially the ones with call to
  action, so I ask you to please take that in consideration when reviewing. See
  https://github.com/status-im/status-mobile/issues/15118
- React Native Gesture Handler has a component named
  [Swipeable](https://docs.swmansion.com/react-native-gesture-handler/docs/api/components/swipeable/).
  I used it instead of writing a monstrosity 👹 of code in
  Reanimated to achieve the same results.
- RN Gesture Handler touchables are the only ones that work with the Swipeable
  component, so I used them and added vars to `react-native.gesture`.
- I had to manually interpolate the translation X of the buttons behind
  notifications because notifications are transparent. To make interpolation
  work with `Swipeable` it's mandatory to use RN `Animated.View` and not
  `Reanimated.View` (see next point).
- `Swipeable` expects us to pass functions that will receive RN
  `AnimatedInterpolation` instances and the rendering lifecycle does not work as
  usual. Hooks didn't trigger as expected, functional Reagent components didn't
  behave as expected, etc. This means `Reanimated.View` and its interpolation
  function is out of question. I did try for almost two days, nothing works.

Testing notes
=============

These are some of the manual tests I ran. There are more scenarios to cover
obviously. Assuming no unread notifications before each flow:

Contact request notification
============================

From the perspective of an user A:

1. Receive a contact request from a non-mutual contact B.
2. Verify the unread count is displayed over the bell icon.
3. Verify the unread count is displayed on the `Messages > Contacts` tab, as
   well as on the AC `Contact requests` tab.
4. Open the AC and before accepting/declining the contact request, check that
   you CAN'T swipe left or right.
5. Accept or decline the contact request.
6. Check the unread indicator disappears in all necessary places.
7. Press on the notification and see if you're redirected to the chat.
8. Go back to the AC and swipe left to mark as `Unread`. Notice that opening the
   chat marks the notification as `Read`. Also very important, notice that the
   `Messages > Contacts` tab will NOT show the *pending contact requests*
   section at the top. This is on purpose, given the notification is unread, but
   the user has already accepted/declined the contact request, hence it's not
   pending.
9. Swipe left againg to mark as `Read`. Check all unread indicators are updated.
10. Swipe right to delete the notification (it won't be displayed ever again).

Admin notification
==================

1. Generate an admin notification, e.g. a community owner receiving a request
   notification to join.
2. Verify the unread count is displayed over the bell icon, as well as the AC
   Admin tab.
3. Verify the community unread indicator is correctly displayed.
4. As an admin, open the AC and before accepting/declining the request, check
   that you CAN'T swipe left or right.
5. Accept or decline the membership request.
6. Check the unread indicator disappears accordingly.
7. Swipe left to mark as `Read`.
8. Swipe left to mark as `Unread`.
9. Swipe right to delete the notification (it won't be displayed ever again).

Mentions & replies
==================

Similar steps outlined for `Admin` notifications, but there's one important
difference. Mention and reply notifications don't require a call to action from
the user, so the user can swipe left/right **without** first having to do
anything on the notification (such as pressing on it). See issue
https://github.com/status-im/status-mobile/issues/15118

What about other types of notifications?
========================================

Swipe gestures for other notification types will be implemented in a separate
PR.
2023-02-24 21:22:31 -03:00
frank 0c96661583
use random tcp port for listen address for node (#15143) 2023-02-22 21:38:27 +08:00
Alexander 1b33aa4988
Outgoing contact requests (#14853)
* First thoughts/ideas

* Showing "Cancel contact request" button

* Fixes

* Restructuring, `retractContactRequest`

* Pending label

* Proper buttons for activity notifications

* New updates

* Returning back `activity-log` `items`

* Last changes in code

* Lint fix

* Lint fix (2)

* Style fixes

* Style fixes

* Code fixes

* Style fixes

* Fixes

1d9d7343...0082f7e9

* Footer update

* Toasts done

* Formatting fix

* Go version update

* Fixes for deletion

* status-go-version.json

* Lint fix

* Fixes

* Lint fix

* status-go version

* status-go version
2023-02-21 22:45:54 +01:00
frank 900688dc15
feat: pass node config/kdf to status-go when local pairing (#15072)
4cc53630...8ff91ba0
2023-02-17 21:40:27 +08:00
Vitaliy Vlasov 995d120d94
Use display-name in profile view
Signed-off-by: Vitaliy Vlasov <siphiuel@protonmail.com>
2023-02-17 11:33:16 +02:00
Andrea Maria Piana ab750c1829
Upgrade status-go to 0.131.4
dea21f44...0b2f0ef2
2023-02-15 12:16:59 +00:00
Andrea Maria Piana feae148ec8
Fix contact updates state recovery
7360e072...dea21f44
2023-02-08 17:49:36 +00:00
Roman Volosovskyi cc348fda99
[#14962] Update AC notification on EditMessage 2023-02-08 16:43:40 +01:00
Roman Volosovskyi c38cb03956
[#14865] Add previews for youtube links with www subdomain 2023-02-02 13:08:37 +01:00
Roman Volosovskyi db417cb3a3
fix compatibility with ConvertToKeycardAccount after recent changes 2023-02-02 12:15:38 +01:00
Omar Basem eed38fe082
Lightbox screen animations (#14954)
* lightbox screen animations
2023-02-02 15:03:59 +04:00
yqrashawn a38ef22ca7
feat: support deleted by xxx (#14768) 2023-02-01 09:17:57 +08:00
Andrea Maria Piana 41124acf4d
[Fixes: #14834] Fix backup of contacts
7e1a894a...cefa0089
2023-01-31 15:45:32 +00:00
Andrea Maria Piana 0fd2783774
Update status-go and temporary fix for keycard 2023-01-30 16:45:23 +00:00
Andrea Maria Piana 6830f98f95
Add support for compressed keys
fc03393e...caf3cc04
2023-01-30 16:11:09 +00:00
Roman Volosovskyi 1654c32ea0
[#14173] Fix incorrect pagination of notifications 2023-01-27 08:53:07 +01:00
Roman Volosovskyi 146e41c8cc
[#14669] Fix re-activation of deleted chat on old contact update 2023-01-25 13:14:53 +01:00
Icaro Motta 206730a777
Show "Added to group chat" notifications (#14785)
Partially implements https://github.com/status-im/status-mobile/issues/14712
Fixes #14744

### Summary

This PR implements the first, among what will probably be many different kinds of membership notifications. For this PR, I started with implementing a particular flow for private group chats because it's already supported by `status-go` (albeit I had to make some changes, see [PR in status-go](https://github.com/status-im/status-go/pull/3088).

1. `A` and `B` are mutual contacts.
2. `A` creates a private group chat with `B` as member.
3. `B` sees the group chat in the app, but doesn't interact with it.
4. `B` reinstalls the app (remember to back up the seed phrase).
5. `A` mentions `B` in the group chat.
6. `B` should see a group chat notification, which can be accepted/declined.

- [x] Also fixes #14744

### Demo

In the video I'm simulating the steps outlined in the *Summary*, but using the approach described in *Steps to test*, because it's way easier to iterate during development.

[demo.webm](https://user-images.githubusercontent.com/46027/212470798-c135d229-948d-4ba5-98db-ee73cc5495cd.webm)

### Review Notes

Some changes had to be made in `status-go` ([PR](https://github.com/status-im/status-go/pull/3088)), namely:

- According to [Figma](https://www.figma.com/file/eDfxTa9IoaCMUy5cLTp0ys/Shell-for-Mobile?node-id=3806%3A586901&t=xLTAjLXjG1UtorpI-0), users should be able to see `accepted` group chat notifications. Until now, `status-go` hardcoded that `accepted` notifications would *not* be returned in query results, and so it would be impossible to show them to users. This was changed and now the RPC endpoint accepts an additional filter. The implementation on the backend is backwards compatible so as to not break Status desktop.
- The `Membership` tab needs to display various types of notifications (group chat, community, etc), but the membership type doesn't exist on the backend. To overcome this constraint, this PR makes the membership type a logical/virtual type, i.e. a Clojure set of types. `status-go` was changed to support querying for multiple notification types (also backwards compatible).

#### Platforms

- Android
- iOS

### Steps to test

Please, follow the steps described in the Summary and you should be able to test.

But during development, I followed these steps (recommended by @cammellos). I documented them here for reference.

1. Checkout `feature/e2e` in status-go. Apply the diff below.
2. `cd cmd/e2e && ./e2e`
3. This will create a temporary account automatically, let's call it `A`.
4. On another device, create account `B`.
5. Follow the steps documented in bdc406ea2e/cmd/e2e/README.md (L2) in order for user `A` to create a group chat with `B` as member. Don't make `A` and `B` mutual contacts.
6. On `B`'s device, a notification should appear, and `B` should be able to accept or decline the "invitation" (actually *invitation* is another concept and related to another feature).

```diff
modified   cmd/e2e/main.go
@@ -283,6 +283,11 @@ func defaultNodeConfig(installationID string) (*params.NodeConfig, error) {
    nodeConfig.NetworkID = 1
    nodeConfig.LogLevel = "ERROR"
    nodeConfig.DataDir = "/ethereum/mainnet_rpc"
+        nodeConfig.HTTPEnabled = true
+        nodeConfig.HTTPPort = 8545
+        nodeConfig.HTTPHost = "localhost"
+        nodeConfig.HTTPVirtualHosts = []string{"localhost"}
+
         nodeConfig.APIModules = "wakuext,ext,waku"

    nodeConfig.UpstreamConfig = params.UpstreamRPCConfig{
modified   protocol/messenger_group_chat.go
@@ -26,17 +26,17 @@ func (m *Messenger) validateAddedGroupMembers(members []string) error {
        }

        contact, _ := m.allContacts.Load(contactID)
-		if contact == nil || !(contact.Added && contact.HasAddedUs) {
-			return ErrGroupChatAddedContacts
-		}
+                if contact == nil {
+                  contact, err = buildContactFromPkString(contactID)
+                  if err != nil {
+                    return err
+                  }
+                }
    }
    return nil
 }

 func (m *Messenger) CreateGroupChatWithMembers(ctx context.Context, name string, members []string) (*MessengerResponse, error) {
-	if err := m.validateAddedGroupMembers(members); err != nil {
-		return nil, err
-	}

    var response MessengerResponse
    logger := m.logger.With(zap.String("site", "CreateGroupChatWithMembers"))
```
2023-01-23 13:54:51 -03:00
Roman Volosovskyi bfdca0fb38
d40290a6...d60c1d00
[#14574] Update chat clock on group event
2023-01-12 18:57:22 +01:00
Parvesh Monu d6159ac269
Persist switcher cards (#14701)
b4bdfd3d...d40290a6
2023-01-05 21:50:09 +05:30
Siddarth Kumar ec15232af8
Make sure mobile understands community share link by Desktop (#14679)
* we are now able to navigate to desktop communities

b4bdfd3d...d2e95eee

In this commit we add support for various status-go methods in mobile :
- `multiformatSerializePublicKey`
- `multiformatDeserializePublicKey`
- `compressPublicKey`
- `decompressPublicKey`
- and my personal favourite `deserializeAndCompressKey`

When someone pastes a community joining share url into chat and taps on it, we check whether the community was generated on a desktop or mobile.
We need to do this because currently both the clients have different urls for joining a community.

Once we have identified that the url is generated via desktop we then convert that url to something that the mobile client is used to.
This enables the mobile client to view this community and interact with it.

However more work needs to be done in the future to ensure that mobile implements these compressed keys end to end, we need to get this feature in so that
by the time RC1 is released mobile client is able to join communities created by Desktop.
2023-01-04 18:24:11 +05:30
flexsurfer 270acefcf1
bump status-go v0.117.1a, fix empty chat (#14596) 2022-12-21 10:47:31 +01:00
Andrea Maria Piana 3e3a365ffb
Enable waku2 by default 2022-12-15 12:39:49 +00:00
yqrashawn bd84a36582
feat: new delete message (#14232) 2022-12-09 15:35:41 +08:00
frank f7af7ca25d
Allow owner/admin to delete messages of a community (#14366) 2022-12-02 20:13:02 +08:00
Roman Volosovskyi e469d97702
[#14372] Fix message content type on editing 2022-11-17 08:23:53 +01:00
Icaro Motta 0f7ccce3df
Implement identity verification flow (#14365) 2022-11-16 16:46:04 -03:00
frank 433f9185c8
Use WakuNodes in ClusterConfig for Waku V2 (#14283) 2022-11-16 00:27:19 +08:00
Andrea Maria Piana 04408af45c
Fix logout & upgrade status-go 2022-11-15 15:17:59 +00:00
Roman Volosovskyi 4353c4a40c
[#14245] Fix read/unread notifications filter 2022-11-14 13:40:20 +01:00
Richard Ramos 0f6022a731 chore: set gowaku build tags for status-go
Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-11-09 18:47:15 +01:00
Ibrahem Khalil 3b69e5873e
Add members key to the chat-preview flow to show count of members on chat preview (#14274) 2022-11-03 12:10:01 +03:00
Omar Basem c423aa7970
Unpin messages (#14204)
* feat: pinned messages new ui
2022-10-26 17:18:50 +04:00
Roman Volosovskyi c017c01c53
[#11335] Use Pokt network as an infura replacement 2022-10-19 17:00:17 +02:00
frank 7ac2e1aa20
replace web3-utils methods usage by status-go (#13940)
Signed-off-by: frank <lovefree103@gmail.com>
2022-10-19 00:05:07 +08:00
Omar Basem 3aaa7e4c4e
feat: edit/delete/reply for emoji/sticker/audio (#13808)
* feat: edit/delete/reply, fixed unnecessary changes
2022-10-18 17:20:27 +04:00
yqrashawn bc050af9ed
feat: delete for me logic without UI (#14007) 2022-10-12 21:21:20 +08:00
Roman Volosovskyi 30e7ad585a
[#14059] Show effective gas price 2022-09-27 20:53:44 +02:00
frank 00a503bf84
Move abi-spec to status-go
6f93913b...a182f3e6
2022-09-17 11:48:07 +01:00
Roman Volosovskyi 3e7f7232fb
[#13933] Fix activity notification delition on message delition 2022-09-16 14:39:38 +02:00
flexsurfer b71853c92a
[#13951] feat: merge favourites in saved addresses #2844 (#13993) 2022-09-13 15:51:31 +02:00
Roman Volosovskyi 3fc5c89865
[#13855] Fix contact request decision status on Sync All 2022-09-09 13:53:47 +02:00
Roman Volosovskyi 8b01a4ac6c
[#13894] Update activity indicator on removed contact request 2022-09-06 20:34:58 +02:00