diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bfc8e61..844307c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -35,7 +35,7 @@
android:label="@string/title_activity_settings" />
-
+
\ No newline at end of file
diff --git a/app/src/main/java/org/mercury_im/messenger/android/MercuryImApplication.java b/app/src/main/java/org/mercury_im/messenger/android/MercuryImApplication.java
index a2ddb3e..2ecad3f 100644
--- a/app/src/main/java/org/mercury_im/messenger/android/MercuryImApplication.java
+++ b/app/src/main/java/org/mercury_im/messenger/android/MercuryImApplication.java
@@ -11,7 +11,7 @@ import org.mercury_im.messenger.core.data.repository.AccountRepository;
import org.mercury_im.messenger.android.di.component.AppComponent;
import org.mercury_im.messenger.android.di.module.AppModule;
import org.mercury_im.messenger.entity.Account;
-import org.mercury_im.messenger.android.service.MercuryConnectionService;
+import org.mercury_im.messenger.android.service.MercuryForegroundService;
import org.mercury_im.messenger.core.xmpp.CsiManager;
import java.util.List;
@@ -23,11 +23,6 @@ import io.reactivex.disposables.CompositeDisposable;
public class MercuryImApplication extends Application {
- static {
- // Initialize Smack etc.
- // new MercuryConfiguration();
- }
-
private static MercuryImApplication INSTANCE;
private AppComponent appComponent;
private ClientStateHandler clientStateHandler = new ClientStateHandler();
@@ -105,8 +100,8 @@ public class MercuryImApplication extends Application {
}
private void startForegroundService() {
- Intent startIntent = new Intent(getApplicationContext(), MercuryConnectionService.class);
- startIntent.setAction(MercuryConnectionService.ACTION_START);
+ Intent startIntent = new Intent(getApplicationContext(), MercuryForegroundService.class);
+ startIntent.setAction(MercuryForegroundService.ACTION_START);
if (Build.VERSION.SDK_INT < 26) {
startService(startIntent);
} else {
@@ -115,8 +110,8 @@ public class MercuryImApplication extends Application {
}
private void stopForegroundService() {
- Intent stopIntent = new Intent(getApplicationContext(), MercuryConnectionService.class);
- stopIntent.setAction(MercuryConnectionService.ACTION_STOP);
+ Intent stopIntent = new Intent(getApplicationContext(), MercuryForegroundService.class);
+ stopIntent.setAction(MercuryForegroundService.ACTION_STOP);
startService(stopIntent);
}
}
diff --git a/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java b/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java
index 269f449..ea553f7 100644
--- a/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java
+++ b/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java
@@ -3,14 +3,13 @@ package org.mercury_im.messenger.android.di.component;
import org.mercury_im.messenger.android.MercuryImApplication;
import org.mercury_im.messenger.android.di.module.AndroidDatabaseModule;
import org.mercury_im.messenger.android.di.module.AndroidSchedulersModule;
-import org.mercury_im.messenger.core.di.module.OpenPgpModule;
import org.mercury_im.messenger.core.di.module.RxMercuryMessageStoreFactoryModule;
import org.mercury_im.messenger.core.di.module.RxMercuryRosterStoreFactoryModule;
import org.mercury_im.messenger.core.di.module.XmppTcpConnectionFactoryModule;
import org.mercury_im.messenger.data.di.RepositoryModule;
import org.mercury_im.messenger.android.di.module.AppModule;
import org.mercury_im.messenger.core.di.module.ViewModelModule;
-import org.mercury_im.messenger.android.service.MercuryConnectionService;
+import org.mercury_im.messenger.android.service.MercuryForegroundService;
import org.mercury_im.messenger.core.store.caps.MercuryEntityCapsStore;
import org.mercury_im.messenger.android.ui.MainActivity;
import org.mercury_im.messenger.android.ui.account.AndroidAccountsViewModel;
@@ -90,7 +89,7 @@ public interface AppComponent {
// Services
- void inject(MercuryConnectionService service);
+ void inject(MercuryForegroundService service);
void inject(MercuryEntityCapsStore store);
}
diff --git a/app/src/main/java/org/mercury_im/messenger/android/service/MercuryConnectionService.java b/app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java
similarity index 86%
rename from app/src/main/java/org/mercury_im/messenger/android/service/MercuryConnectionService.java
rename to app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java
index f2ee92b..1585380 100644
--- a/app/src/main/java/org/mercury_im/messenger/android/service/MercuryConnectionService.java
+++ b/app/src/main/java/org/mercury_im/messenger/android/service/MercuryForegroundService.java
@@ -10,21 +10,19 @@ import android.os.IBinder;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
-import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smackx.ping.android.ServerPingWithAlarmManager;
+import org.mercury_im.messenger.R;
import org.mercury_im.messenger.android.MercuryImApplication;
import org.mercury_im.messenger.android.Notifications;
-import org.mercury_im.messenger.R;
import org.mercury_im.messenger.android.ui.MainActivity;
/**
- * Started, Bound Service, which is responsible for managing {@link XMPPConnection XMPPConnections}
- * affiliated with registered accounts.
+ * Started, Bound Service, which is responsible keeping the application alive when the app is not open.
*/
-public class MercuryConnectionService extends Service {
+public class MercuryForegroundService extends Service {
private static final String APP = "org.mercury-im.messenger";
- private static final String SERVICE = APP + ".MercuryConnectionService";
+ private static final String SERVICE = APP + ".MercuryForegroundService";
private static final String ACTION = SERVICE + ".ACTION";
@@ -105,13 +103,13 @@ public class MercuryConnectionService extends Service {
public class Binder extends android.os.Binder {
- private final MercuryConnectionService service;
+ private final MercuryForegroundService service;
- public Binder(MercuryConnectionService service) {
+ public Binder(MercuryForegroundService service) {
this.service = service;
}
- public MercuryConnectionService getService() {
+ public MercuryForegroundService getService() {
return service;
}
}
diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java b/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java
index 517afc6..8df6167 100644
--- a/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java
+++ b/app/src/main/java/org/mercury_im/messenger/android/ui/chat/AndroidChatViewModel.java
@@ -133,7 +133,7 @@ public class AndroidChatViewModel extends ViewModel implements MercuryAndroidVie
}
public void sendMessage(String body) {
- disposable.add(messenger.sendMessage(getContact().getValue(), body)
+ disposable.add(messenger.sendEncryptedMessage(getContact().getValue(), body)
.subscribeOn(schedulers.getIoScheduler())
.observeOn(schedulers.getUiScheduler())
.subscribe());
diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java b/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java
index 334d0d8..25d52e0 100644
--- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java
+++ b/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailViewModel.java
@@ -61,7 +61,8 @@ public class ContactDetailViewModel extends ViewModel {
private MutableLiveData contactName = new MutableLiveData<>("Alice Wonderland");
private MutableLiveData contactAccountAddress = new MutableLiveData<>("mad@hatter.lit");
private MutableLiveData> contactGroups = new MutableLiveData<>(Collections.emptyList());
- private MutableLiveData> contactFingerprints = new MutableLiveData<>(Collections.singletonList(new OpenPgpV4Fingerprint("1357B01865B2503C18453D208CAC2A9678548E35")));
+ private MutableLiveData> contactFingerprints =
+ new MutableLiveData<>(Collections.singletonList(new OpenPgpV4Fingerprint("1234567890ABCDEF1234567890ABCDEF01234567")));
private Roster roster;
diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/RxOpenPgpRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/RxOpenPgpRepository.java
index f6f993e..d02eee5 100644
--- a/data/src/main/java/org/mercury_im/messenger/data/repository/RxOpenPgpRepository.java
+++ b/data/src/main/java/org/mercury_im/messenger/data/repository/RxOpenPgpRepository.java
@@ -184,8 +184,8 @@ public class RxOpenPgpRepository implements OpenPgpRepository {
@Override
public Observable> observeFingerprintsOf(UUID accountId, String peerAddress) {
return data.select(OpenPgpPublicKeyRing.class)
- //.where(OpenPgpPublicKeyRing.ACCOUNT_ID.eq(accountId))
- .where(OpenPgpPublicKeyRing.OWNER.eq(JidCreate.entityBareFromOrThrowUnchecked(peerAddress)))
+ .where(OpenPgpPublicKeyRing.ACCOUNT_ID.eq(accountId))
+ .and(OpenPgpPublicKeyRing.OWNER.eq(JidCreate.entityBareFromOrThrowUnchecked(peerAddress)))
.get().observableResult()
.map(result -> {
OpenPgpPublicKeyRing model = new ResultDelegate<>(result).firstOrNull();
@@ -203,20 +203,17 @@ public class RxOpenPgpRepository implements OpenPgpRepository {
@Override
public Single