aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-01-26 21:54:10 +0100
committerChristian Schneppe <christian@pix-art.de>2018-01-26 21:54:10 +0100
commitf84f77316c10328198b52fbdd8a0dce9f03604ff (patch)
tree6821a7a08a6a4aeeba03fe2a978c56a6cb9a9d85 /src/main/java/de/pixart/messenger/services/XmppConnectionService.java
parent563fd9f6a6c206e960ed6b5471869f9c1ed4d0ec (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.java44
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();
}