Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Push notification implementation #1997

Merged
merged 46 commits into from
Jul 27, 2020
Merged

Push notification implementation #1997

merged 46 commits into from
Jul 27, 2020

Conversation

cammellos
Copy link
Contributor

@cammellos cammellos commented Jun 30, 2020

Implements push notification server & client.

The way it is implemented is that any client can just act as a push notification server, so you can run this on your android phone if you wish, as it's just a waku/whisper client.

I have heavily commented the code as the functioning is rather complex, the server is pretty straightforward, while the client is quite complicated.

Is not quite finished, there's still some things to handle and improved, but it's at a stage that is ready to be integrated.

There are full e2e tests of the functionalities in protocol/push_notification_test.go.

I have left the commit split and committed often to ease the review process, it's quite a lot of code unfortunately.

I haven't quite updated the specs with the latest changes, I will do that tomorrow, but most of it is there: https://github.com/status-im/specs/blob/master/docs/raw/push-notification-server.md

UPDATE: specs PR status-im/specs#146

Things that have also changed:

  1. Is possible to send messages with ephemeral keys now
  2. We can install multiple identity keys and receive messages from it
  3. We can optionally skip datasync for some messages
  4. Moved some shared code under common

@cammellos cammellos self-assigned this Jun 30, 2020
@ghost
Copy link

ghost commented Jun 30, 2020

Pull Request Checklist

  • Have you updated the documentation, if impacted (e.g. docs.status.im)?

@status-im-auto
Copy link
Member

status-im-auto commented Jun 30, 2020

Jenkins Builds

Click to see older builds (201)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ ae26923 #1 2020-06-30 07:54:20 ~2 min linux 📦zip
✔️ ae26923 #1 2020-06-30 07:59:14 ~7 min android 📦aar
✔️ ae26923 #1 2020-06-30 08:02:47 ~10 min ios 📦zip
✔️ 03a38fe #2 2020-06-30 08:32:57 ~2 min linux 📦zip
✔️ 03a38fe #2 2020-06-30 08:37:17 ~6 min ios 📦zip
✔️ 03a38fe #2 2020-06-30 08:37:26 ~6 min android 📦aar
✔️ 6a2ce33 #3 2020-06-30 13:16:25 ~1 min linux 📦zip
✔️ 6a2ce33 #3 2020-06-30 13:20:08 ~5 min ios 📦zip
✔️ 6a2ce33 #3 2020-06-30 13:22:16 ~7 min android 📦aar
✔️ 83977c0 #4 2020-06-30 14:57:54 ~2 min linux 📦zip
✔️ 83977c0 #4 2020-06-30 14:58:17 ~3 min ios 📦zip
✔️ 83977c0 #4 2020-06-30 15:01:18 ~6 min android 📦aar
✔️ b66ea03 #5 2020-07-01 08:40:20 ~2 min linux 📦zip
✔️ b66ea03 #5 2020-07-01 08:41:00 ~3 min ios 📦zip
✔️ b66ea03 #5 2020-07-01 08:49:11 ~11 min android 📦aar
✔️ d9c21fa #6 2020-07-01 08:55:32 ~2 min ios 📦zip
✔️ d9c21fa #6 2020-07-01 09:01:17 ~8 min linux 📦zip
✔️ d9c21fa #6 2020-07-01 09:02:23 ~9 min android 📦aar
✔️ 2ebb86f #7 2020-07-01 10:11:41 ~2 min linux 📦zip
✔️ 2ebb86f #7 2020-07-01 10:14:14 ~4 min ios 📦zip
✔️ 2ebb86f #7 2020-07-01 10:15:48 ~6 min android 📦aar
✔️ fddb04d #8 2020-07-01 12:05:51 ~1 min linux 📦zip
✔️ fddb04d #8 2020-07-01 12:06:47 ~2 min ios 📦zip
✔️ fddb04d #8 2020-07-01 12:10:29 ~6 min android 📦aar
b2830b9 #9 2020-07-02 08:08:39 ~30 sec ios 📄log
b2830b9 #9 2020-07-02 08:09:11 ~59 sec linux 📄log
b2830b9 #9 2020-07-02 08:09:52 ~1 min android 📄log
✔️ ccd3234 #10 2020-07-02 08:12:50 ~1 min linux 📦zip
✔️ ccd3234 #10 2020-07-02 08:13:52 ~2 min ios 📦zip
✔️ ccd3234 #10 2020-07-02 08:17:22 ~6 min android 📦aar
✔️ 96bd5d7 #11 2020-07-02 10:50:56 ~2 min linux 📦zip
✔️ 96bd5d7 #11 2020-07-02 10:51:51 ~2 min ios 📦zip
✔️ 96bd5d7 #11 2020-07-02 10:55:02 ~6 min android 📦aar
✔️ 3791c6e #12 2020-07-02 13:59:44 ~2 min linux 📦zip
✔️ 3791c6e #12 2020-07-02 14:00:26 ~2 min ios 📦zip
✔️ 3791c6e #12 2020-07-02 14:04:04 ~6 min android 📦aar
✔️ e2d6334 #13 2020-07-02 14:21:13 ~1 min linux 📦zip
✔️ e2d6334 #13 2020-07-02 14:21:35 ~2 min ios 📦zip
✔️ e2d6334 #13 2020-07-02 14:25:42 ~6 min android 📦aar
6cab662 #14 2020-07-03 08:03:01 ~32 sec ios 📄log
6cab662 #14 2020-07-03 08:03:43 ~1 min linux 📄log
6cab662 #14 2020-07-03 08:04:22 ~1 min android 📄log
✔️ de2e1c2 #15 2020-07-03 08:28:58 ~1 min linux 📦zip
✔️ de2e1c2 #15 2020-07-03 08:29:48 ~2 min ios 📦zip
✔️ de2e1c2 #15 2020-07-03 08:33:44 ~6 min android 📦aar
✔️ cb5cec9 #16 2020-07-03 10:11:16 ~2 min linux 📦zip
✔️ cb5cec9 #16 2020-07-03 10:11:31 ~2 min ios 📦zip
✔️ cb5cec9 #16 2020-07-03 10:15:08 ~6 min android 📦aar
✔️ a093e4f #17 2020-07-06 08:56:36 ~2 min linux 📦zip
✔️ a093e4f #17 2020-07-06 09:00:44 ~6 min android 📦aar
✔️ a093e4f #17 2020-07-06 09:01:36 ~7 min ios 📦zip
✔️ 9bc8f41 #18 2020-07-06 14:18:39 ~2 min linux 📦zip
✔️ 9bc8f41 #18 2020-07-06 14:19:15 ~3 min ios 📦zip
✔️ 9bc8f41 #18 2020-07-06 14:23:08 ~6 min android 📦aar
✔️ 7babf09 #19 2020-07-06 15:15:08 ~1 min linux 📦zip
✔️ 7babf09 #19 2020-07-06 15:16:16 ~2 min ios 📦zip
✔️ 7babf09 #19 2020-07-06 15:23:51 ~10 min android 📦aar
✔️ 6de3557 #20 2020-07-06 15:17:03 ~1 min linux 📦zip
✔️ 6de3557 #20 2020-07-06 15:19:00 ~2 min ios 📦zip
✔️ 6de3557 #20 2020-07-06 15:30:22 ~6 min android 📦aar
✔️ 80670be #21 2020-07-07 09:04:08 ~2 min linux 📦zip
✔️ 80670be #21 2020-07-07 09:05:33 ~3 min ios 📦zip
✔️ 80670be #21 2020-07-07 09:07:55 ~6 min android 📦aar
✔️ 66b414a #22 2020-07-07 13:57:27 ~2 min linux 📦zip
✔️ 66b414a #22 2020-07-07 13:59:43 ~4 min ios 📦zip
✔️ 66b414a #22 2020-07-07 14:02:21 ~7 min android 📦aar
✔️ 28afe38 #23 2020-07-09 16:56:58 ~2 min linux 📦zip
✔️ 28afe38 #23 2020-07-09 16:57:53 ~3 min ios 📦zip
✔️ 28afe38 #23 2020-07-09 17:00:49 ~6 min android 📦aar
✔️ faa1266 #24 2020-07-10 07:50:39 ~3 min linux 📦zip
✔️ faa1266 #24 2020-07-10 07:50:39 ~3 min ios 📦zip
✔️ faa1266 #24 2020-07-10 07:54:43 ~7 min android 📦aar
757b027 #25 2020-07-10 15:12:28 ~24 sec android 📄log
757b027 #25 2020-07-10 15:12:28 ~20 sec linux 📄log
757b027 #25 2020-07-10 15:12:28 ~22 sec ios 📄log
✔️ d289e64 #26 2020-07-10 15:15:46 ~2 min linux 📦zip
✔️ d289e64 #26 2020-07-10 15:16:09 ~2 min ios 📦zip
✔️ d289e64 #26 2020-07-10 15:19:45 ~6 min android 📦aar
✔️ 0b45c70 #27 2020-07-13 08:54:58 ~1 min linux 📦zip
✔️ 0b45c70 #27 2020-07-13 08:55:41 ~2 min ios 📦zip
✔️ 0b45c70 #27 2020-07-13 09:00:53 ~7 min android 📦aar
✔️ 9b7eec8 #28 2020-07-14 14:10:15 ~2 min linux 📦zip
✔️ 9b7eec8 #28 2020-07-14 14:12:54 ~5 min ios 📦zip
✔️ 9b7eec8 #28 2020-07-14 14:14:57 ~7 min android 📦aar
✔️ e1a17b6 #29 2020-07-15 06:33:50 ~2 min linux 📦zip
✔️ e1a17b6 #29 2020-07-15 06:34:28 ~2 min ios 📦zip
✔️ e1a17b6 #29 2020-07-15 06:38:03 ~6 min android 📦aar
✔️ 9933bd5 #30 2020-07-15 07:25:40 ~2 min linux 📦zip
✔️ 9933bd5 #30 2020-07-15 07:26:42 ~3 min ios 📦zip
✔️ 9933bd5 #30 2020-07-15 07:29:38 ~6 min android 📦aar
✔️ 0c51e19 #31 2020-07-15 08:24:36 ~2 min linux 📦zip
✔️ 0c51e19 #31 2020-07-15 08:25:21 ~2 min ios 📦zip
✔️ 0c51e19 #31 2020-07-15 08:29:30 ~6 min android 📦aar
✔️ 2de4509 #32 2020-07-15 10:31:42 ~2 min linux 📦zip
✔️ 2de4509 #32 2020-07-15 10:32:02 ~2 min ios 📦zip
✔️ 2de4509 #32 2020-07-15 10:35:37 ~6 min android 📦aar
✔️ accebb6 #33 2020-07-15 12:26:51 ~1 min linux 📦zip
✔️ accebb6 #33 2020-07-15 12:28:24 ~3 min ios 📦zip
✔️ accebb6 #33 2020-07-15 12:31:10 ~6 min android 📦aar
✔️ c9cb990 #34 2020-07-15 12:45:52 ~2 min linux 📦zip
✔️ c9cb990 #34 2020-07-15 12:46:16 ~3 min ios 📦zip
✔️ c9cb990 #34 2020-07-15 12:49:17 ~6 min android 📦aar
✔️ 707477e #35 2020-07-16 07:47:35 ~1 min linux 📦zip
✔️ 707477e #35 2020-07-16 07:48:20 ~2 min ios 📦zip
✔️ 707477e #35 2020-07-16 07:53:09 ~7 min android 📦aar
1b49065 #36 2020-07-16 08:36:34 ~27 sec ios 📄log
1b49065 #36 2020-07-16 08:37:20 ~1 min linux 📄log
1b49065 #36 2020-07-16 08:37:54 ~1 min android 📄log
✔️ 619ac01 #37 2020-07-16 11:00:45 ~1 min linux 📦zip
✔️ 619ac01 #37 2020-07-16 11:01:46 ~2 min ios 📦zip
✔️ 619ac01 #37 2020-07-16 11:07:13 ~8 min android 📦aar
✔️ 9c4988c #38 2020-07-17 11:44:04 ~2 min linux 📦zip
✔️ 9c4988c #38 2020-07-17 11:44:23 ~2 min ios 📦zip
✔️ 9c4988c #38 2020-07-17 11:48:13 ~6 min android 📦aar
✔️ 551f59e #39 2020-07-17 12:31:42 ~2 min linux 📦zip
✔️ 551f59e #39 2020-07-17 12:32:24 ~2 min ios 📦zip
✔️ 551f59e #39 2020-07-17 12:36:14 ~6 min android 📦aar
✔️ 2cc08f4 #40 2020-07-20 08:08:10 ~1 min linux 📦zip
✔️ 2cc08f4 #40 2020-07-20 08:08:49 ~2 min ios 📦zip
✔️ 2cc08f4 #40 2020-07-20 08:12:09 ~5 min android 📦aar
✔️ 5ae9831 #41 2020-07-20 08:33:50 ~1 min linux 📦zip
✔️ 5ae9831 #41 2020-07-20 08:34:45 ~2 min ios 📦zip
✔️ 5ae9831 #41 2020-07-20 08:37:48 ~6 min android 📦aar
✔️ df6e7c3 #42 2020-07-20 10:03:30 ~1 min linux 📦zip
✔️ df6e7c3 #42 2020-07-20 10:04:18 ~2 min ios 📦zip
✔️ df6e7c3 #42 2020-07-20 10:08:23 ~6 min android 📦aar
✔️ eed28ff #43 2020-07-20 12:48:05 ~1 min linux 📦zip
✔️ eed28ff #43 2020-07-20 12:48:40 ~2 min ios 📦zip
✔️ eed28ff #43 2020-07-20 12:52:15 ~6 min android 📦aar
✔️ 888c205 #44 2020-07-20 14:00:41 ~1 min linux 📦zip
✔️ 888c205 #44 2020-07-20 14:01:22 ~2 min ios 📦zip
✔️ 888c205 #44 2020-07-20 14:04:50 ~6 min android 📦aar
✔️ 17454a3 #45 2020-07-20 14:54:32 ~1 min linux 📦zip
✔️ 17454a3 #45 2020-07-20 14:55:25 ~2 min ios 📦zip
✔️ 17454a3 #45 2020-07-20 14:58:47 ~6 min android 📦aar
✔️ 2d27053 #46 2020-07-21 15:43:25 ~2 min linux 📦zip
✔️ 2d27053 #46 2020-07-21 15:43:43 ~2 min ios 📦zip
✔️ 2d27053 #46 2020-07-21 15:48:32 ~7 min android 📦aar
✔️ b024771 #47 2020-07-22 07:44:27 ~2 min linux 📦zip
✔️ b024771 #47 2020-07-22 07:48:27 ~6 min android 📦aar
b024771 #47 2020-07-22 08:15:28 ~33 min ios 📄log
✔️ a5f730e #48 2020-07-22 08:46:59 ~1 min linux 📦zip
✔️ a5f730e #48 2020-07-22 08:47:53 ~2 min ios 📦zip
✔️ a5f730e #48 2020-07-22 08:52:54 ~7 min android 📦aar
✔️ 162137f #49 2020-07-22 08:55:26 ~1 min linux 📦zip
✔️ 162137f #49 2020-07-22 08:56:42 ~2 min ios 📦zip
✔️ 162137f #49 2020-07-22 08:59:47 ~5 min android 📦aar
✔️ 6972e7a #50 2020-07-22 10:10:30 ~1 min linux 📦zip
✔️ 6972e7a #50 2020-07-22 10:11:33 ~2 min ios 📦zip
✔️ 6972e7a #50 2020-07-22 10:15:20 ~6 min android 📦aar
✔️ b49f0c4 #51 2020-07-22 10:12:06 ~1 min linux 📦zip
✔️ b49f0c4 #51 2020-07-22 10:14:04 ~2 min ios 📦zip
✔️ b49f0c4 #51 2020-07-22 10:21:26 ~6 min android 📦aar
✔️ 45a5fe4 #52 2020-07-22 10:24:12 ~2 min linux 📦zip
✔️ 45a5fe4 #52 2020-07-22 10:24:37 ~2 min ios 📦zip
✔️ 45a5fe4 #52 2020-07-22 10:28:51 ~6 min android 📦aar
✔️ 90a225e #53 2020-07-22 10:37:55 ~1 min linux 📦zip
✔️ 90a225e #53 2020-07-22 10:38:40 ~2 min ios 📦zip
✔️ 90a225e #53 2020-07-22 10:42:26 ~6 min android 📦aar
✔️ aa43eb1 #54 2020-07-22 13:04:05 ~1 min linux 📦zip
✔️ aa43eb1 #54 2020-07-22 13:04:45 ~2 min ios 📦zip
✔️ aa43eb1 #54 2020-07-22 13:07:57 ~5 min android 📦aar
✔️ e76a70d #55 2020-07-22 14:09:28 ~1 min linux 📦zip
✔️ e76a70d #55 2020-07-22 14:10:43 ~2 min ios 📦zip
✔️ e76a70d #55 2020-07-22 14:14:33 ~6 min android 📦aar
✔️ bc62c68 #56 2020-07-22 14:16:29 ~1 min linux 📦zip
✔️ bc62c68 #56 2020-07-22 14:17:23 ~2 min ios 📦zip
✔️ bc62c68 #56 2020-07-22 14:21:21 ~6 min android 📦aar
✔️ dc2d354 #57 2020-07-22 14:35:27 ~2 min linux 📦zip
✔️ dc2d354 #57 2020-07-22 14:35:39 ~2 min ios 📦zip
✔️ dc2d354 #57 2020-07-22 14:39:17 ~6 min android 📦aar
✔️ 5ca2c39 #58 2020-07-23 11:42:46 ~1 min linux 📦zip
✔️ 5ca2c39 #58 2020-07-23 11:43:40 ~2 min ios 📦zip
✔️ 5ca2c39 #58 2020-07-23 11:46:19 ~5 min android 📦aar
✔️ 08dc687 #59 2020-07-23 13:11:56 ~1 min linux 📦zip
✔️ 08dc687 #59 2020-07-23 13:12:56 ~2 min ios 📦zip
✔️ 08dc687 #59 2020-07-23 13:14:55 ~4 min android 📦aar
✔️ d54bb2f #60 2020-07-24 09:32:02 ~1 min linux 📦zip
✔️ d54bb2f #60 2020-07-24 09:33:03 ~2 min ios 📦zip
✔️ d54bb2f #60 2020-07-24 09:35:25 ~5 min android 📦aar
✔️ c8322b3 #61 2020-07-24 09:37:29 ~1 min linux 📦zip
✔️ c8322b3 #61 2020-07-24 09:38:22 ~2 min ios 📦zip
✔️ c8322b3 #61 2020-07-24 09:40:35 ~4 min android 📦aar
✔️ cbf6ef8 #62 2020-07-24 10:36:17 ~1 min linux 📦zip
✔️ cbf6ef8 #62 2020-07-24 10:37:06 ~2 min ios 📦zip
✔️ cbf6ef8 #62 2020-07-24 10:40:42 ~6 min android 📦aar
✔️ b514b44 #63 2020-07-24 11:46:38 ~2 min ios 📦zip
✔️ b514b44 #63 2020-07-24 11:47:01 ~2 min linux 📦zip
✔️ b514b44 #63 2020-07-24 11:49:19 ~5 min android 📦aar
✔️ 0b4b507 #64 2020-07-24 13:12:04 ~1 min linux 📦zip
✔️ 0b4b507 #64 2020-07-24 13:12:58 ~2 min ios 📦zip
✔️ 0b4b507 #64 2020-07-24 13:15:26 ~5 min android 📦aar
✔️ ef9fb43 #65 2020-07-24 13:32:52 ~1 min linux 📦zip
✔️ ef9fb43 #65 2020-07-24 13:33:51 ~2 min ios 📦zip
✔️ ef9fb43 #65 2020-07-24 13:36:13 ~4 min android 📦aar
✔️ 4b8739a #66 2020-07-27 06:53:47 ~1 min linux 📦zip
✔️ 4b8739a #66 2020-07-27 06:54:21 ~2 min ios 📦zip
✔️ 4b8739a #66 2020-07-27 06:57:14 ~5 min android 📦aar
✔️ 4ed8251 #67 2020-07-27 06:56:40 ~1 min linux 📦zip
✔️ 4ed8251 #67 2020-07-27 06:57:32 ~2 min ios 📦zip
✔️ 4ed8251 #67 2020-07-27 07:02:16 ~4 min android 📦aar
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 54ce2c0 #68 2020-07-27 07:32:32 ~1 min linux 📦zip
✔️ 54ce2c0 #68 2020-07-27 07:33:02 ~2 min ios 📦zip
✔️ 54ce2c0 #68 2020-07-27 07:37:04 ~6 min android 📦aar
✔️ c61bf0c #69 2020-07-27 08:41:26 ~2 min linux 📦zip
✔️ c61bf0c #69 2020-07-27 08:41:50 ~2 min ios 📦zip
✔️ c61bf0c #69 2020-07-27 08:44:58 ~5 min android 📦aar

