implement room destruction
This commit is contained in:
parent
835c89328d
commit
52e1a0c708
|
@ -2822,6 +2822,26 @@ public class XmppConnectionService extends Service {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void destroyRoom(final Conversation conversation, final OnRoomDestroy callback) {
|
||||||
|
IqPacket request = new IqPacket(IqPacket.TYPE.SET);
|
||||||
|
request.setTo(conversation.getJid().asBareJid());
|
||||||
|
request.query("http://jabber.org/protocol/muc#owner").addChild("destroy");
|
||||||
|
sendIqPacket(conversation.getAccount(), request, new OnIqPacketReceived() {
|
||||||
|
@Override
|
||||||
|
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||||
|
if (packet.getType() == IqPacket.TYPE.RESULT) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onRoomDestroySucceeded();
|
||||||
|
}
|
||||||
|
} else if (packet.getType() == IqPacket.TYPE.ERROR) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onRoomDestroyFailed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void disconnect(Account account, boolean force) {
|
private void disconnect(Account account, boolean force) {
|
||||||
if ((account.getStatus() == Account.State.ONLINE)
|
if ((account.getStatus() == Account.State.ONLINE)
|
||||||
|| (account.getStatus() == Account.State.DISABLED)) {
|
|| (account.getStatus() == Account.State.DISABLED)) {
|
||||||
|
@ -4140,6 +4160,12 @@ public class XmppConnectionService extends Service {
|
||||||
void onPasswordChangeFailed();
|
void onPasswordChangeFailed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface OnRoomDestroy {
|
||||||
|
void onRoomDestroySucceeded();
|
||||||
|
|
||||||
|
void onRoomDestroyFailed();
|
||||||
|
}
|
||||||
|
|
||||||
public interface OnAffiliationChanged {
|
public interface OnAffiliationChanged {
|
||||||
void onAffiliationChangedSuccessful(Jid jid);
|
void onAffiliationChangedSuccessful(Jid jid);
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ import rocks.xmpp.addr.Jid;
|
||||||
import static eu.siacs.conversations.entities.Bookmark.printableValue;
|
import static eu.siacs.conversations.entities.Bookmark.printableValue;
|
||||||
import static eu.siacs.conversations.utils.StringUtils.changed;
|
import static eu.siacs.conversations.utils.StringUtils.changed;
|
||||||
|
|
||||||
public class ConferenceDetailsActivity extends XmppActivity implements OnConversationUpdate, OnMucRosterUpdate, XmppConnectionService.OnAffiliationChanged, XmppConnectionService.OnRoleChanged, XmppConnectionService.OnConfigurationPushed, TextWatcher, OnMediaLoaded {
|
public class ConferenceDetailsActivity extends XmppActivity implements OnConversationUpdate, OnMucRosterUpdate, XmppConnectionService.OnAffiliationChanged, XmppConnectionService.OnRoleChanged, XmppConnectionService.OnConfigurationPushed, XmppConnectionService.OnRoomDestroy, TextWatcher, OnMediaLoaded {
|
||||||
public static final String ACTION_VIEW_MUC = "view_muc";
|
public static final String ACTION_VIEW_MUC = "view_muc";
|
||||||
|
|
||||||
private static final float INACTIVE_ALPHA = 0.4684f; //compromise between dark and light theme
|
private static final float INACTIVE_ALPHA = 0.4684f; //compromise between dark and light theme
|
||||||
|
@ -319,6 +319,9 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
|
||||||
case R.id.action_delete_bookmark:
|
case R.id.action_delete_bookmark:
|
||||||
deleteBookmark();
|
deleteBookmark();
|
||||||
break;
|
break;
|
||||||
|
case R.id.action_destroy_room:
|
||||||
|
destroyRoom();
|
||||||
|
break;
|
||||||
case R.id.action_advanced_mode:
|
case R.id.action_advanced_mode:
|
||||||
this.mAdvancedMode = !menuItem.isChecked();
|
this.mAdvancedMode = !menuItem.isChecked();
|
||||||
menuItem.setChecked(this.mAdvancedMode);
|
menuItem.setChecked(this.mAdvancedMode);
|
||||||
|
@ -406,6 +409,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
|
||||||
MenuItem menuItemSaveBookmark = menu.findItem(R.id.action_save_as_bookmark);
|
MenuItem menuItemSaveBookmark = menu.findItem(R.id.action_save_as_bookmark);
|
||||||
MenuItem menuItemDeleteBookmark = menu.findItem(R.id.action_delete_bookmark);
|
MenuItem menuItemDeleteBookmark = menu.findItem(R.id.action_delete_bookmark);
|
||||||
MenuItem menuItemAdvancedMode = menu.findItem(R.id.action_advanced_mode);
|
MenuItem menuItemAdvancedMode = menu.findItem(R.id.action_advanced_mode);
|
||||||
|
MenuItem menuItemDestroyRoom = menu.findItem(R.id.action_destroy_room);
|
||||||
menuItemAdvancedMode.setChecked(mAdvancedMode);
|
menuItemAdvancedMode.setChecked(mAdvancedMode);
|
||||||
if (mConversation == null) {
|
if (mConversation == null) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -417,6 +421,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
|
||||||
menuItemDeleteBookmark.setVisible(false);
|
menuItemDeleteBookmark.setVisible(false);
|
||||||
menuItemSaveBookmark.setVisible(true);
|
menuItemSaveBookmark.setVisible(true);
|
||||||
}
|
}
|
||||||
|
menuItemDestroyRoom.setVisible(mConversation.getMucOptions().getSelf().getAffiliation().ranks(MucOptions.Affiliation.OWNER));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,6 +486,19 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
|
||||||
updateView();
|
updateView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void destroyRoom() {
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(R.string.destroy_room);
|
||||||
|
builder.setMessage(R.string.destroy_room_dialog);
|
||||||
|
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||||
|
xmppConnectionService.destroyRoom(mConversation, ConferenceDetailsActivity.this);
|
||||||
|
});
|
||||||
|
builder.setNegativeButton(R.string.cancel, null);
|
||||||
|
final AlertDialog dialog = builder.create();
|
||||||
|
dialog.setCanceledOnTouchOutside(false);
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void onBackendConnected() {
|
void onBackendConnected() {
|
||||||
if (mPendingConferenceInvite != null) {
|
if (mPendingConferenceInvite != null) {
|
||||||
|
@ -687,6 +705,15 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
|
||||||
displayToast(getString(resId, nick));
|
displayToast(getString(resId, nick));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRoomDestroySucceeded() {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onRoomDestroyFailed() {
|
||||||
|
displayToast(getString(R.string.could_not_destroy_room));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPushSucceeded() {
|
public void onPushSucceeded() {
|
||||||
displayToast(getString(R.string.modified_conference_options));
|
displayToast(getString(R.string.modified_conference_options));
|
||||||
|
|
|
@ -31,6 +31,11 @@
|
||||||
android:orderInCategory="80"
|
android:orderInCategory="80"
|
||||||
app:showAsAction="never"
|
app:showAsAction="never"
|
||||||
android:title="@string/delete_bookmark"/>
|
android:title="@string/delete_bookmark"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_destroy_room"
|
||||||
|
android:orderInCategory="82"
|
||||||
|
app:showAsAction="never"
|
||||||
|
android:title="@string/destroy_room"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_advanced_mode"
|
android:id="@+id/action_advanced_mode"
|
||||||
android:checkable="true"
|
android:checkable="true"
|
||||||
|
|
|
@ -228,6 +228,9 @@
|
||||||
<string name="conference_address_example">room@conference.example.com/nick</string>
|
<string name="conference_address_example">room@conference.example.com/nick</string>
|
||||||
<string name="save_as_bookmark">Save as bookmark</string>
|
<string name="save_as_bookmark">Save as bookmark</string>
|
||||||
<string name="delete_bookmark">Delete bookmark</string>
|
<string name="delete_bookmark">Delete bookmark</string>
|
||||||
|
<string name="destroy_room">Destroy group chat</string>
|
||||||
|
<string name="destroy_room_dialog">Are you sure you want to destroy this group chat?\n\n<b>Warning:</b> The group chat will be completely removed on the server.</string>
|
||||||
|
<string name="could_not_destroy_room">Could not destroy room</string>
|
||||||
<string name="bookmark_already_exists">This bookmark already exists</string>
|
<string name="bookmark_already_exists">This bookmark already exists</string>
|
||||||
<string name="action_edit_subject">Edit group chat subject</string>
|
<string name="action_edit_subject">Edit group chat subject</string>
|
||||||
<string name="topic">Topic</string>
|
<string name="topic">Topic</string>
|
||||||
|
|
Loading…
Reference in a new issue