Commit Graph

130 Commits

Author SHA1 Message Date
2c026939c3 Minor formatting fixes 2021-06-17 23:59:25 -04:00
f05a91e95d Better checks for chat messages to appear
- Re-click on a chat item if one click didn't work for some reason
- Wait long for a single message to appear, but stop early when found
- After single message found, wait less for more changes
2021-06-17 23:55:19 -04:00
40a48d12a2 Don't view groups/rooms when possible, via MSC2409
Use the sidebar to sync non-DM messages, just like what's done for DM
messages.

However, since sidebar messages don't say who sent a message, this
requires scanning read receipts with MSC2409: when a non-DM sidebar
message is seen, the bridge bot sends that message. Only when that
placeholder is viewed in Matrix does Puppeteer actually view the non-DM
chat to find who really sent the message. Then the bridgebot redacts its
message, and the message gets re-sent by the puppet of the LINE user who
really sent it.
2021-06-17 23:32:45 -04:00
1ae30bcf1b Use read receipts to know when to sync media
Instead of having to view a LINE chat when a media message is sent, send
a placeholder message that gets replaced with the actual media when it's
viewed in Matrix.
2021-06-17 00:42:06 -04:00
a3e7caac27 Merge branch 'master' into better-receipts-msc2409 2021-06-16 22:14:26 -04:00
ee5ccf9b2f Attempt to wait for chat messages to appear
When opening a chat (like during a sync or in response to a new message
notification), the message list loads lazily, so not waiting for all
items to load can cause messages to be missed.

However, there doesn't seem to be any indicator for when a message list
has been fully loaded...

As a best effort attempt, simply wait until no new updates to the
message list have been seen for a while.
2021-06-16 02:27:27 -04:00
555b19c289 Always use LINE puppet for own messages
...that are sent from another client.

Also look up the profile data for the user's LINE account on sync,
including at startup, so that there's always a puppet available.
2021-06-15 02:55:55 -04:00
0d154c826e Fix outbound message sending
The message text input field in LINE chats doesn't play nice with
Puppeteer's "type" function for live-typing text...

It's a div instead of a text input, and uses innerText instead of value.
Setting its innerText directly seems to work best, so just use that.
2021-06-14 01:54:24 -04:00
8fb0e2a101 Add missing await
And a safer null check
2021-06-14 01:53:26 -04:00
33ca6223c5 Use MSC2409 to send outgoing read receipts
When a message is viewed in Matrix, make Puppeteer view its LINE chat
2021-06-11 02:53:30 -04:00
85dc7a842e Don't view LINE DMs whenever possible
Use the sidebar to sync DM messages instead of visiting the DM itself,
so as to not make LINE (and your contact) think you really read the DM.

This cannot be done for non-text messages (which are not previwable in
the sidebar) and non-DM chats (whose sidebar messages don't say who sent
a message).
2021-06-10 02:54:12 -04:00
0d849cf2bb JSON stringify objects before logging them
Because Eclipse/Wild Web Developer messes them up
2021-06-10 02:52:25 -04:00
e37a7c41bf Minor formatting changes 2021-06-10 02:52:13 -04:00
1cf840e3d9 maunium -> miscworks 2021-06-10 02:51:23 -04:00
02cc6ce0e4 Add missing await 2021-06-10 02:19:24 -04:00
d8b209b04f Send delivery receipts for double-puppeted messages 2021-06-10 02:19:12 -04:00
1fffbc625c Update roadmap 2021-06-08 01:08:18 -04:00
c5eea7b50b Fix crash when logging in after a forced logout
Also tidy up bridge notices during the login flow
2021-06-08 00:24:00 -04:00
3286d7e6e2 Invite only on direct chat 2021-06-07 10:05:36 +09:00
9270761b20 Missing invite for bridgebot
Most evident at room creation, but more might need to be added
2021-06-07 10:05:36 +09:00
9d1d6e379c Support LINE users with no discoverable ID
AKA "strangers". Should only happen to non-friends in rooms (not groups!)
2021-06-06 18:24:44 -04:00
ec14b90711 Allow syncing pathless avatar images
But only if a path wasn't yet found for that image
2021-06-06 18:24:42 -04:00
14de373787 Startup fixes 2021-06-06 18:24:42 -04:00
54507f8aaf Catch getting logged out
Happens when logging into Line on Chrome somewhere else
2021-06-06 18:24:34 -04:00
34ea2021ec Attempt to respect bridge.initial_conversation_sync
But probably doing it wrong
2021-06-06 18:21:32 -04:00
27fda19567 Allow enabling encryption after room creation
Also forbid reactions
2021-06-06 18:20:17 -04:00
11ba99e17b Fix mistake in receipt sending
And possible mistake in member kicking
2021-06-06 18:19:36 -04:00
c89c59e7fc Handle incoming line breaks 2021-06-06 18:18:57 -04:00
6d646e082b Inbound sync & sticker improvements
- Handle "decrypting" state of messages
- Handle lazy loading of emoji
- Better handle lazy loading of images/stickers
- Improve reliability of message sending, especially when sending
  several messages quickly
- Use m.sticker events for inbound stickers instead of m.image, and add
  a config to optionally use m.image if desired
- Use proper sizing for emoji, and add config to scale them since they
  are somewhat small
- Deduplicate stickers as best as possible (works until they get a
  different blob URL)
- Add config to disable bridging stickers/emoji
- Send m.notice for inbound messages of unknown type
2021-06-06 18:15:38 -04:00
712a256dee Fix incorrect time parsing
For some reason, string-interpolating the result of chrono.parseDate
can set the time of day-only dates to noon, instead of midnight, which
is much more useful as a baseline time.

To get midnight, prepend "00:00" to all day-only date strings before
parsing them with chrono.parseDate.
2021-06-05 23:56:54 -04:00
6583815301 Dismiss error dialog for getting disconnected
If the connection to LINE is lost, when it comes back, and error dialog
appears. Detect that dialog and click it automatically.

The same detection works for any error dialog.
2021-06-05 23:51:12 -04:00
94788a21dd Various fixes and cleanups 2021-06-05 23:41:05 -04:00
2fb9be2037 Small doc update 2021-06-04 02:19:46 -04:00
1e8c64a31a Update docs with steps to download and extract the LINE extension 2021-05-17 02:06:41 -04:00
6f8a8fd6a0 Remove Puppeteer timeout for prep script 2021-05-17 02:05:07 -04:00
862398c00e Update READMEs with xvfb instructions (and more) 2021-05-06 02:58:27 -04:00
baf7db73b7 Kick own puppets when turning on double puppeting
And invite them when turning it off
2021-05-06 02:15:21 -04:00
a2a21927cd Fix image/file sending 2021-05-06 00:43:26 -04:00
2117685df7 Post startup messages in notice room 2021-05-05 02:42:41 -04:00
27c66887c3 Catch some inbound sync errors 2021-05-05 02:41:06 -04:00
b197d90118 Fix shared secret double-puppeting 2021-05-05 02:40:28 -04:00
d894eafc21 Catch IncompleteReadError
It can happen when the input stream closes after a timeout.
2021-05-04 22:00:37 -04:00
6f62eb0054 Update dependencies 2021-05-04 22:00:13 -04:00
6a9d625d69 Bypass input stream buffer overruns
This fixes crashes that could otherwise happen when receiving animated
stickers.
2021-05-04 03:09:24 -04:00
d080590c54 Document minimum requirements
Also bump the LINE extension version mentioned in SETUP.md (which the
bridge still works with, as far as I can tell)
2021-05-03 02:44:11 -04:00
a7b1f3bea2 Update roadmap 2021-04-30 03:10:50 -04:00
635151d079 Remove unneeded functions in ReceiptReaction 2021-04-30 02:56:15 -04:00
4305d8f994 Fix tracking "Read by" counts in group chats 2021-04-30 02:56:15 -04:00
e13f59a8f3 Rework message syncing and sending 2021-04-27 02:59:16 -04:00
7f937d34e2 WIP read receipt improvements 2021-04-23 03:38:13 -04:00