Skip to content

Commit

Permalink
Merge pull request #808 from redsolution/develop
Browse files Browse the repository at this point in the history
Version 2.2.1 Release Candidate 2
  • Loading branch information
Str4tocaster committed Mar 15, 2018
2 parents 097427f + 96e03ba commit 2e26725
Show file tree
Hide file tree
Showing 15 changed files with 263 additions and 32 deletions.
13 changes: 3 additions & 10 deletions xabber/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
defaultConfig {
minSdkVersion 15
targetSdkVersion 27
versionCode 465
versionName '2.2.1(465)'
versionCode 467
versionName '2.2.1(467)'
}

lintOptions {
Expand Down Expand Up @@ -128,14 +128,7 @@ def initFabricPropertiesIfNeeded() {

def build_param = "${build}";

if (build_param != "dev") {
//exclude dev
android.variantFilter { variant ->
if (variant.getFlavors().get(0).name.equals('dev')) {
variant.setIgnore(true);
}
}
} else {
if (build_param == "dev") {
//exclude all but dev
android.variantFilter { variant ->
if (!variant.getFlavors().get(0).name.equals('dev')) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,8 @@ public int getTimestamp() {
public void setTimestamp(int timestamp) {
this.timestamp = timestamp;
}

public String getId() {
return id;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.xabber.android.data.database.RealmManager;
import com.xabber.android.data.database.realm.DiscoveryInfoCache;
import com.xabber.android.data.log.LogManager;

import org.jivesoftware.smackx.caps.cache.EntityCapsPersistentCache;
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
Expand All @@ -15,10 +16,12 @@ class EntityCapsCache implements EntityCapsPersistentCache {

@Override
public void addDiscoverInfoByNodePersistent(final String nodeVer, final DiscoverInfo info) {
final long startTime = System.currentTimeMillis();
if (nodeVer == null || info == null) {
return;
}

// TODO: 13.03.18 ANR - WRITE
Realm realm = RealmManager.getInstance().getNewRealm();
realm.beginTransaction();

Expand All @@ -27,6 +30,9 @@ public void addDiscoverInfoByNodePersistent(final String nodeVer, final Discover

realm.commitTransaction();
realm.close();
LogManager.d("REALM", Thread.currentThread().getName()
+ " save discover info: " + (System.currentTimeMillis() - startTime));

}

@Override
Expand All @@ -50,6 +56,8 @@ public DiscoverInfo lookup(String nodeVer) {

@Override
public void emptyCache() {
final long startTime = System.currentTimeMillis();
// TODO: 13.03.18 ANR - WRITE
Realm realm = RealmManager.getInstance().getNewRealm();

realm.beginTransaction();
Expand All @@ -59,5 +67,7 @@ public void emptyCache() {
realm.commitTransaction();

realm.close();
LogManager.d("REALM", Thread.currentThread().getName()
+ " delete discover cache: " + (System.currentTimeMillis() - startTime));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import com.xabber.android.data.roster.RosterContact;
import com.xabber.android.data.roster.RosterManager;

import net.java.otr4j.OtrException;
import net.java.otr4j.io.SerializationUtils;
import net.java.otr4j.io.messages.PlainTextMessage;

Expand Down Expand Up @@ -543,4 +542,65 @@ private List<MessageItem> getMessageItems(org.jivesoftware.smackx.mam.MamManager
}
return messageItems;
}

/**
* Only for debugging
* Call only from background thread
* @param chat
*/
public void requestFullChatHistory(final AbstractChat chat) {
if (chat == null || chat.isRemotePreviousHistoryCompletelyLoaded()) {
return;
}

final AccountItem accountItem = AccountManager.getInstance().getAccount(chat.getAccount());
if (accountItem == null || !accountItem.getFactualStatusMode().isOnline()) {
return;
}

if (!checkSupport(accountItem)) {
return;
}

String firstMamMessageMamId;
boolean remoteHistoryCompletelyLoaded;
{
Realm realm = MessageDatabaseManager.getInstance().getNewBackgroundRealm();
SyncInfo syncInfo = getSyncInfo(realm, chat.getAccount(), chat.getUser());
firstMamMessageMamId = syncInfo.getFirstMamMessageMamId();
remoteHistoryCompletelyLoaded = syncInfo.isRemoteHistoryCompletelyLoaded();
realm.close();
}

if (remoteHistoryCompletelyLoaded) {
chat.setRemotePreviousHistoryCompletelyLoaded(true);
}

if (firstMamMessageMamId == null || remoteHistoryCompletelyLoaded) {
return;
}

org.jivesoftware.smackx.mam.MamManager mamManager =
org.jivesoftware.smackx.mam.MamManager.getInstanceFor(accountItem.getConnection());

final org.jivesoftware.smackx.mam.MamManager.MamQueryResult mamQueryResult;
try {
LogManager.i("MAM", "Loading previous history");
mamQueryResult = mamManager.queryArchive(chat.getUser().getJid());
} catch (SmackException.NotLoggedInException | SmackException.NoResponseException
| XMPPException.XMPPErrorException | InterruptedException
| SmackException.NotConnectedException e) {
LogManager.exception(this, e);
return;
}
LogManager.i("MAM", "queryArchive finished. fin count expected: "
+ mamQueryResult.mamFin.getRSMSet().getCount() + " real: "
+ mamQueryResult.forwardedMessages.size());

Realm realm = MessageDatabaseManager.getInstance().getNewBackgroundRealm();
List<MessageItem> messageItems = getMessageItems(mamQueryResult, chat);
syncMessages(realm, chat, messageItems);
updatePreviousHistorySyncInfo(realm, chat, mamQueryResult, messageItems);
realm.close();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ private MUCManager() {

@Override
public void onLoad() {
Application.getInstance().runOnUiThread(new Runnable() {
Application.getInstance().runInBackground(new Runnable() {
@Override
public void run() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
import java.util.HashMap;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.UUID;

import io.realm.Realm;

Expand Down Expand Up @@ -252,7 +251,7 @@ protected boolean onPacket(UserJid bareAddress, Stanza stanza, boolean isCarbons
if (delay != null) {
notify = false;
}

final long startTime = System.currentTimeMillis();
Realm realm = MessageDatabaseManager.getInstance().getRealmUiThread();
final MessageItem sameMessage = realm
.where(MessageItem.class)
Expand All @@ -261,9 +260,11 @@ protected boolean onPacket(UserJid bareAddress, Stanza stanza, boolean isCarbons

// Server send our own message back
if (sameMessage != null) {
realm.beginTransaction();
sameMessage.setDelivered(true);
realm.commitTransaction();
// realm.beginTransaction();
// sameMessage.setDelivered(true);
// realm.commitTransaction();
LogManager.d("REALM", Thread.currentThread().getName()
+ " save message delivered: " + (System.currentTimeMillis() - startTime));
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.xabber.android.data.database.RealmManager;
import com.xabber.android.data.database.realm.PatreonGoalRealm;
import com.xabber.android.data.database.realm.PatreonRealm;
import com.xabber.android.data.log.LogManager;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -101,12 +102,16 @@ public Single<XabberComClient.Patreon> savePatreonToRealm(XabberComClient.Patreo
patreonRealm.setString(patreon.getString());
patreonRealm.setGoals(patreonGoals);

// TODO: 13.03.18 ANR - WRITE
final long startTime = System.currentTimeMillis();
Realm realm = RealmManager.getInstance().getNewRealm();
realm.beginTransaction();
PatreonRealm resultRealm = realm.copyToRealmOrUpdate(patreonRealm);
realm.commitTransaction();
XabberComClient.Patreon result = patreonRealmToDTO(resultRealm);
realm.close();
LogManager.d("REALM", Thread.currentThread().getName()
+ " save patreon data: " + (System.currentTimeMillis() - startTime));

Log.d(LOG_TAG, "Patreon was saved to Realm");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import com.xabber.android.data.extension.cs.ChatStateManager;
import com.xabber.android.data.extension.file.FileManager;
import com.xabber.android.data.extension.otr.OTRManager;
import com.xabber.android.data.log.LogManager;
import com.xabber.android.data.message.chat.ChatManager;
import com.xabber.android.data.notification.NotificationManager;

Expand Down Expand Up @@ -258,11 +259,15 @@ protected void createAndSaveNewMessage(Resourcepart resource, String text,
}

public void saveMessageItem(final MessageItem messageItem) {
final long startTime = System.currentTimeMillis();
// TODO: 12.03.18 ANR - WRITE (переписать без UI)
MessageDatabaseManager.getInstance().getRealmUiThread()
.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealm(messageItem);
LogManager.d("REALM", Thread.currentThread().getName()
+ " save message item: " + (System.currentTimeMillis() - startTime));
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,12 +248,18 @@ public void sendMessage(AccountJid account, UserJid user, String text) {
}

private void sendMessage(final String text, final AbstractChat chat) {
final long startTime = System.currentTimeMillis();

MessageDatabaseManager.getInstance()
// TODO: 13.03.18 ANR - WRITE
.getRealmUiThread().executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
MessageItem newMessageItem = chat.createNewMessageItem(text);
realm.copyToRealm(newMessageItem);
LogManager.d("REALM", Thread.currentThread().getName()
+ " save message before sending: " + (System.currentTimeMillis() - startTime));

}
});
if (chat.canSendMessage())
Expand Down Expand Up @@ -449,15 +455,19 @@ boolean isVisibleChat(AbstractChat chat) {
* @param user
*/
public void clearHistory(final AccountJid account, final UserJid user) {
final long startTime = System.currentTimeMillis();

MessageDatabaseManager.getInstance()
// TODO: 13.03.18 ANR
.getRealmUiThread().executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.where(MessageItem.class)
.equalTo(MessageItem.Fields.ACCOUNT, account.toString())
.equalTo(MessageItem.Fields.USER, user.toString())
.findAll().deleteAllFromRealm();
LogManager.d("REALM", Thread.currentThread().getName()
+ " clear history: " + (System.currentTimeMillis() - startTime));
}
});
}
Expand Down Expand Up @@ -649,6 +659,8 @@ public void processCarbonsMessage(AccountJid account, final Message message, Car
}

final AbstractChat finalChat = chat;
// TODO: 12.03.18 ANR - WRITE (переписать без UI)
final long startTime = System.currentTimeMillis();
MessageDatabaseManager.getInstance().getRealmUiThread().executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Expand All @@ -657,6 +669,8 @@ public void execute(Realm realm) {
newMessageItem.setSent(true);
newMessageItem.setForwarded(true);
realm.copyToRealm(newMessageItem);
LogManager.d("REALM", Thread.currentThread().getName()
+ " save carbons message: " + (System.currentTimeMillis() - startTime));
}
});
EventBus.getDefault().post(new NewMessageEvent());
Expand Down
Loading

0 comments on commit 2e26725

Please sign in to comment.