refactor: timeline
This commit is contained in:
		
							parent
							
								
									d6b97b8e78
								
							
						
					
					
						commit
						c46f4ba066
					
				|  | @ -238,13 +238,10 @@ class Timeline { | |||
|                   : null); | ||||
| 
 | ||||
|           if (i < events.length) { | ||||
|             // we want to preserve the old sort order | ||||
|             final tempSortOrder = events[i].sortOrder; | ||||
|             // if the old status is larger than the new one, we also want to preserve the old status | ||||
|             final oldStatus = events[i].status; | ||||
|             events[i] = Event.fromJson( | ||||
|                 eventUpdate.content, room, eventUpdate.sortOrder); | ||||
|             events[i].sortOrder = tempSortOrder; | ||||
|             // do we preserve the status? we should allow 0 -> -1 updates and status increases | ||||
|             if (status < oldStatus && !(status == -1 && oldStatus == 0)) { | ||||
|               events[i].status = oldStatus; | ||||
|  | @ -265,23 +262,19 @@ class Timeline { | |||
|           } | ||||
|         } | ||||
|       } | ||||
|       sortAndUpdate(); | ||||
|       _sort(); | ||||
|       if (onUpdate != null) onUpdate(); | ||||
|     } catch (e, s) { | ||||
|       Logs.warning('Handle event update failed: ${e.toString()}', s); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   bool sortLock = false; | ||||
|   bool _sortLock = false; | ||||
| 
 | ||||
|   void sort() { | ||||
|     if (sortLock || events.length < 2) return; | ||||
|     sortLock = true; | ||||
|   void _sort() { | ||||
|     if (_sortLock || events.length < 2) return; | ||||
|     _sortLock = true; | ||||
|     events?.sort((a, b) => b.sortOrder - a.sortOrder > 0 ? 1 : -1); | ||||
|     sortLock = false; | ||||
|   } | ||||
| 
 | ||||
|   void sortAndUpdate() async { | ||||
|     sort(); | ||||
|     if (onUpdate != null) onUpdate(); | ||||
|     _sortLock = false; | ||||
|   } | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue