create a new axolotl service when the account jid changes
This commit is contained in:
parent
0da2f1ed3f
commit
57c11d42d5
|
@ -263,6 +263,9 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
|
|||
}
|
||||
|
||||
public AxolotlService(Account account, XmppConnectionService connectionService) {
|
||||
if (account == null || connectionService == null) {
|
||||
throw new IllegalArgumentException("account and service cannot be null");
|
||||
}
|
||||
if (Security.getProvider("BC") == null) {
|
||||
Security.addProvider(new BouncyCastleProvider());
|
||||
}
|
||||
|
@ -362,6 +365,16 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
|
|||
publishBundlesIfNeeded(true, wipeOther);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": destroying old axolotl service. no longer in use");
|
||||
mXmppConnectionService.databaseBackend.wipeAxolotlDb(account);
|
||||
}
|
||||
|
||||
public AxolotlService makeNew() {
|
||||
Log.d(Config.LOGTAG,account.getJid().toBareJid()+": make new axolotl service");
|
||||
return new AxolotlService(this.account,this.mXmppConnectionService);
|
||||
}
|
||||
|
||||
public int getOwnDeviceId() {
|
||||
return axolotlStore.getLocalRegistrationId();
|
||||
}
|
||||
|
|
|
@ -312,8 +312,17 @@ public class Account extends AbstractEntity {
|
|||
|
||||
public boolean setJid(final Jid next) {
|
||||
final Jid prev = this.jid != null ? this.jid.toBareJid() : null;
|
||||
final boolean changed = prev == null || (next != null && !prev.equals(next.toBareJid()));
|
||||
if (changed) {
|
||||
final AxolotlService oldAxolotlService = this.axolotlService;
|
||||
if (oldAxolotlService != null) {
|
||||
oldAxolotlService.destroy();
|
||||
this.jid = next;
|
||||
return prev == null || (next != null && !prev.equals(next.toBareJid()));
|
||||
this.axolotlService = oldAxolotlService.makeNew();
|
||||
}
|
||||
}
|
||||
this.jid = next;
|
||||
return changed;
|
||||
}
|
||||
|
||||
public Jid getServer() {
|
||||
|
|
|
@ -1389,7 +1389,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
|
|||
}
|
||||
|
||||
|
||||
public void recreateAxolotlDb(SQLiteDatabase db) {
|
||||
private void recreateAxolotlDb(SQLiteDatabase db) {
|
||||
Log.d(Config.LOGTAG, AxolotlService.LOGPREFIX + " : " + ">>> (RE)CREATING AXOLOTL DATABASE <<<");
|
||||
db.execSQL("DROP TABLE IF EXISTS " + SQLiteAxolotlStore.SESSION_TABLENAME);
|
||||
db.execSQL(CREATE_SESSIONS_STATEMENT);
|
||||
|
|
Loading…
Reference in a new issue