Add beginning of a ViewModel test

mostly to demonstrate how those could look like
This commit is contained in:
Torsten Grote
2020-12-18 14:42:33 -03:00
parent 015ecb1d99
commit 205b4f77b2
12 changed files with 317 additions and 16 deletions

View File

@@ -12,6 +12,7 @@ import org.briarproject.bramble.api.db.NoSuchPendingContactException;
import org.briarproject.bramble.api.db.TransactionManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import org.briarproject.briar.android.viewmodel.LiveEvent;
import org.briarproject.briar.android.viewmodel.LiveResult;
@@ -54,8 +55,9 @@ public class AddContactViewModel extends DbViewModel {
ContactManager contactManager,
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db) {
super(application, dbExecutor, lifecycleManager, db);
TransactionManager db,
AndroidExecutor androidExecutor) {
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.contactManager = contactManager;
}

View File

@@ -19,6 +19,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.rendezvous.RendezvousPoller;
import org.briarproject.bramble.api.rendezvous.event.RendezvousPollEvent;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import java.util.ArrayList;
@@ -58,10 +59,11 @@ public class PendingContactListViewModel extends DbViewModel
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor,
ContactManager contactManager,
RendezvousPoller rendezvousPoller,
EventBus eventBus) {
super(application, dbExecutor, lifecycleManager, db);
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.contactManager = contactManager;
this.rendezvousPoller = rendezvousPoller;
this.eventBus = eventBus;

View File

@@ -22,6 +22,7 @@ import org.briarproject.bramble.api.settings.SettingsManager;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.Message;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.attachment.AttachmentCreator;
import org.briarproject.briar.android.attachment.AttachmentManager;
import org.briarproject.briar.android.attachment.AttachmentResult;
@@ -106,6 +107,7 @@ public class ConversationViewModel extends DbViewModel
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor,
EventBus eventBus,
MessagingManager messagingManager,
ContactManager contactManager,
@@ -113,7 +115,7 @@ public class ConversationViewModel extends DbViewModel
PrivateMessageFactory privateMessageFactory,
AttachmentRetriever attachmentRetriever,
AttachmentCreator attachmentCreator) {
super(application, dbExecutor, lifecycleManager, db);
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.db = db;
this.eventBus = eventBus;
this.messagingManager = messagingManager;

View File

@@ -15,6 +15,7 @@ import org.briarproject.bramble.api.lifecycle.IoExecutor;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.attachment.AttachmentItem;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import org.briarproject.briar.android.viewmodel.LiveEvent;
@@ -80,8 +81,9 @@ public class ImageViewModel extends DbViewModel implements EventListener {
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor,
@IoExecutor Executor ioExecutor) {
super(application, dbExecutor, lifecycleManager, db);
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.messagingManager = messagingManager;
this.eventBus = eventBus;
this.ioExecutor = ioExecutor;

View File

@@ -9,6 +9,7 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.settings.Settings;
import org.briarproject.bramble.api.settings.SettingsManager;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import java.util.concurrent.Executor;
@@ -53,8 +54,9 @@ public class NavDrawerViewModel extends DbViewModel {
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor,
SettingsManager settingsManager) {
super(app, dbExecutor, lifecycleManager, db);
super(app, dbExecutor, lifecycleManager, db, androidExecutor);
this.settingsManager = settingsManager;
}

View File

@@ -29,6 +29,7 @@ import org.briarproject.bramble.api.plugin.event.TransportStateEvent;
import org.briarproject.bramble.api.settings.Settings;
import org.briarproject.bramble.api.settings.SettingsManager;
import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import java.util.concurrent.Executor;
@@ -87,9 +88,10 @@ public class PluginViewModel extends DbViewModel implements EventListener {
@Inject
PluginViewModel(Application app, @DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager, TransactionManager db,
SettingsManager settingsManager, PluginManager pluginManager,
EventBus eventBus, NetworkManager networkManager) {
super(app, dbExecutor, lifecycleManager, db);
AndroidExecutor androidExecutor, SettingsManager settingsManager,
PluginManager pluginManager, EventBus eventBus,
NetworkManager networkManager) {
super(app, dbExecutor, lifecycleManager, db, androidExecutor);
this.app = app;
this.settingsManager = settingsManager;
this.pluginManager = pluginManager;

View File

@@ -20,6 +20,7 @@ import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.event.GroupAddedEvent;
import org.briarproject.bramble.api.sync.event.GroupRemovedEvent;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import org.briarproject.briar.android.viewmodel.LiveResult;
import org.briarproject.briar.api.android.AndroidNotificationManager;
@@ -78,11 +79,12 @@ class GroupListViewModel extends DbViewModel implements EventListener {
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor,
PrivateGroupManager groupManager,
GroupInvitationManager groupInvitationManager,
ContactManager contactManager,
AndroidNotificationManager notificationManager, EventBus eventBus) {
super(application, dbExecutor, lifecycleManager, db);
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.groupManager = groupManager;
this.groupInvitationManager = groupInvitationManager;
this.contactManager = contactManager;

View File

@@ -1,7 +1,6 @@
package org.briarproject.briar.android.viewmodel;
import android.app.Application;
import android.os.Handler;
import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.db.DbCallable;
@@ -10,6 +9,7 @@ import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.db.TransactionManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AndroidExecutor;
import java.util.ArrayList;
import java.util.List;
@@ -27,7 +27,6 @@ import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.recyclerview.widget.RecyclerView;
import static android.os.Looper.getMainLooper;
import static java.util.logging.Level.WARNING;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.util.LogUtils.logException;
@@ -42,16 +41,19 @@ public abstract class DbViewModel extends AndroidViewModel {
private final Executor dbExecutor;
private final LifecycleManager lifecycleManager;
private final TransactionManager db;
private final AndroidExecutor androidExecutor;
public DbViewModel(
@NonNull Application application,
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db) {
TransactionManager db,
AndroidExecutor androidExecutor) {
super(application);
this.dbExecutor = dbExecutor;
this.lifecycleManager = lifecycleManager;
this.db = db;
this.androidExecutor = androidExecutor;
}
/**
@@ -103,8 +105,8 @@ public abstract class DbViewModel extends AndroidViewModel {
Thread.currentThread().interrupt();
} catch (DbException e) {
logException(LOG, WARNING, e);
new Handler(getMainLooper())
.post(() -> uiUpdate.call(new LiveResult<>(e)));
androidExecutor.runOnUiThread(
() -> uiUpdate.call(new LiveResult<>(e)));
}
});
}