mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-09 17:19:39 +02:00
[omemo] Add OmemoManager.purgeEveryting()
This is basically the already existing method from OmemoManagerSetupHelper.cleanUpPubSub() moved over into OmemoManager as purgeEverything().
This commit is contained in:
parent
3fde4830e4
commit
4120b42761
3 changed files with 54 additions and 46 deletions
|
@ -36,6 +36,7 @@ import java.util.logging.Logger;
|
|||
import org.jivesoftware.smack.ConnectionListener;
|
||||
import org.jivesoftware.smack.Manager;
|
||||
import org.jivesoftware.smack.SmackException;
|
||||
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
||||
import org.jivesoftware.smack.XMPPConnection;
|
||||
import org.jivesoftware.smack.XMPPException;
|
||||
import org.jivesoftware.smack.packet.Message;
|
||||
|
@ -73,6 +74,7 @@ import org.jivesoftware.smackx.omemo.util.OmemoConstants;
|
|||
import org.jivesoftware.smackx.pep.PepEventListener;
|
||||
import org.jivesoftware.smackx.pep.PepManager;
|
||||
import org.jivesoftware.smackx.pubsub.PubSubException;
|
||||
import org.jivesoftware.smackx.pubsub.PubSubManager;
|
||||
import org.jivesoftware.smackx.pubsub.packet.PubSub;
|
||||
|
||||
import org.jxmpp.jid.BareJid;
|
||||
|
@ -727,6 +729,50 @@ public final class OmemoManager extends Manager {
|
|||
getOmemoService().purgeDeviceList(new LoggedInOmemoManager(this));
|
||||
}
|
||||
|
||||
public List<Exception> purgeEverything() throws NotConnectedException, InterruptedException, IOException {
|
||||
List<Exception> exceptions = new ArrayList<>(5);
|
||||
PubSubManager pm = PubSubManager.getInstanceFor(getConnection(), getOwnJid());
|
||||
try {
|
||||
requestDeviceListUpdateFor(getOwnJid());
|
||||
} catch (SmackException.NoResponseException | PubSubException.NotALeafNodeException
|
||||
| XMPPException.XMPPErrorException e) {
|
||||
exceptions.add(e);
|
||||
}
|
||||
|
||||
OmemoCachedDeviceList deviceList = OmemoService.getInstance().getOmemoStoreBackend()
|
||||
.loadCachedDeviceList(getOwnDevice(), getOwnJid());
|
||||
|
||||
for (int id : deviceList.getAllDevices()) {
|
||||
try {
|
||||
pm.getLeafNode(OmemoConstants.PEP_NODE_BUNDLE_FROM_DEVICE_ID(id)).deleteAllItems();
|
||||
} catch (SmackException.NoResponseException | PubSubException.NotALeafNodeException
|
||||
| XMPPException.XMPPErrorException | PubSubException.NotAPubSubNodeException e) {
|
||||
exceptions.add(e);
|
||||
}
|
||||
|
||||
try {
|
||||
pm.deleteNode(OmemoConstants.PEP_NODE_BUNDLE_FROM_DEVICE_ID(id));
|
||||
} catch (SmackException.NoResponseException | XMPPException.XMPPErrorException e) {
|
||||
exceptions.add(e);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
pm.getLeafNode(OmemoConstants.PEP_NODE_DEVICE_LIST).deleteAllItems();
|
||||
} catch (SmackException.NoResponseException | PubSubException.NotALeafNodeException
|
||||
| XMPPException.XMPPErrorException | PubSubException.NotAPubSubNodeException e) {
|
||||
exceptions.add(e);
|
||||
}
|
||||
|
||||
try {
|
||||
pm.deleteNode(OmemoConstants.PEP_NODE_DEVICE_LIST);
|
||||
} catch (SmackException.NoResponseException | XMPPException.XMPPErrorException e) {
|
||||
exceptions.add(e);
|
||||
}
|
||||
|
||||
return exceptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotate the signedPreKey published in our OmemoBundle and republish it. This should be done every now and
|
||||
* then (7-14 days). The old signedPreKey should be kept for some more time (a month or so) to enable decryption
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue