tryed to fix more otr bugs. new resource setting
This commit is contained in:
parent
079712060c
commit
a9e34d3492
|
@ -1,17 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<array name="conversation_encryption_type_entries">
|
||||
<item>None</item>
|
||||
<item>OpenPGP</item>
|
||||
<item>Off the record</item>
|
||||
</array>
|
||||
<array name="conversation_encryption_type_values">
|
||||
<item>none</item>
|
||||
<item>pgp</item>
|
||||
<item>otr</item>
|
||||
</array>
|
||||
<array name="manage_account_options">
|
||||
<item>Delete</item>
|
||||
<item>Disable</item>
|
||||
<array name="resources">
|
||||
<item>Mobile</item>
|
||||
<item>Phone</item>
|
||||
<item>Tablet</item>
|
||||
<item>Conversations</item>
|
||||
<item>Android</item>
|
||||
</array>
|
||||
</resources>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<PreferenceCategory
|
||||
android:title="Security and Privacy Options">
|
||||
<ListPreference
|
||||
android:key="default_conversation_encryption_type"
|
||||
android:title="Default conversation encryption"
|
||||
android:dialogTitle="Default conversation encryption"
|
||||
android:entries="@array/conversation_encryption_type_entries"
|
||||
android:entryValues="@array/conversation_encryption_type_values"
|
||||
android:defaultValue="none"/>
|
||||
android:title="General">
|
||||
<CheckBoxPreference
|
||||
android:key="grant_new_contacts"
|
||||
android:title="Grant presence updates"
|
||||
android:summary="Preemptivly grant and ask for presence subscription for contacts you created"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
<ListPreference
|
||||
android:key="resource"
|
||||
android:title="XMPP Resource"
|
||||
android:summary="The name this client identifies itself"
|
||||
android:entries="@array/resources"
|
||||
android:entryValues="@array/resources"
|
||||
android:defaultValue="Mobile"/>
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:title="Notification Settings">
|
||||
|
|
|
@ -52,7 +52,7 @@ public class Account extends AbstractEntity{
|
|||
protected String password;
|
||||
protected int options = 0;
|
||||
protected String rosterVersion;
|
||||
protected String resource;
|
||||
protected String resource = "mobile";
|
||||
protected int status = -1;
|
||||
protected JSONObject keys = new JSONObject();
|
||||
|
||||
|
@ -137,6 +137,10 @@ public class Account extends AbstractEntity{
|
|||
this.resource = resource;
|
||||
}
|
||||
|
||||
public String getResource() {
|
||||
return this.resource;
|
||||
}
|
||||
|
||||
public String getJid() {
|
||||
return username+"@"+server;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.util.Comparator;
|
|||
import java.util.Date;
|
||||
import java.util.Hashtable;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
|
||||
import org.openintents.openpgp.util.OpenPgpApi;
|
||||
|
@ -550,6 +551,9 @@ public class XmppConnectionService extends Service {
|
|||
}
|
||||
|
||||
public XmppConnection createConnection(Account account) {
|
||||
SharedPreferences sharedPref = PreferenceManager
|
||||
.getDefaultSharedPreferences(getApplicationContext());
|
||||
account.setResource(sharedPref.getString("resource", "mobile").toLowerCase(Locale.getDefault()));
|
||||
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
||||
XmppConnection connection = new XmppConnection(account, pm);
|
||||
connection.setOnMessagePacketReceivedListener(this.messageListener);
|
||||
|
@ -588,7 +592,7 @@ public class XmppConnectionService extends Service {
|
|||
return connection;
|
||||
}
|
||||
|
||||
public void sendMessage(Message message, String presence) {
|
||||
synchronized public void sendMessage(Message message, String presence) {
|
||||
Account account = message.getConversation().getAccount();
|
||||
Conversation conv = message.getConversation();
|
||||
boolean saveInDb = false;
|
||||
|
|
|
@ -388,52 +388,54 @@ public class ConversationFragment extends Fragment {
|
|||
|
||||
public void updateMessages() {
|
||||
ConversationActivity activity = (ConversationActivity) getActivity();
|
||||
List<Message> encryptedMessages = new LinkedList<Message>();
|
||||
for (Message message : this.conversation.getMessages()) {
|
||||
if (message.getEncryption() == Message.ENCRYPTION_PGP) {
|
||||
encryptedMessages.add(message);
|
||||
}
|
||||
}
|
||||
if (encryptedMessages.size() > 0) {
|
||||
DecryptMessage task = new DecryptMessage();
|
||||
Message[] msgs = new Message[encryptedMessages.size()];
|
||||
task.execute(encryptedMessages.toArray(msgs));
|
||||
}
|
||||
this.messageList.clear();
|
||||
this.messageList.addAll(this.conversation.getMessages());
|
||||
this.messageListAdapter.notifyDataSetChanged();
|
||||
if (conversation.getMode() == Conversation.MODE_SINGLE) {
|
||||
if (messageList.size() >= 1) {
|
||||
int latestEncryption = this.conversation.getLatestMessage()
|
||||
.getEncryption();
|
||||
if (latestEncryption == Message.ENCRYPTION_DECRYPTED) {
|
||||
conversation.nextMessageEncryption = Message.ENCRYPTION_PGP;
|
||||
} else {
|
||||
conversation.nextMessageEncryption = latestEncryption;
|
||||
if (this.conversation != null) {
|
||||
List<Message> encryptedMessages = new LinkedList<Message>();
|
||||
for (Message message : this.conversation.getMessages()) {
|
||||
if (message.getEncryption() == Message.ENCRYPTION_PGP) {
|
||||
encryptedMessages.add(message);
|
||||
}
|
||||
makeFingerprintWarning(latestEncryption);
|
||||
}
|
||||
} else {
|
||||
if (conversation.getMucOptions().getError() != 0) {
|
||||
mucError.setVisibility(View.VISIBLE);
|
||||
if (conversation.getMucOptions().getError() == MucOptions.ERROR_NICK_IN_USE) {
|
||||
mucErrorText.setText(getString(R.string.nick_in_use));
|
||||
if (encryptedMessages.size() > 0) {
|
||||
DecryptMessage task = new DecryptMessage();
|
||||
Message[] msgs = new Message[encryptedMessages.size()];
|
||||
task.execute(encryptedMessages.toArray(msgs));
|
||||
}
|
||||
this.messageList.clear();
|
||||
this.messageList.addAll(this.conversation.getMessages());
|
||||
this.messageListAdapter.notifyDataSetChanged();
|
||||
if (conversation.getMode() == Conversation.MODE_SINGLE) {
|
||||
if (messageList.size() >= 1) {
|
||||
int latestEncryption = this.conversation.getLatestMessage()
|
||||
.getEncryption();
|
||||
if (latestEncryption == Message.ENCRYPTION_DECRYPTED) {
|
||||
conversation.nextMessageEncryption = Message.ENCRYPTION_PGP;
|
||||
} else {
|
||||
conversation.nextMessageEncryption = latestEncryption;
|
||||
}
|
||||
makeFingerprintWarning(latestEncryption);
|
||||
}
|
||||
} else {
|
||||
mucError.setVisibility(View.GONE);
|
||||
if (conversation.getMucOptions().getError() != 0) {
|
||||
mucError.setVisibility(View.VISIBLE);
|
||||
if (conversation.getMucOptions().getError() == MucOptions.ERROR_NICK_IN_USE) {
|
||||
mucErrorText.setText(getString(R.string.nick_in_use));
|
||||
}
|
||||
} else {
|
||||
mucError.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
getActivity().invalidateOptionsMenu();
|
||||
updateChatMsgHint();
|
||||
int size = this.messageList.size();
|
||||
if (size >= 1)
|
||||
messagesView.setSelection(size - 1);
|
||||
if (!activity.shouldPaneBeOpen()) {
|
||||
conversation.markRead();
|
||||
// TODO update notifications
|
||||
UIHelper.updateNotification(getActivity(),
|
||||
activity.getConversationList(), null, false);
|
||||
activity.updateConversationList();
|
||||
}
|
||||
}
|
||||
getActivity().invalidateOptionsMenu();
|
||||
updateChatMsgHint();
|
||||
int size = this.messageList.size();
|
||||
if (size >= 1)
|
||||
messagesView.setSelection(size - 1);
|
||||
if (!activity.shouldPaneBeOpen()) {
|
||||
conversation.markRead();
|
||||
// TODO update notifications
|
||||
UIHelper.updateNotification(getActivity(),
|
||||
activity.getConversationList(), null, false);
|
||||
activity.updateConversationList();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package eu.siacs.conversations.utils;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import net.java.otr4j.OtrException;
|
||||
import net.java.otr4j.session.Session;
|
||||
import net.java.otr4j.session.SessionStatus;
|
||||
import android.util.Log;
|
||||
|
@ -89,11 +88,7 @@ public class MessageParser {
|
|||
Log.d(LOGTAG,"otr session stoped");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.d(LOGTAG,"otr execption");
|
||||
if (justStarted) {
|
||||
Log.d(LOGTAG,"ran into safeguard");
|
||||
} else {
|
||||
Log.d(LOGTAG,"resett otr session");
|
||||
if (!justStarted) {
|
||||
conversation.resetOtrSession();
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -524,7 +524,7 @@ public class XmppConnection implements Runnable {
|
|||
|
||||
private void sendBindRequest() throws IOException {
|
||||
IqPacket iq = new IqPacket(IqPacket.TYPE_SET);
|
||||
iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind").addChild("resource").setContent("Conversations");
|
||||
iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind").addChild("resource").setContent(account.getResource());
|
||||
this.sendIqPacket(iq, new OnIqPacketReceived() {
|
||||
@Override
|
||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package eu.siacs.conversations.xmpp.stanzas;
|
||||
|
||||
import android.graphics.YuvImage;
|
||||
import eu.siacs.conversations.xml.Element;
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue