Unset all PGP signatures once
... so they will be redone to match the changed status.
This commit is contained in:
parent
02c6793ca9
commit
e5f154316c
|
@ -413,13 +413,13 @@ public class Account extends AbstractEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPgpSignature() {
|
public String getPgpSignature() {
|
||||||
if (keys.has(KEY_PGP_SIGNATURE)) {
|
try {
|
||||||
try {
|
if (keys.has(KEY_PGP_SIGNATURE) && !"null".equals(keys.getString(KEY_PGP_SIGNATURE))) {
|
||||||
return keys.getString(KEY_PGP_SIGNATURE);
|
return keys.getString(KEY_PGP_SIGNATURE);
|
||||||
} catch (final JSONException e) {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} else {
|
} catch (final JSONException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -433,6 +433,15 @@ public class Account extends AbstractEntity {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean unsetPgpSignature() {
|
||||||
|
try {
|
||||||
|
keys.put(KEY_PGP_SIGNATURE, JSONObject.NULL);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public long getPgpId() {
|
public long getPgpId() {
|
||||||
if (keys.has(KEY_PGP_ID)) {
|
if (keys.has(KEY_PGP_ID)) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
|
||||||
private static DatabaseBackend instance = null;
|
private static DatabaseBackend instance = null;
|
||||||
|
|
||||||
private static final String DATABASE_NAME = "history";
|
private static final String DATABASE_NAME = "history";
|
||||||
private static final int DATABASE_VERSION = 20;
|
private static final int DATABASE_VERSION = 21;
|
||||||
|
|
||||||
private static String CREATE_CONTATCS_STATEMENT = "create table "
|
private static String CREATE_CONTATCS_STATEMENT = "create table "
|
||||||
+ Contact.TABLENAME + "(" + Contact.ACCOUNT + " TEXT, "
|
+ Contact.TABLENAME + "(" + Contact.ACCOUNT + " TEXT, "
|
||||||
|
@ -335,6 +335,15 @@ public class DatabaseBackend extends SQLiteOpenHelper {
|
||||||
if (oldVersion < 18 && newVersion >= 18) {
|
if (oldVersion < 18 && newVersion >= 18) {
|
||||||
db.execSQL("ALTER TABLE " + Message.TABLENAME + " ADD COLUMN " + Message.READ + " NUMBER DEFAULT 1");
|
db.execSQL("ALTER TABLE " + Message.TABLENAME + " ADD COLUMN " + Message.READ + " NUMBER DEFAULT 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (oldVersion < 21 && newVersion >= 21) {
|
||||||
|
List<Account> accounts = getAccounts(db);
|
||||||
|
for (Account account : accounts) {
|
||||||
|
account.unsetPgpSignature();
|
||||||
|
db.update(Account.TABLENAME, account.getContentValues(), Account.UUID
|
||||||
|
+ "=?", new String[]{account.getUuid()});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized DatabaseBackend getInstance(Context context) {
|
public static synchronized DatabaseBackend getInstance(Context context) {
|
||||||
|
|
|
@ -1062,81 +1062,85 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
|
||||||
final ConversationActivity activity = (ConversationActivity) getActivity();
|
final ConversationActivity activity = (ConversationActivity) getActivity();
|
||||||
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
final XmppConnectionService xmppService = activity.xmppConnectionService;
|
||||||
final Contact contact = message.getConversation().getContact();
|
final Contact contact = message.getConversation().getContact();
|
||||||
if (activity.hasPgp()) {
|
if (!activity.hasPgp()) {
|
||||||
if (conversation.getMode() == Conversation.MODE_SINGLE) {
|
activity.showInstallPgpDialog();
|
||||||
if (contact.getPgpKeyId() != 0) {
|
return;
|
||||||
xmppService.getPgpEngine().hasKey(contact,
|
}
|
||||||
new UiCallback<Contact>() {
|
if (conversation.getAccount().getPgpSignature() == null) {
|
||||||
|
activity.announcePgp(conversation.getAccount(), conversation);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (conversation.getMode() == Conversation.MODE_SINGLE) {
|
||||||
|
if (contact.getPgpKeyId() != 0) {
|
||||||
|
xmppService.getPgpEngine().hasKey(contact,
|
||||||
|
new UiCallback<Contact>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void userInputRequried(PendingIntent pi,
|
public void userInputRequried(PendingIntent pi,
|
||||||
Contact contact) {
|
Contact contact) {
|
||||||
activity.runIntent(
|
activity.runIntent(
|
||||||
pi,
|
pi,
|
||||||
ConversationActivity.REQUEST_ENCRYPT_MESSAGE);
|
ConversationActivity.REQUEST_ENCRYPT_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void success(Contact contact) {
|
public void success(Contact contact) {
|
||||||
messageSent();
|
messageSent();
|
||||||
activity.encryptTextMessage(message);
|
activity.encryptTextMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void error(int error, Contact contact) {
|
public void error(int error, Contact contact) {
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
showNoPGPKeyDialog(false,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog,
|
|
||||||
int which) {
|
|
||||||
conversation
|
|
||||||
.setNextEncryption(Message.ENCRYPTION_NONE);
|
|
||||||
xmppService.databaseBackend
|
|
||||||
.updateConversation(conversation);
|
|
||||||
message.setEncryption(Message.ENCRYPTION_NONE);
|
|
||||||
xmppService.sendMessage(message);
|
|
||||||
messageSent();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (conversation.getMucOptions().pgpKeysInUse()) {
|
showNoPGPKeyDialog(false,
|
||||||
if (!conversation.getMucOptions().everybodyHasKeys()) {
|
new DialogInterface.OnClickListener() {
|
||||||
Toast warning = Toast
|
|
||||||
.makeText(getActivity(),
|
|
||||||
R.string.missing_public_keys,
|
|
||||||
Toast.LENGTH_LONG);
|
|
||||||
warning.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
|
|
||||||
warning.show();
|
|
||||||
}
|
|
||||||
activity.encryptTextMessage(message);
|
|
||||||
messageSent();
|
|
||||||
} else {
|
|
||||||
showNoPGPKeyDialog(true,
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog,
|
public void onClick(DialogInterface dialog,
|
||||||
int which) {
|
int which) {
|
||||||
conversation
|
conversation
|
||||||
.setNextEncryption(Message.ENCRYPTION_NONE);
|
.setNextEncryption(Message.ENCRYPTION_NONE);
|
||||||
message.setEncryption(Message.ENCRYPTION_NONE);
|
xmppService.databaseBackend
|
||||||
xmppService.databaseBackend
|
.updateConversation(conversation);
|
||||||
.updateConversation(conversation);
|
message.setEncryption(Message.ENCRYPTION_NONE);
|
||||||
xmppService.sendMessage(message);
|
xmppService.sendMessage(message);
|
||||||
messageSent();
|
messageSent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
activity.showInstallPgpDialog();
|
if (conversation.getMucOptions().pgpKeysInUse()) {
|
||||||
|
if (!conversation.getMucOptions().everybodyHasKeys()) {
|
||||||
|
Toast warning = Toast
|
||||||
|
.makeText(getActivity(),
|
||||||
|
R.string.missing_public_keys,
|
||||||
|
Toast.LENGTH_LONG);
|
||||||
|
warning.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
|
||||||
|
warning.show();
|
||||||
|
}
|
||||||
|
activity.encryptTextMessage(message);
|
||||||
|
messageSent();
|
||||||
|
} else {
|
||||||
|
showNoPGPKeyDialog(true,
|
||||||
|
new DialogInterface.OnClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog,
|
||||||
|
int which) {
|
||||||
|
conversation
|
||||||
|
.setNextEncryption(Message.ENCRYPTION_NONE);
|
||||||
|
message.setEncryption(Message.ENCRYPTION_NONE);
|
||||||
|
xmppService.databaseBackend
|
||||||
|
.updateConversation(conversation);
|
||||||
|
xmppService.sendMessage(message);
|
||||||
|
messageSent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue