71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Dart
		
	
	
	
| /// Defines event status:
 | |
| /// - removed
 | |
| /// - error: (http request failed)
 | |
| /// - sending: (http request started)
 | |
| /// - sent: (http request successful)
 | |
| /// - synced: (event came from sync loop)
 | |
| /// - roomState
 | |
| enum EventStatus {
 | |
|   removed,
 | |
|   error,
 | |
|   sending,
 | |
|   sent,
 | |
|   synced,
 | |
|   roomState,
 | |
| }
 | |
| 
 | |
| /// Returns `EventStatusEnum` value from `intValue`.
 | |
| ///
 | |
| /// - -2 == removed;
 | |
| /// - -1 == error;
 | |
| /// -  0 == sending;
 | |
| /// -  1 == sent;
 | |
| /// -  2 == synced;
 | |
| /// -  3 == roomState;
 | |
| EventStatus eventStatusFromInt(int intValue) =>
 | |
|     EventStatus.values[intValue + 2];
 | |
| 
 | |
| /// Takes two [EventStatus] values and returns the one with higher
 | |
| /// (better in terms of message sending) status.
 | |
| EventStatus latestEventStatus(EventStatus status1, EventStatus status2) =>
 | |
|     status1.intValue > status2.intValue ? status1 : status2;
 | |
| 
 | |
| extension EventStatusExtension on EventStatus {
 | |
|   /// Returns int value of the event status.
 | |
|   ///
 | |
|   /// - -2 == removed;
 | |
|   /// - -1 == error;
 | |
|   /// -  0 == sending;
 | |
|   /// -  1 == sent;
 | |
|   /// -  2 == synced;
 | |
|   /// -  3 == roomState;
 | |
|   int get intValue => (index - 2);
 | |
| 
 | |
|   /// Return `true` if the `EventStatus` equals `removed`.
 | |
|   bool get isRemoved => this == EventStatus.removed;
 | |
| 
 | |
|   /// Return `true` if the `EventStatus` equals `error`.
 | |
|   bool get isError => this == EventStatus.error;
 | |
| 
 | |
|   /// Return `true` if the `EventStatus` equals `sending`.
 | |
|   bool get isSending => this == EventStatus.sending;
 | |
| 
 | |
|   /// Return `true` if the `EventStatus` equals `roomState`.
 | |
|   bool get isRoomState => this == EventStatus.roomState;
 | |
| 
 | |
|   /// Returns `true` if the status is sent or later:
 | |
|   /// [EventStatus.sent], [EventStatus.synced] or [EventStatus.roomState].
 | |
|   bool get isSent => [
 | |
|         EventStatus.sent,
 | |
|         EventStatus.synced,
 | |
|         EventStatus.roomState
 | |
|       ].contains(this);
 | |
| 
 | |
|   /// Returns `true` if the status is `synced` or `roomState`:
 | |
|   /// [EventStatus.synced] or [EventStatus.roomState].
 | |
|   bool get isSynced => [
 | |
|         EventStatus.synced,
 | |
|         EventStatus.roomState,
 | |
|       ].contains(this);
 | |
| }
 |