join muc even if initial conference configuration fetch failed
This commit is contained in:
parent
3c45f00443
commit
1bd68a42b2
|
@ -1683,8 +1683,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
|
|||
if (account.getStatus() == Account.State.ONLINE || now) {
|
||||
conversation.resetMucOptions();
|
||||
fetchConferenceConfiguration(conversation, new OnConferenceConfigurationFetched() {
|
||||
@Override
|
||||
public void onConferenceConfigurationFetched(Conversation conversation) {
|
||||
|
||||
private void join(Conversation conversation) {
|
||||
Account account = conversation.getAccount();
|
||||
final String nick = conversation.getMucOptions().getProposedNick();
|
||||
final Jid joinJid = conversation.getMucOptions().createJoinJid(nick);
|
||||
|
@ -1723,6 +1723,27 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
|
|||
getMessageArchiveService().catchupMUC(conversation);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConferenceConfigurationFetched(Conversation conversation) {
|
||||
join(conversation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFetchFailed(final Conversation conversation, Element error) {
|
||||
conversation.getMucOptions().setOnJoinListener(new MucOptions.OnJoinListener() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
fetchConferenceConfiguration(conversation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure() {
|
||||
|
||||
}
|
||||
});
|
||||
join(conversation);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
@ -1913,6 +1934,10 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
|
|||
callback.onConferenceConfigurationFetched(conversation);
|
||||
}
|
||||
updateConversationUi();
|
||||
} else if (packet.getType() == IqPacket.TYPE.ERROR) {
|
||||
if (callback != null) {
|
||||
callback.onFetchFailed(conversation, packet.getError());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -2901,6 +2926,8 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
|
|||
|
||||
public interface OnConferenceConfigurationFetched {
|
||||
void onConferenceConfigurationFetched(Conversation conversation);
|
||||
|
||||
void onFetchFailed(Conversation conversation, Element error);
|
||||
}
|
||||
|
||||
public interface OnConferenceOptionsPushed {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package eu.siacs.conversations.xmpp.stanzas;
|
||||
|
||||
import eu.siacs.conversations.xml.Element;
|
||||
|
||||
abstract public class AbstractAcknowledgeableStanza extends AbstractStanza {
|
||||
|
||||
protected AbstractAcknowledgeableStanza(String name) {
|
||||
|
@ -14,4 +16,16 @@ abstract public class AbstractAcknowledgeableStanza extends AbstractStanza {
|
|||
public void setId(final String id) {
|
||||
setAttribute("id", id);
|
||||
}
|
||||
|
||||
public Element getError() {
|
||||
Element error = findChild("error");
|
||||
if (error != null) {
|
||||
for(Element element : error.getChildren()) {
|
||||
if (!element.getName().equals("text")) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue