Commit graph

416 commits

Author SHA1 Message Date
Tulir Asokan 0665c74cce Merge incoming receipt and message channels
Otherwise receipts after downtime might be handled before the messages
those receipts point at.
2022-05-02 15:35:50 +03:00
Tulir Asokan bf2eb84abb Update error message if media retry fails 2022-05-02 15:29:02 +03:00
Tulir Asokan 4bc4e92877 Remove media backfill queue and just request immediately 2022-05-02 15:00:57 +03:00
Tulir Asokan 387148849a Update mautrix-go again 2022-04-27 23:48:55 +03:00
Sumner Evans 2259b5007f
Merge pull request #483 from mautrix/sumner/bri-3038
backfill: skip chats if the user is not a participant
2022-04-27 08:32:35 -06:00
Sumner Evans caf0a363c9
backfill: delete messages for rooms the user is not in
If the chat turns out to be not bridgable due to the user not being in
the room, delete the messages, and stop trying to backfill it.
2022-04-27 08:29:20 -06:00
Tulir Asokan 0b036204ca Update dependencies and reduce memory usage when encryping files 2022-04-27 14:31:57 +03:00
Sumner Evans 2afdf80937
backfill: don't create room if the user is not a participant
This can happen if the user gets kicked from a chat.
2022-04-26 12:10:30 -06:00
Sumner Evans f32c5f2e9a
backfill: fix priority of backfills again
I think this finally has the correct logic for doing each stage for each
portal before going on to the next stage.
2022-04-23 21:50:47 -06:00
Sumner Evans 7772b7e15c
Merge pull request #479 from mautrix/fix-media-fail-error
improve error when media is not present on WA servers
2022-04-22 11:52:36 -06:00
Sumner Evans 159ece3e64
improve error when media is not present on WA servers 2022-04-22 11:49:50 -06:00
Tulir Asokan 3f8d6942d2 Store disappearing timer when creating portal 2022-04-22 16:45:30 +03:00
Sumner Evans f2e762680c
media backfill: add ability to automatically request media not on WA server
This adds a new backfill type for media that sends a request to the
phone for every media that is not available on the WA servers. WA
deletes media from their servers after about two weeks, so you have to
ask the phone to re-upload it.

In order to use this, you need to enable
bridge.history_sync.backfill_media and configure the requests that will
be made per portal using bridge.history_sync.media (which is similar to
the deferred backfill config).

If you already have backfilled portals, but want to do a one-off media
backfill for all existing portals, you can set
bridge.history_sync.enqueue_backfill_media_next_start to true.
2022-04-19 08:12:51 -06:00
Sumner Evans 7a77b1976c
reactions: send checkpoints for matrix reactions (#472) 2022-04-18 11:14:43 +03:00
Sumner Evans 37b8065db5
Merge pull request #461 from mautrix/sumner/bri-2227
history sync: implement prioritized backfill
2022-04-07 09:28:25 -06:00
Tulir Asokan d4318d54a4 Add missing return 2022-04-07 10:48:36 +03:00
Sumner Evans 83d397900f
media: add better error when media couldn't be retrieved due to WA deleting it from their servers 2022-04-05 15:35:02 -06:00
Sumner Evans 8a49fea812
backfill: backfill conversation when started
This applies to when the conversation is started via the provisioning
API (start new chat) or when a new message comes in to that portal.
2022-03-29 23:40:22 -06:00
Tulir Asokan f79ca422e8 Add option to use async media uploads
https://github.com/matrix-org/matrix-spec-proposals/pull/2246
2022-03-21 21:08:48 +02:00
Tulir Asokan 3a6c314878 Normalize variation selectors in emojis in both directions
Remove for WhatsApp, add for Matrix
2022-03-18 01:12:25 +02:00
Tulir Asokan 973f80d7a7 Fix accepting group invites in encrypted rooms 2022-03-14 13:15:52 +02:00
Tulir Asokan c82a96dccc Handle incoming reaction removals 2022-03-12 19:47:47 +02:00
Tulir Asokan 031d712905 Update whatsmeow 2022-03-09 16:44:25 +02:00
Tulir Asokan 1eb210c249 Add support for bridging reactions 2022-03-05 21:22:31 +02:00
Tulir Asokan 8da6e14bf8
Merge pull request #452 from abmantis/presence_on_typing
Send presence when typing changes
2022-03-01 20:27:28 +02:00
Tulir Asokan 3479e1ccfc Avoid division by zero 2022-02-28 21:41:44 +02:00
abmantis 50a6e383e7 Send presence when typing changes 2022-02-26 22:47:19 +00:00
Tulir Asokan 77bef42ace Use dynamic multiplier when bridging waveform 2022-02-21 14:34:20 +02:00
Tulir Asokan b389354bcc Send blank protocol message if phone is offline for too long 2022-02-18 12:12:15 +02:00
Tulir Asokan 1a1fd68812 Improve connection error handling 2022-02-17 14:09:40 +02:00
Tulir Asokan e215850fcf Get displayname when converting mentions of Matrix users. Fixes #338 2022-02-16 01:00:49 +02:00
Tulir Asokan 10a7c781e6 Add support for asking homeserver for URL previews 2022-02-15 16:28:20 +02:00
Tulir Asokan d257c80327 Only clear custom keys for encrypted events 2022-02-15 13:36:44 +02:00
Tulir Asokan eee404c62d Fix formatting not being parsed in incoming messages 2022-02-15 13:15:41 +02:00
Tulir Asokan 7aab7870fa Move custom keys to m.new_content in media retry handler 2022-02-10 19:56:30 +02:00
Tulir Asokan 1fbbe7fa06 Remove unused gob register 2022-02-10 19:50:49 +02:00
Tulir Asokan 9a9414db34 Add some extra metadata for gifs 2022-02-10 19:26:16 +02:00
Tulir Asokan 528fbda53f Add initial support for requesting media retries from phone 2022-02-10 19:18:49 +02:00
Tulir Asokan 7ae5791aa3 Bridge audio message waveforms in both directions 2022-02-10 12:50:04 +02:00
Tulir Asokan 94e880c2cc Add support for setting group avatar from Matrix 2022-02-10 12:46:25 +02:00
Sumner Evans b6352c4991
link previews: only include in Matrix event when there's an actual link 2022-02-06 22:30:00 -07:00
Sumner Evans 711548c0ba
link previews: update to support a list
Uses com.beeper.linkpreviews instead of com.beeper.linkpreview
2022-02-04 18:17:01 -07:00
Tulir Asokan d4334f5df8 Clean up embedded link preview code 2022-02-04 22:19:55 +02:00
Adam Van Ymeren 779e591e60 fix formatting 2022-02-04 06:56:32 +00:00
Adam Van Ymeren 3ab04e65c8 Add support for bridging embedded link previews
Uses experimental com.beeper.linkpreview content extension
2022-02-04 04:02:03 +00:00
Tulir Asokan 9e39ce565b Move read receipt handling to portal loop
This ensures that read receipts are only handled after the message
they're pointing at, even if the read receipt is sent immediately
(e.g. when the user has WhatsApp open on their phone).
2022-01-19 14:18:34 +02:00
Tulir Asokan f151dc4e9e Fix wrong log message 2022-01-19 14:13:06 +02:00
Tulir Asokan a093b7f157 Remove redundant double-inviting of users 2022-01-17 16:26:26 +02:00
Tulir Asokan abdfcdc8a6 Handle incoming Matrix messages as implicit read receipts 2022-01-17 12:00:02 +02:00
Tulir Asokan c4a7943775 Add logs to debug read receipts 2022-01-17 10:38:44 +02:00
Tulir Asokan b3e0d7afbb Reject ghost user invites from non-logged-in users 2022-01-15 13:59:20 +02:00
Tulir Asokan 7f636e6aef Update whatsmeow to read group disappearing message timer 2022-01-07 15:05:09 +02:00
Tulir Asokan 18ea5af45e Add support for disappearing messages 2022-01-07 14:32:00 +02:00
Tulir Asokan a6adf61417 Ignore file length mismatches again 2022-01-05 22:10:10 +02:00
Sumner Evans a0a1c0fd45
voice messages: bridge from WhatsApp to native Matrix voice messages
Co-authored-by: Tulir Asokan <tulir@maunium.net>
2022-01-04 10:54:22 -07:00
Tulir Asokan 6a9d5714c0 Log unsupported message type instead of content. Closes #419 2022-01-04 15:21:55 +02:00
Tulir Asokan e2b0879f16 Add support for multi-contact messages 2022-01-03 16:11:39 +02:00
Tulir Asokan 7e5c2769c6 Clean up personal filtering space support 2021-12-29 21:40:08 +02:00
Helder Ferreira 3ec67ed434
make the bridge homeserver the default on via key space state 2021-12-29 14:25:12 +00:00
Helder Ferreira 727b11e7ef
add newly created channels to the space
Co-authored-by: clmnin <clament.john.k@gmail.com>
2021-12-29 08:37:41 +00:00
Tulir Asokan 7b5764919a Add some sanity overrides for mime -> extension mapping 2021-12-25 22:40:10 +02:00
Tulir Asokan ca5fcc42ba Reroute broadcast list messages to correct DM portal. Fixes #411 2021-12-25 20:50:36 +02:00
Sumner Evans ef24e20902
checkpoints: send UNSUPPORTED for broadcast list unsupported 2021-12-21 13:40:08 -07:00
Sumner Evans cb3a9a381c
Merge pull request #408 from mautrix/double-puppeting-key-for-redactions
double puppeting: add flag to redaction events
2021-12-16 09:21:03 -07:00
Sumner Evans 76530f5774
double puppeting: add flag to redaction events 2021-12-16 09:06:51 -07:00
Tulir Asokan 0d977bc610 Don't send read receipts for fake JIDs 2021-12-16 10:38:12 +02:00
Tulir Asokan c2520c14db Create portals for incoming undecryptable messages
They might not be actual chat messages, but if we don't create a portal,
the user has no indication that something might have went wrong.
2021-12-16 10:38:12 +02:00
Tulir Asokan 5e2b54f97e Add constant for double puppet value 2021-12-15 13:51:20 +02:00
Sumner Evans c15b963748
double puppeting: use fi.mau.double_puppet_source 2021-12-15 02:51:26 -07:00
Tulir Asokan e38b0bf545 Use channel for Matrix events to prevent concurrent sending to WhatsApp 2021-12-14 17:47:30 +02:00
Tulir Asokan be05d7d4a9 Pass through media dimensions from WhatsApp 2021-12-09 19:20:52 +02:00
Tulir Asokan 9dc1b7911f Fix relay check in DMs 2021-12-09 15:32:11 +02:00
Tulir Asokan 86cb0f221e Fix some logs 2021-12-08 16:00:01 +02:00
Tulir Asokan 0106c5ccf2 Merge remote-tracking branch 'origin/checkpoint-retry-num' 2021-12-07 16:13:48 +02:00
Tulir Asokan 1d8ef6cb89 Add support for MSC2409 2021-12-07 16:02:51 +02:00
Tulir Asokan 00d16bea19 Add notification for live location messages. Fixes #403 2021-12-07 14:51:56 +02:00
Sumner Evans ed2bb3ac5f
checkpoints: send retry_num 2021-12-03 17:50:55 -07:00
Tulir Asokan 7bb629d199 Fix Matrix read receipt handling too 2021-12-01 21:14:37 +02:00
Tulir Asokan a909750dcc Mark all messages as read instead of only last one 2021-11-30 16:38:37 +02:00
Tulir Asokan 04ab823a4d Fix some things 2021-11-30 15:27:15 +02:00
Tulir Asokan 0a8cc8fd39 Add checkpoints for ignored redactions. Closes #399 2021-11-30 12:11:23 +02:00
Tulir Asokan a61ef492cf Fix status broadcast check accidentally muting all chats 2021-11-22 11:03:09 +02:00
Sumner Evans 139a0bd679
Send checkpoints using new API and send DECRYPTED step checkpoints 2021-11-18 08:46:14 -07:00
Sumner Evans 52f09001a7
portal: send checkpoint for matrix messages 2021-11-18 08:46:14 -07:00
Tulir Asokan 91de4fe70e Make proper thumbnails for images when sending to WhatsApp 2021-11-11 20:33:22 +02:00
Tulir Asokan a8beec8754 Handle identity changes properly. Fixes #384 2021-11-09 17:49:34 +02:00
Tulir Asokan 445da09e1d Simplify reaction error notices 2021-11-09 15:26:37 +02:00
abmantis b652281682 Send portal notice on reactions
Closes #373
2021-11-09 15:23:55 +02:00
Tulir Asokan f5ae637ffd Resync all puppets after app state sync completes 2021-11-08 13:04:39 +02:00
Tulir Asokan 19104d857b Remove unused variable and fix formatting 2021-11-06 21:30:27 +02:00
Tulir Asokan ea045160a2 Never return nil in IntentFor(). Fixes #379 2021-11-06 14:20:56 +02:00
Tulir Asokan 64db9c9c9b Fix displayname not being html-escaped in relay mode templates 2021-11-05 20:08:49 +02:00
Tulir Asokan 433aaf3829 Reimplement more things 2021-11-05 12:17:56 +02:00
Tulir Asokan 7e20452783 Move all SetReply calls to one place 2021-11-05 11:47:51 +02:00
Tulir Asokan 752aff48f1 Prioritize backfilling recent messages and fix some bugs 2021-11-03 21:34:06 +02:00
Tulir Asokan c42f2123fb Use bridge info content struct from mautrix-go 2021-11-03 20:41:34 +02:00
Tulir Asokan 2d90295488 Use partial info from history sync if latest group info not found 2021-11-03 14:43:53 +02:00
Tulir Asokan ab4f16328e Send a dummy event for initial history backfill too 2021-11-02 19:09:52 +02:00
Tulir Asokan e0d79f2de1 Re-add call start notices 2021-11-02 15:46:31 +02:00
Tulir Asokan 7218f9ad76 Adjust logic for adding members in backfill 2021-11-02 12:28:53 +02:00
Tulir Asokan 9994a04f79 Allow redacting through relaybot. Fixes #298 2021-11-01 16:46:03 +02:00
Tulir Asokan dd50379c3a Fix participant ID in replies and update comment 2021-11-01 16:29:13 +02:00
Tulir Asokan 4ac445a868 Fix checking if message contains interesting things 2021-11-01 15:30:56 +02:00
Tulir Asokan ce8a29b46f Update whatsmeow. Fixes #365 2021-11-01 13:03:09 +02:00
Tulir Asokan 345244fedb Reimplement open command 2021-11-01 11:28:52 +02:00
Tulir Asokan baf2482c3a Store server timestamp of outgoing messages in db 2021-11-01 11:21:38 +02:00
Tulir Asokan 2bcc15cb47 Don't log warnings for unhandled messages with no human-readable content 2021-11-01 11:21:38 +02:00
Sumner Evans 96cf814848
Add option to disable federation on portal rooms (#362) 2021-11-01 11:17:44 +02:00
Tulir Asokan 79f51af06e Improve invite message text 2021-10-31 20:47:30 +02:00
Tulir Asokan 630095e28a Add support for group invite messages 2021-10-31 20:42:53 +02:00
Tulir Asokan 1e5d5c1a3e Implement joining groups and checking invite links 2021-10-31 19:59:30 +02:00
Tulir Asokan dc9e08d39f Stop using ioutil 2021-10-31 13:30:19 +02:00
Tulir Asokan 4f11d41a60 Fix bug in bridging captions 2021-10-30 19:17:10 +03:00
Tulir Asokan 2b2f1abd85 Improve unhandled message log 2021-10-30 14:47:46 +03:00
Tulir Asokan 3d384a6db7 Clean up and fix some things 2021-10-29 16:50:29 +03:00
Tulir Asokan bb9a0f6528 Make relay mode more like the Signal bridge 2021-10-28 13:57:15 +03:00
Tulir Asokan 149e9bc8af Implement WhatsApp->Matrix group info updates 2021-10-28 12:59:22 +03:00
Tulir Asokan 1ad17048cc Add better logs for Matrix redaction handling 2021-10-27 21:34:22 +03:00
Tulir Asokan 0784132649 Fix choosing intent to handle redaction 2021-10-27 21:09:36 +03:00
Tulir Asokan 92c9ec6203 Remove some commented code and add note about future code to remove 2021-10-27 19:48:14 +03:00
Tulir Asokan 43922cf09e Pre-render markdown for undecryptable message notice 2021-10-27 18:44:17 +03:00
Tulir Asokan b918b4f261 Handle decryption errors from WhatsApp properly 2021-10-27 18:31:33 +03:00
Tulir Asokan b874d324eb Send dummy event after backfill
This is necessary in case there aren't any real messages before the next
backfill. Otherwise the next backfill would go before the old backfill
(at the top of the room) rather than at the bottom of the room.
2021-10-26 21:30:44 +03:00
Tulir Asokan 0b4d0bbbe1 Handle history sync payloads with MSC2716 batch sending 2021-10-26 17:01:10 +03:00
Tulir Asokan b45e6b29f5 Fix panic and double puppeting 2021-10-25 18:31:37 +03:00
Tulir Asokan 56850bb698 Initial switch to go.mau.fi/whatsmeow 2021-10-22 20:14:34 +03:00
Alexandar Mechev 9ca18ea548
Convert webp images to png when sending to WhatsApp (#346)
WhatsApp doesn't seem to like webp images
2021-10-06 21:11:37 +03:00
Tulir Asokan da9fadb009 Add comment 2021-08-19 19:20:11 +03:00
Tulir Asokan b3312bc663 Always use blank content for replies
It seems to work fine on the iOS, Android and Web versions of WhatsApp,
so let's save the two LoadMessages calls.
2021-08-19 19:17:46 +03:00
Tulir Asokan 4fe179d0d7 Remove content from message table. Fixes #320 2021-08-19 19:17:19 +03:00
Tulir Asokan 52484dc992 Add flag to invite events that will be auto-accepted 2021-08-18 16:24:13 +03:00
Tulir Asokan 039059df45 Ignore WhatsApp file length and hash mismatches 2021-08-06 01:33:17 +03:00
Tulir Asokan f1dd496a2d Add support for Matrix->WhatsApp location messages 2021-08-04 10:56:55 +03:00
Tulir Asokan e2acab694c Fix handling gifs in stickers 2021-07-23 22:44:35 +03:00
Tulir Asokan e78dda0883 Move UserTyping calls to sendMessage 2021-07-07 15:11:00 +03:00
Tulir Asokan e926d0175e Track WhatsApp message age and processing duration 2021-06-25 15:33:46 +03:00
Tulir Asokan 3eb5f44023 Add support for slightly older voice message identifier 2021-06-23 13:23:00 +03:00
Tulir Asokan b66f37e373 Add ptt flag when sending MSC3245 voice messages to WhatsApp 2021-06-22 20:33:30 +03:00
Tulir Asokan 252d645fea Fix bridging audio/video duration from/to WhatsApp 2021-06-22 20:05:02 +03:00
Tulir Asokan bd207df82d Store last message MXID in database for multipart messages 2021-06-22 12:35:38 +03:00
Tulir Asokan 4b80c15a0a Add some logs and increase timestamp difference for short-circuiting deduplication 2021-06-21 13:53:08 +03:00
Tulir Asokan 30ddd788ae Don't stop message processing loop if room creation fails 2021-06-19 02:22:21 +03:00
Tulir Asokan bc7a82c0be Use mutex for accessing go-whatsapp contacts and chats maps 2021-06-19 02:22:01 +03:00
Tulir Asokan b5c3e8abcb Make sure puppet has displayname set when sending message 2021-06-15 12:34:55 +03:00
Tulir Asokan d4b7595b6e Add better error messages for some send errors 2021-06-15 12:07:31 +03:00
Tulir Asokan 1a23bfda30 Log type of message when starting handling 2021-06-10 16:29:20 +03:00
Tulir Asokan 06b84c4bb9 Add option to disable status bridging. Fixes #166 2021-06-01 15:28:15 +03:00
Tulir Asokan 80b534323f Try to fix false positive send error on whatsapp mobile 2021-06-01 13:32:14 +03:00
Tulir Asokan 7c16eb8c53 Get last message timestamp from database when checking if message is too old 2021-05-12 13:39:24 +03:00
Tulir Asokan 2742d90299 Add option to only bridge mute status and tags when creating portal 2021-04-29 11:57:05 +03:00