fixed avatar republish missing the mime type
This commit is contained in:
		
							parent
							
								
									f0c3b31a42
								
							
						
					
					
						commit
						2c1d3ef968
					
				| @ -23,7 +23,6 @@ import javax.crypto.spec.IvParameterSpec; | ||||
| import javax.crypto.spec.SecretKeySpec; | ||||
| 
 | ||||
| import eu.siacs.conversations.Config; | ||||
| import eu.siacs.conversations.utils.CryptoHelper; | ||||
| import eu.siacs.conversations.xml.Element; | ||||
| import eu.siacs.conversations.xmpp.jid.Jid; | ||||
| 
 | ||||
|  | ||||
| @ -555,6 +555,7 @@ public class FileBackend { | ||||
| 		File file = new File(getAvatarPath(hash)); | ||||
| 		FileInputStream is = null; | ||||
| 		try { | ||||
| 			avatar.size = file.length(); | ||||
| 			BitmapFactory.Options options = new BitmapFactory.Options(); | ||||
| 			options.inJustDecodeBounds = true; | ||||
| 			BitmapFactory.decodeFile(file.getAbsolutePath(), options); | ||||
| @ -574,6 +575,7 @@ public class FileBackend { | ||||
| 			avatar.image = new String(mByteArrayOutputStream.toByteArray()); | ||||
| 			avatar.height = options.outHeight; | ||||
| 			avatar.width = options.outWidth; | ||||
| 			avatar.type = options.outMimeType; | ||||
| 			return avatar; | ||||
| 		} catch (IOException e) { | ||||
| 			return null; | ||||
| @ -593,6 +595,7 @@ public class FileBackend { | ||||
| 		File file; | ||||
| 		if (isAvatarCached(avatar)) { | ||||
| 			file = new File(getAvatarPath(avatar.getFilename())); | ||||
| 			avatar.size = file.length(); | ||||
| 		} else { | ||||
| 			String filename = getAvatarPath(avatar.getFilename()); | ||||
| 			file = new File(filename + ".tmp"); | ||||
| @ -604,7 +607,8 @@ public class FileBackend { | ||||
| 				MessageDigest digest = MessageDigest.getInstance("SHA-1"); | ||||
| 				digest.reset(); | ||||
| 				DigestOutputStream mDigestOutputStream = new DigestOutputStream(os, digest); | ||||
| 				mDigestOutputStream.write(avatar.getImageAsBytes()); | ||||
| 				final byte[] bytes = avatar.getImageAsBytes(); | ||||
| 				mDigestOutputStream.write(bytes); | ||||
| 				mDigestOutputStream.flush(); | ||||
| 				mDigestOutputStream.close(); | ||||
| 				String sha1sum = CryptoHelper.bytesToHex(digest.digest()); | ||||
| @ -615,13 +619,13 @@ public class FileBackend { | ||||
| 					file.delete(); | ||||
| 					return false; | ||||
| 				} | ||||
| 				avatar.size = bytes.length; | ||||
| 			} catch (IllegalArgumentException | IOException | NoSuchAlgorithmException e) { | ||||
| 				return false; | ||||
| 			} finally { | ||||
| 				close(os); | ||||
| 			} | ||||
| 		} | ||||
| 		avatar.size = file.length(); | ||||
| 		return true; | ||||
| 	} | ||||
| 
 | ||||
| @ -691,7 +695,7 @@ public class FileBackend { | ||||
| 			Bitmap dest = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888); | ||||
| 			Canvas canvas = new Canvas(dest); | ||||
| 			canvas.drawBitmap(source, null, targetRect, null); | ||||
| 			if (source != null && !source.isRecycled()) { | ||||
| 			if (source.isRecycled()) { | ||||
| 				source.recycle(); | ||||
| 			} | ||||
| 			return dest; | ||||
|  | ||||
| @ -2639,14 +2639,13 @@ public class XmppConnectionService extends Service { | ||||
| 	} | ||||
| 
 | ||||
| 	public void publishAvatar(Account account, final Avatar avatar, final UiCallback<Avatar> callback) { | ||||
| 		final IqPacket packet = this.mIqGenerator.publishAvatar(avatar); | ||||
| 		IqPacket packet = this.mIqGenerator.publishAvatar(avatar); | ||||
| 		this.sendIqPacket(account, packet, new OnIqPacketReceived() { | ||||
| 
 | ||||
| 			@Override | ||||
| 			public void onIqPacketReceived(Account account, IqPacket result) { | ||||
| 				if (result.getType() == IqPacket.TYPE.RESULT) { | ||||
| 					final IqPacket packet = XmppConnectionService.this.mIqGenerator | ||||
| 							.publishAvatarMetadata(avatar); | ||||
| 					final IqPacket packet = XmppConnectionService.this.mIqGenerator.publishAvatarMetadata(avatar); | ||||
| 					sendIqPacket(account, packet, new OnIqPacketReceived() { | ||||
| 						@Override | ||||
| 						public void onIqPacketReceived(Account account, IqPacket result) { | ||||
| @ -2655,25 +2654,22 @@ public class XmppConnectionService extends Service { | ||||
| 									getAvatarService().clear(account); | ||||
| 									databaseBackend.updateAccount(account); | ||||
| 								} | ||||
| 								Log.d(Config.LOGTAG,account.getJid().toBareJid()+": published avatar "+(avatar.size/1024)+"KiB"); | ||||
| 								if (callback != null) { | ||||
| 									callback.success(avatar); | ||||
| 								} else { | ||||
| 									Log.d(Config.LOGTAG,account.getJid().toBareJid()+": published avatar"); | ||||
| 								} | ||||
| 							} else { | ||||
| 								if (callback != null) { | ||||
| 									callback.error( | ||||
| 											R.string.error_publish_avatar_server_reject, | ||||
| 											avatar); | ||||
| 									callback.error(R.string.error_publish_avatar_server_reject,avatar); | ||||
| 								} | ||||
| 							} | ||||
| 						} | ||||
| 					}); | ||||
| 				} else { | ||||
| 					Element error = result.findChild("error"); | ||||
| 					Log.d(Config.LOGTAG,account.getJid().toBareJid()+": server rejected avatar "+(avatar.size/1024)+"KiB "+(error!=null?error.toString():"")); | ||||
| 					if (callback != null) { | ||||
| 						callback.error( | ||||
| 								R.string.error_publish_avatar_server_reject, | ||||
| 								avatar); | ||||
| 						callback.error(R.string.error_publish_avatar_server_reject, avatar); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch