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 : enum EventStatus {
8 : error,
9 : sending,
10 : sent,
11 : synced,
12 : }
13 :
14 : /// Returns `EventStatusEnum` value from `intValue`.
15 : ///
16 : /// - -2 == error;
17 : /// - -1 == sending;
18 : /// - 0 == sent;
19 : /// - 1 == synced;
20 43 : EventStatus eventStatusFromInt(int intValue) =>
21 86 : EventStatus.values[intValue + 2];
22 :
23 : /// Takes two [EventStatus] values and returns the one with higher
24 : /// (better in terms of message sending) status.
25 14 : EventStatus latestEventStatus(EventStatus status1, EventStatus status2) =>
26 42 : status1.intValue > status2.intValue ? status1 : status2;
27 :
28 : extension EventStatusExtension on EventStatus {
29 : /// Returns int value of the event status.
30 : ///
31 : /// - -2 == error;
32 : /// - -1 == sending;
33 : /// - 0 == sent;
34 : /// - 1 == synced;
35 129 : int get intValue => (index - 2);
36 :
37 : /// Return `true` if the `EventStatus` equals `error`.
38 86 : bool get isError => this == EventStatus.error;
39 :
40 : /// Return `true` if the `EventStatus` equals `sending`.
41 90 : bool get isSending => this == EventStatus.sending;
42 :
43 : /// Returns `true` if the status is sent or later:
44 : /// [EventStatus.sent] or [EventStatus.synced].
45 86 : bool get isSent => [
46 : EventStatus.sent,
47 : EventStatus.synced,
48 43 : ].contains(this);
49 :
50 : /// Returns `true` if the status is `synced`: [EventStatus.synced]
51 86 : bool get isSynced => this == EventStatus.synced;
52 : }
|