Add support for 7TV and FFZ emote authors (#306)
This commit is contained in:
parent
8fab6bdbc9
commit
9e91208555
5 changed files with 54 additions and 11 deletions
|
|
@ -87,17 +87,33 @@ class ImagesFFZ {
|
|||
_$ImagesFFZFromJson(json);
|
||||
}
|
||||
|
||||
@JsonSerializable(createToJson: false, fieldRename: FieldRename.snake)
|
||||
class OwnerFFZ {
|
||||
final String displayName;
|
||||
final String name;
|
||||
|
||||
const OwnerFFZ({
|
||||
required this.displayName,
|
||||
required this.name,
|
||||
});
|
||||
|
||||
factory OwnerFFZ.fromJson(Map<String, dynamic> json) =>
|
||||
_$OwnerFFZFromJson(json);
|
||||
}
|
||||
|
||||
@JsonSerializable(createToJson: false)
|
||||
class EmoteFFZ {
|
||||
final String name;
|
||||
final int height;
|
||||
final int width;
|
||||
final OwnerFFZ owner;
|
||||
final ImagesFFZ urls;
|
||||
|
||||
const EmoteFFZ(
|
||||
this.name,
|
||||
this.height,
|
||||
this.width,
|
||||
this.owner,
|
||||
this.urls,
|
||||
);
|
||||
|
||||
|
|
@ -122,21 +138,19 @@ class Emote7TV {
|
|||
}
|
||||
|
||||
@JsonSerializable(createToJson: false, fieldRename: FieldRename.snake)
|
||||
class Emote7TVUser {
|
||||
final String id;
|
||||
class Owner7TV {
|
||||
final String username;
|
||||
final String displayName;
|
||||
final String avatarUrl;
|
||||
|
||||
const Emote7TVUser({
|
||||
required this.id,
|
||||
const Owner7TV({
|
||||
required this.username,
|
||||
required this.displayName,
|
||||
required this.avatarUrl,
|
||||
});
|
||||
|
||||
factory Emote7TVUser.fromJson(Map<String, dynamic> json) =>
|
||||
_$Emote7TVUserFromJson(json);
|
||||
factory Owner7TV.fromJson(Map<String, dynamic> json) =>
|
||||
_$Owner7TVFromJson(json);
|
||||
}
|
||||
|
||||
@JsonSerializable(createToJson: false, fieldRename: FieldRename.snake)
|
||||
|
|
@ -144,12 +158,14 @@ class Emote7TVData {
|
|||
final String id;
|
||||
final String name;
|
||||
final int flags;
|
||||
final Owner7TV owner;
|
||||
final Emote7TVHost host;
|
||||
|
||||
const Emote7TVData(
|
||||
this.id,
|
||||
this.name,
|
||||
this.flags,
|
||||
this.owner,
|
||||
this.host,
|
||||
);
|
||||
|
||||
|
|
@ -199,6 +215,8 @@ class Emote {
|
|||
final bool zeroWidth;
|
||||
final String url;
|
||||
final EmoteType type;
|
||||
final String? ownerDisplayName;
|
||||
final String? ownerUsername;
|
||||
final String? ownerId;
|
||||
|
||||
const Emote({
|
||||
|
|
@ -209,6 +227,8 @@ class Emote {
|
|||
required this.zeroWidth,
|
||||
required this.url,
|
||||
required this.type,
|
||||
this.ownerDisplayName,
|
||||
this.ownerUsername,
|
||||
this.ownerId,
|
||||
});
|
||||
|
||||
|
|
@ -235,6 +255,8 @@ class Emote {
|
|||
height: emote.height,
|
||||
url: emote.urls.url4x ?? emote.urls.url2x ?? emote.urls.url1x,
|
||||
type: type,
|
||||
ownerDisplayName: emote.owner.displayName,
|
||||
ownerUsername: emote.owner.name,
|
||||
);
|
||||
|
||||
factory Emote.from7TV(Emote7TV emote, EmoteType type) {
|
||||
|
|
@ -257,6 +279,8 @@ class Emote {
|
|||
zeroWidth: isZeroWidth,
|
||||
url: 'https:$url/${file.name}',
|
||||
type: type,
|
||||
ownerDisplayName: emoteData.owner.displayName,
|
||||
ownerUsername: emoteData.owner.username,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,10 +44,16 @@ ImagesFFZ _$ImagesFFZFromJson(Map<String, dynamic> json) => ImagesFFZ(
|
|||
json['4'] as String?,
|
||||
);
|
||||
|
||||
OwnerFFZ _$OwnerFFZFromJson(Map<String, dynamic> json) => OwnerFFZ(
|
||||
displayName: json['display_name'] as String,
|
||||
name: json['name'] as String,
|
||||
);
|
||||
|
||||
EmoteFFZ _$EmoteFFZFromJson(Map<String, dynamic> json) => EmoteFFZ(
|
||||
json['name'] as String,
|
||||
json['height'] as int,
|
||||
json['width'] as int,
|
||||
OwnerFFZ.fromJson(json['owner'] as Map<String, dynamic>),
|
||||
ImagesFFZ.fromJson(json['urls'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
|
|
@ -59,8 +65,7 @@ Emote7TV _$Emote7TVFromJson(Map<String, dynamic> json) => Emote7TV(
|
|||
: Emote7TVData.fromJson(json['data'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Emote7TVUser _$Emote7TVUserFromJson(Map<String, dynamic> json) => Emote7TVUser(
|
||||
id: json['id'] as String,
|
||||
Owner7TV _$Owner7TVFromJson(Map<String, dynamic> json) => Owner7TV(
|
||||
username: json['username'] as String,
|
||||
displayName: json['display_name'] as String,
|
||||
avatarUrl: json['avatar_url'] as String,
|
||||
|
|
@ -70,6 +75,7 @@ Emote7TVData _$Emote7TVDataFromJson(Map<String, dynamic> json) => Emote7TVData(
|
|||
json['id'] as String,
|
||||
json['name'] as String,
|
||||
json['flags'] as int,
|
||||
Owner7TV.fromJson(json['owner'] as Map<String, dynamic>),
|
||||
Emote7TVHost.fromJson(json['host'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
|
|
@ -95,6 +101,8 @@ Emote _$EmoteFromJson(Map<String, dynamic> json) => Emote(
|
|||
zeroWidth: json['zeroWidth'] as bool,
|
||||
url: json['url'] as String,
|
||||
type: $enumDecode(_$EmoteTypeEnumMap, json['type']),
|
||||
ownerDisplayName: json['ownerDisplayName'] as String?,
|
||||
ownerUsername: json['ownerUsername'] as String?,
|
||||
ownerId: json['ownerId'] as String?,
|
||||
);
|
||||
|
||||
|
|
@ -106,6 +114,8 @@ Map<String, dynamic> _$EmoteToJson(Emote instance) => <String, dynamic>{
|
|||
'zeroWidth': instance.zeroWidth,
|
||||
'url': instance.url,
|
||||
'type': _$EmoteTypeEnumMap[instance.type]!,
|
||||
'ownerDisplayName': instance.ownerDisplayName,
|
||||
'ownerUsername': instance.ownerUsername,
|
||||
'ownerId': instance.ownerId,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class SevenTVEventUpdatedEmote {
|
|||
|
||||
@JsonSerializable(createToJson: false)
|
||||
class SevenTVEventEmoteSetBody {
|
||||
final Emote7TVUser actor;
|
||||
final Owner7TV actor;
|
||||
final List<SevenTVEventUpdatedEmote>? pushed;
|
||||
final List<SevenTVEventUpdatedEmote>? pulled;
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ SevenTVEventUpdatedEmote _$SevenTVEventUpdatedEmoteFromJson(
|
|||
SevenTVEventEmoteSetBody _$SevenTVEventEmoteSetBodyFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
SevenTVEventEmoteSetBody(
|
||||
actor: Emote7TVUser.fromJson(json['actor'] as Map<String, dynamic>),
|
||||
actor: Owner7TV.fromJson(json['actor'] as Map<String, dynamic>),
|
||||
pushed: (json['pushed'] as List<dynamic>?)
|
||||
?.map((e) =>
|
||||
SevenTVEventUpdatedEmote.fromJson(e as Map<String, dynamic>))
|
||||
|
|
|
|||
|
|
@ -651,7 +651,16 @@ class IRCMessage {
|
|||
title: emote.realName != null
|
||||
? '${emote.name} (${emote.realName})'
|
||||
: emote.name,
|
||||
subtitle: Text(emote.type.toString()),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(emote.type.toString()),
|
||||
if (emote.ownerDisplayName != null && emote.ownerUsername != null)
|
||||
Text(
|
||||
'by ${getReadableName(emote.ownerDisplayName!, emote.ownerUsername!)}',
|
||||
),
|
||||
],
|
||||
),
|
||||
launchExternal: launchExternal,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue