mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-19 11:43:32 +00:00
75 lines
2.2 KiB
Dart
75 lines
2.2 KiB
Dart
import 'package:logging/logging.dart';
|
|
|
|
import '../../globals.dart';
|
|
import '../../models/direct_message.dart';
|
|
import '../../services/auth_service.dart';
|
|
import '../../services/connections_manager.dart';
|
|
import '../../utils/active_profile_selector.dart';
|
|
import '../../utils/dateutils.dart';
|
|
import 'connection_friendica_extensions.dart';
|
|
|
|
final _logger = Logger('DirectMessageFriendicaExtension');
|
|
|
|
extension DirectMessageFriendicaExtension on DirectMessage {
|
|
static DirectMessage fromJson(Map<String, dynamic> json) {
|
|
final id = json['id'].toString();
|
|
|
|
final senderId = json['sender_id'].toString();
|
|
|
|
final senderScreenName = json['sender_screen_name'];
|
|
|
|
final recipientId = json['recipient_id'].toString();
|
|
|
|
final recipientScreenName = json['recipient_screen_name'];
|
|
|
|
final title = json['title'];
|
|
|
|
final text = json['text'];
|
|
|
|
final createdAt = json.containsKey('created_at')
|
|
? OffsetDateTimeUtils.epochSecTimeFromFriendicaString(
|
|
json['created_at'])
|
|
.fold(
|
|
onSuccess: (value) => value,
|
|
onError: (error) {
|
|
_logger.severe("Couldn't read date time string: $error");
|
|
return 0;
|
|
})
|
|
: 0;
|
|
|
|
final bool seen = json['friendica_seen'];
|
|
|
|
final String parentUri = json['friendica_parent_uri'];
|
|
|
|
getIt<ActiveProfileSelector<ConnectionsManager>>()
|
|
.activeEntry
|
|
.andThenSuccess((cm) {
|
|
if (getIt<AccountsService>().currentProfile.userId != senderId) {
|
|
final s = ConnectionFriendicaExtensions.fromJson(json['sender']);
|
|
if (cm.getById(s.id).isFailure) {
|
|
cm.addConnection(s);
|
|
}
|
|
}
|
|
|
|
if (getIt<AccountsService>().currentProfile.userId != recipientId) {
|
|
final r = ConnectionFriendicaExtensions.fromJson(json['recipient']);
|
|
if (cm.getById(r.id).isFailure) {
|
|
cm.addConnection(r);
|
|
}
|
|
}
|
|
});
|
|
|
|
return DirectMessage(
|
|
id: id,
|
|
senderId: senderId,
|
|
senderScreenName: senderScreenName,
|
|
recipientId: recipientId,
|
|
recipientScreenName: recipientScreenName,
|
|
title: title,
|
|
text: text,
|
|
createdAt: createdAt,
|
|
seen: seen,
|
|
parentUri: parentUri,
|
|
);
|
|
}
|
|
}
|