Resync has_enabled_account setting after delete and on start
This commit is contained in:
parent
3205d763cf
commit
8f0cd86090
|
@ -282,7 +282,7 @@ public class XmppConnectionService extends Service {
|
|||
private int keyStatusUpdatedListenerCount = 0;
|
||||
private AtomicLong mLastExpiryRun = new AtomicLong(0);
|
||||
private SecureRandom mRandom;
|
||||
private LruCache<Pair<String,String>,ServiceDiscoveryResult> discoCache = new LruCache<>(20);
|
||||
private LruCache<Pair<String, String>, ServiceDiscoveryResult> discoCache = new LruCache<>(20);
|
||||
private final OnBindListener mOnBindListener = new OnBindListener() {
|
||||
|
||||
@Override
|
||||
|
@ -295,7 +295,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (account.setOption(Account.OPTION_LOGGED_IN_SUCCESSFULLY,true)) {
|
||||
if (account.setOption(Account.OPTION_LOGGED_IN_SUCCESSFULLY, true)) {
|
||||
databaseBackend.updateAccount(account);
|
||||
}
|
||||
account.getRoster().clearPresences();
|
||||
|
@ -342,7 +342,7 @@ public class XmppConnectionService extends Service {
|
|||
if (conversation.getAccount() == account
|
||||
&& !account.pendingConferenceJoins.contains(conversation)) {
|
||||
if (!conversation.startOtrIfNeeded()) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": couldn't start OTR with "+conversation.getContact().getJid()+" when needed");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": couldn't start OTR with " + conversation.getContact().getJid() + " when needed");
|
||||
}
|
||||
sendUnsentMessages(conversation);
|
||||
}
|
||||
|
@ -374,11 +374,11 @@ public class XmppConnectionService extends Service {
|
|||
final int next = connection.getTimeToNextAttempt();
|
||||
final boolean lowPingTimeoutMode = isInLowPingTimeoutMode(account);
|
||||
if (next <= 0) {
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid()+": error connecting account. reconnecting now. lowPingTimeout="+Boolean.toString(lowPingTimeoutMode));
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": error connecting account. reconnecting now. lowPingTimeout=" + Boolean.toString(lowPingTimeoutMode));
|
||||
reconnectAccount(account, true, false);
|
||||
} else {
|
||||
final int attempt = connection.getAttempt() + 1;
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": error connecting account. try again in " + next + "s for the " + attempt+ " time. lowPingTimeout="+Boolean.toString(lowPingTimeoutMode));
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": error connecting account. try again in " + next + "s for the " + attempt + " time. lowPingTimeout=" + Boolean.toString(lowPingTimeoutMode));
|
||||
scheduleWakeUpCall(next, account.getUuid().hashCode());
|
||||
}
|
||||
}
|
||||
|
@ -455,8 +455,8 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void attachLocationToConversation(final Conversation conversation,
|
||||
final Uri uri,
|
||||
final UiCallback<Message> callback) {
|
||||
final Uri uri,
|
||||
final UiCallback<Message> callback) {
|
||||
int encryption = conversation.getNextEncryption();
|
||||
if (encryption == Message.ENCRYPTION_PGP) {
|
||||
encryption = Message.ENCRYPTION_DECRYPTED;
|
||||
|
@ -473,10 +473,10 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void attachFileToConversation(final Conversation conversation,
|
||||
final Uri uri,
|
||||
final UiCallback<Message> callback) {
|
||||
final Uri uri,
|
||||
final UiCallback<Message> callback) {
|
||||
if (FileBackend.weOwnFile(this, uri)) {
|
||||
Log.d(Config.LOGTAG,"trying to attach file that belonged to us");
|
||||
Log.d(Config.LOGTAG, "trying to attach file that belonged to us");
|
||||
callback.error(R.string.security_error_invalid_file_access, null);
|
||||
return;
|
||||
}
|
||||
|
@ -488,7 +488,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
message.setCounterpart(conversation.getNextCounterpart());
|
||||
message.setType(Message.TYPE_FILE);
|
||||
final AttachFileToConversationRunnable runnable = new AttachFileToConversationRunnable(this,uri,message,callback);
|
||||
final AttachFileToConversationRunnable runnable = new AttachFileToConversationRunnable(this, uri, message, callback);
|
||||
if (runnable.isVideoMessage()) {
|
||||
mVideoCompressionExecutor.execute(runnable);
|
||||
} else {
|
||||
|
@ -498,7 +498,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public void attachImageToConversation(final Conversation conversation, final Uri uri, final UiCallback<Message> callback) {
|
||||
if (FileBackend.weOwnFile(this, uri)) {
|
||||
Log.d(Config.LOGTAG,"trying to attach file that belonged to us");
|
||||
Log.d(Config.LOGTAG, "trying to attach file that belonged to us");
|
||||
callback.error(R.string.security_error_invalid_file_access, null);
|
||||
return;
|
||||
}
|
||||
|
@ -509,7 +509,7 @@ public class XmppConnectionService extends Service {
|
|||
if ("never".equals(compressPictures)
|
||||
|| ("auto".equals(compressPictures) && getFileBackend().useImageAsIs(uri))
|
||||
|| (mimeType != null && mimeType.endsWith("/gif"))) {
|
||||
Log.d(Config.LOGTAG,conversation.getAccount().getJid().toBareJid()+ ": not compressing picture. sending as file");
|
||||
Log.d(Config.LOGTAG, conversation.getAccount().getJid().toBareJid() + ": not compressing picture. sending as file");
|
||||
attachFileToConversation(conversation, uri, callback);
|
||||
return;
|
||||
}
|
||||
|
@ -531,7 +531,7 @@ public class XmppConnectionService extends Service {
|
|||
final PgpEngine pgpEngine = getPgpEngine();
|
||||
if (pgpEngine != null) {
|
||||
pgpEngine.encrypt(message, callback);
|
||||
} else if (callback != null){
|
||||
} else if (callback != null) {
|
||||
callback.error(R.string.unable_to_connect_to_keychain, null);
|
||||
}
|
||||
} else {
|
||||
|
@ -593,7 +593,7 @@ public class XmppConnectionService extends Service {
|
|||
if (remoteInput != null && c != null) {
|
||||
final CharSequence body = remoteInput.getCharSequence("text_reply");
|
||||
if (body != null && body.length() > 0) {
|
||||
directReply(c, body.toString(),intent.getBooleanExtra("dismiss_notification",false));
|
||||
directReply(c, body.toString(), intent.getBooleanExtra("dismiss_notification", false));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -601,7 +601,7 @@ public class XmppConnectionService extends Service {
|
|||
if (c != null) {
|
||||
sendReadMarker(c);
|
||||
} else {
|
||||
Log.d(Config.LOGTAG,"received mark read intent for unknown conversation ("+uuid+")");
|
||||
Log.d(Config.LOGTAG, "received mark read intent for unknown conversation (" + uuid + ")");
|
||||
}
|
||||
break;
|
||||
case AudioManager.RINGER_MODE_CHANGED_ACTION:
|
||||
|
@ -625,7 +625,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
break;
|
||||
case ACTION_GCM_MESSAGE_RECEIVED:
|
||||
Log.d(Config.LOGTAG,"gcm push message arrived in service. extras="+intent.getExtras());
|
||||
Log.d(Config.LOGTAG, "gcm push message arrived in service. extras=" + intent.getExtras());
|
||||
pushedAccountHash = intent.getStringExtra("account");
|
||||
break;
|
||||
}
|
||||
|
@ -718,14 +718,14 @@ public class XmppConnectionService extends Service {
|
|||
long discoTimeout = Config.CONNECT_DISCO_TIMEOUT - secondsSinceLastDisco;
|
||||
long timeout = Config.CONNECT_TIMEOUT - secondsSinceLastConnect;
|
||||
if (timeout < 0) {
|
||||
Log.d(Config.LOGTAG, account.getJid() + ": time out during connect reconnecting (secondsSinceLast="+secondsSinceLastConnect+")");
|
||||
Log.d(Config.LOGTAG, account.getJid() + ": time out during connect reconnecting (secondsSinceLast=" + secondsSinceLastConnect + ")");
|
||||
account.getXmppConnection().resetAttemptCount(false);
|
||||
reconnectAccount(account, true, interactive);
|
||||
} else if (discoTimeout < 0) {
|
||||
account.getXmppConnection().sendDiscoTimeout();
|
||||
scheduleWakeUpCall((int) Math.min(timeout,discoTimeout), account.getUuid().hashCode());
|
||||
scheduleWakeUpCall((int) Math.min(timeout, discoTimeout), account.getUuid().hashCode());
|
||||
} else {
|
||||
scheduleWakeUpCall((int) Math.min(timeout,discoTimeout), account.getUuid().hashCode());
|
||||
scheduleWakeUpCall((int) Math.min(timeout, discoTimeout), account.getUuid().hashCode());
|
||||
}
|
||||
} else {
|
||||
if (account.getXmppConnection().getTimeToNextAttempt() <= 0) {
|
||||
|
@ -748,7 +748,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void directReply(Conversation conversation, String body, final boolean dismissAfterReply) {
|
||||
Message message = new Message(conversation,body,conversation.getNextEncryption());
|
||||
Message message = new Message(conversation, body, conversation.getNextEncryption());
|
||||
message.markUnread();
|
||||
if (message.getEncryption() == Message.ENCRYPTION_PGP) {
|
||||
getPgpEngine().encrypt(message, new UiCallback<Message>() {
|
||||
|
@ -757,7 +757,7 @@ public class XmppConnectionService extends Service {
|
|||
message.setEncryption(Message.ENCRYPTION_DECRYPTED);
|
||||
sendMessage(message);
|
||||
if (dismissAfterReply) {
|
||||
markRead(message.getConversation(),true);
|
||||
markRead(message.getConversation(), true);
|
||||
} else {
|
||||
mNotificationService.pushFromDirectReply(message);
|
||||
}
|
||||
|
@ -776,7 +776,7 @@ public class XmppConnectionService extends Service {
|
|||
} else {
|
||||
sendMessage(message);
|
||||
if (dismissAfterReply) {
|
||||
markRead(conversation,true);
|
||||
markRead(conversation, true);
|
||||
} else {
|
||||
mNotificationService.pushFromDirectReply(message);
|
||||
}
|
||||
|
@ -796,7 +796,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private boolean awayWhenScreenOff() {
|
||||
return getBooleanPreference(SettingsActivity.AWAY_WHEN_SCREEN_IS_OFF,R.bool.away_when_screen_off);
|
||||
return getBooleanPreference(SettingsActivity.AWAY_WHEN_SCREEN_IS_OFF, R.bool.away_when_screen_off);
|
||||
}
|
||||
|
||||
private String getCompressPicturesPreference() {
|
||||
|
@ -836,7 +836,7 @@ public class XmppConnectionService extends Service {
|
|||
return audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;
|
||||
}
|
||||
} catch (Throwable throwable) {
|
||||
Log.d(Config.LOGTAG,"platform bug in isPhoneSilenced ("+ throwable.getMessage()+")");
|
||||
Log.d(Config.LOGTAG, "platform bug in isPhoneSilenced (" + throwable.getMessage() + ")");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -860,7 +860,7 @@ public class XmppConnectionService extends Service {
|
|||
private void dismissErrorNotifications() {
|
||||
for (final Account account : this.accounts) {
|
||||
if (account.hasErrorStatus()) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": dismissing error notification");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": dismissing error notification");
|
||||
if (account.setShowErrorNotification(false)) {
|
||||
databaseBackend.updateAccount(account);
|
||||
}
|
||||
|
@ -919,15 +919,17 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
};
|
||||
|
||||
Log.d(Config.LOGTAG,"initializing database...");
|
||||
Log.d(Config.LOGTAG, "initializing database...");
|
||||
this.databaseBackend = DatabaseBackend.getInstance(getApplicationContext());
|
||||
Log.d(Config.LOGTAG,"restoring accounts...");
|
||||
Log.d(Config.LOGTAG, "restoring accounts...");
|
||||
this.accounts = databaseBackend.getAccounts();
|
||||
|
||||
if (this.accounts.size() == 0 && Arrays.asList("Sony","Sony Ericsson").contains(Build.MANUFACTURER)) {
|
||||
getPreferences().edit().putBoolean(SettingsActivity.KEEP_FOREGROUND_SERVICE,true).commit();
|
||||
Log.d(Config.LOGTAG,Build.MANUFACTURER+" is on blacklist. enabling foreground service");
|
||||
final SharedPreferences.Editor editor = getPreferences().edit();
|
||||
if (this.accounts.size() == 0 && Arrays.asList("Sony", "Sony Ericsson").contains(Build.MANUFACTURER)) {
|
||||
editor.putBoolean(SettingsActivity.KEEP_FOREGROUND_SERVICE, true);
|
||||
Log.d(Config.LOGTAG, Build.MANUFACTURER + " is on blacklist. enabling foreground service");
|
||||
}
|
||||
editor.putBoolean(EventReceiver.SETTING_ENABLED_ACCOUNTS, hasEnabledAccounts()).apply();
|
||||
editor.apply();
|
||||
|
||||
restoreFromDatabase();
|
||||
|
||||
|
@ -939,12 +941,12 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
}).start();
|
||||
if (Config.supportOpenPgp()) {
|
||||
this.pgpServiceConnection = new OpenPgpServiceConnection(getApplicationContext(), "org.sufficientlysecure.keychain", new OpenPgpServiceConnection.OnBound() {
|
||||
this.pgpServiceConnection = new OpenPgpServiceConnection(this, "org.sufficientlysecure.keychain", new OpenPgpServiceConnection.OnBound() {
|
||||
@Override
|
||||
public void onBound(IOpenPgpService2 service) {
|
||||
for (Account account : accounts) {
|
||||
final PgpDecryptionService pgp = account.getPgpDecryptionService();
|
||||
if(pgp != null) {
|
||||
if (pgp != null) {
|
||||
pgp.continueDecryption(true);
|
||||
}
|
||||
}
|
||||
|
@ -967,7 +969,7 @@ public class XmppConnectionService extends Service {
|
|||
scheduleNextIdlePing();
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
registerReceiver(this.mEventReceiver,new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||
registerReceiver(this.mEventReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1008,22 +1010,22 @@ public class XmppConnectionService extends Service {
|
|||
public void toggleForegroundService() {
|
||||
if (mForceForegroundService.get() || (keepForegroundService() && hasEnabledAccounts())) {
|
||||
startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification());
|
||||
Log.d(Config.LOGTAG,"started foreground service");
|
||||
Log.d(Config.LOGTAG, "started foreground service");
|
||||
} else {
|
||||
stopForeground(true);
|
||||
Log.d(Config.LOGTAG,"stopped foreground service");
|
||||
Log.d(Config.LOGTAG, "stopped foreground service");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean keepForegroundService() {
|
||||
return getBooleanPreference(SettingsActivity.KEEP_FOREGROUND_SERVICE,R.bool.enable_foreground_service);
|
||||
return getBooleanPreference(SettingsActivity.KEEP_FOREGROUND_SERVICE, R.bool.enable_foreground_service);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTaskRemoved(final Intent rootIntent) {
|
||||
super.onTaskRemoved(rootIntent);
|
||||
if (keepForegroundService() || mForceForegroundService.get()) {
|
||||
Log.d(Config.LOGTAG,"ignoring onTaskRemoved because foreground service is activated");
|
||||
Log.d(Config.LOGTAG, "ignoring onTaskRemoved because foreground service is activated");
|
||||
} else {
|
||||
this.logoutAndSave(false);
|
||||
}
|
||||
|
@ -1062,14 +1064,14 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
@TargetApi(Build.VERSION_CODES.M)
|
||||
private void scheduleNextIdlePing() {
|
||||
Log.d(Config.LOGTAG,"schedule next idle ping");
|
||||
Log.d(Config.LOGTAG, "schedule next idle ping");
|
||||
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
|
||||
Intent intent = new Intent(this, EventReceiver.class);
|
||||
intent.setAction(ACTION_IDLE_PING);
|
||||
alarmManager.setAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP,
|
||||
SystemClock.elapsedRealtime()+(Config.IDLE_PING_INTERVAL * 1000),
|
||||
PendingIntent.getBroadcast(this,0,intent,0)
|
||||
);
|
||||
SystemClock.elapsedRealtime() + (Config.IDLE_PING_INTERVAL * 1000),
|
||||
PendingIntent.getBroadcast(this, 0, intent, 0)
|
||||
);
|
||||
}
|
||||
|
||||
public XmppConnection createConnection(final Account account) {
|
||||
|
@ -1111,7 +1113,7 @@ public class XmppConnectionService extends Service {
|
|||
private void sendFileMessage(final Message message, final boolean delay) {
|
||||
Log.d(Config.LOGTAG, "send file message");
|
||||
final Account account = message.getConversation().getAccount();
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message,false).getSize())
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message, false).getSize())
|
||||
|| message.getConversation().getMode() == Conversation.MODE_MULTI) {
|
||||
mHttpConnectionManager.createNewUploadConnection(message, delay);
|
||||
} else {
|
||||
|
@ -1153,7 +1155,7 @@ public class XmppConnectionService extends Service {
|
|||
switch (message.getEncryption()) {
|
||||
case Message.ENCRYPTION_NONE:
|
||||
if (message.needsUploading()) {
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message,false).getSize())
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message, false).getSize())
|
||||
|| conversation.getMode() == Conversation.MODE_MULTI
|
||||
|| message.fixCounterpart()) {
|
||||
this.sendFileMessage(message, delay);
|
||||
|
@ -1167,7 +1169,7 @@ public class XmppConnectionService extends Service {
|
|||
case Message.ENCRYPTION_PGP:
|
||||
case Message.ENCRYPTION_DECRYPTED:
|
||||
if (message.needsUploading()) {
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message,false).getSize())
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message, false).getSize())
|
||||
|| conversation.getMode() == Conversation.MODE_MULTI
|
||||
|| message.fixCounterpart()) {
|
||||
this.sendFileMessage(message, delay);
|
||||
|
@ -1195,17 +1197,17 @@ public class XmppConnectionService extends Service {
|
|||
if (message.fixCounterpart()) {
|
||||
conversation.startOtrSession(message.getCounterpart().getResourcepart(), true);
|
||||
} else {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": could not fix counterpart for OTR message to contact "+message.getCounterpart());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": could not fix counterpart for OTR message to contact " + message.getCounterpart());
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+" OTR session with "+message.getContact()+" is in wrong state: "+otrSession.getSessionStatus().toString());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + " OTR session with " + message.getContact() + " is in wrong state: " + otrSession.getSessionStatus().toString());
|
||||
}
|
||||
break;
|
||||
case Message.ENCRYPTION_AXOLOTL:
|
||||
message.setFingerprint(account.getAxolotlService().getOwnFingerprint());
|
||||
if (message.needsUploading()) {
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message,false).getSize())
|
||||
if (account.httpUploadAvailable(fileBackend.getFile(message, false).getSize())
|
||||
|| conversation.getMode() == Conversation.MODE_MULTI
|
||||
|| message.fixCounterpart()) {
|
||||
this.sendFileMessage(message, delay);
|
||||
|
@ -1255,7 +1257,7 @@ public class XmppConnectionService extends Service {
|
|||
break;
|
||||
case Message.ENCRYPTION_OTR:
|
||||
if (!conversation.hasValidOtrSession() && message.getCounterpart() != null) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": create otr session without starting for "+message.getContact().getJid());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": create otr session without starting for " + message.getContact().getJid());
|
||||
conversation.startOtrSession(message.getCounterpart().getResourcepart(), false);
|
||||
}
|
||||
break;
|
||||
|
@ -1365,7 +1367,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void pushBookmarks(Account account) {
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid()+": pushing bookmarks");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": pushing bookmarks");
|
||||
IqPacket iqPacket = new IqPacket(IqPacket.TYPE.SET);
|
||||
Element query = iqPacket.query("jabber:iq:private");
|
||||
Element storage = query.addChild("storage", "storage:bookmarks");
|
||||
|
@ -1381,31 +1383,31 @@ public class XmppConnectionService extends Service {
|
|||
for (Account account : this.accounts) {
|
||||
accountLookupTable.put(account.getUuid(), account);
|
||||
}
|
||||
Log.d(Config.LOGTAG,"restoring conversations...");
|
||||
Log.d(Config.LOGTAG, "restoring conversations...");
|
||||
final long startTimeConversationsRestore = SystemClock.elapsedRealtime();
|
||||
this.conversations.addAll(databaseBackend.getConversations(Conversation.STATUS_AVAILABLE));
|
||||
for(Iterator<Conversation> iterator = conversations.listIterator(); iterator.hasNext();) {
|
||||
for (Iterator<Conversation> iterator = conversations.listIterator(); iterator.hasNext(); ) {
|
||||
Conversation conversation = iterator.next();
|
||||
Account account = accountLookupTable.get(conversation.getAccountUuid());
|
||||
if (account != null) {
|
||||
conversation.setAccount(account);
|
||||
} else {
|
||||
Log.e(Config.LOGTAG,"unable to restore Conversations with "+conversation.getJid());
|
||||
Log.e(Config.LOGTAG, "unable to restore Conversations with " + conversation.getJid());
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
long diffConversationsRestore = SystemClock.elapsedRealtime() - startTimeConversationsRestore;
|
||||
Log.d(Config.LOGTAG,"finished restoring conversations in "+diffConversationsRestore+"ms");
|
||||
Log.d(Config.LOGTAG, "finished restoring conversations in " + diffConversationsRestore + "ms");
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
long deletionDate = getAutomaticMessageDeletionDate();
|
||||
mLastExpiryRun.set(SystemClock.elapsedRealtime());
|
||||
if (deletionDate > 0) {
|
||||
Log.d(Config.LOGTAG, "deleting messages that are older than "+AbstractGenerator.getTimestamp(deletionDate));
|
||||
Log.d(Config.LOGTAG, "deleting messages that are older than " + AbstractGenerator.getTimestamp(deletionDate));
|
||||
databaseBackend.expireOldMessages(deletionDate);
|
||||
}
|
||||
Log.d(Config.LOGTAG,"restoring roster...");
|
||||
Log.d(Config.LOGTAG, "restoring roster...");
|
||||
for (Account account : accounts) {
|
||||
databaseBackend.readRoster(account.getRoster());
|
||||
account.initAccountServices(XmppConnectionService.this); //roster needs to be loaded at this stage
|
||||
|
@ -1434,7 +1436,7 @@ public class XmppConnectionService extends Service {
|
|||
mNotificationService.finishBacklog(false);
|
||||
mRestoredFromDatabase = true;
|
||||
final long diffMessageRestore = SystemClock.elapsedRealtime() - startMessageRestore;
|
||||
Log.d(Config.LOGTAG, "finished restoring messages in "+diffMessageRestore+"ms");
|
||||
Log.d(Config.LOGTAG, "finished restoring messages in " + diffMessageRestore + "ms");
|
||||
updateConversationUi();
|
||||
}
|
||||
};
|
||||
|
@ -1481,7 +1483,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
}
|
||||
Log.d(Config.LOGTAG, "finished merging phone contacts");
|
||||
mShortcutService.refresh(mInitialAddressbookSyncCompleted.compareAndSet(false,true));
|
||||
mShortcutService.refresh(mInitialAddressbookSyncCompleted.compareAndSet(false, true));
|
||||
updateAccountUi();
|
||||
}
|
||||
});
|
||||
|
@ -1510,7 +1512,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void markFileDeleted(final String path) {
|
||||
Log.d(Config.LOGTAG,"deleted file "+path);
|
||||
Log.d(Config.LOGTAG, "deleted file " + path);
|
||||
for (Conversation conversation : getConversations()) {
|
||||
conversation.findMessagesWithFiles(new Conversation.OnMessageFound() {
|
||||
@Override
|
||||
|
@ -1526,7 +1528,7 @@ public class XmppConnectionService extends Service {
|
|||
updateConversationUi();
|
||||
}
|
||||
} else {
|
||||
Log.d(Config.LOGTAG,"found matching message for file "+path+" but file still exists");
|
||||
Log.d(Config.LOGTAG, "found matching message for file " + path + " but file still exists");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1599,7 +1601,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public List<Conversation> findAllConferencesWith(Contact contact) {
|
||||
ArrayList<Conversation> results = new ArrayList<>();
|
||||
for(Conversation conversation : conversations) {
|
||||
for (Conversation conversation : conversations) {
|
||||
if (conversation.getMode() == Conversation.MODE_MULTI
|
||||
&& conversation.getMucOptions().isContactInRoom(contact)) {
|
||||
results.add(conversation);
|
||||
|
@ -1631,7 +1633,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public Conversation findOrCreateConversation(Account account, Jid jid, boolean muc, final boolean async) {
|
||||
return this.findOrCreateConversation(account,jid,muc,false, async);
|
||||
return this.findOrCreateConversation(account, jid, muc, false, async);
|
||||
}
|
||||
|
||||
public Conversation findOrCreateConversation(final Account account, final Jid jid, final boolean muc, final boolean joinAfterCreate, final boolean async) {
|
||||
|
@ -1657,7 +1659,7 @@ public class XmppConnectionService extends Service {
|
|||
conversation.setContactJid(jid.toBareJid());
|
||||
}
|
||||
databaseBackend.updateConversation(conversation);
|
||||
loadMessagesFromDb = conversation.messagesLoaded.compareAndSet(true,false);
|
||||
loadMessagesFromDb = conversation.messagesLoaded.compareAndSet(true, false);
|
||||
} else {
|
||||
String conversationName;
|
||||
Contact contact = account.getRoster().getContact(jid);
|
||||
|
@ -1692,7 +1694,7 @@ public class XmppConnectionService extends Service {
|
|||
mMessageArchiveService.query(c);
|
||||
} else {
|
||||
if (query.getConversation() == null) {
|
||||
mMessageArchiveService.query(c, query.getStart(),query.isCatchup());
|
||||
mMessageArchiveService.query(c, query.getStart(), query.isCatchup());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1753,7 +1755,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void syncEnabledAccountSetting() {
|
||||
getPreferences().edit().putBoolean(EventReceiver.SETTING_ENABLED_ACCOUNTS,hasEnabledAccounts()).apply();
|
||||
getPreferences().edit().putBoolean(EventReceiver.SETTING_ENABLED_ACCOUNTS, hasEnabledAccounts()).apply();
|
||||
}
|
||||
|
||||
public void createAccountFromKey(final String alias, final OnAccountCreated callback) {
|
||||
|
@ -1794,10 +1796,10 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void updateKeyInAccount(final Account account, final String alias) {
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid()+": update key in account " + alias);
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": update key in account " + alias);
|
||||
try {
|
||||
X509Certificate[] chain = KeyChain.getCertificateChain(XmppConnectionService.this, alias);
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+" loaded certificate chain");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + " loaded certificate chain");
|
||||
Pair<Jid, String> info = CryptoHelper.extractJidAndName(chain[0]);
|
||||
if (account.getJid().toBareJid().equals(info.first)) {
|
||||
account.setPrivateKeyAlias(alias);
|
||||
|
@ -1876,7 +1878,7 @@ public class XmppConnectionService extends Service {
|
|||
@Override
|
||||
public void run() {
|
||||
if (!databaseBackend.deleteAccount(account)) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": unable to delete account");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": unable to delete account");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -1884,6 +1886,7 @@ public class XmppConnectionService extends Service {
|
|||
this.accounts.remove(account);
|
||||
updateAccountUi();
|
||||
getNotificationService().updateErrorNotification();
|
||||
syncEnabledAccountSetting();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2114,7 +2117,7 @@ public class XmppConnectionService extends Service {
|
|||
if (account.getStatus() == Account.State.ONLINE) {
|
||||
account.deactivateGracePeriod();
|
||||
final XmppConnection connection = account.getXmppConnection();
|
||||
if (connection != null ) {
|
||||
if (connection != null) {
|
||||
if (connection.getFeatures().csi()) {
|
||||
connection.sendActive();
|
||||
}
|
||||
|
@ -2156,7 +2159,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void joinMuc(Conversation conversation) {
|
||||
joinMuc(conversation,null, false);
|
||||
joinMuc(conversation, null, false);
|
||||
}
|
||||
|
||||
public void joinMuc(Conversation conversation, boolean followedInvite) {
|
||||
|
@ -2164,7 +2167,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void joinMuc(Conversation conversation, final OnConferenceJoined onConferenceJoined) {
|
||||
joinMuc(conversation,onConferenceJoined,false);
|
||||
joinMuc(conversation, onConferenceJoined, false);
|
||||
}
|
||||
|
||||
private void joinMuc(Conversation conversation, final OnConferenceJoined onConferenceJoined, final boolean followedInvite) {
|
||||
|
@ -2214,7 +2217,7 @@ public class XmppConnectionService extends Service {
|
|||
if (mucOptions.membersOnly() && mucOptions.nonanonymous()) {
|
||||
fetchConferenceMembers(conversation);
|
||||
if (followedInvite && conversation.getBookmark() == null) {
|
||||
saveConversationAsBookmark(conversation,null);
|
||||
saveConversationAsBookmark(conversation, null);
|
||||
}
|
||||
}
|
||||
sendUnsentMessages(conversation);
|
||||
|
@ -2248,7 +2251,7 @@ public class XmppConnectionService extends Service {
|
|||
private void fetchConferenceMembers(final Conversation conversation) {
|
||||
final Account account = conversation.getAccount();
|
||||
final AxolotlService axolotlService = account.getAxolotlService();
|
||||
final String[] affiliations = {"member","admin","owner"};
|
||||
final String[] affiliations = {"member", "admin", "owner"};
|
||||
OnIqPacketReceived callback = new OnIqPacketReceived() {
|
||||
|
||||
private int i = 0;
|
||||
|
@ -2259,9 +2262,9 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
Element query = packet.query("http://jabber.org/protocol/muc#admin");
|
||||
if (packet.getType() == IqPacket.TYPE.RESULT && query != null) {
|
||||
for(Element child : query.getChildren()) {
|
||||
for (Element child : query.getChildren()) {
|
||||
if ("item".equals(child.getName())) {
|
||||
MucOptions.User user = AbstractParser.parseItem(conversation,child);
|
||||
MucOptions.User user = AbstractParser.parseItem(conversation, child);
|
||||
if (!user.realJidMatchesAccount()) {
|
||||
boolean isNew = conversation.getMucOptions().updateUser(user);
|
||||
if (isNew && user.getRealJid() != null && axolotlService.hasEmptyDeviceList(user.getRealJid())) {
|
||||
|
@ -2272,7 +2275,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
} else {
|
||||
success = false;
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": could not request affiliation "+affiliations[i]+" in "+conversation.getJid().toBareJid());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": could not request affiliation " + affiliations[i] + " in " + conversation.getJid().toBareJid());
|
||||
}
|
||||
++i;
|
||||
if (i >= affiliations.length) {
|
||||
|
@ -2280,11 +2283,11 @@ public class XmppConnectionService extends Service {
|
|||
if (success) {
|
||||
List<Jid> cryptoTargets = conversation.getAcceptedCryptoTargets();
|
||||
boolean changed = false;
|
||||
for(ListIterator<Jid> iterator = cryptoTargets.listIterator(); iterator.hasNext();) {
|
||||
for (ListIterator<Jid> iterator = cryptoTargets.listIterator(); iterator.hasNext(); ) {
|
||||
Jid jid = iterator.next();
|
||||
if (!members.contains(jid)) {
|
||||
iterator.remove();
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": removed "+jid+" from crypto targets of "+conversation.getName());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": removed " + jid + " from crypto targets of " + conversation.getName());
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
@ -2293,17 +2296,17 @@ public class XmppConnectionService extends Service {
|
|||
updateConversation(conversation);
|
||||
}
|
||||
}
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": retrieved members for "+conversation.getJid().toBareJid()+": "+conversation.getMucOptions().getMembers());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": retrieved members for " + conversation.getJid().toBareJid() + ": " + conversation.getMucOptions().getMembers());
|
||||
getAvatarService().clear(conversation);
|
||||
updateMucRosterUi();
|
||||
updateConversationUi();
|
||||
}
|
||||
}
|
||||
};
|
||||
for(String affiliation : affiliations) {
|
||||
for (String affiliation : affiliations) {
|
||||
sendIqPacket(account, mIqGenerator.queryAffiliation(conversation, affiliation), callback);
|
||||
}
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": fetching members for "+conversation.getName());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": fetching members for " + conversation.getName());
|
||||
}
|
||||
|
||||
public void providePasswordForMuc(Conversation conversation, String password) {
|
||||
|
@ -2321,7 +2324,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private boolean hasEnabledAccounts() {
|
||||
for(Account account : this.accounts) {
|
||||
for (Account account : this.accounts) {
|
||||
if (!account.isOptionSet(Account.OPTION_DISABLED)) {
|
||||
return true;
|
||||
}
|
||||
|
@ -2416,9 +2419,9 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public boolean createAdhocConference(final Account account,
|
||||
final String subject,
|
||||
final Iterable<Jid> jids,
|
||||
final UiCallback<Conversation> callback) {
|
||||
final String subject,
|
||||
final Iterable<Jid> jids,
|
||||
final UiCallback<Conversation> callback) {
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": creating adhoc conference with " + jids.toString());
|
||||
if (account.getStatus() == Account.State.ONLINE) {
|
||||
try {
|
||||
|
@ -2488,7 +2491,7 @@ public class XmppConnectionService extends Service {
|
|||
sendIqPacket(conversation.getAccount(), request, new OnIqPacketReceived() {
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
Element query = packet.findChild("query","http://jabber.org/protocol/disco#info");
|
||||
Element query = packet.findChild("query", "http://jabber.org/protocol/disco#info");
|
||||
if (packet.getType() == IqPacket.TYPE.RESULT && query != null) {
|
||||
ArrayList<String> features = new ArrayList<>();
|
||||
for (Element child : query.getChildren()) {
|
||||
|
@ -2507,7 +2510,7 @@ public class XmppConnectionService extends Service {
|
|||
if (callback != null) {
|
||||
callback.onConferenceConfigurationFetched(conversation);
|
||||
}
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": fetched muc configuration for "+conversation.getJid().toBareJid()+" - "+features.toString());
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": fetched muc configuration for " + conversation.getJid().toBareJid() + " - " + features.toString());
|
||||
updateConversationUi();
|
||||
} else if (packet.getType() == IqPacket.TYPE.ERROR) {
|
||||
if (callback != null) {
|
||||
|
@ -2519,17 +2522,17 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void pushNodeConfiguration(Account account, final String node, final Bundle options, final OnConfigurationPushed callback) {
|
||||
pushNodeConfiguration(account,account.getJid().toBareJid(),node,options,callback);
|
||||
pushNodeConfiguration(account, account.getJid().toBareJid(), node, options, callback);
|
||||
}
|
||||
|
||||
public void pushNodeConfiguration(Account account, final Jid jid, final String node, final Bundle options, final OnConfigurationPushed callback) {
|
||||
sendIqPacket(account, mIqGenerator.requestPubsubConfiguration(jid,node), new OnIqPacketReceived() {
|
||||
sendIqPacket(account, mIqGenerator.requestPubsubConfiguration(jid, node), new OnIqPacketReceived() {
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
if (packet.getType() == IqPacket.TYPE.RESULT) {
|
||||
Element pubsub = packet.findChild("pubsub","http://jabber.org/protocol/pubsub#owner");
|
||||
Element pubsub = packet.findChild("pubsub", "http://jabber.org/protocol/pubsub#owner");
|
||||
Element configuration = pubsub == null ? null : pubsub.findChild("configure");
|
||||
Element x = configuration == null ? null : configuration.findChild("x","jabber:x:data");
|
||||
Element x = configuration == null ? null : configuration.findChild("x", "jabber:x:data");
|
||||
if (x != null) {
|
||||
Data data = Data.parse(x);
|
||||
data.submit(options);
|
||||
|
@ -2539,14 +2542,14 @@ public class XmppConnectionService extends Service {
|
|||
if (packet.getType() == IqPacket.TYPE.RESULT && callback != null) {
|
||||
callback.onPushSucceeded();
|
||||
} else {
|
||||
Log.d(Config.LOGTAG,packet.toString());
|
||||
Log.d(Config.LOGTAG, packet.toString());
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (callback !=null) {
|
||||
} else if (callback != null) {
|
||||
callback.onPushFailed();
|
||||
}
|
||||
} else if (callback != null){
|
||||
} else if (callback != null) {
|
||||
callback.onPushFailed();
|
||||
}
|
||||
}
|
||||
|
@ -2825,20 +2828,20 @@ public class XmppConnectionService extends Service {
|
|||
getAvatarService().clear(account);
|
||||
databaseBackend.updateAccount(account);
|
||||
}
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": published avatar "+(avatar.size/1024)+"KiB");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": published avatar " + (avatar.size / 1024) + "KiB");
|
||||
if (callback != null) {
|
||||
callback.success(avatar);
|
||||
}
|
||||
} else {
|
||||
if (callback != null) {
|
||||
callback.error(R.string.error_publish_avatar_server_reject,avatar);
|
||||
callback.error(R.string.error_publish_avatar_server_reject, avatar);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Element error = result.findChild("error");
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": server rejected avatar "+(avatar.size/1024)+"KiB "+(error!=null?error.toString():""));
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": server rejected avatar " + (avatar.size / 1024) + "KiB " + (error != null ? error.toString() : ""));
|
||||
if (callback != null) {
|
||||
callback.error(R.string.error_publish_avatar_server_reject, avatar);
|
||||
}
|
||||
|
@ -2849,7 +2852,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public void republishAvatarIfNeeded(Account account) {
|
||||
if (account.getAxolotlService().isPepBroken()) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": skipping republication of avatar because pep is broken");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": skipping republication of avatar because pep is broken");
|
||||
return;
|
||||
}
|
||||
IqPacket packet = this.mIqGenerator.retrieveAvatarMetaData(null);
|
||||
|
@ -2880,10 +2883,10 @@ public class XmppConnectionService extends Service {
|
|||
if (serverAvatar == null && account.getAvatar() != null) {
|
||||
Avatar avatar = fileBackend.getStoredPepAvatar(account.getAvatar());
|
||||
if (avatar != null) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": avatar on server was null. republishing");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": avatar on server was null. republishing");
|
||||
publishAvatar(account, fileBackend.getStoredPepAvatar(account.getAvatar()), null);
|
||||
} else {
|
||||
Log.e(Config.LOGTAG, account.getJid().toBareJid()+": error rereading avatar");
|
||||
Log.e(Config.LOGTAG, account.getJid().toBareJid() + ": error rereading avatar");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2989,7 +2992,7 @@ public class XmppConnectionService extends Service {
|
|||
+ ": successfully fetched vCard avatar for " + avatar.owner);
|
||||
if (avatar.owner.isBareJid()) {
|
||||
if (account.getJid().toBareJid().equals(avatar.owner) && account.getAvatar() == null) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": had no avatar. replacing with vcard");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": had no avatar. replacing with vcard");
|
||||
account.setAvatar(avatar.getFilename());
|
||||
databaseBackend.updateAccount(account);
|
||||
getAvatarService().clear(account);
|
||||
|
@ -3028,7 +3031,7 @@ public class XmppConnectionService extends Service {
|
|||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
if (packet.getType() == IqPacket.TYPE.RESULT) {
|
||||
Element pubsub = packet.findChild("pubsub","http://jabber.org/protocol/pubsub");
|
||||
Element pubsub = packet.findChild("pubsub", "http://jabber.org/protocol/pubsub");
|
||||
if (pubsub != null) {
|
||||
Element items = pubsub.findChild("items");
|
||||
if (items != null) {
|
||||
|
@ -3203,21 +3206,21 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public long getAutomaticMessageDeletionDate() {
|
||||
final long timeout = getLongPreference(SettingsActivity.AUTOMATIC_MESSAGE_DELETION,R.integer.automatic_message_deletion);
|
||||
final long timeout = getLongPreference(SettingsActivity.AUTOMATIC_MESSAGE_DELETION, R.integer.automatic_message_deletion);
|
||||
return timeout == 0 ? timeout : (System.currentTimeMillis() - (timeout * 1000));
|
||||
}
|
||||
|
||||
public long getLongPreference(String name, @IntegerRes int res) {
|
||||
long defaultValue = getResources().getInteger(res);
|
||||
try {
|
||||
return Long.parseLong(getPreferences().getString(name,String.valueOf(defaultValue)));
|
||||
return Long.parseLong(getPreferences().getString(name, String.valueOf(defaultValue)));
|
||||
} catch (NumberFormatException e) {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getBooleanPreference(String name, @BoolRes int res) {
|
||||
return getPreferences().getBoolean(name,getResources().getBoolean(res));
|
||||
return getPreferences().getBoolean(name, getResources().getBoolean(res));
|
||||
}
|
||||
|
||||
public boolean confirmMessages() {
|
||||
|
@ -3334,7 +3337,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public boolean markRead(final Conversation conversation) {
|
||||
return markRead(conversation,true);
|
||||
return markRead(conversation, true);
|
||||
}
|
||||
|
||||
public boolean markRead(final Conversation conversation, boolean clear) {
|
||||
|
@ -3447,10 +3450,10 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
}
|
||||
}
|
||||
if(Config.DOMAIN_LOCK != null && !hosts.contains(Config.DOMAIN_LOCK)) {
|
||||
if (Config.DOMAIN_LOCK != null && !hosts.contains(Config.DOMAIN_LOCK)) {
|
||||
hosts.add(Config.DOMAIN_LOCK);
|
||||
}
|
||||
if(Config.MAGIC_CREATE_DOMAIN != null && !hosts.contains(Config.MAGIC_CREATE_DOMAIN)) {
|
||||
if (Config.MAGIC_CREATE_DOMAIN != null && !hosts.contains(Config.MAGIC_CREATE_DOMAIN)) {
|
||||
hosts.add(Config.MAGIC_CREATE_DOMAIN);
|
||||
}
|
||||
return hosts;
|
||||
|
@ -3464,7 +3467,7 @@ public class XmppConnectionService extends Service {
|
|||
if (server != null && !mucServers.contains(server)) {
|
||||
mucServers.add(server);
|
||||
}
|
||||
for(Bookmark bookmark : account.getBookmarks()) {
|
||||
for (Bookmark bookmark : account.getBookmarks()) {
|
||||
final Jid jid = bookmark.getJid();
|
||||
final String s = jid == null ? null : jid.getDomainpart();
|
||||
if (s != null && !mucServers.contains(s)) {
|
||||
|
@ -3512,7 +3515,7 @@ public class XmppConnectionService extends Service {
|
|||
private void sendPresence(final Account account, final boolean includeIdleTimestamp) {
|
||||
PresencePacket packet;
|
||||
if (manuallyChangePresence()) {
|
||||
packet = mPresenceGenerator.selfPresence(account, account.getPresenceStatus());
|
||||
packet = mPresenceGenerator.selfPresence(account, account.getPresenceStatus());
|
||||
String message = account.getPresenceStatusMessage();
|
||||
if (message != null && !message.isEmpty()) {
|
||||
packet.addChild(new Element("status").setContent(message));
|
||||
|
@ -3522,13 +3525,13 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
if (mLastActivity > 0 && includeIdleTimestamp) {
|
||||
long since = Math.min(mLastActivity, System.currentTimeMillis()); //don't send future dates
|
||||
packet.addChild("idle",Namespace.IDLE).setAttribute("since", AbstractGenerator.getTimestamp(since));
|
||||
packet.addChild("idle", Namespace.IDLE).setAttribute("since", AbstractGenerator.getTimestamp(since));
|
||||
}
|
||||
sendPresencePacket(account, packet);
|
||||
}
|
||||
|
||||
private void deactivateGracePeriod() {
|
||||
for(Account account : getAccounts()) {
|
||||
for (Account account : getAccounts()) {
|
||||
account.deactivateGracePeriod();
|
||||
}
|
||||
}
|
||||
|
@ -3543,7 +3546,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void refreshAllGcmTokens() {
|
||||
for(Account account : getAccounts()) {
|
||||
for (Account account : getAccounts()) {
|
||||
if (account.isOnlineAndConnected() && mPushManagementService.available(account)) {
|
||||
mPushManagementService.registerPushTokenOnServer(account);
|
||||
}
|
||||
|
@ -3551,7 +3554,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void sendOfflinePresence(final Account account) {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": sending offline presence");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": sending offline presence");
|
||||
sendPresencePacket(account, mPresenceGenerator.sendOfflinePresence(account));
|
||||
}
|
||||
|
||||
|
@ -3594,7 +3597,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public Conversation findFirstMuc(Jid jid) {
|
||||
for(Conversation conversation : getConversations()) {
|
||||
for (Conversation conversation : getConversations()) {
|
||||
if (conversation.getJid().toBareJid().equals(jid.toBareJid())
|
||||
&& conversation.getMode() == Conversation.MODE_MULTI) {
|
||||
return conversation;
|
||||
|
@ -3642,7 +3645,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
conversation.clearMessages();
|
||||
conversation.setHasMessagesLeftOnServer(false); //avoid messages getting loaded through mam
|
||||
conversation.setLastClearHistory(clearDate,reference);
|
||||
conversation.setLastClearHistory(clearDate, reference);
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -3666,7 +3669,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
}
|
||||
});
|
||||
if (removeBlockedConversations(blockable.getAccount(),jid)) {
|
||||
if (removeBlockedConversations(blockable.getAccount(), jid)) {
|
||||
updateConversationUi();
|
||||
return true;
|
||||
} else {
|
||||
|
@ -3681,7 +3684,7 @@ public class XmppConnectionService extends Service {
|
|||
boolean removed = false;
|
||||
synchronized (this.conversations) {
|
||||
boolean domainJid = blockedJid.isDomainJid();
|
||||
for(Conversation conversation : this.conversations) {
|
||||
for (Conversation conversation : this.conversations) {
|
||||
boolean jidMatches = (domainJid && blockedJid.getDomainpart().equals(conversation.getJid().getDomainpart()))
|
||||
|| blockedJid.equals(conversation.getJid().toBareJid());
|
||||
if (conversation.getAccount() == account
|
||||
|
@ -3690,7 +3693,7 @@ public class XmppConnectionService extends Service {
|
|||
this.conversations.remove(conversation);
|
||||
markRead(conversation);
|
||||
conversation.setStatus(Conversation.STATUS_ARCHIVED);
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": archiving conversation "+conversation.getJid().toBareJid()+" because jid was blocked");
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": archiving conversation " + conversation.getJid().toBareJid() + " because jid was blocked");
|
||||
updateConversation(conversation);
|
||||
removed = true;
|
||||
}
|
||||
|
@ -3743,7 +3746,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public void fetchCaps(Account account, final Jid jid, final Presence presence) {
|
||||
final Pair<String,String> key = new Pair<>(presence.getHash(), presence.getVer());
|
||||
final Pair<String, String> key = new Pair<>(presence.getHash(), presence.getVer());
|
||||
ServiceDiscoveryResult disco = getCachedServiceDiscoveryResult(key);
|
||||
if (disco != null) {
|
||||
presence.setServiceDiscoveryResult(disco);
|
||||
|
@ -3753,7 +3756,7 @@ public class XmppConnectionService extends Service {
|
|||
IqPacket request = new IqPacket(IqPacket.TYPE.GET);
|
||||
request.setTo(jid);
|
||||
request.query("http://jabber.org/protocol/disco#info");
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": making disco request for "+key.second+" to "+jid);
|
||||
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": making disco request for " + key.second + " to " + jid);
|
||||
sendIqPacket(account, request, new OnIqPacketReceived() {
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket discoPacket) {
|
||||
|
@ -3774,8 +3777,8 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
private void injectServiceDiscorveryResult(Roster roster, String hash, String ver, ServiceDiscoveryResult disco) {
|
||||
for(Contact contact : roster.getContacts()) {
|
||||
for(Presence presence : contact.getPresences().getPresences().values()) {
|
||||
for (Contact contact : roster.getContacts()) {
|
||||
for (Presence presence : contact.getPresences().getPresences().values()) {
|
||||
if (hash.equals(presence.getHash()) && ver.equals(presence.getVer())) {
|
||||
presence.setServiceDiscoveryResult(disco);
|
||||
}
|
||||
|
@ -3786,11 +3789,11 @@ public class XmppConnectionService extends Service {
|
|||
public void fetchMamPreferences(Account account, final OnMamPreferencesFetched callback) {
|
||||
final boolean legacy = account.getXmppConnection().getFeatures().mamLegacy();
|
||||
IqPacket request = new IqPacket(IqPacket.TYPE.GET);
|
||||
request.addChild("prefs",legacy ? Namespace.MAM_LEGACY : Namespace.MAM);
|
||||
request.addChild("prefs", legacy ? Namespace.MAM_LEGACY : Namespace.MAM);
|
||||
sendIqPacket(account, request, new OnIqPacketReceived() {
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
Element prefs = packet.findChild("prefs",legacy ? Namespace.MAM_LEGACY : Namespace.MAM);
|
||||
Element prefs = packet.findChild("prefs", legacy ? Namespace.MAM_LEGACY : Namespace.MAM);
|
||||
if (packet.getType() == IqPacket.TYPE.RESULT && prefs != null) {
|
||||
callback.onPreferencesFetched(prefs);
|
||||
} else {
|
||||
|
@ -3806,7 +3809,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public Account getPendingAccount() {
|
||||
Account pending = null;
|
||||
for(Account account : getAccounts()) {
|
||||
for (Account account : getAccounts()) {
|
||||
if (account.isOptionSet(Account.OPTION_REGISTER)) {
|
||||
pending = account;
|
||||
} else {
|
||||
|
@ -3836,14 +3839,14 @@ public class XmppConnectionService extends Service {
|
|||
if (!statusMessage.isEmpty()) {
|
||||
databaseBackend.insertPresenceTemplate(new PresenceTemplate(status, statusMessage));
|
||||
}
|
||||
for(Account account : getAccounts()) {
|
||||
for (Account account : getAccounts()) {
|
||||
changeStatusReal(account, status, statusMessage, true);
|
||||
}
|
||||
}
|
||||
|
||||
public List<PresenceTemplate> getPresenceTemplates(Account account) {
|
||||
List<PresenceTemplate> templates = databaseBackend.getPresenceTemplates();
|
||||
for(PresenceTemplate template : account.getSelfContact().getPresences().asTemplates()) {
|
||||
for (PresenceTemplate template : account.getSelfContact().getPresences().asTemplates()) {
|
||||
if (!templates.contains(template)) {
|
||||
templates.add(0, template);
|
||||
}
|
||||
|
@ -3860,7 +3863,7 @@ public class XmppConnectionService extends Service {
|
|||
if (name != null && !name.trim().isEmpty()) {
|
||||
bookmark.setBookmarkName(name.trim());
|
||||
}
|
||||
bookmark.setAutojoin(getPreferences().getBoolean("autojoin",getResources().getBoolean(R.bool.autojoin)));
|
||||
bookmark.setAutojoin(getPreferences().getBoolean("autojoin", getResources().getBoolean(R.bool.autojoin)));
|
||||
account.getBookmarks().add(bookmark);
|
||||
pushBookmarks(account);
|
||||
conversation.setBookmark(bookmark);
|
||||
|
@ -3870,20 +3873,20 @@ public class XmppConnectionService extends Service {
|
|||
boolean needsRosterWrite = false;
|
||||
boolean performedVerification = false;
|
||||
final AxolotlService axolotlService = contact.getAccount().getAxolotlService();
|
||||
for(XmppUri.Fingerprint fp : fingerprints) {
|
||||
for (XmppUri.Fingerprint fp : fingerprints) {
|
||||
if (fp.type == XmppUri.FingerprintType.OTR) {
|
||||
performedVerification |= contact.addOtrFingerprint(fp.fingerprint);
|
||||
needsRosterWrite |= performedVerification;
|
||||
} else if (fp.type == XmppUri.FingerprintType.OMEMO) {
|
||||
String fingerprint = "05"+fp.fingerprint.replaceAll("\\s","");
|
||||
String fingerprint = "05" + fp.fingerprint.replaceAll("\\s", "");
|
||||
FingerprintStatus fingerprintStatus = axolotlService.getFingerprintTrust(fingerprint);
|
||||
if (fingerprintStatus != null) {
|
||||
if (!fingerprintStatus.isVerified()) {
|
||||
performedVerification = true;
|
||||
axolotlService.setFingerprintTrust(fingerprint,fingerprintStatus.toVerified());
|
||||
axolotlService.setFingerprintTrust(fingerprint, fingerprintStatus.toVerified());
|
||||
}
|
||||
} else {
|
||||
axolotlService.preVerifyFingerprint(contact,fingerprint);
|
||||
axolotlService.preVerifyFingerprint(contact, fingerprint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3896,18 +3899,18 @@ public class XmppConnectionService extends Service {
|
|||
public boolean verifyFingerprints(Account account, List<XmppUri.Fingerprint> fingerprints) {
|
||||
final AxolotlService axolotlService = account.getAxolotlService();
|
||||
boolean verifiedSomething = false;
|
||||
for(XmppUri.Fingerprint fp : fingerprints) {
|
||||
for (XmppUri.Fingerprint fp : fingerprints) {
|
||||
if (fp.type == XmppUri.FingerprintType.OMEMO) {
|
||||
String fingerprint = "05"+fp.fingerprint.replaceAll("\\s","");
|
||||
Log.d(Config.LOGTAG,"trying to verify own fp="+fingerprint);
|
||||
String fingerprint = "05" + fp.fingerprint.replaceAll("\\s", "");
|
||||
Log.d(Config.LOGTAG, "trying to verify own fp=" + fingerprint);
|
||||
FingerprintStatus fingerprintStatus = axolotlService.getFingerprintTrust(fingerprint);
|
||||
if (fingerprintStatus != null) {
|
||||
if (!fingerprintStatus.isVerified()) {
|
||||
axolotlService.setFingerprintTrust(fingerprint,fingerprintStatus.toVerified());
|
||||
axolotlService.setFingerprintTrust(fingerprint, fingerprintStatus.toVerified());
|
||||
verifiedSomething = true;
|
||||
}
|
||||
} else {
|
||||
axolotlService.preVerifyFingerprint(account,fingerprint);
|
||||
axolotlService.preVerifyFingerprint(account, fingerprint);
|
||||
verifiedSomething = true;
|
||||
}
|
||||
}
|
||||
|
@ -3916,7 +3919,7 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public boolean blindTrustBeforeVerification() {
|
||||
return getBooleanPreference(SettingsActivity.BLIND_TRUST_BEFORE_VERIFICATION,R.bool.btbv);
|
||||
return getBooleanPreference(SettingsActivity.BLIND_TRUST_BEFORE_VERIFICATION, R.bool.btbv);
|
||||
}
|
||||
|
||||
public ShortcutService getShortcutService() {
|
||||
|
@ -3925,6 +3928,7 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public interface OnMamPreferencesFetched {
|
||||
void onPreferencesFetched(Element prefs);
|
||||
|
||||
void onPreferencesFetchFailed();
|
||||
}
|
||||
|
||||
|
@ -3974,9 +3978,9 @@ public class XmppConnectionService extends Service {
|
|||
|
||||
public interface OnCaptchaRequested {
|
||||
void onCaptchaRequested(Account account,
|
||||
String id,
|
||||
Data data,
|
||||
Bitmap captcha);
|
||||
String id,
|
||||
Data data,
|
||||
Bitmap captcha);
|
||||
}
|
||||
|
||||
public interface OnRosterUpdate {
|
||||
|
|
Loading…
Reference in New Issue