Line data Source code
1 : /// Defines event status:
2 : /// - removed
3 : /// - error: (http request failed)
4 : /// - sending: (http request started)
5 : /// - sent: (http request successful)
6 : /// - synced: (event came from sync loop)
7 : /// - roomState
8 : enum EventStatus {
9 : error,
10 : sending,
11 : sent,
12 : synced,
13 : roomState,
14 : }
15 :
16 : /// Returns `EventStatusEnum` value from `intValue`.
17 : ///
18 : /// - -2 == error;
19 : /// - -1 == sending;
20 : /// - 0 == sent;
21 : /// - 1 == synced;
22 : /// - 2 == roomState;
23 36 : EventStatus eventStatusFromInt(int intValue) =>
24 72 : EventStatus.values[intValue + 2];
25 :
26 : /// Takes two [EventStatus] values and returns the one with higher
27 : /// (better in terms of message sending) status.
28 11 : EventStatus latestEventStatus(EventStatus status1, EventStatus status2) =>
29 33 : status1.intValue > status2.intValue ? status1 : status2;
30 :
31 : extension EventStatusExtension on EventStatus {
32 : /// Returns int value of the event status.
33 : ///
34 : /// - -2 == error;
35 : /// - -1 == sending;
36 : /// - 0 == sent;
37 : /// - 1 == synced;
38 : /// - 2 == roomState;
39 108 : int get intValue => (index - 2);
40 :
41 : /// Return `true` if the `EventStatus` equals `error`.
42 68 : bool get isError => this == EventStatus.error;
43 :
44 : /// Return `true` if the `EventStatus` equals `sending`.
45 72 : bool get isSending => this == EventStatus.sending;
46 :
47 : /// Return `true` if the `EventStatus` equals `roomState`.
48 0 : bool get isRoomState => this == EventStatus.roomState;
49 :
50 : /// Returns `true` if the status is sent or later:
51 : /// [EventStatus.sent], [EventStatus.synced] or [EventStatus.roomState].
52 68 : bool get isSent => [
53 : EventStatus.sent,
54 : EventStatus.synced,
55 : EventStatus.roomState,
56 34 : ].contains(this);
57 :
58 : /// Returns `true` if the status is `synced` or `roomState`:
59 : /// [EventStatus.synced] or [EventStatus.roomState].
60 70 : bool get isSynced => [
61 : EventStatus.synced,
62 : EventStatus.roomState,
63 35 : ].contains(this);
64 : }
|