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
	
	 fiaxh
						fiaxh