mirror of
https://github.com/M66B/FairEmail.git
synced 2025-01-01 12:44:42 +00:00
Restored old invalidation behavior
This commit is contained in:
parent
ab5580ec53
commit
19bca3f56c
1 changed files with 5 additions and 13 deletions
|
@ -28,7 +28,6 @@ import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -160,7 +159,7 @@ public abstract class DB extends RoomDatabase {
|
||||||
if (changed) {
|
if (changed) {
|
||||||
Log.i("Invalidating account view");
|
Log.i("Invalidating account view");
|
||||||
last = accounts;
|
last = accounts;
|
||||||
db.getInvalidationTracker().notifyObserversByTableNames("account_view");
|
db.getInvalidationTracker().notifyObserversByTableNames("message");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -186,7 +185,7 @@ public abstract class DB extends RoomDatabase {
|
||||||
if (changed) {
|
if (changed) {
|
||||||
Log.i("Invalidating identity view");
|
Log.i("Invalidating identity view");
|
||||||
last = identities;
|
last = identities;
|
||||||
db.getInvalidationTracker().notifyObserversByTableNames("identity_view");
|
db.getInvalidationTracker().notifyObserversByTableNames("message");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -212,7 +211,7 @@ public abstract class DB extends RoomDatabase {
|
||||||
if (changed) {
|
if (changed) {
|
||||||
Log.i("Invalidating folder view");
|
Log.i("Invalidating folder view");
|
||||||
last = folders;
|
last = folders;
|
||||||
db.getInvalidationTracker().notifyObserversByTableNames("folder_view");
|
db.getInvalidationTracker().notifyObserversByTableNames("message");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -226,10 +225,8 @@ public abstract class DB extends RoomDatabase {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Log.i("Disabling view invalidation");
|
Log.i("Disabling view invalidation");
|
||||||
Field fmTableNames = InvalidationTracker.class.getDeclaredField("mTableNames");
|
|
||||||
Field fmViewTables = InvalidationTracker.class.getDeclaredField("mViewTables");
|
|
||||||
|
|
||||||
fmTableNames.setAccessible(true);
|
Field fmViewTables = InvalidationTracker.class.getDeclaredField("mViewTables");
|
||||||
fmViewTables.setAccessible(true);
|
fmViewTables.setAccessible(true);
|
||||||
|
|
||||||
Map<String, Set<String>> mViewTables = (Map) fmViewTables.get(sInstance.getInvalidationTracker());
|
Map<String, Set<String>> mViewTables = (Map) fmViewTables.get(sInstance.getInvalidationTracker());
|
||||||
|
@ -237,17 +234,12 @@ public abstract class DB extends RoomDatabase {
|
||||||
mViewTables.get("identity_view").clear();
|
mViewTables.get("identity_view").clear();
|
||||||
mViewTables.get("folder_view").clear();
|
mViewTables.get("folder_view").clear();
|
||||||
|
|
||||||
List<String> tableNames = new ArrayList<>(Arrays.asList(DB_TABLES));
|
|
||||||
tableNames.addAll(mViewTables.keySet());
|
|
||||||
Log.i("Observing invalidation tables=" + TextUtils.join(",", tableNames));
|
|
||||||
fmTableNames.set(sInstance.getInvalidationTracker(), tableNames.toArray(new String[0]));
|
|
||||||
|
|
||||||
Log.i("Disabled view invalidation");
|
Log.i("Disabled view invalidation");
|
||||||
} catch (ReflectiveOperationException ex) {
|
} catch (ReflectiveOperationException ex) {
|
||||||
Log.e(ex);
|
Log.e(ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
sInstance.getInvalidationTracker().addObserver(new InvalidationTracker.Observer(DB.DB_TABLES) {
|
sInstance.getInvalidationTracker().addObserver(new InvalidationTracker.Observer(DB_TABLES) {
|
||||||
@Override
|
@Override
|
||||||
public void onInvalidated(@NonNull Set<String> tables) {
|
public void onInvalidated(@NonNull Set<String> tables) {
|
||||||
Log.d("ROOM invalidated=" + TextUtils.join(",", tables));
|
Log.d("ROOM invalidated=" + TextUtils.join(",", tables));
|
||||||
|
|
Loading…
Reference in a new issue