use of com.xabber.android.data.database.realm.NotificationStateRealm in project xabber-android by redsolution.
the class ChatManager method clearUnusedNotificationStateFromRealm.
public void clearUnusedNotificationStateFromRealm() {
final long startTime = System.currentTimeMillis();
// TODO: 13.03.18 ANR - WRITE
Realm realm = RealmManager.getInstance().getNewRealm();
realm.beginTransaction();
RealmResults<NotificationStateRealm> results = realm.where(NotificationStateRealm.class).findAll();
for (NotificationStateRealm notificationState : results) {
ChatDataRealm chatDataRealm = realm.where(ChatDataRealm.class).equalTo("notificationState.id", notificationState.getId()).findFirst();
if (chatDataRealm == null)
notificationState.deleteFromRealm();
}
realm.commitTransaction();
realm.close();
LogManager.d("REALM", Thread.currentThread().getName() + " clear unused notif. state: " + (System.currentTimeMillis() - startTime));
}
use of com.xabber.android.data.database.realm.NotificationStateRealm in project xabber-android by redsolution.
the class ChatManager method saveOrUpdateChatDataToRealm.
public void saveOrUpdateChatDataToRealm(final AbstractChat chat) {
final long startTime = System.currentTimeMillis();
Application.getInstance().runInBackground(new Runnable() {
@Override
public void run() {
Realm realm = RealmManager.getInstance().getNewRealm();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
String accountJid = chat.getAccount().toString();
String userJid = chat.getUser().toString();
ChatDataRealm chatRealm = realm.where(ChatDataRealm.class).equalTo("accountJid", accountJid).equalTo("userJid", userJid).findFirst();
if (chatRealm == null)
chatRealm = new ChatDataRealm(accountJid, userJid);
chatRealm.setLastPosition(chat.getLastPosition());
chatRealm.setArchived(chat.isArchived());
chatRealm.setHistoryRequestedAtStart(chat.isHistoryRequestedAtStart());
NotificationStateRealm notificationStateRealm = chatRealm.getNotificationState();
if (notificationStateRealm == null)
notificationStateRealm = new NotificationStateRealm();
notificationStateRealm.setMode(chat.getNotificationState().getMode());
notificationStateRealm.setTimestamp(chat.getNotificationState().getTimestamp());
chatRealm.setNotificationState(notificationStateRealm);
RealmObject realmObject = realm.copyToRealmOrUpdate(chatRealm);
}
});
}
});
LogManager.d("REALM", Thread.currentThread().getName() + " save chat data: " + (System.currentTimeMillis() - startTime));
}
Aggregations