mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 00:05:16 +00:00
Use Websocket to update number of unread notifications
This commit is contained in:
@ -9,6 +9,13 @@ import 'package:event_bus/event_bus.dart';
|
||||
/// Main WebSocket closed
|
||||
class WSClosedEvent {}
|
||||
|
||||
/// New number of notifications
|
||||
class NewNumberNotifsEvent {
|
||||
final int newNum;
|
||||
|
||||
NewNumberNotifsEvent(this.newNum);
|
||||
}
|
||||
|
||||
class EventsHelper {
|
||||
static EventBus _mgr = EventBus();
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:comunic/helpers/events_helper.dart';
|
||||
import 'package:comunic/models/api_request.dart';
|
||||
import 'package:comunic/models/config.dart';
|
||||
import 'package:comunic/models/ws_message.dart';
|
||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||
|
||||
/// User web socket helper
|
||||
@ -40,7 +43,10 @@ class WebSocketHelper {
|
||||
|
||||
_ws.stream.listen(
|
||||
// When we got data
|
||||
(onData) => print("WS New data: $onData"),
|
||||
(data) {
|
||||
print("WS New data: $data");
|
||||
_processMessage(data.toString());
|
||||
},
|
||||
|
||||
// Print errors on console
|
||||
onError: (e, stack) {
|
||||
@ -55,4 +61,31 @@ class WebSocketHelper {
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// Process incoming message
|
||||
static _processMessage(String msgStr) {
|
||||
try {
|
||||
final msg = WsMessage.fromJSON(jsonDecode(msgStr));
|
||||
|
||||
if (!msg.hasId)
|
||||
_processUnattendedMessage(msg);
|
||||
else
|
||||
throw Exception("Do not know how to process attended message!");
|
||||
} catch (e, stack) {
|
||||
print("WS could not process message: $e");
|
||||
print(stack);
|
||||
}
|
||||
}
|
||||
|
||||
/// Process an unattended message
|
||||
static _processUnattendedMessage(WsMessage msg) {
|
||||
switch (msg.title) {
|
||||
case "number_notifs":
|
||||
EventsHelper.emit(NewNumberNotifsEvent(msg.data));
|
||||
break;
|
||||
|
||||
default:
|
||||
throw Exception("Unknown message type: ${msg.title}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user