@cammellos cammellos force-pushed the feature/mute-chats-2 branch from b2830b9 to ccd3234 Compare July 2, 2020 08:11
@cammellos cammellos force-pushed the feature/mute-chats-2 branch 4 times, most recently from faa1266 to 757b027 Compare July 10, 2020 15:11
@cammellos cammellos force-pushed the feature/mute-chats-2 branch from 1b49065 to 619ac01 Compare July 16, 2020 10:58
@cammellos cammellos force-pushed the feature/mute-chats-2 branch 2 times, most recently from b49f0c4 to 45a5fe4 Compare July 22, 2020 10:21
@cammellos cammellos requested review from jakubgs and Samyoul July 22, 2020 14:19
@cammellos cammellos marked this pull request as ready for review July 22, 2020 14:19
@cammellos cammellos requested a review from andremedeiros July 22, 2020 15:24
@cammellos
Copy link
Contributor Author

@Samyoul @jakubgs @andremedeiros I have updated the specs to the latest changes status-im/specs#146

@cammellos cammellos force-pushed the feature/mute-chats-2 branch from 5ca2c39 to 08dc687 Compare July 23, 2020 13:10
Copy link
Contributor

@andremedeiros andremedeiros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing job! 👏

I have a couple of comments around minor things, but super happy to see this shipping!

