diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-01-26 21:54:10 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-01-26 21:54:10 +0100 |
commit | f84f77316c10328198b52fbdd8a0dce9f03604ff (patch) | |
tree | 6821a7a08a6a4aeeba03fe2a978c56a6cb9a9d85 /src/main/java/de/pixart/messenger/services/XmppConnectionService.java | |
parent | 563fd9f6a6c206e960ed6b5471869f9c1ed4d0ec (diff) |
add possibility to destroy group chat
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/services/XmppConnectionService.java | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index eee8a30ac..6c2a3cfcd 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -3,7 +3,6 @@ package de.pixart.messenger.services; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.AlarmManager; -import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; @@ -105,6 +104,7 @@ import de.pixart.messenger.parser.MessageParser; import de.pixart.messenger.parser.PresenceParser; import de.pixart.messenger.persistance.DatabaseBackend; import de.pixart.messenger.persistance.FileBackend; +import de.pixart.messenger.ui.ConversationActivity; import de.pixart.messenger.ui.SettingsActivity; import de.pixart.messenger.ui.UiCallback; import de.pixart.messenger.utils.ConversationsFileObserver; @@ -174,8 +174,8 @@ public class XmppConnectionService extends Service { private ReplacingSerialSingleThreadExecutor mContactMergerExecutor = new ReplacingSerialSingleThreadExecutor(true); private WakeLock wakeLock; private long mLastActivity = 0; - private NotificationManager mNotifyManager; - AbstractConnectionManager mAbstractConnectionManager; + ConversationActivity mConversationActivity; + private ContentObserver contactObserver = new ContentObserver(null) { @Override @@ -2414,9 +2414,9 @@ public class XmppConnectionService extends Service { account.pendingConferenceLeaves.remove(conversation); if (account.getStatus() == Account.State.ONLINE) { - // disabled for testing strange MUC leaves - // sendPresencePacket(account, mPresenceGenerator.leave(conversation.getMucOptions())); - // + //disabled for testing strange MUC leaves + sendPresencePacket(account, mPresenceGenerator.leave(conversation.getMucOptions())); + conversation.resetMucOptions(); if (onConferenceJoined != null) { conversation.getMucOptions().flagNoAutoPushConfiguration(); @@ -2892,6 +2892,32 @@ public class XmppConnectionService extends Service { }); } + public void destroyMuc(Conversation mSelectedConversation) { + destroyConference(mSelectedConversation, new XmppConnectionService.OnDestroyMuc() { + @Override + public void OnDestroyMucSuccessful() { + Log.d(Config.LOGTAG, "Destroy succeed"); + } + + @Override + public void OnDestroyMucFailed(int resId) { + Log.d(Config.LOGTAG, "Destroy failed"); + showErrorToastInUi(resId); + } + }); + } + + public void destroyConference(final Conversation conference, final OnDestroyMuc callback) { + IqPacket request = this.mIqGenerator.destroyConference(conference); + sendIqPacket(conference.getAccount(), request, (account, packet) -> { + if (packet.getType() == IqPacket.TYPE.RESULT) { + callback.OnDestroyMucSuccessful(); + } else { + callback.OnDestroyMucFailed(R.string.failed); + } + }); + } + private void disconnect(Account account, boolean force) { if ((account.getStatus() == Account.State.ONLINE) || (account.getStatus() == Account.State.DISABLED)) { @@ -4259,6 +4285,12 @@ public class XmppConnectionService extends Service { void onRoleChangeFailed(String nick, int resid); } + public interface OnDestroyMuc { + void OnDestroyMucSuccessful(); + + void OnDestroyMucFailed(int resId); + } + public interface OnConversationUpdate { void onConversationUpdate(); } |