diff --git a/res/xml/network_security_configuration.xml b/res/xml/network_security_configuration.xml
index f74d8df9fc..79ba86792a 100644
--- a/res/xml/network_security_configuration.xml
+++ b/res/xml/network_security_configuration.xml
@@ -4,6 +4,7 @@
imaginary.stream
storage.seed1.loki.network
storage.seed2.loki.network
+ public.loki.foundation:22023
127.0.0.1
\ No newline at end of file
diff --git a/src/org/thoughtcrime/securesms/groups/GroupManager.java b/src/org/thoughtcrime/securesms/groups/GroupManager.java
index 80034d3d80..bcd4521bb8 100644
--- a/src/org/thoughtcrime/securesms/groups/GroupManager.java
+++ b/src/org/thoughtcrime/securesms/groups/GroupManager.java
@@ -78,7 +78,10 @@ public class GroupManager {
final Set
memberAddresses = getMemberAddresses(members);
final Set adminAddresses = getMemberAddresses(admins);
- memberAddresses.add(Address.fromSerialized(TextSecurePreferences.getLocalNumber(context)));
+ String masterHexEncodedPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(context);
+ String ourNumber = masterHexEncodedPublicKey != null ? masterHexEncodedPublicKey : TextSecurePreferences.getLocalNumber(context);
+
+ memberAddresses.add(Address.fromSerialized(ourNumber));
groupDatabase.create(groupId, name, new LinkedList<>(memberAddresses), null, null, new LinkedList<>(adminAddresses));
if (!mms) {
diff --git a/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java b/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java
index 9ba4a0b043..9f216e2fad 100644
--- a/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java
+++ b/src/org/thoughtcrime/securesms/groups/GroupMessageProcessor.java
@@ -70,7 +70,6 @@ public class GroupMessageProcessor {
String id = GroupUtil.getEncodedId(group);
Optional record = database.getGroup(id);
- // TODO: Allow processing messages from secondary devices
if (record.isPresent() && group.getType() == Type.UPDATE) {
return handleGroupUpdate(context, content, group, record.get(), outgoing);
} else if (!record.isPresent() && group.getType() == Type.UPDATE) {
diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
index cb15f2c4a5..2f543a86bc 100644
--- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
+++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
@@ -858,6 +858,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
sender = getPrimaryDeviceRecipient(content.getSender()).getAddress();
}
+ // Ignore messages from ourselves
+ if (sender.serialize().equalsIgnoreCase(TextSecurePreferences.getLocalNumber(context))) { return; }
+
IncomingMediaMessage mediaMessage = new IncomingMediaMessage(sender, message.getTimestamp(), -1,
message.getExpiresInSeconds() * 1000L, false, content.isNeedsReceipt(), message.getBody(), message.getGroupInfo(), message.getAttachments(),
quote, sharedContacts, linkPreviews, sticker);
@@ -1048,6 +1051,9 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
sender = getPrimaryDeviceRecipient(content.getSender()).getAddress();
}
+ // Ignore messages from ourselves
+ if (sender.serialize().equalsIgnoreCase(TextSecurePreferences.getLocalNumber(context))) { return; }
+
IncomingTextMessage _textMessage = new IncomingTextMessage(sender,
content.getSenderDevice(),
message.getTimestamp(), body,
diff --git a/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt b/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt
index dbf5988a6f..034176745a 100644
--- a/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt
+++ b/src/org/thoughtcrime/securesms/loki/redesign/activities/CreateClosedGroupActivity.kt
@@ -101,7 +101,8 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), MemberC
val recipients = selectedMembers.map {
Recipient.from(this, Address.fromSerialized(it), false)
}.toSet()
- val local = Recipient.from(this, Address.fromSerialized(TextSecurePreferences.getLocalNumber(this)), false)
+ val ourNumber = TextSecurePreferences.getMasterHexEncodedPublicKey(this) ?: TextSecurePreferences.getLocalNumber(this)
+ val local = Recipient.from(this, Address.fromSerialized(ourNumber), false)
CreateClosedGroupTask(WeakReference(this), null, name.toString(), recipients, setOf(local)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
}