Added attachment subsequence

pull/184/head
M66B 4 years ago
parent 011b2884e0
commit dacdc16559

File diff suppressed because it is too large Load Diff

@ -62,6 +62,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
private boolean readonly; private boolean readonly;
private boolean debug; private boolean debug;
private int dp12;
private List<EntityAttachment> items = new ArrayList<>(); private List<EntityAttachment> items = new ArrayList<>();
@ -111,6 +112,10 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
private void bindTo(EntityAttachment attachment) { private void bindTo(EntityAttachment attachment) {
view.setAlpha(!attachment.isAttachment() ? Helper.LOW_LIGHT : 1.0f); view.setAlpha(!attachment.isAttachment() ? Helper.LOW_LIGHT : 1.0f);
ViewGroup.MarginLayoutParams lparam = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
lparam.setMarginStart(attachment.subsequence == null ? 0 : dp12);
view.setLayoutParams(lparam);
ibDelete.setVisibility(readonly ? View.GONE : View.VISIBLE); ibDelete.setVisibility(readonly ? View.GONE : View.VISIBLE);
int resid = 0; int resid = 0;
@ -316,6 +321,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
this.debug = prefs.getBoolean("debug", false); this.debug = prefs.getBoolean("debug", false);
this.dp12 = Helper.dp2pixels(context, 12);
setHasStableIds(true); setHasStableIds(true);

@ -62,7 +62,7 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
// https://developer.android.com/topic/libraries/architecture/room.html // https://developer.android.com/topic/libraries/architecture/room.html
@Database( @Database(
version = 172, version = 173,
entities = { entities = {
EntityIdentity.class, EntityIdentity.class,
EntityAccount.class, EntityAccount.class,
@ -1699,6 +1699,15 @@ public abstract class DB extends RoomDatabase {
Log.i("DB migration from version " + startVersion + " to " + endVersion); Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `account` ADD COLUMN `use_received` INTEGER NOT NULL DEFAULT 0"); db.execSQL("ALTER TABLE `account` ADD COLUMN `use_received` INTEGER NOT NULL DEFAULT 0");
} }
})
.addMigrations(new Migration(172, 173) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `attachment` ADD COLUMN `subsequence` INTEGER");
db.execSQL("DROP INDEX `index_attachment_message_sequence`");
db.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_attachment_message_sequence_subsequence` ON `attachment` (`message`, `sequence`, `subsequence`)");
}
}); });
} }

@ -30,7 +30,7 @@ import java.util.List;
public interface DaoAttachment { public interface DaoAttachment {
@Query("SELECT * FROM attachment" + @Query("SELECT * FROM attachment" +
" WHERE message = :message" + " WHERE message = :message" +
" ORDER BY sequence") " ORDER BY sequence, subsequence")
LiveData<List<EntityAttachment>> liveAttachments(long message); LiveData<List<EntityAttachment>> liveAttachments(long message);
@Query("SELECT ifnull(MAX(sequence), 0)" + @Query("SELECT ifnull(MAX(sequence), 0)" +
@ -40,7 +40,7 @@ public interface DaoAttachment {
@Query("SELECT * FROM attachment" + @Query("SELECT * FROM attachment" +
" WHERE message = :message" + " WHERE message = :message" +
" ORDER BY sequence") " ORDER BY sequence, subsequence")
List<EntityAttachment> getAttachments(long message); List<EntityAttachment> getAttachments(long message);
@Query("SELECT * FROM attachment" + @Query("SELECT * FROM attachment" +

@ -45,7 +45,7 @@ import static androidx.room.ForeignKey.CASCADE;
}, },
indices = { indices = {
@Index(value = {"message"}), @Index(value = {"message"}),
@Index(value = {"message", "sequence"}, unique = true), @Index(value = {"message", "sequence", "subsequence"}, unique = true),
@Index(value = {"message", "cid"}) @Index(value = {"message", "cid"})
} }
) )
@ -67,6 +67,7 @@ public class EntityAttachment {
public Long message; public Long message;
@NonNull @NonNull
public Integer sequence; public Integer sequence;
public Integer subsequence; // embedded messages
public String name; public String name;
@NonNull @NonNull
public String type; public String type;

@ -1954,12 +1954,13 @@ public class MessageHelper {
MessageHelper helper = new MessageHelper(imessage, context); MessageHelper helper = new MessageHelper(imessage, context);
MessageHelper.MessageParts parts = helper.getMessageParts(); MessageHelper.MessageParts parts = helper.getMessageParts();
int sequence = db.attachment().getAttachmentSequence(local.message) + 1; int subsequence = 1;
for (AttachmentPart epart : parts.getAttachmentParts()) for (AttachmentPart epart : parts.getAttachmentParts())
try { try {
Log.i("Embedded attachment seq=" + local.sequence + ":" + sequence); Log.i("Embedded attachment seq=" + local.sequence + ":" + subsequence);
epart.attachment.message = local.message; epart.attachment.message = local.message;
epart.attachment.sequence = sequence++; epart.attachment.sequence = local.sequence;
epart.attachment.subsequence = subsequence++;
epart.attachment.id = db.attachment().insertAttachment(epart.attachment); epart.attachment.id = db.attachment().insertAttachment(epart.attachment);
File efile = epart.attachment.getFile(context); File efile = epart.attachment.getFile(context);

Loading…
Cancel
Save