Add TimelineGroupingListdata parsing of type

merge-requests/67/merge
Hank Grabowski 2024-08-28 11:56:19 -04:00
rodzic 052fa15eb8
commit 9c9428a85b
2 zmienionych plików z 36 dodań i 9 usunięć

Wyświetl plik

@ -1,16 +1,26 @@
enum GroupingType {
channel,
circle,
group,
}
class TimelineGroupingListData {
static final followersPseudoCircle =
TimelineGroupingListData('~', 'Followers');
static const followersPseudoCircle =
TimelineGroupingListData('~', 'Followers', GroupingType.circle);
static const empty = TimelineGroupingListData('', '', GroupingType.circle);
final String id;
final String name;
TimelineGroupingListData(this.id, this.name);
final GroupingType groupingType;
const TimelineGroupingListData(this.id, this.name, this.groupingType);
@override
String toString() {
return 'CircleData{id: $id, name: $name}';
return 'CircleData{id: $id, name: $name, type: ${groupingType.name}}';
}
@override

Wyświetl plik

@ -2,9 +2,26 @@ import '../../models/timeline_grouping_list_data.dart';
extension TimelineGroupingListDataMastodonExtensions
on TimelineGroupingListData {
static TimelineGroupingListData fromJson(Map<String, dynamic> json) =>
TimelineGroupingListData(
json['id'],
json['title'],
);
static TimelineGroupingListData fromJson(Map<String, dynamic> json) {
final id = json['id']?.toString() ?? '';
final typeString = json['replies_policy']?.toString() ?? '';
late final GroupingType type;
if (typeString == 'followed') {
if (id.startsWith('channel')) {
type = GroupingType.channel;
} else if (id.startsWith('group')) {
type = GroupingType.group;
} else {
type = GroupingType.circle;
}
} else {
type = GroupingType.circle;
}
return TimelineGroupingListData(
id,
json['title'],
type,
);
}
}