pub enum Tapback<'a> {
Loved,
Liked,
Disliked,
Laughed,
Emphasized,
Questioned,
Emoji(Option<&'a str>),
Sticker,
}Expand description
§Tapbacks
Tapbacks look like normal messages in the database. Only the latest tapback state is stored. For example:
- user receives message -> user likes message
- This creates a message and a like message.
- user receives message -> user likes message -> user unlikes message
- This creates a message and a like message.
- The like message is removed when the unlike message arrives.
- Removed rows leave gaps in
ROWID; the row ID is not reused. - The database keeps the latest tapback state, not the full tapback history.
§Technical detail
The index specified by the prefix maps to the index of the body part given by Message::parse_body().
bp:GUID prefix for bubble message tapbacks (url previews, apps, etc).p:0/GUID prefix for normal messages (body text, attachments).
If a message has 3 attachments followed by some text:
- 0 is the first image
- 1 is the second image
- 2 is the third image
- 3 is the text of the message
In this example, a Like on p:2/ is a like on the third image.
Variants§
Loved
Heart
Liked
Thumbs up
Disliked
Thumbs down
Laughed
Laughing face
Emphasized
Exclamation points
Questioned
Question marks
Emoji(Option<&'a str>)
Custom emoji tapbacks
Sticker
Custom sticker tapbacks
Trait Implementations§
impl<'a> Eq for Tapback<'a>
Source§impl<'a> PartialEq for Tapback<'a>
impl<'a> PartialEq for Tapback<'a>
impl<'a> StructuralPartialEq for Tapback<'a>
Auto Trait Implementations§
impl<'a> Freeze for Tapback<'a>
impl<'a> RefUnwindSafe for Tapback<'a>
impl<'a> Send for Tapback<'a>
impl<'a> Sync for Tapback<'a>
impl<'a> Unpin for Tapback<'a>
impl<'a> UnsafeUnpin for Tapback<'a>
impl<'a> UnwindSafe for Tapback<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.