Set file size also for cached avatars
This commit is contained in:
parent
4aab45533a
commit
52af62d298
|
@ -318,39 +318,41 @@ public class FileBackend {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean save(Avatar avatar) {
|
public boolean save(Avatar avatar) {
|
||||||
|
File file;
|
||||||
if (isAvatarCached(avatar)) {
|
if (isAvatarCached(avatar)) {
|
||||||
return true;
|
file = new File(getAvatarPath(avatar.getFilename()));
|
||||||
}
|
} else {
|
||||||
String filename = getAvatarPath(avatar.getFilename());
|
String filename = getAvatarPath(avatar.getFilename());
|
||||||
File file = new File(filename + ".tmp");
|
file = new File(filename + ".tmp");
|
||||||
file.getParentFile().mkdirs();
|
file.getParentFile().mkdirs();
|
||||||
try {
|
try {
|
||||||
file.createNewFile();
|
file.createNewFile();
|
||||||
FileOutputStream mFileOutputStream = new FileOutputStream(file);
|
FileOutputStream mFileOutputStream = new FileOutputStream(file);
|
||||||
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
||||||
digest.reset();
|
digest.reset();
|
||||||
DigestOutputStream mDigestOutputStream = new DigestOutputStream(
|
DigestOutputStream mDigestOutputStream = new DigestOutputStream(
|
||||||
mFileOutputStream, digest);
|
mFileOutputStream, digest);
|
||||||
mDigestOutputStream.write(avatar.getImageAsBytes());
|
mDigestOutputStream.write(avatar.getImageAsBytes());
|
||||||
mDigestOutputStream.flush();
|
mDigestOutputStream.flush();
|
||||||
mDigestOutputStream.close();
|
mDigestOutputStream.close();
|
||||||
avatar.size = file.length();
|
String sha1sum = CryptoHelper.bytesToHex(digest.digest());
|
||||||
String sha1sum = CryptoHelper.bytesToHex(digest.digest());
|
if (sha1sum.equals(avatar.sha1sum)) {
|
||||||
if (sha1sum.equals(avatar.sha1sum)) {
|
file.renameTo(new File(filename));
|
||||||
file.renameTo(new File(filename));
|
} else {
|
||||||
return true;
|
Log.d(Config.LOGTAG, "sha1sum mismatch for " + avatar.owner);
|
||||||
} else {
|
file.delete();
|
||||||
Log.d(Config.LOGTAG, "sha1sum mismatch for " + avatar.owner);
|
return false;
|
||||||
file.delete();
|
}
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
return false;
|
||||||
|
} catch (IOException e) {
|
||||||
|
return false;
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
return false;
|
|
||||||
} catch (IOException e) {
|
|
||||||
return false;
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
avatar.size = file.length();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getAvatarPath(String avatar) {
|
public String getAvatarPath(String avatar) {
|
||||||
|
|
Loading…
Reference in a new issue