PreviewPrivacy bool `json:"preview-privacy?"`
PublicKey string `json:"public-key"`
// PushNotificationServerEnabled indicates whether we should be running a push notification server
PushNotificationsServerEnabled bool `json:"push-notifications-server-enabled,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not being consistent on how we name boolean fields. See above with notifications-enabled?. Can we decide on one and stay consistent?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should rename everything to camelCase, as now there's also desktop and these are all clojurisms, but I will make it consistent for now

ctx context.Context,
recipient *ecdsa.PublicKey,
rawMessage *RawMessage,
) ([]byte, error) {
p.logger.Debug(
"sending a private message",
zap.Binary("public-key", crypto.FromECDSAPub(recipient)),
zap.String("public-key", types.EncodeHex(crypto.FromECDSAPub(recipient))),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏

// Currently we don't support sending through datasync and setting custom waku fields,
// as the datasync interface is not rich enough to propagate that information, so we
// would have to add some complexity to handle this.
if rawMessage.ResendAutomatically && (rawMessage.Sender != nil || rawMessage.SkipEncryption) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we check for p.features.Datasync here too?

ctx context.Context,
recipient *ecdsa.PublicKey,
rawMessage *RawMessage,
) ([]byte, error) {
p.logger.Debug("sending private message", zap.Binary("recipient", crypto.FromECDSAPub(recipient)))
p.logger.Debug("sending private message", zap.String("recipient", types.EncodeHex(crypto.FromECDSAPub(recipient))))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏

err := message.HandleEncryption(decryptionKey, publicKey, p.protocol, skipNegotiation)

// if it's an ephemeral key, we don't have to handle a device not found error
if err == encryption.ErrDeviceNotFound && !skipNegotiation {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm having a hard time seeing where this error comes from. In fact, this method only returns wrapped errors, which leads me to believe that the left condition would never evaluate to true.

@cammellos cammellos force-pushed the feature/mute-chats-2 branch 3 times, most recently from cbf6ef8 to b514b44 Compare July 24, 2020 11:44
@cammellos cammellos force-pushed the feature/mute-chats-2 branch from ef9fb43 to 4b8739a Compare July 27, 2020 06:51
@cammellos
Copy link
Contributor Author

I will be moving to work on emojii reactions, I will merge this and address the feedback in a separate PR.

@cammellos cammellos force-pushed the feature/mute-chats-2 branch 2 times, most recently from 54ce2c0 to c61bf0c Compare July 27, 2020 08:39
@cammellos cammellos merged commit 717ed3e into develop Jul 27, 2020
@cammellos cammellos deleted the feature/mute-chats-2 branch July 27, 2020 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants