Implementation
NERoomChatMessage? createMessage(RoomMessage? message) {
if (message != null) {
switch (message.type) {
case 'text':
{
return _NERoomTextMessageImpl(
messageUuid: message.uuid,
fromUserUuid: message.fromAccount,
fromNick: message.fromNick,
text: message.content ?? '',
time: message.time,
toUserUuidList: message.toAccounts?.whereType<String>().toList(),
);
}
case 'file':
{
final attachment = message.attachment as RoomMessageAttachment;
return _NERoomFileMessageImpl(
messageUuid: message.uuid,
fromUserUuid: message.fromAccount,
fromNick: message.fromNick,
time: message.time,
toUserUuidList: message.toAccounts?.whereType<String>().toList(),
displayName: attachment.displayName,
extension: attachment.extension,
md5: attachment.md5,
url: attachment.url,
size: attachment.size,
thumbPath: attachment.thumbPath,
path: attachment.path);
}
case 'image':
{
final attachment = message.attachment as RoomMessageAttachment;
return _NERoomImageMessageImpl(
messageUuid: message.uuid,
fromUserUuid: message.fromAccount,
fromNick: message.fromNick,
time: message.time,
toUserUuidList: message.toAccounts?.whereType<String>().toList(),
displayName: attachment.displayName,
extension: attachment.extension,
md5: attachment.md5,
url: attachment.url,
size: attachment.size,
thumbPath: attachment.thumbPath,
path: attachment.path,
width: attachment.width ?? 0,
height: attachment.height ?? 0,
);
}
case 'custom':
{
return _NERoomCustomMessageImpl(
messageUuid: message.uuid,
fromUserUuid: message.fromAccount,
fromNick: message.fromNick,
attachStr: message.content ?? '',
time: message.time,
toUserUuidList: message.toAccounts?.whereType<String>().toList(),
);
}
}
}
return null;
}