moho renders both - m.sticker is a known event type and m.location a known msgtype
(backend/matrix/protocol.rs) - and can send neither. There is no sticker picker and
no way to share a location, so both are things that arrive and can only be looked at.
What is needed
Stickers: read the account's sticker packs (im.vector.setting.sticker_picker
account data, or the packs in m.image_pack room state), a picker beside the emoji
one that already exists (components/EmojiPicker.tsx), and sending as an m.sticker event rather than an image.
Location: m.location with a geo: URI. The gesture is worth thinking about on
a desktop client - a picked point rather than "where I am now" - and live location
sharing (MSC3489) is a separate thing that should not be assumed into this.
Done looks like: a sticker somebody sends can be sent back, and a place can be
put in a room.
Reference: Element.
moho renders both - `m.sticker` is a known event type and `m.location` a known msgtype
(`backend/matrix/protocol.rs`) - and can send neither. There is no sticker picker and
no way to share a location, so both are things that arrive and can only be looked at.
**What is needed**
- **Stickers**: read the account's sticker packs (`im.vector.setting.sticker_picker`
account data, or the packs in `m.image_pack` room state), a picker beside the emoji
one that already exists (`components/EmojiPicker.tsx`), and sending as an
`m.sticker` event rather than an image.
- **Location**: `m.location` with a `geo:` URI. The gesture is worth thinking about on
a desktop client - a picked point rather than "where I am now" - and live location
sharing (MSC3489) is a separate thing that should not be assumed into this.
**Done looks like:** a sticker somebody sends can be sent back, and a place can be
put in a room.
Reference: Element.
Stickers come from MSC2545 image packs, which is the convention Element's own picker ends up reading: im.ponies.user_emotes in the account's data and im.ponies.room_emotes in a room's state, both read. Only the images a pack calls stickers are offered — sending an emoticon as a sticker posts a 20-pixel image as a message of its own.
They get their own button beside the emoji one rather than a section inside it: an emoji goes into the line being written, a sticker is the message, so mixing them would make half the cells type and half of them send.
Locations ship as a pin, not live sharing — that is a different feature with different promises. /location takes what people actually paste: 51.5, -0.12, a geo: URI, an OpenStreetMap or Google Maps link, with an optional name after it. What is not a place is refused rather than said aloud in the room.
Verified live on poa.st: a real im.ponies.room_emotes pack written into a test room was read back by the daemon, drawn in the stickers-only picker under its pack name, and one press sent it — the message arrived as an m.sticker with the image on it. /location 51.5074, -0.1278 the pub and an OSM link both landed and rendered; /location where are you was refused.
Finished — https://git.salastil.com/Salastil/nobilis/commit/5ddd786 and https://git.salastil.com/Salastil/moho/commit/8608c8d
**Stickers** come from MSC2545 image packs, which is the convention Element's own picker ends up reading: `im.ponies.user_emotes` in the account's data and `im.ponies.room_emotes` in a room's state, both read. Only the images a pack calls stickers are offered — sending an emoticon as a sticker posts a 20-pixel image as a message of its own.
They get **their own button beside the emoji one** rather than a section inside it: an emoji goes into the line being written, a sticker *is* the message, so mixing them would make half the cells type and half of them send.
**Locations** ship as a pin, not live sharing — that is a different feature with different promises. `/location` takes what people actually paste: `51.5, -0.12`, a `geo:` URI, an OpenStreetMap or Google Maps link, with an optional name after it. What is not a place is refused rather than said aloud in the room.
Verified live on poa.st: a real `im.ponies.room_emotes` pack written into a test room was read back by the daemon, drawn in the stickers-only picker under its pack name, and one press sent it — the message arrived as an `m.sticker` with the image on it. `/location 51.5074, -0.1278 the pub` and an OSM link both landed and rendered; `/location where are you` was refused.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
moho renders both -
m.stickeris a known event type andm.locationa known msgtype(
backend/matrix/protocol.rs) - and can send neither. There is no sticker picker andno way to share a location, so both are things that arrive and can only be looked at.
What is needed
im.vector.setting.sticker_pickeraccount data, or the packs in
m.image_packroom state), a picker beside the emojione that already exists (
components/EmojiPicker.tsx), and sending as anm.stickerevent rather than an image.m.locationwith ageo:URI. The gesture is worth thinking about ona desktop client - a picked point rather than "where I am now" - and live location
sharing (MSC3489) is a separate thing that should not be assumed into this.
Done looks like: a sticker somebody sends can be sent back, and a place can be
put in a room.
Reference: Element.
Finished — https://git.salastil.com/Salastil/nobilis/commit/5ddd786 and https://git.salastil.com/Salastil/moho/commit/8608c8d
Stickers come from MSC2545 image packs, which is the convention Element's own picker ends up reading:
im.ponies.user_emotesin the account's data andim.ponies.room_emotesin a room's state, both read. Only the images a pack calls stickers are offered — sending an emoticon as a sticker posts a 20-pixel image as a message of its own.They get their own button beside the emoji one rather than a section inside it: an emoji goes into the line being written, a sticker is the message, so mixing them would make half the cells type and half of them send.
Locations ship as a pin, not live sharing — that is a different feature with different promises.
/locationtakes what people actually paste:51.5, -0.12, ageo:URI, an OpenStreetMap or Google Maps link, with an optional name after it. What is not a place is refused rather than said aloud in the room.Verified live on poa.st: a real
im.ponies.room_emotespack written into a test room was read back by the daemon, drawn in the stickers-only picker under its pack name, and one press sent it — the message arrived as anm.stickerwith the image on it./location 51.5074, -0.1278 the puband an OSM link both landed and rendered;/location where are youwas refused.