Debug: folder flags

This commit is contained in:
M66B 2023-04-18 17:59:28 +02:00
parent 7d2dac420d
commit 688f4f6b58
7 changed files with 3000 additions and 5 deletions

File diff suppressed because it is too large Load Diff

View File

@ -419,6 +419,7 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
tvKeywords.setText(BuildConfig.DEBUG ?
(folder.separator == null ? "" : folder.separator + " ") +
(folder.namespace == null ? "" : folder.namespace + " ") +
(folder.flags == null ? null : TextUtils.join(" ", folder.flags) + " ") +
TextUtils.join(" ", folder.keywords) : null);
tvKeywords.setVisibility(show_flagged ? View.VISIBLE : View.GONE);

View File

@ -3503,7 +3503,28 @@ class Core {
db.folder().setFolderSyncState(folder.id, "syncing");
String[] userFlags = ifolder.getPermanentFlags().getUserFlags();
Flags flags = ifolder.getPermanentFlags();
List<String> f = new ArrayList<>();
if (flags != null) {
if (flags.contains(Flags.Flag.ANSWERED))
f.add("\\Answered");
if (flags.contains(Flags.Flag.DELETED))
f.add("\\Deleted");
if (flags.contains(Flags.Flag.DRAFT))
f.add("\\Draft");
if (flags.contains(Flags.Flag.FLAGGED))
f.add("\\Flagged");
if (flags.contains(Flags.Flag.RECENT))
f.add("\\Recent");
if (flags.contains(Flags.Flag.SEEN))
f.add("\\Seen");
if (flags.contains(Flags.Flag.USER))
f.add("\\*");
}
db.folder().setFolderFlags(folder.id, DB.Converters.fromStringArray(f.toArray(new String[0])));
String[] userFlags = flags.getUserFlags();
if (userFlags != null && userFlags.length > 0) {
List<String> keywords = new ArrayList<>(Arrays.asList(userFlags));
Collections.sort(keywords);
@ -3619,7 +3640,6 @@ class Core {
: new ReceivedDateTerm(ComparisonTerm.GE, new Date(sync_time));
SearchTerm searchTerm = dateTerm;
Flags flags = ifolder.getPermanentFlags();
if (sync_nodate && !account.isOutlook())
searchTerm = new OrTerm(searchTerm, new ReceivedDateTerm(ComparisonTerm.LT, new Date(365 * 24 * 3600 * 1000L)));
if (sync_unseen && flags.contains(Flags.Flag.SEEN))

View File

@ -68,7 +68,7 @@ import javax.mail.internet.InternetAddress;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 279,
version = 280,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -2813,7 +2813,14 @@ public abstract class DB extends RoomDatabase {
db.execSQL("DROP VIEW IF EXISTS `account_view`");
db.execSQL("CREATE VIEW IF NOT EXISTS `account_view` AS " + TupleAccountView.query);
}
}).addMigrations(new Migration(998, 999) {
}).addMigrations(new Migration(279, 280) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
logMigration(startVersion, endVersion);
db.execSQL("ALTER TABLE `folder` ADD COLUMN `flags` TEXT");
}
})
.addMigrations(new Migration(998, 999) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
logMigration(startVersion, endVersion);

View File

@ -359,6 +359,9 @@ public interface DaoFolder {
" AND NOT (sync_days IS :sync_days AND keep_days IS :keep_days)")
int setFolderProperties(long id, int sync_days, int keep_days);
@Query("UPDATE folder SET flags = :flags WHERE id = :id AND NOT (flags IS :flags)")
int setFolderFlags(long id, String flags);
@Query("UPDATE folder SET keywords = :keywords WHERE id = :id AND NOT (keywords IS :keywords)")
int setFolderKeywords(long id, String keywords);

View File

@ -125,7 +125,8 @@ public class EntityFolder extends EntityOrder implements Serializable {
public Boolean notify = false;
public Integer total; // messages on server
public String[] keywords;
public String[] flags; // system flags
public String[] keywords; // user flags
@NonNull
public Long selected_last = 0L;

View File

@ -2602,6 +2602,8 @@ public class Log {
jfolder.put("selectable", folder.selectable);
jfolder.put("inferiors", folder.inferiors);
jfolder.put("auto_add", folder.auto_add);
jfolder.put("flags", folder.flags == null ? null : TextUtils.join(",", folder.flags));
jfolder.put("keywords", folder.keywords == null ? null : TextUtils.join(",", folder.keywords));
jfolder.put("tbc", Boolean.TRUE.equals(folder.tbc));
jfolder.put("rename", folder.rename);
jfolder.put("tbd", Boolean.TRUE.equals(folder.tbd));