32 lines
		
	
	
		
			No EOL
		
	
	
		
			945 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			No EOL
		
	
	
		
			945 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Merge two lists of statuses for the same timeline, e.g. one from IDB
 | 
						|
// and another from the network. In case of duplicates, prefer the fresh.
 | 
						|
export function mergeStatuses(leftStatusIds, rightStatusIds) {
 | 
						|
  let leftIndex = 0
 | 
						|
  let rightIndex = 0
 | 
						|
  let merged = []
 | 
						|
  while (leftIndex < leftStatusIds.length || rightIndex < rightStatusIds.length) {
 | 
						|
    if (leftIndex === leftStatusIds.length) {
 | 
						|
      merged.push(rightStatusIds[rightIndex])
 | 
						|
      rightIndex++
 | 
						|
      continue
 | 
						|
    }
 | 
						|
    if (rightIndex === rightStatusIds.length) {
 | 
						|
      merged.push(leftStatusIds[leftIndex])
 | 
						|
      leftIndex++
 | 
						|
      continue
 | 
						|
    }
 | 
						|
    let left = leftStatusIds[leftIndex]
 | 
						|
    let right = rightStatusIds[rightIndex]
 | 
						|
    if (right === left) {
 | 
						|
      rightIndex++
 | 
						|
      leftIndex++
 | 
						|
    } else if (parseInt(right, 10) > parseInt(left, 10)) {
 | 
						|
      merged.push(right)
 | 
						|
      rightIndex++
 | 
						|
    } else {
 | 
						|
      merged.push(left)
 | 
						|
      leftIndex++
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return merged
 | 
						|
} |