* Add ability to sync all LINE contacts, which is relevant because the
list of recent chats excludes users you haven't spoken to lately.
* Add bot command to list all contacts.
* Allow inviting a puppet to a DM to create a portal for that LINE user,
instead of having to wait for that user to message you first.
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.
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.
...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.
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).
- 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