Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
42 changes: 24 additions & 18 deletions commet/lib/client/components/emoticon/emoji_pack.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ abstract class EmoticonPack {
String get ownerId;
String get ownerDisplayName;

Stream<int> get onEmoticonAdded;
bool get isGloballyAvailable;

List<Emoticon> get emotes;

Expand All @@ -24,31 +24,37 @@ abstract class EmoticonPack {
ImageProvider? get image;
IconData? get icon;

bool get isStickerPack;
bool get isEmojiPack;
bool get isGloballyAvailable;
EmoticonUsage get usage;

Future<void> deleteEmoticon(Emoticon emoticon);

Future<void> renameEmoticon(Emoticon emoticon, String name);

Future<void> markEmoticonAsSticker(Emoticon emoticon, bool isSticker);
Future<void> setPackUsage(EmoticonUsage usage);

Future<void> markEmoticonAsEmoji(Emoticon emoticon, bool isEmoji);
Future<void> updatePack(
{EmoticonUsage? usage, String? name, Uint8List? imageData});

Future<void> markAsEmoji(bool isEmojiPack);
Emoticon? getByShortcode(String shortcode);

Future<void> markAsSticker(bool isStickerPack);
bool get isStickerPack;

Emoticon? getByShortcode(String shortcode);
bool get isEmojiPack;

Future<void> addEmoticon(
{required String slug,
String? shortcode,
required Uint8List data,
String? mimeType,
bool? isEmoji,
bool? isSticker});
Future<void> updateEmoticon({
String? slug,
String? shortcode,
Uint8List? data,
String? mimeType,
EmoticonUsage? usage,
required Emoticon previous,
});

Future<void> addEmoticon({
required String slug,
String? shortcode,
required Uint8List data,
String? mimeType,
EmoticonUsage usage,
});

Future<void> markAsGlobal(bool isGlobal);

Expand Down
17 changes: 13 additions & 4 deletions commet/lib/client/components/emoticon/emoticon.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
import 'dart:core';
import 'package:flutter/material.dart';

enum EmoticonUsage {
sticker,
emoji,
all,
inherit,
}

abstract class Emoticon {
ImageProvider? get image;
String get slug;
String? get shortcode;
String get key;

bool get isMarkedEmoji;
bool get isMarkedSticker;
EmoticonUsage get usage;

bool get isSticker =>
usage == EmoticonUsage.sticker || usage == EmoticonUsage.all;

bool get isSticker;
bool get isEmoji;
bool get isEmoji =>
usage == EmoticonUsage.emoji || usage == EmoticonUsage.all;
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ abstract class EmoticonComponent<T extends Client> implements Component<T> {
List<EmoticonPack> globalPacks();
List<EmoticonPack> get ownedPacks;
bool get canCreatePack;
Stream<int> get onOwnedPackAdded;
Stream<void> get onStateChanged;

Future<void> createEmoticonPack(String name, Uint8List? avatarData);
Future<void> importEmoticonPack(String name, int avatarIndex,
Expand Down
58 changes: 19 additions & 39 deletions commet/lib/client/matrix/components/emoticon/matrix_emoticon.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,57 +18,23 @@ class MatrixEmoticon implements Emoticon {

Uri emojiUrl;

late bool _isEmojiPack;
late bool _isStickerPack;
late bool _isMarkedEmoji;
late bool _isMarkedSticker;

@override
bool get isEmoji => _isEmojiPack || _isMarkedEmoji;
EmoticonUsage usage;

@override
bool get isSticker => _isStickerPack || _isMarkedSticker;

@override
bool get isMarkedEmoji => _isMarkedEmoji;

@override
bool get isMarkedSticker => _isMarkedSticker;
EmoticonUsage packUsage;

MatrixEmoticon(this.emojiUrl, matrix.Client client,
{required String shortcode,
bool isEmojiPack = true,
bool isStickerPack = true,
bool isMarkedSticker = false,
bool isMarkedEmoji = false}) {
{required this.packUsage,
required String shortcode,
required this.usage}) {
_shortcode = shortcode;
_isEmojiPack = isEmojiPack;
_isStickerPack = isStickerPack;
_isMarkedEmoji = isMarkedEmoji;
_isMarkedSticker = isMarkedSticker;
_image = MatrixMxcImage(emojiUrl, client, doThumbnail: false);
}

void setShortcode(String shortcode) {
_shortcode = shortcode;
}

void markAsEmoji(bool value) {
_isMarkedEmoji = value;
}

void markAsSticker(bool value) {
_isMarkedSticker = value;
}

void markPackAsEmoji(bool value) {
_isEmojiPack = value;
}

void markPackAsSticker(bool value) {
_isStickerPack = value;
}

void setImage(MatrixMxcImage image) {
_image = image;
}
Expand All @@ -91,4 +57,18 @@ class MatrixEmoticon implements Emoticon {
int get hashCode {
return key.hashCode;
}

@override
bool get isSticker =>
usage == EmoticonUsage.sticker ||
usage == EmoticonUsage.all ||
(usage == EmoticonUsage.inherit &&
[EmoticonUsage.sticker, EmoticonUsage.all].contains(packUsage));

@override
bool get isEmoji =>
usage == EmoticonUsage.emoji ||
usage == EmoticonUsage.all ||
(usage == EmoticonUsage.inherit &&
[EmoticonUsage.emoji, EmoticonUsage.all].contains(packUsage));
}
Loading