diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/org/thoughtcrime/securesms/ApplicationContext.java index d4ec68b2d1..f4c5bb4a92 100644 --- a/src/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/org/thoughtcrime/securesms/ApplicationContext.java @@ -62,8 +62,8 @@ import org.thoughtcrime.securesms.logging.CustomSignalProtocolLogger; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logging.PersistentLogger; import org.thoughtcrime.securesms.logging.UncaughtExceptionLogger; -import org.thoughtcrime.securesms.loki.LokiPublicChatManager; -import org.thoughtcrime.securesms.loki.LokiPushNotificationManager; +import org.thoughtcrime.securesms.loki.api.LokiPublicChatManager; +import org.thoughtcrime.securesms.loki.api.LokiPushNotificationManager; import org.thoughtcrime.securesms.loki.MultiDeviceUtilities; import org.thoughtcrime.securesms.loki.activities.HomeActivity; import org.thoughtcrime.securesms.loki.api.BackgroundOpenGroupPollWorker; diff --git a/src/org/thoughtcrime/securesms/ConversationListItem.java b/src/org/thoughtcrime/securesms/ConversationListItem.java index 9d34eb53c7..aabad17223 100644 --- a/src/org/thoughtcrime/securesms/ConversationListItem.java +++ b/src/org/thoughtcrime/securesms/ConversationListItem.java @@ -37,7 +37,7 @@ import org.thoughtcrime.securesms.components.FromTextView; import org.thoughtcrime.securesms.components.ThumbnailView; import org.thoughtcrime.securesms.components.TypingIndicatorView; import org.thoughtcrime.securesms.database.model.ThreadRecord; -import org.thoughtcrime.securesms.loki.api.MentionManagerUtilities; +import org.thoughtcrime.securesms.loki.utilities.MentionManagerUtilities; import org.thoughtcrime.securesms.loki.utilities.MentionUtilities; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.recipients.Recipient; diff --git a/src/org/thoughtcrime/securesms/DeviceListFragment.java b/src/org/thoughtcrime/securesms/DeviceListFragment.java index bbe73c925d..b3895b93ae 100644 --- a/src/org/thoughtcrime/securesms/DeviceListFragment.java +++ b/src/org/thoughtcrime/securesms/DeviceListFragment.java @@ -39,7 +39,7 @@ import kotlin.Pair; import kotlin.Unit; import network.loki.messenger.R; -import static org.thoughtcrime.securesms.loki.GeneralUtilitiesKt.toPx; +import static org.thoughtcrime.securesms.loki.utilities.GeneralUtilitiesKt.toPx; public class DeviceListFragment extends ListFragment implements LoaderManager.LoaderCallbacks>, diff --git a/src/org/thoughtcrime/securesms/MessageDetailsActivity.java b/src/org/thoughtcrime/securesms/MessageDetailsActivity.java index 3de789d491..147299bbe0 100644 --- a/src/org/thoughtcrime/securesms/MessageDetailsActivity.java +++ b/src/org/thoughtcrime/securesms/MessageDetailsActivity.java @@ -47,7 +47,7 @@ import org.thoughtcrime.securesms.database.SmsDatabase; import org.thoughtcrime.securesms.database.loaders.MessageDetailsLoader; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.mms.GlideRequests; import org.thoughtcrime.securesms.notifications.MessageNotifier; diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index ce98736cc9..058aa2e074 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -155,12 +155,12 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; -import org.thoughtcrime.securesms.loki.LokiThreadDatabase; -import org.thoughtcrime.securesms.loki.LokiThreadDatabaseDelegate; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.database.LokiThreadDatabase; +import org.thoughtcrime.securesms.loki.database.LokiThreadDatabaseDelegate; import org.thoughtcrime.securesms.loki.MultiDeviceUtilities; import org.thoughtcrime.securesms.loki.activities.HomeActivity; -import org.thoughtcrime.securesms.loki.api.MentionManagerUtilities; +import org.thoughtcrime.securesms.loki.utilities.MentionManagerUtilities; import org.thoughtcrime.securesms.loki.database.LokiUserDatabase; import org.thoughtcrime.securesms.loki.views.FriendRequestViewDelegate; import org.thoughtcrime.securesms.loki.views.MentionCandidateSelectionView; diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java index 74fcc3adea..5d46c0fb6c 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -86,7 +86,7 @@ import org.thoughtcrime.securesms.jobs.SmsSendJob; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; import org.thoughtcrime.securesms.loki.utilities.MentionUtilities; import org.thoughtcrime.securesms.loki.views.FriendRequestView; import org.thoughtcrime.securesms.loki.views.FriendRequestViewDelegate; diff --git a/src/org/thoughtcrime/securesms/database/DatabaseFactory.java b/src/org/thoughtcrime/securesms/database/DatabaseFactory.java index 9eddd3c828..4465a5c1c0 100644 --- a/src/org/thoughtcrime/securesms/database/DatabaseFactory.java +++ b/src/org/thoughtcrime/securesms/database/DatabaseFactory.java @@ -31,10 +31,11 @@ import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.database.helpers.ClassicOpenHelper; import org.thoughtcrime.securesms.database.helpers.SQLCipherMigrationHelper; import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper; -import org.thoughtcrime.securesms.loki.*; import org.thoughtcrime.securesms.loki.database.LokiAPIDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; import org.thoughtcrime.securesms.loki.database.LokiPreKeyBundleDatabase; import org.thoughtcrime.securesms.loki.database.LokiPreKeyRecordDatabase; +import org.thoughtcrime.securesms.loki.database.LokiThreadDatabase; import org.thoughtcrime.securesms.loki.database.LokiUserDatabase; import org.thoughtcrime.securesms.util.TextSecurePreferences; diff --git a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index 37a0d5da7e..9ccf46495b 100644 --- a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -35,8 +35,8 @@ import org.thoughtcrime.securesms.database.StickerDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.jobs.RefreshPreKeysJob; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; -import org.thoughtcrime.securesms.loki.LokiThreadDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.database.LokiThreadDatabase; import org.thoughtcrime.securesms.loki.database.LokiAPIDatabase; import org.thoughtcrime.securesms.loki.database.LokiPreKeyBundleDatabase; import org.thoughtcrime.securesms.loki.database.LokiPreKeyRecordDatabase; diff --git a/src/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java b/src/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java index 1e7a3dfb4a..2460a57fb6 100644 --- a/src/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java +++ b/src/org/thoughtcrime/securesms/dependencies/SignalCommunicationModule.java @@ -45,7 +45,7 @@ import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob; import org.thoughtcrime.securesms.jobs.TypingSendJob; import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.LokiSessionResetImplementation; +import org.thoughtcrime.securesms.loki.protocol.LokiSessionResetImplementation; import org.thoughtcrime.securesms.loki.MultiDeviceOpenGroupUpdateJob; import org.thoughtcrime.securesms.loki.PushMessageSyncSendJob; import org.thoughtcrime.securesms.preferences.AppProtectionPreferenceFragment; diff --git a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index a992d289b5..5a77d2c0a6 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -69,12 +69,12 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.loki.FriendRequestHandler; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; -import org.thoughtcrime.securesms.loki.LokiSessionResetImplementation; -import org.thoughtcrime.securesms.loki.LokiThreadDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.protocol.LokiSessionResetImplementation; +import org.thoughtcrime.securesms.loki.database.LokiThreadDatabase; import org.thoughtcrime.securesms.loki.MultiDeviceUtilities; import org.thoughtcrime.securesms.loki.activities.HomeActivity; -import org.thoughtcrime.securesms.loki.api.MentionManagerUtilities; +import org.thoughtcrime.securesms.loki.utilities.MentionManagerUtilities; import org.thoughtcrime.securesms.loki.database.LokiPreKeyBundleDatabase; import org.thoughtcrime.securesms.loki.utilities.Broadcaster; import org.thoughtcrime.securesms.loki.utilities.OpenGroupUtilities; diff --git a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 9fa501a341..99316ecd81 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -22,7 +22,7 @@ import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; import org.thoughtcrime.securesms.recipients.Recipient; diff --git a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index 3419a2cb79..9734500e3d 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.database.model.SmsMessageRecord; import org.thoughtcrime.securesms.dependencies.InjectableType; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; -import org.thoughtcrime.securesms.loki.LokiMessageDatabase; +import org.thoughtcrime.securesms.loki.database.LokiMessageDatabase; import org.thoughtcrime.securesms.notifications.MessageNotifier; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.service.ExpiringMessageManager; diff --git a/src/org/thoughtcrime/securesms/loki/FriendRequestHandler.kt b/src/org/thoughtcrime/securesms/loki/FriendRequestHandler.kt deleted file mode 100644 index 21877c890e..0000000000 --- a/src/org/thoughtcrime/securesms/loki/FriendRequestHandler.kt +++ /dev/null @@ -1,108 +0,0 @@ -package org.thoughtcrime.securesms.loki - -import android.content.Context -import nl.komponents.kovenant.ui.successUi -import org.thoughtcrime.securesms.database.DatabaseFactory -import org.thoughtcrime.securesms.util.TextSecurePreferences -import org.whispersystems.signalservice.loki.protocol.todo.LokiMessageFriendRequestStatus -import org.whispersystems.signalservice.loki.protocol.todo.LokiThreadFriendRequestStatus - -object FriendRequestHandler { - enum class ActionType { Sending, Sent, Failed } - - @JvmStatic - fun updateFriendRequestState(context: Context, type: ActionType, messageId: Long, threadId: Long) { - if (threadId < 0) return - val recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId) ?: return - if (!recipient.address.isPhone) { return } - - val currentFriendStatus = DatabaseFactory.getLokiThreadDatabase(context).getFriendRequestStatus(threadId) - // Update thread status if we haven't sent a friend request before - if (currentFriendStatus != LokiThreadFriendRequestStatus.REQUEST_RECEIVED && - currentFriendStatus != LokiThreadFriendRequestStatus.REQUEST_SENT && - currentFriendStatus != LokiThreadFriendRequestStatus.FRIENDS - ) { - val threadFriendStatus = when (type) { - ActionType.Sending -> LokiThreadFriendRequestStatus.REQUEST_SENDING - ActionType.Failed -> LokiThreadFriendRequestStatus.NONE - ActionType.Sent -> LokiThreadFriendRequestStatus.REQUEST_SENT - } - val database = DatabaseFactory.getLokiThreadDatabase(context) - database.setFriendRequestStatus(threadId, threadFriendStatus) - // If we sent a friend request then we need to hide the session restore prompt - if (type == ActionType.Sent) { - database.removeAllSessionRestoreDevices(threadId) - } - } - - // Update message status - if (messageId >= 0) { - val messageDatabase = DatabaseFactory.getLokiMessageDatabase(context) - val friendRequestStatus = messageDatabase.getFriendRequestStatus(messageId) - if (type == ActionType.Sending) { - // We only want to update message status if we aren't friends with another of their devices - // This avoids spam in the ui where it would keep telling the user that they sent a friend request on every single message - isFriendsWithAnyLinkedDevice(context, recipient).successUi { isFriends -> - if (!isFriends && friendRequestStatus == LokiMessageFriendRequestStatus.NONE) { - messageDatabase.setFriendRequestStatus(messageId, LokiMessageFriendRequestStatus.REQUEST_SENDING) - } - } - } else if (friendRequestStatus != LokiMessageFriendRequestStatus.NONE) { - // Update the friend request status of the message if we have it - val messageFriendRequestStatus = when (type) { - ActionType.Failed -> LokiMessageFriendRequestStatus.REQUEST_FAILED - ActionType.Sent -> LokiMessageFriendRequestStatus.REQUEST_PENDING - else -> throw IllegalStateException() - } - messageDatabase.setFriendRequestStatus(messageId, messageFriendRequestStatus) - } - } - } - - @JvmStatic - fun updateLastFriendRequestMessage(context: Context, threadId: Long, status: LokiMessageFriendRequestStatus) { - if (threadId < 0) { return } - val recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId) ?: return - if (!recipient.address.isPhone || recipient.address.serialize() == TextSecurePreferences.getLocalNumber(context)) { return } - - val messages = DatabaseFactory.getSmsDatabase(context).getAllMessageIDs(threadId) - val lokiMessageDatabase = DatabaseFactory.getLokiMessageDatabase(context) - val lastMessage = messages.find { - val friendRequestStatus = lokiMessageDatabase.getFriendRequestStatus(it) - friendRequestStatus == LokiMessageFriendRequestStatus.REQUEST_PENDING - } ?: return - - DatabaseFactory.getLokiMessageDatabase(context).setFriendRequestStatus(lastMessage, status) - } - - @JvmStatic - fun receivedIncomingFriendRequestMessage(context: Context, threadId: Long) { - val smsMessageDatabase = DatabaseFactory.getSmsDatabase(context) - - // We only want to update the last message status if we're not friends with any of their linked devices - // This ensures that we don't spam the UI with accept/decline messages - val recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId) ?: return - if (!recipient.address.isPhone || recipient.address.serialize() == TextSecurePreferences.getLocalNumber(context)) { return } - - isFriendsWithAnyLinkedDevice(context, recipient).successUi { isFriends -> - if (isFriends) { return@successUi } - - // Since messages are forwarded to the primary device thread, we need to update it there - val messageCount = smsMessageDatabase.getMessageCountForThread(threadId) - val messageID = smsMessageDatabase.getIDForMessageAtIndex(threadId, messageCount - 1) // The message that was just received - if (messageID < 0) { return@successUi } - - val messageDatabase = DatabaseFactory.getLokiMessageDatabase(context) - - // We need to go through and set all messages which are REQUEST_PENDING to NONE - smsMessageDatabase.getAllMessageIDs(threadId) - .filter { messageDatabase.getFriendRequestStatus(it) == LokiMessageFriendRequestStatus.REQUEST_PENDING } - .forEach { - messageDatabase.setFriendRequestStatus(it, LokiMessageFriendRequestStatus.NONE) - } - - // Set the last message to pending - messageDatabase.setFriendRequestStatus(messageID, LokiMessageFriendRequestStatus.REQUEST_PENDING) - } - } -} \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/loki/GeneralUtilities.kt b/src/org/thoughtcrime/securesms/loki/GeneralUtilities.kt deleted file mode 100644 index 79881f9915..0000000000 --- a/src/org/thoughtcrime/securesms/loki/GeneralUtilities.kt +++ /dev/null @@ -1,40 +0,0 @@ -package org.thoughtcrime.securesms.loki - -import android.content.Context -import android.content.res.Resources -import android.os.Build -import android.support.annotation.ColorRes -import org.thoughtcrime.securesms.database.Address -import org.thoughtcrime.securesms.database.DatabaseFactory -import org.thoughtcrime.securesms.recipients.Recipient -import org.whispersystems.signalservice.loki.protocol.todo.LokiThreadFriendRequestStatus -import kotlin.math.roundToInt - -fun Resources.getColorWithID(@ColorRes id: Int, theme: Resources.Theme?): Int { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - getColor(id, theme) - } else { - @Suppress("DEPRECATION") getColor(id) - } -} - -fun toPx(dp: Int, resources: Resources): Int { - val scale = resources.displayMetrics.density - return (dp * scale).roundToInt() -} - -fun isPublicChat(context: Context, recipient: String): Boolean { - return DatabaseFactory.getLokiThreadDatabase(context).getAllPublicChats().values.map { it.server }.contains(recipient) -} - -fun getFriendPublicKeys(context: Context, devicePublicKeys: Set): Set { - val lokiThreadDatabase = DatabaseFactory.getLokiThreadDatabase(context) - return devicePublicKeys.mapNotNull { device -> - val address = Address.fromSerialized(device) - val recipient = Recipient.from(context, address, false) - val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdIfExistsFor(recipient) - if (threadID < 0) { return@mapNotNull null } - val friendRequestStatus = lokiThreadDatabase.getFriendRequestStatus(threadID) - if (friendRequestStatus == LokiThreadFriendRequestStatus.FRIENDS) device else null - }.toSet() -} \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/loki/MultiDeviceUtilities.kt b/src/org/thoughtcrime/securesms/loki/MultiDeviceUtilities.kt deleted file mode 100644 index 85a0f01fc0..0000000000 --- a/src/org/thoughtcrime/securesms/loki/MultiDeviceUtilities.kt +++ /dev/null @@ -1,192 +0,0 @@ -@file:JvmName("MultiDeviceUtilities") -package org.thoughtcrime.securesms.loki - -import android.content.Context -import nl.komponents.kovenant.Promise -import nl.komponents.kovenant.functional.bind -import nl.komponents.kovenant.functional.map -import nl.komponents.kovenant.toFailVoid -import nl.komponents.kovenant.ui.successUi -import org.thoughtcrime.securesms.ApplicationContext -import org.thoughtcrime.securesms.crypto.IdentityKeyUtil -import org.thoughtcrime.securesms.crypto.ProfileKeyUtil -import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil -import org.thoughtcrime.securesms.database.Address -import org.thoughtcrime.securesms.database.DatabaseFactory -import org.thoughtcrime.securesms.logging.Log -import org.thoughtcrime.securesms.recipients.Recipient -import org.thoughtcrime.securesms.util.TextSecurePreferences -import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage -import org.whispersystems.signalservice.api.push.SignalServiceAddress -import org.whispersystems.signalservice.loki.protocol.multidevice.DeviceLink -import org.whispersystems.signalservice.loki.protocol.multidevice.LokiDeviceLinkUtilities -import org.whispersystems.signalservice.loki.api.fileserver.LokiFileServerAPI -import org.whispersystems.signalservice.loki.protocol.todo.LokiThreadFriendRequestStatus -import org.whispersystems.signalservice.loki.utilities.recover -import org.whispersystems.signalservice.loki.utilities.retryIfNeeded - -fun checkIsRevokedSlaveDevice(context: Context) { - val masterHexEncodedPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(context) ?: return - val hexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context) - LokiFileServerAPI.shared.getDeviceLinks(masterHexEncodedPublicKey, true).bind { deviceLinks -> - val deviceLink = deviceLinks.find { it.masterHexEncodedPublicKey == masterHexEncodedPublicKey && it.slaveHexEncodedPublicKey == hexEncodedPublicKey } - if (deviceLink != null) throw Error("Device hasn't been revoked.") - DatabaseFactory.getLokiAPIDatabase(context).clearDeviceLinks(hexEncodedPublicKey) - LokiFileServerAPI.shared.setDeviceLinks(setOf()) - }.successUi { - TextSecurePreferences.setNeedsIsRevokedSlaveDeviceCheck(context, false) - ApplicationContext.getInstance(context).clearData() - }.fail { error -> - TextSecurePreferences.setNeedsIsRevokedSlaveDeviceCheck(context, true) - Log.d("Loki", "Revocation check failed due to error: ${error.message ?: error}.") - } -} - -fun updateDeviceLinksOnServer(context: Context) { - val hexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context) - val deviceLinks = DatabaseFactory.getLokiAPIDatabase(context).getDeviceLinks(hexEncodedPublicKey) - LokiFileServerAPI.shared.setDeviceLinks(deviceLinks) -} - -fun getAllDeviceFriendRequestStatuses(context: Context, hexEncodedPublicKey: String): Promise, Exception> { - val lokiThreadDatabase = DatabaseFactory.getLokiThreadDatabase(context) - return LokiDeviceLinkUtilities.getAllLinkedDeviceHexEncodedPublicKeys(hexEncodedPublicKey).map { keys -> - val map = mutableMapOf() - for (devicePublicKey in keys) { - val device = Recipient.from(context, Address.fromSerialized(devicePublicKey), false) - val threadID = DatabaseFactory.getThreadDatabase(context).getThreadIdIfExistsFor(device) - val friendRequestStatus = if (threadID < 0) LokiThreadFriendRequestStatus.NONE else lokiThreadDatabase.getFriendRequestStatus(threadID) - map[devicePublicKey] = friendRequestStatus - } - map - }.recover { mutableMapOf() } -} - -fun getAllDevicePublicKeysWithFriendStatus(context: Context, hexEncodedPublicKey: String): Promise, Unit> { - val userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context) - return LokiDeviceLinkUtilities.getAllLinkedDeviceHexEncodedPublicKeys(hexEncodedPublicKey).map { keys -> - val devices = keys.toMutableSet() - if (hexEncodedPublicKey != userHexEncodedPublicKey) { - devices.remove(userHexEncodedPublicKey) - } - val friends = getFriendPublicKeys(context, devices) - val friendMap = mutableMapOf() - for (device in devices) { - friendMap[device] = friends.contains(device) - } - friendMap - }.toFailVoid() -} - -fun getFriendCount(context: Context, devices: Set): Int { - return getFriendPublicKeys(context, devices).count() -} - -fun shouldAutomaticallyBecomeFriendsWithDevice(publicKey: String, context: Context): Promise { - // Don't become friends if we're a group - if (!Address.fromSerialized(publicKey).isPhone) { - return Promise.of(false) - } - - // If this public key is our primary device then we should become friends - if (publicKey == TextSecurePreferences.getMasterHexEncodedPublicKey(context)) { - return Promise.of(true) - } - - return LokiDeviceLinkUtilities.getMasterHexEncodedPublicKey(publicKey).bind { primaryDevicePublicKey -> - // If the public key doesn't have any other devices then go through regular friend request logic - if (primaryDevicePublicKey == null) { - return@bind Promise.of(false) - } - - // If the primary device public key matches our primary device then we should become friends since this is our other device - if (primaryDevicePublicKey == TextSecurePreferences.getMasterHexEncodedPublicKey(context)) { - return@bind Promise.of(true) - } - - // If we are friends with any of the other devices then we should become friends - isFriendsWithAnyLinkedDevice(context, Address.fromSerialized(primaryDevicePublicKey)) - } -} - -fun sendDeviceLinkMessage(context: Context, hexEncodedPublicKey: String, deviceLink: DeviceLink): Promise { - val messageSender = ApplicationContext.getInstance(context).communicationModule.provideSignalMessageSender() - val address = SignalServiceAddress(hexEncodedPublicKey) - val message = SignalServiceDataMessage.newBuilder().withDeviceLink(deviceLink) - // A REQUEST should always act as a friend request. An AUTHORIZATION should always be a normal message. - if (deviceLink.type == DeviceLink.Type.REQUEST) { - val preKeyBundle = DatabaseFactory.getLokiPreKeyBundleDatabase(context).generatePreKeyBundle(address.number) - message.asFriendRequest(true).withPreKeyBundle(preKeyBundle) - } else { - // Send over our profile key so that our linked device can get our profile picture - message.withProfileKey(ProfileKeyUtil.getProfileKey(context)) - } - return try { - Log.d("Loki", "Sending device link message to: $hexEncodedPublicKey.") - val udAccess = UnidentifiedAccessUtil.getAccessFor(context, Recipient.from(context, Address.fromSerialized(hexEncodedPublicKey), false)) - val result = messageSender.sendMessage(0, address, udAccess, message.build()) - if (result.success == null) { - val exception = when { - result.isNetworkFailure -> "Failed to send device link message due to a network error." - else -> "Failed to send device link message." - } - throw Exception(exception) - } - Promise.ofSuccess(Unit) - } catch (e: Exception) { - Log.d("Loki", "Failed to send device link message to: $hexEncodedPublicKey due to error: $e.") - Promise.ofFail(e) - } -} - -fun signAndSendDeviceLinkMessage(context: Context, deviceLink: DeviceLink): Promise { - val userPrivateKey = IdentityKeyUtil.getIdentityKeyPair(context).privateKey.serialize() - val signedDeviceLink = deviceLink.sign(DeviceLink.Type.AUTHORIZATION, userPrivateKey) - if (signedDeviceLink == null || signedDeviceLink.type != DeviceLink.Type.AUTHORIZATION) { - return Promise.ofFail(Exception("Failed to sign device link.")) - } - return retryIfNeeded(8) { - sendDeviceLinkMessage(context, deviceLink.slaveHexEncodedPublicKey, signedDeviceLink) - } -} - -fun isOneOfOurDevices(context: Context, address: Address): Promise { - if (address.isGroup || address.isEmail || address.isMmsGroup) { - return Promise.of(false) - } - - val ourPublicKey = TextSecurePreferences.getLocalNumber(context) - return LokiDeviceLinkUtilities.getAllLinkedDeviceHexEncodedPublicKeys(ourPublicKey).map { devices -> - devices.contains(address.serialize()) - } -} - -fun isFriendsWithAnyLinkedDevice(context: Context, recipient: Recipient): Promise { - return isFriendsWithAnyLinkedDevice(context, recipient.address) -} - -fun isFriendsWithAnyLinkedDevice(context: Context, address: Address): Promise { - if (!address.isPhone) { return Promise.of(true) } - - return getAllDeviceFriendRequestStatuses(context, address.serialize()).map { map -> - for (status in map.values) { - if (status == LokiThreadFriendRequestStatus.FRIENDS) { - return@map true - } - } - false - } -} - -fun hasPendingFriendRequestWithAnyLinkedDevice(context: Context, recipient: Recipient): Promise { - if (recipient.isGroupRecipient) { return Promise.of(false) } - - return getAllDeviceFriendRequestStatuses(context, recipient.address.serialize()).map { map -> - for (status in map.values) { - if (status == LokiThreadFriendRequestStatus.REQUEST_SENDING || status == LokiThreadFriendRequestStatus.REQUEST_SENT || status == LokiThreadFriendRequestStatus.REQUEST_RECEIVED) { - return@map true - } - } - false - } -} diff --git a/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt index 2dbc2854e8..49d26d0122 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt @@ -32,7 +32,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.database.ThreadDatabase import org.thoughtcrime.securesms.database.model.ThreadRecord import org.thoughtcrime.securesms.loki.dialogs.PNModeBottomSheet -import org.thoughtcrime.securesms.loki.getColorWithID +import org.thoughtcrime.securesms.loki.utilities.getColorWithID import org.thoughtcrime.securesms.loki.protocol.ClosedGroupsProtocol import org.thoughtcrime.securesms.loki.utilities.push import org.thoughtcrime.securesms.loki.utilities.show diff --git a/src/org/thoughtcrime/securesms/loki/activities/QRCodeActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/QRCodeActivity.kt index a56cfc1cae..e84b3add0c 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/QRCodeActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/QRCodeActivity.kt @@ -23,7 +23,7 @@ import org.thoughtcrime.securesms.database.ThreadDatabase import org.thoughtcrime.securesms.loki.fragments.ScanQRCodeWrapperFragment import org.thoughtcrime.securesms.loki.fragments.ScanQRCodeWrapperFragmentDelegate import org.thoughtcrime.securesms.loki.utilities.QRCodeUtilities -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.toPx import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.FileProviderUtil import org.thoughtcrime.securesms.util.TextSecurePreferences diff --git a/src/org/thoughtcrime/securesms/loki/activities/SeedActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/SeedActivity.kt index 4ba2674fc4..e30edcf618 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/SeedActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/SeedActivity.kt @@ -13,7 +13,7 @@ import kotlinx.android.synthetic.main.activity_seed.* import network.loki.messenger.R import org.thoughtcrime.securesms.BaseActionBarActivity import org.thoughtcrime.securesms.crypto.IdentityKeyUtil -import org.thoughtcrime.securesms.loki.getColorWithID +import org.thoughtcrime.securesms.loki.utilities.getColorWithID import org.thoughtcrime.securesms.util.TextSecurePreferences import org.whispersystems.signalservice.loki.crypto.MnemonicCodec import org.whispersystems.signalservice.loki.utilities.hexEncodedPrivateKey diff --git a/src/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt index baccf52ebb..f8426fb064 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt @@ -32,7 +32,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.loki.dialogs.ClearAllDataDialog import org.thoughtcrime.securesms.loki.dialogs.SeedDialog import org.thoughtcrime.securesms.loki.utilities.push -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.toPx import org.thoughtcrime.securesms.mms.GlideApp import org.thoughtcrime.securesms.mms.GlideRequests import org.thoughtcrime.securesms.profiles.AvatarHelper diff --git a/src/org/thoughtcrime/securesms/loki/LokiPublicChatManager.kt b/src/org/thoughtcrime/securesms/loki/api/LokiPublicChatManager.kt similarity index 97% rename from src/org/thoughtcrime/securesms/loki/LokiPublicChatManager.kt rename to src/org/thoughtcrime/securesms/loki/api/LokiPublicChatManager.kt index 365c3b02fb..679fdfb0c3 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiPublicChatManager.kt +++ b/src/org/thoughtcrime/securesms/loki/api/LokiPublicChatManager.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.api import android.content.Context import android.database.ContentObserver @@ -10,7 +10,6 @@ import org.thoughtcrime.securesms.ApplicationContext import org.thoughtcrime.securesms.database.DatabaseContentProviders import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.groups.GroupManager -import org.thoughtcrime.securesms.loki.api.LokiPublicChatPoller import org.thoughtcrime.securesms.util.TextSecurePreferences import org.thoughtcrime.securesms.util.Util import org.whispersystems.signalservice.loki.api.opengroups.LokiPublicChat diff --git a/src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt b/src/org/thoughtcrime/securesms/loki/api/LokiPushNotificationManager.kt similarity index 96% rename from src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt rename to src/org/thoughtcrime/securesms/loki/api/LokiPushNotificationManager.kt index 8b60462d81..1180d0e68b 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiPushNotificationManager.kt +++ b/src/org/thoughtcrime/securesms/loki/api/LokiPushNotificationManager.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.api import android.content.Context import okhttp3.* @@ -20,7 +20,7 @@ object LokiPushNotificationManager { @JvmStatic fun unregister(token: String, context: Context?) { val parameters = mapOf( "token" to token ) - val url = "${server}/register" + val url = "$server/register" val body = RequestBody.create(MediaType.get("application/json"), JsonUtil.toJson(parameters)) val request = Request.Builder().url(url).post(body).build() connection.newCall(request).enqueue(object : Callback { @@ -52,7 +52,7 @@ object LokiPushNotificationManager { val lastUploadDate = TextSecurePreferences.getLastFCMUploadTime(context) if (!force && token == oldToken && System.currentTimeMillis() - lastUploadDate < tokenExpirationInterval) { return } val parameters = mapOf( "token" to token, "pubKey" to hexEncodedPublicKey ) - val url = "${server}/register" + val url = "$server/register" val body = RequestBody.create(MediaType.get("application/json"), JsonUtil.toJson(parameters)) val request = Request.Builder().url(url).post(body).build() connection.newCall(request).enqueue(object : Callback { diff --git a/src/org/thoughtcrime/securesms/loki/LokiMessageDatabase.kt b/src/org/thoughtcrime/securesms/loki/database/LokiMessageDatabase.kt similarity index 97% rename from src/org/thoughtcrime/securesms/loki/LokiMessageDatabase.kt rename to src/org/thoughtcrime/securesms/loki/database/LokiMessageDatabase.kt index a96703284f..81adc0be03 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiMessageDatabase.kt +++ b/src/org/thoughtcrime/securesms/loki/database/LokiMessageDatabase.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.database import android.content.ContentValues import android.content.Context @@ -37,7 +37,7 @@ class LokiMessageDatabase(context: Context, helper: SQLCipherOpenHelper) : Datab fun getServerID(messageID: Long): Long? { val database = databaseHelper.readableDatabase return database.get(messageFriendRequestTableName, "${Companion.messageID} = ?", arrayOf( messageID.toString() )) { cursor -> - cursor.getInt(Companion.serverID) + cursor.getInt(serverID) }?.toLong() } @@ -59,7 +59,7 @@ class LokiMessageDatabase(context: Context, helper: SQLCipherOpenHelper) : Datab fun getOriginalThreadID(messageID: Long): Long { val database = databaseHelper.readableDatabase return database.get(messageThreadMappingTableName, "${Companion.messageID} = ?", arrayOf( messageID.toString() )) { cursor -> - cursor.getInt(Companion.threadID) + cursor.getInt(threadID) }?.toLong() ?: -1L } diff --git a/src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt b/src/org/thoughtcrime/securesms/loki/database/LokiThreadDatabase.kt similarity index 98% rename from src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt rename to src/org/thoughtcrime/securesms/loki/database/LokiThreadDatabase.kt index 3004033288..94646bc446 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiThreadDatabase.kt +++ b/src/org/thoughtcrime/securesms/loki/database/LokiThreadDatabase.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.database import android.content.ContentValues import android.content.Context @@ -45,11 +45,8 @@ class LokiThreadDatabase(context: Context, helper: SQLCipherOpenHelper) : Databa fun getFriendRequestStatus(threadID: Long): LokiThreadFriendRequestStatus { if (threadID < 0) { return LokiThreadFriendRequestStatus.NONE } - - // Loki - Friend request logic doesn't apply to group chats, always treat them as friends val recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadID) if (recipient != null && recipient.isGroupRecipient) { return LokiThreadFriendRequestStatus.FRIENDS; } - val database = databaseHelper.readableDatabase val result = database.get(friendRequestTableName, "${Companion.threadID} = ?", arrayOf( threadID.toString() )) { cursor -> cursor.getInt(friendRequestStatus) diff --git a/src/org/thoughtcrime/securesms/loki/LokiThreadDatabaseDelegate.kt b/src/org/thoughtcrime/securesms/loki/database/LokiThreadDatabaseDelegate.kt similarity index 76% rename from src/org/thoughtcrime/securesms/loki/LokiThreadDatabaseDelegate.kt rename to src/org/thoughtcrime/securesms/loki/database/LokiThreadDatabaseDelegate.kt index ac50afe238..ed64bc5929 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiThreadDatabaseDelegate.kt +++ b/src/org/thoughtcrime/securesms/loki/database/LokiThreadDatabaseDelegate.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.database interface LokiThreadDatabaseDelegate { diff --git a/src/org/thoughtcrime/securesms/loki/dialogs/LinkDeviceMasterModeDialog.kt b/src/org/thoughtcrime/securesms/loki/dialogs/LinkDeviceMasterModeDialog.kt index a0912f502d..7330686c71 100644 --- a/src/org/thoughtcrime/securesms/loki/dialogs/LinkDeviceMasterModeDialog.kt +++ b/src/org/thoughtcrime/securesms/loki/dialogs/LinkDeviceMasterModeDialog.kt @@ -12,7 +12,7 @@ import android.widget.LinearLayout import kotlinx.android.synthetic.main.dialog_link_device_master_mode.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.database.DatabaseFactory -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.toPx import org.thoughtcrime.securesms.loki.utilities.MnemonicUtilities import org.thoughtcrime.securesms.loki.utilities.QRCodeUtilities import org.thoughtcrime.securesms.util.TextSecurePreferences diff --git a/src/org/thoughtcrime/securesms/loki/LokiSessionResetImplementation.kt b/src/org/thoughtcrime/securesms/loki/protocol/LokiSessionResetImplementation.kt similarity index 97% rename from src/org/thoughtcrime/securesms/loki/LokiSessionResetImplementation.kt rename to src/org/thoughtcrime/securesms/loki/protocol/LokiSessionResetImplementation.kt index f2f92edfd7..4920fc17c2 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiSessionResetImplementation.kt +++ b/src/org/thoughtcrime/securesms/loki/protocol/LokiSessionResetImplementation.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.protocol import android.content.Context import org.thoughtcrime.securesms.database.DatabaseFactory diff --git a/src/org/thoughtcrime/securesms/loki/IdenticonDrawable.kt b/src/org/thoughtcrime/securesms/loki/todo/IdenticonDrawable.kt similarity index 96% rename from src/org/thoughtcrime/securesms/loki/IdenticonDrawable.kt rename to src/org/thoughtcrime/securesms/loki/todo/IdenticonDrawable.kt index 86d69ce990..bbc6ee088e 100644 --- a/src/org/thoughtcrime/securesms/loki/IdenticonDrawable.kt +++ b/src/org/thoughtcrime/securesms/loki/todo/IdenticonDrawable.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.todo import android.graphics.* import android.graphics.drawable.Drawable diff --git a/src/org/thoughtcrime/securesms/loki/JazzIdenticonContactPhoto.kt b/src/org/thoughtcrime/securesms/loki/todo/JazzIdenticonContactPhoto.kt similarity index 94% rename from src/org/thoughtcrime/securesms/loki/JazzIdenticonContactPhoto.kt rename to src/org/thoughtcrime/securesms/loki/todo/JazzIdenticonContactPhoto.kt index 979f7e3e88..97b97502df 100644 --- a/src/org/thoughtcrime/securesms/loki/JazzIdenticonContactPhoto.kt +++ b/src/org/thoughtcrime/securesms/loki/todo/JazzIdenticonContactPhoto.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.todo import android.content.Context import android.graphics.drawable.Drawable diff --git a/src/org/thoughtcrime/securesms/loki/JazzIdenticonDrawable.kt b/src/org/thoughtcrime/securesms/loki/todo/JazzIdenticonDrawable.kt similarity index 98% rename from src/org/thoughtcrime/securesms/loki/JazzIdenticonDrawable.kt rename to src/org/thoughtcrime/securesms/loki/todo/JazzIdenticonDrawable.kt index ff678db54c..d3cb71ccb3 100644 --- a/src/org/thoughtcrime/securesms/loki/JazzIdenticonDrawable.kt +++ b/src/org/thoughtcrime/securesms/loki/todo/JazzIdenticonDrawable.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.todo import android.graphics.Canvas import android.graphics.Color diff --git a/src/org/thoughtcrime/securesms/loki/RNG.kt b/src/org/thoughtcrime/securesms/loki/todo/RNG.kt similarity index 91% rename from src/org/thoughtcrime/securesms/loki/RNG.kt rename to src/org/thoughtcrime/securesms/loki/todo/RNG.kt index e445e07a19..e9e3dee898 100644 --- a/src/org/thoughtcrime/securesms/loki/RNG.kt +++ b/src/org/thoughtcrime/securesms/loki/todo/RNG.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki +package org.thoughtcrime.securesms.loki.todo class RNG(hash: Long) { private var seed: Long diff --git a/src/org/thoughtcrime/securesms/loki/utilities/GeneralUtilities.kt b/src/org/thoughtcrime/securesms/loki/utilities/GeneralUtilities.kt new file mode 100644 index 0000000000..e788255822 --- /dev/null +++ b/src/org/thoughtcrime/securesms/loki/utilities/GeneralUtilities.kt @@ -0,0 +1,25 @@ +package org.thoughtcrime.securesms.loki.utilities + +import android.content.Context +import android.content.res.Resources +import android.os.Build +import android.support.annotation.ColorRes +import org.thoughtcrime.securesms.database.DatabaseFactory +import kotlin.math.roundToInt + +fun Resources.getColorWithID(@ColorRes id: Int, theme: Resources.Theme?): Int { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + getColor(id, theme) + } else { + @Suppress("DEPRECATION") getColor(id) + } +} + +fun toPx(dp: Int, resources: Resources): Int { + val scale = resources.displayMetrics.density + return (dp * scale).roundToInt() +} + +fun isPublicChat(context: Context, recipient: String): Boolean { + return DatabaseFactory.getLokiThreadDatabase(context).getAllPublicChats().values.map { it.server }.contains(recipient) +} diff --git a/src/org/thoughtcrime/securesms/loki/api/MentionManagerUtilities.kt b/src/org/thoughtcrime/securesms/loki/utilities/MentionManagerUtilities.kt similarity index 96% rename from src/org/thoughtcrime/securesms/loki/api/MentionManagerUtilities.kt rename to src/org/thoughtcrime/securesms/loki/utilities/MentionManagerUtilities.kt index 15c9e19e0b..f09bcfa65e 100644 --- a/src/org/thoughtcrime/securesms/loki/api/MentionManagerUtilities.kt +++ b/src/org/thoughtcrime/securesms/loki/utilities/MentionManagerUtilities.kt @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms.loki.api +package org.thoughtcrime.securesms.loki.utilities import android.content.Context import org.thoughtcrime.securesms.database.DatabaseFactory diff --git a/src/org/thoughtcrime/securesms/loki/utilities/MentionUtilities.kt b/src/org/thoughtcrime/securesms/loki/utilities/MentionUtilities.kt index 22b8a73af5..4bdff6dc2c 100644 --- a/src/org/thoughtcrime/securesms/loki/utilities/MentionUtilities.kt +++ b/src/org/thoughtcrime/securesms/loki/utilities/MentionUtilities.kt @@ -10,7 +10,6 @@ import android.util.Range import network.loki.messenger.R import nl.komponents.kovenant.combine.Tuple2 import org.thoughtcrime.securesms.database.DatabaseFactory -import org.thoughtcrime.securesms.loki.getColorWithID import org.thoughtcrime.securesms.util.TextSecurePreferences import java.util.regex.Pattern diff --git a/src/org/thoughtcrime/securesms/loki/views/ConversationView.kt b/src/org/thoughtcrime/securesms/loki/views/ConversationView.kt index c3659be5e6..6f9903c83a 100644 --- a/src/org/thoughtcrime/securesms/loki/views/ConversationView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/ConversationView.kt @@ -9,7 +9,7 @@ import android.widget.LinearLayout import kotlinx.android.synthetic.main.view_conversation.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.database.model.ThreadRecord -import org.thoughtcrime.securesms.loki.api.MentionManagerUtilities.populateUserHexEncodedPublicKeyCacheIfNeeded +import org.thoughtcrime.securesms.loki.utilities.MentionManagerUtilities.populateUserHexEncodedPublicKeyCacheIfNeeded import org.thoughtcrime.securesms.loki.utilities.MentionUtilities.highlightMentions import org.thoughtcrime.securesms.mms.GlideRequests import org.thoughtcrime.securesms.util.DateUtils diff --git a/src/org/thoughtcrime/securesms/loki/views/DeviceView.kt b/src/org/thoughtcrime/securesms/loki/views/DeviceView.kt index 8eed66000d..82ba64e101 100644 --- a/src/org/thoughtcrime/securesms/loki/views/DeviceView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/DeviceView.kt @@ -7,7 +7,7 @@ import android.widget.LinearLayout import kotlinx.android.synthetic.main.view_device.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.devicelist.Device -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.toPx class DeviceView : LinearLayout { var device: Device? = null diff --git a/src/org/thoughtcrime/securesms/loki/views/FriendRequestView.kt b/src/org/thoughtcrime/securesms/loki/views/FriendRequestView.kt index 3d1b235d1b..403be5ac72 100644 --- a/src/org/thoughtcrime/securesms/loki/views/FriendRequestView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/FriendRequestView.kt @@ -15,8 +15,8 @@ import network.loki.messenger.R import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord import org.thoughtcrime.securesms.database.model.MessageRecord -import org.thoughtcrime.securesms.loki.getColorWithID -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.getColorWithID +import org.thoughtcrime.securesms.loki.utilities.toPx import org.whispersystems.signalservice.loki.protocol.todo.LokiMessageFriendRequestStatus class FriendRequestView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : LinearLayout(context, attrs, defStyleAttr) { diff --git a/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt b/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt index a42bb7282a..1056afdbdf 100644 --- a/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/LabeledSeparatorView.kt @@ -9,8 +9,8 @@ import android.view.LayoutInflater import android.widget.RelativeLayout import kotlinx.android.synthetic.main.view_separator.view.* import network.loki.messenger.R -import org.thoughtcrime.securesms.loki.getColorWithID -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.getColorWithID +import org.thoughtcrime.securesms.loki.utilities.toPx class LabeledSeparatorView : RelativeLayout { diff --git a/src/org/thoughtcrime/securesms/loki/views/MentionCandidateSelectionView.kt b/src/org/thoughtcrime/securesms/loki/views/MentionCandidateSelectionView.kt index 922cd33d29..b7aae24638 100644 --- a/src/org/thoughtcrime/securesms/loki/views/MentionCandidateSelectionView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/MentionCandidateSelectionView.kt @@ -8,7 +8,7 @@ import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.ListView import org.thoughtcrime.securesms.database.DatabaseFactory -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.toPx import org.thoughtcrime.securesms.mms.GlideRequests import org.whispersystems.signalservice.loki.protocol.mentions.Mention diff --git a/src/org/thoughtcrime/securesms/loki/views/NewConversationButtonSetView.kt b/src/org/thoughtcrime/securesms/loki/views/NewConversationButtonSetView.kt index 93457b21c4..c0596dc5fa 100644 --- a/src/org/thoughtcrime/securesms/loki/views/NewConversationButtonSetView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/NewConversationButtonSetView.kt @@ -21,8 +21,8 @@ import android.view.MotionEvent import android.widget.ImageView import android.widget.RelativeLayout import network.loki.messenger.R -import org.thoughtcrime.securesms.loki.getColorWithID -import org.thoughtcrime.securesms.loki.toPx +import org.thoughtcrime.securesms.loki.utilities.getColorWithID +import org.thoughtcrime.securesms.loki.utilities.toPx import org.thoughtcrime.securesms.loki.utilities.* class NewConversationButtonSetView : RelativeLayout { diff --git a/src/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt b/src/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt index acae690bd0..0e566d6b91 100644 --- a/src/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/ProfilePictureView.kt @@ -12,7 +12,7 @@ import kotlinx.android.synthetic.main.view_profile_picture.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto import org.thoughtcrime.securesms.database.Address -import org.thoughtcrime.securesms.loki.JazzIdenticonDrawable +import org.thoughtcrime.securesms.loki.todo.JazzIdenticonDrawable import org.thoughtcrime.securesms.mms.GlideRequests import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.util.TextSecurePreferences diff --git a/src/org/thoughtcrime/securesms/recipients/Recipient.java b/src/org/thoughtcrime/securesms/recipients/Recipient.java index 0583158ea5..4cd243114d 100644 --- a/src/org/thoughtcrime/securesms/recipients/Recipient.java +++ b/src/org/thoughtcrime/securesms/recipients/Recipient.java @@ -43,7 +43,7 @@ import org.thoughtcrime.securesms.database.RecipientDatabase.RegisteredState; import org.thoughtcrime.securesms.database.RecipientDatabase.UnidentifiedAccessMode; import org.thoughtcrime.securesms.database.RecipientDatabase.VibrateState; import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.JazzIdenticonContactPhoto; +import org.thoughtcrime.securesms.loki.todo.JazzIdenticonContactPhoto; import org.thoughtcrime.securesms.loki.RecipientAvatarModifiedEvent; import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.recipients.RecipientProvider.RecipientDetails; diff --git a/src/org/thoughtcrime/securesms/service/PushNotificationService.kt b/src/org/thoughtcrime/securesms/service/PushNotificationService.kt index 6cfaa58799..82cfe13d65 100644 --- a/src/org/thoughtcrime/securesms/service/PushNotificationService.kt +++ b/src/org/thoughtcrime/securesms/service/PushNotificationService.kt @@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.service import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import org.thoughtcrime.securesms.jobs.PushContentReceiveJob -import org.thoughtcrime.securesms.loki.LokiPushNotificationManager +import org.thoughtcrime.securesms.loki.api.LokiPushNotificationManager import org.thoughtcrime.securesms.util.TextSecurePreferences import org.whispersystems.libsignal.logging.Log import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope diff --git a/src/org/thoughtcrime/securesms/sms/MessageSender.java b/src/org/thoughtcrime/securesms/sms/MessageSender.java index ca477ebb42..8d07dbe41a 100644 --- a/src/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/src/org/thoughtcrime/securesms/sms/MessageSender.java @@ -47,11 +47,11 @@ 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.GeneralUtilitiesKt; import org.thoughtcrime.securesms.loki.MultiDeviceOpenGroupUpdateJob; import org.thoughtcrime.securesms.loki.MultiDeviceUtilities; import org.thoughtcrime.securesms.loki.PushBackgroundMessageSendJob; import org.thoughtcrime.securesms.loki.PushMessageSyncSendJob; +import org.thoughtcrime.securesms.loki.utilities.GeneralUtilitiesKt; import org.thoughtcrime.securesms.mms.MmsException; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; import org.thoughtcrime.securesms.push.AccountManagerFactory;