2023-03-21 18:27:38 +00:00
|
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
|
|
|
|
import '../../models/follow_request.dart';
|
|
|
|
import '../../models/user_notification.dart';
|
2023-08-04 16:34:51 +00:00
|
|
|
import '../../utils/dateutils.dart';
|
2023-03-21 18:27:38 +00:00
|
|
|
import 'connection_mastodon_extensions.dart';
|
|
|
|
|
|
|
|
extension FollowRequestMastodonExtension on FollowRequest {
|
|
|
|
static FollowRequest fromJson(Map<String, dynamic> json) {
|
|
|
|
final connection = ConnectionMastodonExtensions.fromJson(json);
|
2023-10-31 01:44:16 +00:00
|
|
|
final id = json['id'] ?? const Uuid().v4();
|
2023-08-04 16:34:51 +00:00
|
|
|
final int timestamp = json.containsKey('created_at')
|
|
|
|
? OffsetDateTimeUtils.epochSecTimeFromTimeZoneString(json['created_at'])
|
|
|
|
.fold(
|
|
|
|
onSuccess: (value) => value,
|
|
|
|
onError: (error) => 0,
|
|
|
|
)
|
|
|
|
: 0;
|
|
|
|
return FollowRequest(
|
|
|
|
id: id,
|
|
|
|
connection: connection,
|
|
|
|
createdAtEpochSeconds: timestamp,
|
|
|
|
);
|
2023-03-21 18:27:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
UserNotification toUserNotification() {
|
|
|
|
return UserNotification(
|
2023-08-04 16:34:51 +00:00
|
|
|
id: id,
|
2023-03-21 18:27:38 +00:00
|
|
|
type: NotificationType.follow_request,
|
|
|
|
fromId: connection.id,
|
|
|
|
fromName: connection.name,
|
|
|
|
fromUrl: connection.profileUrl,
|
2023-08-04 16:34:51 +00:00
|
|
|
timestamp: createdAtEpochSeconds,
|
2023-03-21 18:27:38 +00:00
|
|
|
iid: '',
|
|
|
|
dismissed: false,
|
|
|
|
content:
|
|
|
|
'${connection.name}(${connection.handle}) submitted a follow request ',
|
|
|
|
link: '',
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|