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

Sticker messages (m.sticker) #1158

Merged
merged 19 commits into from
Mar 27, 2018
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions event-schemas/examples/m.sticker
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"age": 242352,
"content": {
"body": "Landing",
"info": {
"mimetype": "image/png",
"thumbnail_info": {
"mimetype": "image/png",
"h": 200,
"w": 140,
"size": 73602
},
"h": 200,
"thumbnail_url": "mxc://matrix.org/sHhqkFCvSkFwtmvtETOtKnLP",
"w": 140,
"size": 73602
},
"url": "mxc://matrix.org/sHhqkFCvSkFwtmvtETOtKnLP"
},
"origin_server_ts": 1431961217939,
"event_id": "$WLGTSEFSEF:localhost",
"type": "m.sticker",
"room_id": "!Cuyf34gef24t:localhost",
"sender": "@example:localhost"
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@ $schema: http://json-schema.org/draft-04/schema#
description: Metadata about an image.
properties:
h:
description: The height of the image in pixels.
description: |-
KitsuneRal marked this conversation as resolved.
Show resolved Hide resolved
The intended display height of the image in pixels. This may
differ from the intrinsic dimensions of the image file.
type: integer
w:
description: The width of the image in pixels.
description: |-
The intended display width of the image in pixels. This may
differ from the intrinsic dimensions of the image file.
type: integer
mimetype:
description: The mimetype of the image, e.g. ``image/jpeg``.
Expand Down
34 changes: 34 additions & 0 deletions event-schemas/schema/m.sticker
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
allOf:
- $ref: core-event-schema/room_event.yaml
description: This message represents a single sticker image.
properties:
content:
properties:
body:
description: |-
A textual representation or associated description of the sticker
image. This could be the alt text of the original image, or a message
to accompany and further describe the sticker.
type: string
info:
allOf:
- $ref: core-event-schema/msgtype_infos/image_info.yaml
description: |-
Metadata about the image referred to in ``url`` including a thumbnail
representation.
url:
description: |-
The URL to the sticker image. This must be a valid ``mxc://`` URI.
Copy link
Member

Choose a reason for hiding this comment

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

well, if we're expecting clients to check this, we should probably say so.

type: string
required:
- body
- info
- url
type: object
type:
enum:
- m.sticker
type: string
title: StickerMessage
type: object
53 changes: 53 additions & 0 deletions specification/modules/stickers.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
.. Copyright 2018 New Vector Ltd.
..
.. Licensed under the Apache License, Version 2.0 (the "License");
.. you may not use this file except in compliance with the License.
.. You may obtain a copy of the License at
..
.. http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS,
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
.. See the License for the specific language governing permissions and
.. limitations under the License.

Sticker Messages
================

.. _module:stickers:

This module allows users to send sticker messages in to rooms or direct
messaging sessions.

Sticker messages are specialised image messages that are displayed without
controls (e.g. no "download" link, or light-box view on click, as would be
displayed for for `m.image`_ events).

Sticker messages are intended to provide simple "reaction" events in the message
timeline. The matrix client should provide some mechanism to display the sticker
"body" e.g. as a tooltip on hover, or in a modal when the sticker image is
clicked.

Events
------
Sticker events are received as a single ``m.sticker`` event in the
``timeline`` section of a room, in a ``/sync``.

{{m_sticker_event}}

Client behaviour
----------------

Clients supporting this message type should display the image content from the
event URL directly in the timeline.
Copy link
Member

Choose a reason for hiding this comment

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

we might want to have some warning about sanitising URLs?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As discussed, hopefully clarifying that we expect these to be valid MXC URIs should be enough(?)


A thumbnail image should be provided in the ``info`` object. This is
largely intended as a fallback for clients that do not fully support the
``m.sticker`` event type. In most cases it is fine to set the thumbnail URL to the
same URL as the main event content.

It is recommended that sticker image content should be 512x512 pixels in size
or smaller. The dimensions of the image file should be twice the intended
display size specified in the ``info`` object in order to assist
rendering sharp images on higher DPI screens.
1 change: 1 addition & 0 deletions specification/targets.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ groups: # reusable blobs of files when prefixed with 'group:'
- modules/cas_login.rst
- modules/dm.rst
- modules/ignore_users.rst
- modules/stickers.rst


title_styles: ["=", "-", "~", "+", "^", "`", "@", ":"]
Expand Down