From c6f5adb447c5b48fe9cd8393b78dba3ee11f44f1 Mon Sep 17 00:00:00 2001 From: Mikunj Date: Thu, 17 Oct 2019 10:39:59 +1100 Subject: [PATCH] Update attachments to use url. --- res/layout/conversation_input_panel.xml | 3 +-- .../securesms/attachments/Attachment.java | 8 +++++++- .../attachments/DatabaseAttachment.java | 4 ++-- .../attachments/MmsNotificationAttachment.java | 2 +- .../attachments/PointerAttachment.java | 10 ++++++---- .../securesms/attachments/UriAttachment.java | 2 +- .../securesms/database/AttachmentDatabase.java | 17 +++++++++++------ .../securesms/database/GroupDatabase.java | 17 ++++++++++++++--- .../securesms/database/MmsDatabase.java | 3 ++- .../database/helpers/SQLCipherOpenHelper.java | 3 +++ .../securesms/jobs/AttachmentDownloadJob.java | 2 +- .../securesms/jobs/AvatarDownloadJob.java | 5 +++-- .../securesms/jobs/PushMediaSendJob.java | 4 ++-- .../securesms/jobs/PushSendJob.java | 2 +- 14 files changed, 55 insertions(+), 27 deletions(-) diff --git a/res/layout/conversation_input_panel.xml b/res/layout/conversation_input_panel.xml index be0ffb8ee1..8c744fa541 100644 --- a/res/layout/conversation_input_panel.xml +++ b/res/layout/conversation_input_panel.xml @@ -108,8 +108,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:clipChildren="false" - android:clipToPadding="false" - android:visibility="gone"> + android:clipToPadding="false"> TYPED_GROUP_PROJECTION = Stream.of(GROUP_PROJECTION).map(columnName -> TABLE_NAME + "." + columnName).toList(); @@ -167,6 +171,7 @@ public class GroupDatabase extends Database { contentValues.put(AVATAR_KEY, avatar.getKey()); contentValues.put(AVATAR_CONTENT_TYPE, avatar.getContentType()); contentValues.put(AVATAR_DIGEST, avatar.getDigest().orNull()); + contentValues.put(AVATAR_URL, avatar.getUrl()); } contentValues.put(AVATAR_RELAY, relay); @@ -194,6 +199,7 @@ public class GroupDatabase extends Database { contentValues.put(AVATAR_CONTENT_TYPE, avatar.getContentType()); contentValues.put(AVATAR_KEY, avatar.getKey()); contentValues.put(AVATAR_DIGEST, avatar.getDigest().orNull()); + contentValues.put(AVATAR_URL, avatar.getUrl()); } databaseHelper.getWritableDatabase().update(TABLE_NAME, contentValues, @@ -344,7 +350,8 @@ public class GroupDatabase extends Database { cursor.getString(cursor.getColumnIndexOrThrow(AVATAR_RELAY)), cursor.getInt(cursor.getColumnIndexOrThrow(ACTIVE)) == 1, cursor.getBlob(cursor.getColumnIndexOrThrow(AVATAR_DIGEST)), - cursor.getInt(cursor.getColumnIndexOrThrow(MMS)) == 1); + cursor.getInt(cursor.getColumnIndexOrThrow(MMS)) == 1, + cursor.getString(cursor.getColumnIndexOrThrow(AVATAR_URL))); } @Override @@ -367,10 +374,11 @@ public class GroupDatabase extends Database { private final String relay; private final boolean active; private final boolean mms; + private final String url; public GroupRecord(String id, String title, String members, byte[] avatar, long avatarId, byte[] avatarKey, String avatarContentType, - String relay, boolean active, byte[] avatarDigest, boolean mms) + String relay, boolean active, byte[] avatarDigest, boolean mms, String url) { this.id = id; this.title = title; @@ -382,6 +390,7 @@ public class GroupDatabase extends Database { this.relay = relay; this.active = active; this.mms = mms; + this.url = url; if (!TextUtils.isEmpty(members)) this.members = Address.fromSerializedList(members, ','); else this.members = new LinkedList<>(); @@ -438,5 +447,7 @@ public class GroupDatabase extends Database { public boolean isMms() { return mms; } + + public String getUrl() { return url; } } } diff --git a/src/org/thoughtcrime/securesms/database/MmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsDatabase.java index 6fea8f244e..5ce830b3b4 100644 --- a/src/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -778,7 +778,8 @@ public class MmsDatabase extends MessagingDatabase { databaseAttachment.getHeight(), databaseAttachment.isQuote(), databaseAttachment.getCaption(), - databaseAttachment.getSticker())); + databaseAttachment.getSticker(), + databaseAttachment.getUrl())); } return insertMediaMessage(request.getBody(), diff --git a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index 28122e956c..9216a2314b 100644 --- a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -499,6 +499,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { if (oldVersion < lokiV3) { db.execSQL(LokiAPIDatabase.getCreatePairingAuthorisationTableCommand()); db.execSQL(LokiThreadDatabase.getCreatePublicChatTableCommand()); + + db.execSQL("ALTER TABLE groups ADD COLUMN avatar_url TEXT"); + db.execSQL("ALTER TABLE part ADD COLUMN url TEXT"); } db.setTransactionSuccessful(); diff --git a/src/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java b/src/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java index 947ed11250..4734ee2e5c 100644 --- a/src/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java +++ b/src/org/thoughtcrime/securesms/jobs/AttachmentDownloadJob.java @@ -213,7 +213,7 @@ public class AttachmentDownloadJob extends BaseJob implements InjectableType { Optional.fromNullable(attachment.getDigest()), Optional.fromNullable(attachment.getFileName()), attachment.isVoiceNote(), - Optional.absent()); + Optional.absent(), attachment.getUrl()); } catch (IOException | ArithmeticException e) { Log.w(TAG, e); throw new InvalidPartException(e); diff --git a/src/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java b/src/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java index b97a410dbd..3536051086 100644 --- a/src/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java +++ b/src/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java @@ -80,8 +80,9 @@ public class AvatarDownloadJob extends BaseJob implements InjectableType { String relay = record.get().getRelay(); Optional digest = Optional.fromNullable(record.get().getAvatarDigest()); Optional fileName = Optional.absent(); + String url = record.get().getUrl(); - if (avatarId == -1 || key == null) { + if (avatarId == -1 || key == null || url.isEmpty()) { return; } @@ -92,7 +93,7 @@ public class AvatarDownloadJob extends BaseJob implements InjectableType { attachment = File.createTempFile("avatar", "tmp", context.getCacheDir()); attachment.deleteOnExit(); - SignalServiceAttachmentPointer pointer = new SignalServiceAttachmentPointer(avatarId, contentType, key, Optional.of(0), Optional.absent(), 0, 0, digest, fileName, false, Optional.absent()); + SignalServiceAttachmentPointer pointer = new SignalServiceAttachmentPointer(avatarId, contentType, key, Optional.of(0), Optional.absent(), 0, 0, digest, fileName, false, Optional.absent(), url); InputStream inputStream = receiver.retrieveAttachment(pointer, attachment, MAX_AVATAR_SIZE); Bitmap avatar = BitmapUtil.createScaledBitmap(context, new AttachmentModel(attachment, key, 0, digest), 500, 500); diff --git a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 478557be40..1b3de7a276 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -105,8 +105,8 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { List attachments = new LinkedList<>(); // Loki - For now all attachments are re-fetched by the receiver - // attachments.addAll(message.getAttachments()); - // attachments.addAll(Stream.of(message.getLinkPreviews()).filter(p -> p.getThumbnail().isPresent()).map(p -> p.getThumbnail().get()).toList()); + attachments.addAll(message.getAttachments()); + attachments.addAll(Stream.of(message.getLinkPreviews()).filter(p -> p.getThumbnail().isPresent()).map(p -> p.getThumbnail().get()).toList()); attachments.addAll(Stream.of(message.getSharedContacts()).filter(c -> c.getAvatar() != null).map(c -> c.getAvatar().getAttachment()).withoutNulls().toList()); List attachmentJobs = Stream.of(attachments).map(a -> new AttachmentUploadJob(((DatabaseAttachment) a).getAttachmentId())).toList(); diff --git a/src/org/thoughtcrime/securesms/jobs/PushSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushSendJob.java index e64db9029a..aaedf8f25a 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushSendJob.java @@ -172,7 +172,7 @@ public abstract class PushSendJob extends SendJob { Optional.fromNullable(attachment.getDigest()), Optional.fromNullable(attachment.getFileName()), attachment.isVoiceNote(), - Optional.fromNullable(attachment.getCaption())); + Optional.fromNullable(attachment.getCaption()), attachment.getUrl()); } catch (IOException | ArithmeticException e) { Log.w(TAG, e); return null;