Полная реализация синхронизации
This commit is contained in:
@@ -2,10 +2,13 @@ package im.rosetta.service.services;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import im.rosetta.client.tags.ECIAuthentificate;
|
||||
import im.rosetta.client.tags.ECIDevice;
|
||||
import im.rosetta.database.entity.Device;
|
||||
import im.rosetta.database.entity.User;
|
||||
import im.rosetta.database.repository.DeviceRepository;
|
||||
import im.rosetta.service.Service;
|
||||
import io.orprotocol.client.Client;
|
||||
|
||||
public class DeviceService extends Service<DeviceRepository> {
|
||||
|
||||
@@ -45,4 +48,38 @@ public class DeviceService extends Service<DeviceRepository> {
|
||||
return this.getRepository().findAllByField("publicKey", publicKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает время последней синхронизации устройства, для корректной работы синхронизации сообщений
|
||||
* @param client клиент для которого нужно получить время последней синхронизации устройства
|
||||
* @return время последней синхронизации устройства, или 0 если устройство не найдено,
|
||||
* или клиент не авторизован, таким образом вызывающий код синхронизирует все сообщения
|
||||
*/
|
||||
public long getLastSyncTime(Client client){
|
||||
ECIAuthentificate eciAuthentificate = client.getTag(ECIAuthentificate.class);
|
||||
if(eciAuthentificate == null || !eciAuthentificate.hasAuthorized()){
|
||||
/**
|
||||
* Если клиент не авторизован, возвращаем 0, такого быть не должно
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
ECIDevice eciDevice = client.getTag(ECIDevice.class);
|
||||
if(eciDevice == null){
|
||||
/**
|
||||
* Если у клиента нет тега устройства, возвращаем 0, такого быть не должно, но на всякий случай
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
Device device = this.getRepository().findByField(new java.util.HashMap<String, Object>(){{
|
||||
put("deviceId", eciDevice.getDeviceId());
|
||||
put("publicKey", eciAuthentificate.getPublicKey());
|
||||
}});
|
||||
if(device == null){
|
||||
/**
|
||||
* Если устройство не найдено, возвращаем 0, значит это устройство новое
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
return device.getSyncTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user