mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-24 02:25:19 +00:00
Clean & debug
This commit is contained in:
parent
9b4a219b06
commit
819f414446
@ -618,7 +618,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements Verif
|
||||
unidentifiedAccessKey, universalUnidentifiedAccess);
|
||||
|
||||
IdentityKeyPair identityKey = IdentityKeyUtil.getIdentityKeyPair(RegistrationActivity.this);
|
||||
List<PreKeyRecord> records = PreKeyUtil.generatePreKeys(RegistrationActivity.this);
|
||||
List<PreKeyRecord> records = PreKeyUtil.generatePreKeyRecords(RegistrationActivity.this);
|
||||
SignedPreKeyRecord signedPreKey = PreKeyUtil.generateSignedPreKey(RegistrationActivity.this, identityKey, true);
|
||||
|
||||
accountManager.setPreKeys(identityKey.getPublicKey(), signedPreKey, records);
|
||||
|
@ -3270,7 +3270,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
for (String device : devices) { MessageSender.sendRestoreSessionMessage(this, device); }
|
||||
long messageID = smsDatabase.insertMessageOutbox(threadId, new OutgoingTextMessage(recipient,"", 0, 0), false, System.currentTimeMillis(), null);
|
||||
if (messageID > -1) {
|
||||
smsDatabase.markAsLokiSessionRestoreSent(messageID);
|
||||
smsDatabase.markAsSentLokiSessionRestorationRequest(messageID);
|
||||
}
|
||||
lokiThreadDatabase.removeAllSessionRestoreDevices(threadId);
|
||||
updateSessionRestoreBanner();
|
||||
|
@ -43,7 +43,7 @@ public class PreKeyUtil {
|
||||
|
||||
private static final int BATCH_SIZE = 100;
|
||||
|
||||
public synchronized static List<PreKeyRecord> generatePreKeys(Context context) {
|
||||
public synchronized static List<PreKeyRecord> generatePreKeyRecords(Context context) {
|
||||
PreKeyStore preKeyStore = new TextSecurePreKeyStore(context);
|
||||
List<PreKeyRecord> records = new LinkedList<>();
|
||||
int preKeyIdOffset = TextSecurePreferences.getNextPreKeyId(context);
|
||||
@ -101,7 +101,7 @@ public class PreKeyUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized static List<PreKeyRecord> generatePreKeys(Context context, int amount) {
|
||||
public synchronized static List<PreKeyRecord> generatePreKeyRecords(Context context, int amount) {
|
||||
List<PreKeyRecord> records = new LinkedList<>();
|
||||
int preKeyIDOffset = TextSecurePreferences.getNextPreKeyId(context);
|
||||
for (int i = 0; i < amount; i++) {
|
||||
|
@ -167,7 +167,7 @@ public class GroupDatabase extends Database {
|
||||
|
||||
GroupRecord record;
|
||||
while ((record = reader.getNext()) != null) {
|
||||
if (record.isSignalGroup() && record.members.contains(address)) {
|
||||
if (record.isClosedGroup() && record.members.contains(address)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -490,11 +490,11 @@ public class GroupDatabase extends Database {
|
||||
return mms;
|
||||
}
|
||||
|
||||
public boolean isPublicChat() { return Address.fromSerialized(id).isOpenGroup(); }
|
||||
public boolean isOpenGroup() { return Address.fromSerialized(id).isOpenGroup(); }
|
||||
|
||||
public boolean isRSSFeed() { return Address.fromSerialized(id).isRSSFeed(); }
|
||||
|
||||
public boolean isSignalGroup() { return Address.fromSerialized(id).isClosedGroup(); }
|
||||
public boolean isClosedGroup() { return Address.fromSerialized(id).isClosedGroup(); }
|
||||
|
||||
public String getUrl() { return url; }
|
||||
|
||||
|
@ -47,7 +47,6 @@ import org.whispersystems.libsignal.util.guava.Optional;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@ -252,7 +251,7 @@ public class SmsDatabase extends MessagingDatabase {
|
||||
updateTypeBitmask(id, Types.ENCRYPTION_MASK, Types.ENCRYPTION_REMOTE_NO_SESSION_BIT);
|
||||
}
|
||||
|
||||
public void markAsLokiSessionRestoreSent(long id) {
|
||||
public void markAsSentLokiSessionRestorationRequest(long id) {
|
||||
updateTypeBitmask(id, Types.ENCRYPTION_MASK, Types.ENCRYPTION_LOKI_SESSION_RESTORE_SENT_BIT);
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ import org.thoughtcrime.securesms.jobs.TypingSendJob;
|
||||
import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.loki.protocol.LokiSessionResetImplementation;
|
||||
import org.thoughtcrime.securesms.loki.MultiDeviceOpenGroupUpdateJob;
|
||||
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceOpenGroupUpdateJob;
|
||||
import org.thoughtcrime.securesms.loki.PushMessageSyncSendJob;
|
||||
import org.thoughtcrime.securesms.preferences.AppProtectionPreferenceFragment;
|
||||
import org.thoughtcrime.securesms.push.MessageSenderEventListener;
|
||||
|
@ -13,7 +13,7 @@ import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkOrCellServiceConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.SqlCipherMigrationConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.SqlCipherMigrationConstraintObserver;
|
||||
import org.thoughtcrime.securesms.loki.MultiDeviceOpenGroupUpdateJob;
|
||||
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceOpenGroupUpdateJob;
|
||||
import org.thoughtcrime.securesms.loki.PushBackgroundMessageSendJob;
|
||||
import org.thoughtcrime.securesms.loki.PushMessageSyncSendJob;
|
||||
|
||||
|
@ -122,7 +122,7 @@ public class MultiDeviceContactUpdateJob extends BaseJob implements InjectableTy
|
||||
}
|
||||
|
||||
if (address == null) generateFullContactUpdate();
|
||||
else if (!SyncMessagesProtocol.shouldSyncContact(context, Address.fromSerialized(address))) generateSingleContactUpdate(Address.fromSerialized(address));
|
||||
else if (SyncMessagesProtocol.shouldSyncContact(context, Address.fromSerialized(address))) generateSingleContactUpdate(Address.fromSerialized(address));
|
||||
}
|
||||
|
||||
private void generateSingleContactUpdate(@NonNull Address address)
|
||||
|
@ -84,7 +84,7 @@ public class MultiDeviceGroupUpdateJob extends BaseJob implements InjectableType
|
||||
reader = DatabaseFactory.getGroupDatabase(context).getGroups();
|
||||
|
||||
while ((record = reader.getNext()) != null) {
|
||||
if (record.isSignalGroup()) {
|
||||
if (record.isClosedGroup()) {
|
||||
List<String> members = new LinkedList<>();
|
||||
List<String> admins = new LinkedList<>();
|
||||
|
||||
|
@ -63,9 +63,8 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
|
||||
private static final String KEY_TEMPLATE_MESSAGE_ID = "template_message_id";
|
||||
private static final String KEY_MESSAGE_ID = "message_id";
|
||||
private static final String KEY_DESTINATION = "destination";
|
||||
private static final String KEY_IS_FRIEND_REQUEST = "is_friend_request";
|
||||
private static final String KEY_IS_LOKI_PRE_KEY_BUNDLE_MESSAGE = "is_friend_request";
|
||||
private static final String KEY_CUSTOM_FR_MESSAGE = "custom_friend_request_message";
|
||||
private static final String KEY_SHOULD_SEND_SYNC_MESSAGE = "should_send_sync_message";
|
||||
|
||||
@Inject SignalServiceMessageSender messageSender;
|
||||
|
||||
@ -148,7 +147,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
|
||||
.putLong(KEY_TEMPLATE_MESSAGE_ID, templateMessageId)
|
||||
.putLong(KEY_MESSAGE_ID, messageId)
|
||||
.putString(KEY_DESTINATION, destination.serialize())
|
||||
.putBoolean(KEY_IS_FRIEND_REQUEST, isLokiPreKeyBundleMessage);
|
||||
.putBoolean(KEY_IS_LOKI_PRE_KEY_BUNDLE_MESSAGE, isLokiPreKeyBundleMessage);
|
||||
|
||||
if (customFriendRequestMessage != null) { builder.putString(KEY_CUSTOM_FR_MESSAGE, customFriendRequestMessage); }
|
||||
return builder.build();
|
||||
@ -326,7 +325,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType {
|
||||
long templateMessageID = data.getLong(KEY_TEMPLATE_MESSAGE_ID);
|
||||
long messageID = data.getLong(KEY_MESSAGE_ID);
|
||||
Address destination = Address.fromSerialized(data.getString(KEY_DESTINATION));
|
||||
boolean isLokiPreKeyBundleMessage = data.getBoolean(KEY_IS_FRIEND_REQUEST);
|
||||
boolean isLokiPreKeyBundleMessage = data.getBoolean(KEY_IS_LOKI_PRE_KEY_BUNDLE_MESSAGE);
|
||||
String customFRMessage = data.hasString(KEY_CUSTOM_FR_MESSAGE) ? data.getString(KEY_CUSTOM_FR_MESSAGE) : null;
|
||||
return new PushMediaSendJob(parameters, templateMessageID, messageID, destination, isLokiPreKeyBundleMessage, customFRMessage);
|
||||
}
|
||||
|
@ -47,9 +47,8 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
|
||||
private static final String KEY_TEMPLATE_MESSAGE_ID = "template_message_id";
|
||||
private static final String KEY_MESSAGE_ID = "message_id";
|
||||
private static final String KEY_DESTINATION = "destination";
|
||||
private static final String KEY_IS_FRIEND_REQUEST = "is_friend_request";
|
||||
private static final String KEY_IS_LOKI_PRE_KEY_BUNDLE_MESSAGE = "is_friend_request";
|
||||
private static final String KEY_CUSTOM_FR_MESSAGE = "custom_friend_request_message";
|
||||
private static final String KEY_SHOULD_SEND_SYNC_MESSAGE = "should_send_sync_message";
|
||||
|
||||
@Inject SignalServiceMessageSender messageSender;
|
||||
|
||||
@ -88,7 +87,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
|
||||
.putLong(KEY_TEMPLATE_MESSAGE_ID, templateMessageId)
|
||||
.putLong(KEY_MESSAGE_ID, messageId)
|
||||
.putString(KEY_DESTINATION, destination.serialize())
|
||||
.putBoolean(KEY_IS_FRIEND_REQUEST, isLokiPreKeyBundleMessage);
|
||||
.putBoolean(KEY_IS_LOKI_PRE_KEY_BUNDLE_MESSAGE, isLokiPreKeyBundleMessage);
|
||||
|
||||
if (customFriendRequestMessage != null) { builder.putString(KEY_CUSTOM_FR_MESSAGE, customFriendRequestMessage); }
|
||||
return builder.build();
|
||||
@ -262,7 +261,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType {
|
||||
long templateMessageID = data.getLong(KEY_TEMPLATE_MESSAGE_ID);
|
||||
long messageID = data.getLong(KEY_MESSAGE_ID);
|
||||
Address destination = Address.fromSerialized(data.getString(KEY_DESTINATION));
|
||||
boolean isLokiPreKeyBundleMessage = data.getBoolean(KEY_IS_FRIEND_REQUEST);
|
||||
boolean isLokiPreKeyBundleMessage = data.getBoolean(KEY_IS_LOKI_PRE_KEY_BUNDLE_MESSAGE);
|
||||
String customFRMessage = data.hasString(KEY_CUSTOM_FR_MESSAGE) ? data.getString(KEY_CUSTOM_FR_MESSAGE) : null;
|
||||
return new PushTextSendJob(parameters, templateMessageID, messageID, destination, isLokiPreKeyBundleMessage, customFRMessage);
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ public class RefreshPreKeysJob extends BaseJob implements InjectableType {
|
||||
return;
|
||||
}
|
||||
|
||||
List<PreKeyRecord> preKeyRecords = PreKeyUtil.generatePreKeys(context);
|
||||
List<PreKeyRecord> preKeyRecords = PreKeyUtil.generatePreKeyRecords(context);
|
||||
IdentityKeyPair identityKey = IdentityKeyUtil.getIdentityKeyPair(context);
|
||||
SignedPreKeyRecord signedPreKeyRecord = PreKeyUtil.generateSignedPreKey(context, identityKey, false);
|
||||
|
||||
|
@ -55,6 +55,7 @@ public class RotateSignedPreKeyJob extends BaseJob implements InjectableType {
|
||||
IdentityKeyPair identityKey = IdentityKeyUtil.getIdentityKeyPair(context);
|
||||
SignedPreKeyRecord signedPreKeyRecord = PreKeyUtil.generateSignedPreKey(context, identityKey, false);
|
||||
|
||||
// Loki - Don't upload the new signed pre key
|
||||
// accountManager.setSignedPreKey(signedPreKeyRecord);
|
||||
|
||||
PreKeyUtil.setActiveSignedPreKeyId(context, signedPreKeyRecord.getId());
|
||||
|
@ -38,7 +38,7 @@ class LokiPreKeyRecordDatabase(context: Context, helper: SQLCipherOpenHelper) :
|
||||
}
|
||||
|
||||
private fun generateAndStorePreKeyRecord(hexEncodedPublicKey: String): PreKeyRecord {
|
||||
val records = PreKeyUtil.generatePreKeys(context, 1)
|
||||
val records = PreKeyUtil.generatePreKeyRecords(context, 1)
|
||||
PreKeyUtil.storePreKeyRecords(context, records)
|
||||
val record = records.first()
|
||||
val database = databaseHelper.writableDatabase
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.thoughtcrime.securesms.loki
|
||||
package org.thoughtcrime.securesms.loki.protocol
|
||||
|
||||
import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||
@ -32,7 +32,8 @@ class MultiDeviceOpenGroupUpdateJob private constructor(parameters: Parameters)
|
||||
.setMaxAttempts(Parameters.UNLIMITED)
|
||||
.build())
|
||||
|
||||
override fun getFactoryKey(): String { return KEY }
|
||||
override fun getFactoryKey(): String { return KEY
|
||||
}
|
||||
|
||||
override fun serialize(): Data { return Data.EMPTY }
|
||||
|
||||
@ -47,19 +48,16 @@ class MultiDeviceOpenGroupUpdateJob private constructor(parameters: Parameters)
|
||||
DatabaseFactory.getGroupDatabase(context).groups.use { reader ->
|
||||
while (true) {
|
||||
val record = reader.next ?: return@use
|
||||
if (!record.isPublicChat) { continue; }
|
||||
if (!record.isOpenGroup) { continue; }
|
||||
|
||||
val threadID = GroupManager.getThreadIDFromGroupID(record.encodedId, context)
|
||||
val openGroup = DatabaseFactory.getLokiThreadDatabase(context).getPublicChat(threadID)
|
||||
if (openGroup != null) {
|
||||
openGroups.add(openGroup)
|
||||
}
|
||||
if (openGroup != null) { openGroups.add(openGroup) }
|
||||
}
|
||||
}
|
||||
|
||||
if (openGroups.size > 0) {
|
||||
messageSender.sendMessage(SignalServiceSyncMessage.forOpenGroups(openGroups),
|
||||
UnidentifiedAccessUtil.getAccessForSync(context))
|
||||
messageSender.sendMessage(SignalServiceSyncMessage.forOpenGroups(openGroups), UnidentifiedAccessUtil.getAccessForSync(context))
|
||||
} else {
|
||||
Log.d("Loki", "No open groups to sync.")
|
||||
}
|
@ -80,16 +80,16 @@ public class ProfilePreference extends Preference {
|
||||
if (profileNumberView == null) return;
|
||||
|
||||
Context context = getContext();
|
||||
String userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context);
|
||||
String primaryDevicePublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(context);
|
||||
String publicKey = primaryDevicePublicKey != null ? primaryDevicePublicKey : userHexEncodedPublicKey;
|
||||
final Address localAddress = Address.fromSerialized(publicKey);
|
||||
final Recipient recipient = Recipient.from(context, localAddress, false);
|
||||
final String profileName = TextSecurePreferences.getProfileName(context);
|
||||
String userPublicKey = TextSecurePreferences.getLocalNumber(context);
|
||||
String masterPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(context);
|
||||
String publicKeyToUse = masterPublicKey != null ? masterPublicKey : userPublicKey;
|
||||
final Address address = Address.fromSerialized(publicKeyToUse);
|
||||
final Recipient recipient = Recipient.from(context, address, false);
|
||||
final String displayName = TextSecurePreferences.getProfileName(context);
|
||||
|
||||
containerView.setOnLongClickListener(v -> {
|
||||
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
ClipData clip = ClipData.newPlainText("Public Key", publicKey);
|
||||
ClipData clip = ClipData.newPlainText("Public Key", publicKeyToUse);
|
||||
clipboard.setPrimaryClip(clip);
|
||||
Toast.makeText(context, R.string.activity_settings_public_key_copied_message, Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
@ -114,17 +114,17 @@ public class ProfilePreference extends Preference {
|
||||
.into(avatarView);
|
||||
|
||||
|
||||
if (!TextUtils.isEmpty(profileName)) {
|
||||
profileNameView.setText(profileName);
|
||||
if (!TextUtils.isEmpty(displayName)) {
|
||||
profileNameView.setText(displayName);
|
||||
}
|
||||
|
||||
profileNameView.setVisibility(TextUtils.isEmpty(profileName) ? View.GONE : View.VISIBLE);
|
||||
profileNumberView.setText(localAddress.toPhoneString());
|
||||
profileNameView.setVisibility(TextUtils.isEmpty(displayName) ? View.GONE : View.VISIBLE);
|
||||
profileNumberView.setText(address.toPhoneString());
|
||||
|
||||
profileTagView.setVisibility(primaryDevicePublicKey == null ? View.GONE : View.VISIBLE);
|
||||
if (primaryDevicePublicKey != null && ourDeviceWords == null) {
|
||||
profileTagView.setVisibility(masterPublicKey == null ? View.GONE : View.VISIBLE);
|
||||
if (masterPublicKey != null && ourDeviceWords == null) {
|
||||
MnemonicCodec codec = new MnemonicCodec(MnemonicUtilities.getLanguageFileDirectory(context));
|
||||
ourDeviceWords = MnemonicUtilities.getFirst3Words(codec, userHexEncodedPublicKey);
|
||||
ourDeviceWords = MnemonicUtilities.getFirst3Words(codec, userPublicKey);
|
||||
}
|
||||
|
||||
String tag = context.getResources().getString(R.string.activity_settings_linked_device_tag);
|
||||
|
@ -58,8 +58,6 @@ public class WelcomeActivity extends BaseActionBarActivity {
|
||||
.ifNecessary()
|
||||
.withRationaleDialog(getString(R.string.activity_landing_permission_dialog_message), R.drawable.ic_folder_white_48dp)
|
||||
.onAnyResult(() -> {
|
||||
// TextSecurePreferences.setHasSeenWelcomeScreen(WelcomeActivity.this, true);
|
||||
|
||||
Intent nextIntent = getIntent().getParcelableExtra("next_intent");
|
||||
|
||||
if (nextIntent == null) {
|
||||
|
@ -1010,7 +1010,6 @@ public class WebRtcCallService extends Service implements InjectableType,
|
||||
Callable<Boolean> callable = new Callable<Boolean>() {
|
||||
@Override
|
||||
public Boolean call() throws Exception {
|
||||
// TODO: Message ID
|
||||
messageSender.sendCallMessage(new SignalServiceAddress(recipient.getAddress().toPhoneString()),
|
||||
UnidentifiedAccessUtil.getAccessFor(WebRtcCallService.this, recipient),
|
||||
callMessage);
|
||||
|
@ -47,7 +47,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.loki.BackgroundMessage;
|
||||
import org.thoughtcrime.securesms.loki.FriendRequestHandler;
|
||||
import org.thoughtcrime.securesms.loki.MultiDeviceOpenGroupUpdateJob;
|
||||
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceOpenGroupUpdateJob;
|
||||
import org.thoughtcrime.securesms.loki.MultiDeviceUtilities;
|
||||
import org.thoughtcrime.securesms.loki.PushBackgroundMessageSendJob;
|
||||
import org.thoughtcrime.securesms.loki.PushMessageSyncSendJob;
|
||||
|
@ -6,7 +6,6 @@ import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
import network.loki.messenger.R;
|
||||
import org.thoughtcrime.securesms.crypto.storage.TextSecureIdentityKeyStore;
|
||||
import org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore;
|
||||
import org.thoughtcrime.securesms.database.Address;
|
||||
@ -39,6 +38,8 @@ import org.whispersystems.signalservice.api.messages.multidevice.VerifiedMessage
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import network.loki.messenger.R;
|
||||
|
||||
import static org.whispersystems.libsignal.SessionCipher.SESSION_LOCK;
|
||||
|
||||
public class IdentityUtil {
|
||||
@ -74,7 +75,7 @@ public class IdentityUtil {
|
||||
GroupDatabase.GroupRecord groupRecord;
|
||||
|
||||
while ((groupRecord = reader.getNext()) != null) {
|
||||
if (groupRecord.isRSSFeed() || groupRecord.isPublicChat()) { continue; }
|
||||
if (groupRecord.isRSSFeed() || groupRecord.isOpenGroup()) { continue; }
|
||||
if (groupRecord.getMembers().contains(recipient.getAddress()) && groupRecord.isActive() && !groupRecord.isMms()) {
|
||||
SignalServiceGroup group = new SignalServiceGroup(groupRecord.getId(), SignalServiceGroup.GroupType.SIGNAL);
|
||||
|
||||
@ -127,7 +128,7 @@ public class IdentityUtil {
|
||||
GroupDatabase.GroupRecord groupRecord;
|
||||
|
||||
while ((groupRecord = reader.getNext()) != null) {
|
||||
if (groupRecord.isRSSFeed() || groupRecord.isPublicChat()) { continue; }
|
||||
if (groupRecord.isRSSFeed() || groupRecord.isOpenGroup()) { continue; }
|
||||
if (groupRecord.getMembers().contains(recipient.getAddress()) && groupRecord.isActive()) {
|
||||
SignalServiceGroup group = new SignalServiceGroup(groupRecord.getId(), SignalServiceGroup.GroupType.SIGNAL);
|
||||
IncomingTextMessage incoming = new IncomingTextMessage(recipient.getAddress(), 1, time, null, Optional.of(group), 0, false);
|
||||
|
Loading…
Reference in New Issue
Block a user