Update `AccountsManager` mismatch comparison
This commit is contained in:
		
							parent
							
								
									2e28fb97a4
								
							
						
					
					
						commit
						a398e2269c
					
				| 
						 | 
					@ -665,11 +665,6 @@ public class AccountsManager {
 | 
				
			||||||
          dynamoAccount.getMasterDevice().get().getSignedPreKey())) {
 | 
					          dynamoAccount.getMasterDevice().get().getSignedPreKey())) {
 | 
				
			||||||
        return Optional.of("masterDeviceSignedPreKey");
 | 
					        return Optional.of("masterDeviceSignedPreKey");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (!Objects.equals(databaseAccount.getMasterDevice().get().getPushTimestamp(),
 | 
					 | 
				
			||||||
          dynamoAccount.getMasterDevice().get().getPushTimestamp())) {
 | 
					 | 
				
			||||||
        return Optional.of("masterDevicePushTimestamp");
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
| 
						 | 
					@ -681,6 +676,15 @@ public class AccountsManager {
 | 
				
			||||||
        return Optional.of("version");
 | 
					        return Optional.of("version");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (databaseAccount.getMasterDevice().isPresent() && dynamoAccount.getMasterDevice().isPresent()) {
 | 
				
			||||||
 | 
					        if (Math.abs(databaseAccount.getMasterDevice().get().getPushTimestamp() -
 | 
				
			||||||
 | 
					            dynamoAccount.getMasterDevice().get().getPushTimestamp()) > 60 * 1_000L) {
 | 
				
			||||||
 | 
					          // These are generally few milliseconds off, because the setter uses System.currentTimeMillis() internally,
 | 
				
			||||||
 | 
					          // but we can be more relaxed
 | 
				
			||||||
 | 
					          return Optional.of("masterDevicePushTimestamp");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!serializedEquals(databaseAccount, dynamoAccount)) {
 | 
					      if (!serializedEquals(databaseAccount, dynamoAccount)) {
 | 
				
			||||||
        return Optional.of("serialization");
 | 
					        return Optional.of("serialization");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					@ -756,6 +760,9 @@ public class AccountsManager {
 | 
				
			||||||
    @JsonIgnore
 | 
					    @JsonIgnore
 | 
				
			||||||
    private long lastSeen;
 | 
					    private long lastSeen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @JsonIgnore
 | 
				
			||||||
 | 
					    private long pushTimestamp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private boolean serializedEquals(final Object database, final Object dynamo) throws JsonProcessingException {
 | 
					  private boolean serializedEquals(final Object database, final Object dynamo) throws JsonProcessingException {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -513,7 +513,7 @@ class AccountsManagerTest {
 | 
				
			||||||
      Thread.sleep(5);
 | 
					      Thread.sleep(5);
 | 
				
			||||||
      device2.setApnId("123");
 | 
					      device2.setApnId("123");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      assertEquals(Optional.of("masterDevicePushTimestamp"), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
 | 
					      assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      a1.removeDevice(1L);
 | 
					      a1.removeDevice(1L);
 | 
				
			||||||
      a2.removeDevice(1L);
 | 
					      a2.removeDevice(1L);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue