store related events for mentions
This commit is contained in:
parent
66a437094a
commit
24e516e6dd
3 changed files with 25 additions and 9 deletions
|
|
@ -13,6 +13,7 @@ import "package:nexus/models/capabilities.dart";
|
||||||
import "package:nexus/models/content/message.dart";
|
import "package:nexus/models/content/message.dart";
|
||||||
import "package:nexus/models/event.dart";
|
import "package:nexus/models/event.dart";
|
||||||
import "package:nexus/models/event_context.dart";
|
import "package:nexus/models/event_context.dart";
|
||||||
|
import "package:nexus/models/mentions_response.dart";
|
||||||
import "package:nexus/models/gomuks_config.dart";
|
import "package:nexus/models/gomuks_config.dart";
|
||||||
import "package:nexus/models/oauth_auth_code_response.dart";
|
import "package:nexus/models/oauth_auth_code_response.dart";
|
||||||
import "package:nexus/models/open_graph_data.dart";
|
import "package:nexus/models/open_graph_data.dart";
|
||||||
|
|
@ -214,11 +215,8 @@ class ClientController extends AsyncNotifier<int> {
|
||||||
return .new(response?.map((event) => .fromJson(event)));
|
return .new(response?.map((event) => .fromJson(event)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<IList<Event>> getMentions(GetMentionsRequest request) async => .new(
|
Future<MentionsResponse> getMentions(GetMentionsRequest request) async =>
|
||||||
// TODO: Handle `related_events`
|
.fromJson(await _sendCommand("get_mentions", request.toJson()));
|
||||||
((await _sendCommand("get_mentions", request.toJson()))["events"] as List)
|
|
||||||
.map((event) => .fromJson(event)),
|
|
||||||
);
|
|
||||||
|
|
||||||
Future<Event?> getEvent(GetEventRequest request) async {
|
Future<Event?> getEvent(GetEventRequest request) async {
|
||||||
final json = await _sendCommand("get_event", request.toJson());
|
final json = await _sendCommand("get_event", request.toJson());
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,9 @@ class NotificationsController(final NotificationsRequest request)
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
storeEvents(mentions);
|
storeEvents(mentions.events.addAll(mentions.relatedEvents));
|
||||||
|
|
||||||
return .new(mentions.map((event) => (event.rowId, event.roomId)));
|
return .new(mentions.events.map((event) => (event.rowId, event.roomId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> loadOlder() async {
|
Future<void> loadOlder() async {
|
||||||
|
|
@ -76,10 +76,12 @@ class NotificationsController(final NotificationsRequest request)
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
storeEvents(newNotifications);
|
storeEvents(
|
||||||
|
newNotifications.events.addAll(newNotifications.relatedEvents),
|
||||||
|
);
|
||||||
|
|
||||||
return currentNotifications.addAll(
|
return currentNotifications.addAll(
|
||||||
newNotifications.map((event) => (event.rowId, event.roomId)),
|
newNotifications.events.map((event) => (event.rowId, event.roomId)),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
16
lib/models/mentions_response.dart
Normal file
16
lib/models/mentions_response.dart
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
|
import "package:freezed_annotation/freezed_annotation.dart";
|
||||||
|
import "package:nexus/models/event.dart";
|
||||||
|
|
||||||
|
part "mentions_response.freezed.dart";
|
||||||
|
part "mentions_response.g.dart";
|
||||||
|
|
||||||
|
@Freezed(toJson: false, fromJson: false)
|
||||||
|
@JsonSerializable(createToJson: false)
|
||||||
|
class const MentionsResponse({
|
||||||
|
required final IList<Event> events,
|
||||||
|
final IList<Event> relatedEvents = const .empty(),
|
||||||
|
}) with _$MentionsResponse {
|
||||||
|
factory MentionsResponse.fromJson(Map<String, Object?> json) =>
|
||||||
|
_$MentionsResponseFromJson(json);
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue