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