mirror of https://github.com/M66B/FairEmail.git
Added attachment subsequence
This commit is contained in:
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 debug;
|
||||
private int dp12;
|
||||
|
||||
private List<EntityAttachment> items = new ArrayList<>();
|
||||
|
||||
|
@ -111,6 +112,10 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
private void bindTo(EntityAttachment attachment) {
|
||||
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);
|
||||
|
||||
int resid = 0;
|
||||
|
@ -316,6 +321,7 @@ public class AdapterAttachment extends RecyclerView.Adapter<AdapterAttachment.Vi
|
|||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
this.debug = prefs.getBoolean("debug", false);
|
||||
this.dp12 = Helper.dp2pixels(context, 12);
|
||||
|
||||
setHasStableIds(true);
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
|
|||
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||
|
||||
@Database(
|
||||
version = 172,
|
||||
version = 173,
|
||||
entities = {
|
||||
EntityIdentity.class,
|
||||
EntityAccount.class,
|
||||
|
@ -1699,6 +1699,15 @@ public abstract class DB extends RoomDatabase {
|
|||
Log.i("DB migration from version " + startVersion + " to " + endVersion);
|
||||
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 {
|
||||
@Query("SELECT * FROM attachment" +
|
||||
" WHERE message = :message" +
|
||||
" ORDER BY sequence")
|
||||
" ORDER BY sequence, subsequence")
|
||||
LiveData<List<EntityAttachment>> liveAttachments(long message);
|
||||
|
||||
@Query("SELECT ifnull(MAX(sequence), 0)" +
|
||||
|
@ -40,7 +40,7 @@ public interface DaoAttachment {
|
|||
|
||||
@Query("SELECT * FROM attachment" +
|
||||
" WHERE message = :message" +
|
||||
" ORDER BY sequence")
|
||||
" ORDER BY sequence, subsequence")
|
||||
List<EntityAttachment> getAttachments(long message);
|
||||
|
||||
@Query("SELECT * FROM attachment" +
|
||||
|
|
|
@ -45,7 +45,7 @@ import static androidx.room.ForeignKey.CASCADE;
|
|||
},
|
||||
indices = {
|
||||
@Index(value = {"message"}),
|
||||
@Index(value = {"message", "sequence"}, unique = true),
|
||||
@Index(value = {"message", "sequence", "subsequence"}, unique = true),
|
||||
@Index(value = {"message", "cid"})
|
||||
}
|
||||
)
|
||||
|
@ -67,6 +67,7 @@ public class EntityAttachment {
|
|||
public Long message;
|
||||
@NonNull
|
||||
public Integer sequence;
|
||||
public Integer subsequence; // embedded messages
|
||||
public String name;
|
||||
@NonNull
|
||||
public String type;
|
||||
|
|
|
@ -1954,12 +1954,13 @@ public class MessageHelper {
|
|||
MessageHelper helper = new MessageHelper(imessage, context);
|
||||
MessageHelper.MessageParts parts = helper.getMessageParts();
|
||||
|
||||
int sequence = db.attachment().getAttachmentSequence(local.message) + 1;
|
||||
int subsequence = 1;
|
||||
for (AttachmentPart epart : parts.getAttachmentParts())
|
||||
try {
|
||||
Log.i("Embedded attachment seq=" + local.sequence + ":" + sequence);
|
||||
Log.i("Embedded attachment seq=" + local.sequence + ":" + subsequence);
|
||||
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);
|
||||
|
||||
File efile = epart.attachment.getFile(context);
|
||||
|
|
Loading…
Reference in New Issue