diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 38de09d0e0..6156e80f2f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -30,10 +30,10 @@ import androidx.lifecycle.ProcessLifecycleOwner; import androidx.multidex.MultiDexApplication; import org.conscrypt.Conscrypt; -import org.session.libsession.messaging.MessagingConfiguration; +import org.session.libsession.messaging.MessagingModuleConfiguration; import org.session.libsession.messaging.avatars.AvatarHelper; import org.session.libsession.messaging.jobs.JobQueue; -import org.session.libsession.messaging.opengroups.OpenGroupAPI; +import org.session.libsession.messaging.open_groups.OpenGroupAPI; import org.session.libsession.messaging.sending_receiving.notifications.MessageNotifier; import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPoller; import org.session.libsession.messaging.sending_receiving.pollers.Poller; @@ -169,7 +169,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc LokiThreadDatabase threadDB = DatabaseFactory.getLokiThreadDatabase(this); LokiUserDatabase userDB = DatabaseFactory.getLokiUserDatabase(this); String userPublicKey = TextSecurePreferences.getLocalNumber(this); - MessagingConfiguration.Companion.configure(this, + MessagingModuleConfiguration.Companion.configure(this, DatabaseFactory.getStorage(this), DatabaseFactory.getAttachmentProvider(this), new SessionProtocolImpl(this)); @@ -420,7 +420,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc } byte[] userPrivateKey = IdentityKeyUtil.getIdentityKeyPair(this).getPrivateKey().serialize(); LokiAPIDatabaseProtocol apiDB = DatabaseFactory.getLokiAPIDatabase(this); - org.session.libsession.messaging.fileserver.FileServerAPI.Companion.configure(userPublicKey, userPrivateKey, apiDB); + org.session.libsession.messaging.file_server.FileServerAPI.Companion.configure(userPublicKey, userPrivateKey, apiDB); return true; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 2aedad1119..b487f52716 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -60,7 +60,7 @@ import com.annimon.stream.Stream; import org.session.libsession.messaging.messages.control.DataExtractionNotification; import org.session.libsession.messaging.messages.visible.Quote; import org.session.libsession.messaging.messages.visible.VisibleMessage; -import org.session.libsession.messaging.opengroups.OpenGroupAPI; +import org.session.libsession.messaging.open_groups.OpenGroupAPI; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.MessageDetailsActivity; import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity; diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 46601321db..314b5e723c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -54,7 +54,7 @@ import com.annimon.stream.Stream; import org.session.libsession.messaging.jobs.AttachmentDownloadJob; import org.session.libsession.messaging.jobs.JobQueue; -import org.session.libsession.messaging.opengroups.OpenGroupAPI; +import org.session.libsession.messaging.open_groups.OpenGroupAPI; import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress; import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment; import org.session.libsession.messaging.sending_receiving.linkpreview.LinkPreview; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index 0a58ac42fd..91e11037f0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.database import android.content.Context import android.net.Uri -import com.google.protobuf.ByteString import org.session.libsession.messaging.StorageProtocol import org.session.libsession.messaging.jobs.AttachmentUploadJob import org.session.libsession.messaging.jobs.Job @@ -13,7 +12,7 @@ import org.session.libsession.messaging.messages.signal.* import org.session.libsession.messaging.messages.signal.IncomingTextMessage import org.session.libsession.messaging.messages.visible.Attachment import org.session.libsession.messaging.messages.visible.VisibleMessage -import org.session.libsession.messaging.opengroups.OpenGroup +import org.session.libsession.messaging.open_groups.OpenGroup import org.session.libsession.messaging.sending_receiving.attachments.AttachmentId import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment import org.session.libsession.messaging.sending_receiving.dataextraction.DataExtractionNotificationInfoMessage @@ -23,8 +22,7 @@ import org.session.libsession.messaging.threads.Address import org.session.libsession.messaging.threads.Address.Companion.fromSerialized import org.session.libsession.messaging.threads.GroupRecord import org.session.libsession.messaging.threads.recipients.Recipient -import org.session.libsession.messaging.utilities.UpdateMessageBuilder -import org.session.libsession.messaging.utilities.UpdateMessageData +import org.session.libsession.messaging.utilities.ClosedGroupUpdateMessageData import org.session.libsession.utilities.GroupUtil import org.session.libsession.utilities.IdentityKeyUtil import org.session.libsession.utilities.TextSecurePreferences @@ -34,7 +32,6 @@ import org.session.libsignal.libsignal.util.KeyHelper import org.session.libsignal.libsignal.util.guava.Optional import org.session.libsignal.service.api.messages.SignalServiceAttachmentPointer import org.session.libsignal.service.api.messages.SignalServiceGroup -import org.session.libsignal.service.internal.push.SignalServiceProtos import org.thoughtcrime.securesms.ApplicationContext import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper import org.thoughtcrime.securesms.jobs.RetrieveProfileAvatarJob @@ -44,7 +41,6 @@ import org.thoughtcrime.securesms.loki.utilities.OpenGroupUtilities import org.thoughtcrime.securesms.loki.utilities.get import org.thoughtcrime.securesms.loki.utilities.getString import org.thoughtcrime.securesms.mms.PartAuthority -import java.util.* class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper), StorageProtocol { override fun getUserPublicKey(): String? { @@ -406,7 +402,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, override fun insertIncomingInfoMessage(context: Context, senderPublicKey: String, groupID: String, type: SignalServiceGroup.Type, name: String, members: Collection, admins: Collection, sentTimestamp: Long) { val group = SignalServiceGroup(type, GroupUtil.getDecodedGroupIDAsData(groupID), SignalServiceGroup.GroupType.SIGNAL, name, members.toList(), null, admins.toList()) val m = IncomingTextMessage(Address.fromSerialized(senderPublicKey), 1, sentTimestamp, "", Optional.of(group), 0, true) - val updateData = UpdateMessageData.buildGroupUpdate(type, name, members)?.toJSON() + val updateData = ClosedGroupUpdateMessageData.buildGroupUpdate(type, name, members)?.toJSON() val infoMessage = IncomingGroupMessage(m, groupID, updateData, true) val smsDB = DatabaseFactory.getSmsDatabase(context) smsDB.insertMessageInbox(infoMessage) @@ -416,7 +412,7 @@ class Storage(context: Context, helper: SQLCipherOpenHelper) : Database(context, val userPublicKey = getUserPublicKey() val recipient = Recipient.from(context, Address.fromSerialized(groupID), false) - val updateData = UpdateMessageData.buildGroupUpdate(type, name, members)?.toJSON() ?: "" + val updateData = ClosedGroupUpdateMessageData.buildGroupUpdate(type, name, members)?.toJSON() ?: "" val infoMessage = OutgoingGroupMediaMessage(recipient, updateData, groupID, null, sentTimestamp, 0, true, null, listOf(), listOf()) val mmsDB = DatabaseFactory.getMmsDatabase(context) val mmsSmsDB = DatabaseFactory.getMmsSmsDatabase(context) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java index 9ecb9bac2e..55b8642827 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java @@ -26,8 +26,8 @@ import android.text.style.StyleSpan; import network.loki.messenger.R; import org.session.libsession.messaging.sending_receiving.dataextraction.DataExtractionNotificationInfoMessage; -import org.session.libsession.messaging.utilities.UpdateMessageBuilder; -import org.session.libsession.messaging.utilities.UpdateMessageData; +import org.session.libsession.messaging.utilities.ClosedGroupUpdateMessageBuilder; +import org.session.libsession.messaging.utilities.ClosedGroupUpdateMessageData; import org.thoughtcrime.securesms.database.MmsSmsColumns; import org.thoughtcrime.securesms.database.SmsDatabase; import org.session.libsession.database.documents.IdentityKeyMismatch; @@ -93,14 +93,14 @@ public abstract class MessageRecord extends DisplayRecord { @Override public SpannableString getDisplayBody(@NonNull Context context) { if(isGroupUpdateMessage()) { - UpdateMessageData updateMessageData = UpdateMessageData.Companion.fromJSON(getBody()); - return new SpannableString(UpdateMessageBuilder.INSTANCE.buildGroupUpdateMessage(context, updateMessageData, getIndividualRecipient().getAddress().serialize(), isOutgoing())); + ClosedGroupUpdateMessageData updateMessageData = ClosedGroupUpdateMessageData.Companion.fromJSON(getBody()); + return new SpannableString(ClosedGroupUpdateMessageBuilder.INSTANCE.buildGroupUpdateMessage(context, updateMessageData, getIndividualRecipient().getAddress().serialize(), isOutgoing())); } else if (isExpirationTimerUpdate()) { int seconds = (int) (getExpiresIn() / 1000); - return new SpannableString(UpdateMessageBuilder.INSTANCE.buildExpirationTimerMessage(context, seconds, getIndividualRecipient().getAddress().serialize(), isOutgoing())); + return new SpannableString(ClosedGroupUpdateMessageBuilder.INSTANCE.buildExpirationTimerMessage(context, seconds, getIndividualRecipient().getAddress().serialize(), isOutgoing())); } else if (isDataExtraction()) { - if (isScreenshotExtraction()) return new SpannableString((UpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, DataExtractionNotificationInfoMessage.Kind.SCREENSHOT, getIndividualRecipient().getAddress().serialize()))); - else if (isMediaSavedExtraction()) return new SpannableString((UpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, DataExtractionNotificationInfoMessage.Kind.MEDIA_SAVED, getIndividualRecipient().getAddress().serialize()))); + if (isScreenshotExtraction()) return new SpannableString((ClosedGroupUpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, DataExtractionNotificationInfoMessage.Kind.SCREENSHOT, getIndividualRecipient().getAddress().serialize()))); + else if (isMediaSavedExtraction()) return new SpannableString((ClosedGroupUpdateMessageBuilder.INSTANCE.buildDataExtractionMessage(context, DataExtractionNotificationInfoMessage.Kind.MEDIA_SAVED, getIndividualRecipient().getAddress().serialize()))); } // TODO below lines are left here for compatibility with older group update messages, it can be deleted later on else if (isGroupUpdate() && isOutgoing()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java index 3315ba94f2..b0183cff63 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java @@ -28,8 +28,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.session.libsession.messaging.threads.recipients.Recipient; -import org.session.libsession.messaging.utilities.UpdateMessageBuilder; -import org.session.libsession.messaging.utilities.UpdateMessageData; import org.session.libsession.utilities.ExpirationUtil; import org.thoughtcrime.securesms.database.MmsSmsColumns; import org.thoughtcrime.securesms.database.SmsDatabase; diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt index 8ed97bf3e2..a8ed5f2c74 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt @@ -30,7 +30,7 @@ import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import org.session.libsession.messaging.jobs.JobQueue -import org.session.libsession.messaging.opengroups.OpenGroupAPI +import org.session.libsession.messaging.open_groups.OpenGroupAPI import org.session.libsession.messaging.sending_receiving.MessageSender import org.session.libsession.utilities.* import org.session.libsignal.service.loki.utilities.mentions.MentionsManager diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt index 95d1f446c0..c046fd9115 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/activities/SettingsActivity.kt @@ -28,8 +28,8 @@ import nl.komponents.kovenant.functional.bind import nl.komponents.kovenant.task import nl.komponents.kovenant.ui.alwaysUi import org.session.libsession.messaging.avatars.AvatarHelper -import org.session.libsession.messaging.fileserver.FileServerAPI -import org.session.libsession.messaging.opengroups.OpenGroupAPI +import org.session.libsession.messaging.file_server.FileServerAPI +import org.session.libsession.messaging.open_groups.OpenGroupAPI import org.session.libsession.messaging.threads.Address import org.session.libsession.utilities.SSKEnvironment.ProfileManagerProtocol import org.session.libsession.utilities.TextSecurePreferences diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/api/BackgroundPollWorker.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/api/BackgroundPollWorker.kt index d4bd5ed8d4..9622750503 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/api/BackgroundPollWorker.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/api/BackgroundPollWorker.kt @@ -7,8 +7,7 @@ import androidx.work.* import nl.komponents.kovenant.Promise import nl.komponents.kovenant.all import nl.komponents.kovenant.functional.map -import org.session.libsession.messaging.jobs.MessageReceiveJob -import org.session.libsession.messaging.opengroups.OpenGroup +import org.session.libsession.messaging.open_groups.OpenGroup import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPoller import org.session.libsession.snode.SnodeAPI import org.session.libsession.utilities.TextSecurePreferences diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/api/PublicChatManager.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/api/PublicChatManager.kt index c2200ac0a7..a7726bfee3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/api/PublicChatManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/api/PublicChatManager.kt @@ -5,10 +5,10 @@ import android.database.ContentObserver import android.graphics.Bitmap import android.text.TextUtils import androidx.annotation.WorkerThread -import org.session.libsession.messaging.MessagingConfiguration -import org.session.libsession.messaging.opengroups.OpenGroup -import org.session.libsession.messaging.opengroups.OpenGroupAPI -import org.session.libsession.messaging.opengroups.OpenGroupInfo +import org.session.libsession.messaging.MessagingModuleConfiguration +import org.session.libsession.messaging.open_groups.OpenGroup +import org.session.libsession.messaging.open_groups.OpenGroupAPI +import org.session.libsession.messaging.open_groups.OpenGroupInfo import org.session.libsession.messaging.sending_receiving.pollers.OpenGroupPoller import org.session.libsession.utilities.TextSecurePreferences import org.session.libsession.utilities.Util @@ -110,7 +110,7 @@ class PublicChatManager(private val context: Context) { } private fun refreshChatsAndPollers() { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val chatsInDB = storage.getAllOpenGroups() val removedChatThreadIds = chats.keys.filter { !chatsInDB.keys.contains(it) } removedChatThreadIds.forEach { pollers.remove(it)?.stop() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt index 41b3de72f8..7b699c0780 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt @@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.loki.protocol import android.content.Context import com.google.protobuf.ByteString -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.Destination import org.session.libsession.messaging.messages.control.ConfigurationMessage import org.session.libsession.messaging.sending_receiving.MessageSender @@ -63,7 +63,7 @@ object MultiDeviceProtocol { val configurationMessage = ConfigurationMessage.fromProto(content) ?: return - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val allClosedGroupPublicKeys = storage.getAllClosedGroupPublicKeys() val threadDatabase = DatabaseFactory.getThreadDatabase(context) diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/OpenGroupUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/OpenGroupUtilities.kt index c6b789f996..9f5bad1f00 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/OpenGroupUtilities.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/utilities/OpenGroupUtilities.kt @@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.loki.utilities import android.content.Context import androidx.annotation.WorkerThread import org.greenrobot.eventbus.EventBus -import org.session.libsession.messaging.opengroups.OpenGroup -import org.session.libsession.messaging.opengroups.OpenGroupAPI +import org.session.libsession.messaging.open_groups.OpenGroup +import org.session.libsession.messaging.open_groups.OpenGroupAPI import org.session.libsession.utilities.GroupUtil import org.session.libsession.utilities.TextSecurePreferences import org.session.libsession.utilities.preferences.ProfileKeyUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt index f85e5e9867..f7af85ed13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt @@ -8,7 +8,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import kotlinx.android.synthetic.main.view_mention_candidate.view.* import network.loki.messenger.R -import org.session.libsession.messaging.opengroups.OpenGroupAPI +import org.session.libsession.messaging.open_groups.OpenGroupAPI import org.session.libsignal.service.loki.utilities.mentions.Mention import org.thoughtcrime.securesms.mms.GlideRequests diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/PushMediaConstraints.java b/app/src/main/java/org/thoughtcrime/securesms/mms/PushMediaConstraints.java index 4bfcbfd24d..12fc8279f0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/PushMediaConstraints.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/PushMediaConstraints.java @@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.mms; import android.content.Context; -import org.session.libsession.messaging.fileserver.FileServerAPI; +import org.session.libsession.messaging.file_server.FileServerAPI; public class PushMediaConstraints extends MediaConstraints { diff --git a/libsession/src/main/java/org/session/libsession/messaging/MessagingConfiguration.kt b/libsession/src/main/java/org/session/libsession/messaging/MessagingConfiguration.kt deleted file mode 100644 index ae1daec5a6..0000000000 --- a/libsession/src/main/java/org/session/libsession/messaging/MessagingConfiguration.kt +++ /dev/null @@ -1,25 +0,0 @@ -package org.session.libsession.messaging - -import android.content.Context -import org.session.libsession.database.MessageDataProvider -import org.session.libsignal.service.loki.api.crypto.SessionProtocol - -class MessagingConfiguration( - val context: Context, - val storage: StorageProtocol, - val messageDataProvider: MessageDataProvider, - val sessionProtocol: SessionProtocol) -{ - companion object { - lateinit var shared: MessagingConfiguration - - fun configure(context: Context, - storage: StorageProtocol, - messageDataProvider: MessageDataProvider, - sessionProtocol: SessionProtocol - ) { - if (Companion::shared.isInitialized) { return } - shared = MessagingConfiguration(context, storage, messageDataProvider, sessionProtocol) - } - } -} \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/MessagingModuleConfiguration.kt b/libsession/src/main/java/org/session/libsession/messaging/MessagingModuleConfiguration.kt new file mode 100644 index 0000000000..e6ec434c9d --- /dev/null +++ b/libsession/src/main/java/org/session/libsession/messaging/MessagingModuleConfiguration.kt @@ -0,0 +1,26 @@ +package org.session.libsession.messaging + +import android.content.Context +import org.session.libsession.database.MessageDataProvider +import org.session.libsignal.service.loki.api.crypto.SessionProtocol + +class MessagingModuleConfiguration( + val context: Context, + val storage: StorageProtocol, + val messageDataProvider: MessageDataProvider, + val sessionProtocol: SessionProtocol) +{ + + companion object { + lateinit var shared: MessagingModuleConfiguration + + fun configure(context: Context, + storage: StorageProtocol, + messageDataProvider: MessageDataProvider, + sessionProtocol: SessionProtocol + ) { + if (Companion::shared.isInitialized) { return } + shared = MessagingModuleConfiguration(context, storage, messageDataProvider, sessionProtocol) + } + } +} \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt b/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt index da84c8f6e8..f1f8d8c49c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/StorageProtocol.kt @@ -9,7 +9,7 @@ import org.session.libsession.messaging.jobs.MessageSendJob import org.session.libsession.messaging.messages.control.ConfigurationMessage import org.session.libsession.messaging.messages.visible.Attachment import org.session.libsession.messaging.messages.visible.VisibleMessage -import org.session.libsession.messaging.opengroups.OpenGroup +import org.session.libsession.messaging.open_groups.OpenGroup import org.session.libsession.messaging.sending_receiving.attachments.AttachmentId import org.session.libsession.messaging.sending_receiving.dataextraction.DataExtractionNotificationInfoMessage import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment @@ -21,7 +21,6 @@ import org.session.libsession.messaging.threads.recipients.Recipient.RecipientSe import org.session.libsignal.libsignal.ecc.ECKeyPair import org.session.libsignal.service.api.messages.SignalServiceAttachmentPointer import org.session.libsignal.service.api.messages.SignalServiceGroup -import org.session.libsignal.service.internal.push.SignalServiceProtos interface StorageProtocol { diff --git a/libsession/src/main/java/org/session/libsession/messaging/avatars/GroupRecordContactPhoto.java b/libsession/src/main/java/org/session/libsession/messaging/avatars/GroupRecordContactPhoto.java index 24c2dfec93..7967368e1f 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/avatars/GroupRecordContactPhoto.java +++ b/libsession/src/main/java/org/session/libsession/messaging/avatars/GroupRecordContactPhoto.java @@ -6,7 +6,7 @@ import android.net.Uri; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.session.libsession.messaging.MessagingConfiguration; +import org.session.libsession.messaging.MessagingModuleConfiguration; import org.session.libsession.messaging.StorageProtocol; import org.session.libsession.messaging.threads.Address; import org.session.libsession.messaging.threads.GroupRecord; @@ -31,7 +31,7 @@ public class GroupRecordContactPhoto implements ContactPhoto { @Override public InputStream openInputStream(Context context) throws IOException { - StorageProtocol groupDatabase = MessagingConfiguration.shared.getStorage(); + StorageProtocol groupDatabase = MessagingModuleConfiguration.shared.getStorage(); Optional groupRecord = Optional.of(groupDatabase.getGroup(address.toGroupString())); if (groupRecord.isPresent() && groupRecord.get().getAvatar() != null) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/fileserver/FileServerAPI.kt b/libsession/src/main/java/org/session/libsession/messaging/file_server/FileServerAPI.kt similarity index 97% rename from libsession/src/main/java/org/session/libsession/messaging/fileserver/FileServerAPI.kt rename to libsession/src/main/java/org/session/libsession/messaging/file_server/FileServerAPI.kt index c0ae724d44..5e78caf6f0 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/fileserver/FileServerAPI.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/file_server/FileServerAPI.kt @@ -1,4 +1,4 @@ -package org.session.libsession.messaging.fileserver +package org.session.libsession.messaging.file_server import nl.komponents.kovenant.Promise import nl.komponents.kovenant.functional.map @@ -11,7 +11,6 @@ import org.session.libsignal.utilities.JsonUtil import org.session.libsignal.service.loki.database.LokiAPIDatabaseProtocol import org.session.libsignal.service.loki.utilities.* import java.net.URL -import java.util.concurrent.ConcurrentHashMap class FileServerAPI(public val server: String, userPublicKey: String, userPrivateKey: ByteArray, private val database: LokiAPIDatabaseProtocol) : DotNetAPI() { diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt index a1e3077de7..557d161667 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentDownloadJob.kt @@ -1,7 +1,7 @@ package org.session.libsession.messaging.jobs -import org.session.libsession.messaging.MessagingConfiguration -import org.session.libsession.messaging.fileserver.FileServerAPI +import org.session.libsession.messaging.MessagingModuleConfiguration +import org.session.libsession.messaging.file_server.FileServerAPI import org.session.libsession.messaging.sending_receiving.attachments.AttachmentState import org.session.libsession.messaging.utilities.DotNetAPI import org.session.libsignal.service.api.crypto.AttachmentCipherInputStream @@ -33,19 +33,19 @@ class AttachmentDownloadJob(val attachmentID: Long, val databaseMessageID: Long) override fun execute() { val handleFailure: (java.lang.Exception) -> Unit = { exception -> if (exception == Error.NoAttachment) { - MessagingConfiguration.shared.messageDataProvider.setAttachmentState(AttachmentState.FAILED, attachmentID, databaseMessageID) + MessagingModuleConfiguration.shared.messageDataProvider.setAttachmentState(AttachmentState.FAILED, attachmentID, databaseMessageID) this.handlePermanentFailure(exception) } else if (exception == DotNetAPI.Error.ParsingFailed) { // No need to retry if the response is invalid. Most likely this means we (incorrectly) // got a "Cannot GET ..." error from the file server. - MessagingConfiguration.shared.messageDataProvider.setAttachmentState(AttachmentState.FAILED, attachmentID, databaseMessageID) + MessagingModuleConfiguration.shared.messageDataProvider.setAttachmentState(AttachmentState.FAILED, attachmentID, databaseMessageID) this.handlePermanentFailure(exception) } else { this.handleFailure(exception) } } try { - val messageDataProvider = MessagingConfiguration.shared.messageDataProvider + val messageDataProvider = MessagingModuleConfiguration.shared.messageDataProvider val attachment = messageDataProvider.getDatabaseAttachment(attachmentID) ?: return handleFailure(Error.NoAttachment) messageDataProvider.setAttachmentState(AttachmentState.STARTED, attachmentID, this.databaseMessageID) val tempFile = createTempFile() @@ -79,7 +79,7 @@ class AttachmentDownloadJob(val attachmentID: Long, val databaseMessageID: Long) } private fun createTempFile(): File { - val file = File.createTempFile("push-attachment", "tmp", MessagingConfiguration.shared.context.cacheDir) + val file = File.createTempFile("push-attachment", "tmp", MessagingModuleConfiguration.shared.context.cacheDir) file.deleteOnExit() return file } diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentUploadJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentUploadJob.kt index f05a3bcf81..ffdf459693 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentUploadJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/AttachmentUploadJob.kt @@ -3,8 +3,8 @@ package org.session.libsession.messaging.jobs import com.esotericsoftware.kryo.Kryo import com.esotericsoftware.kryo.io.Input import com.esotericsoftware.kryo.io.Output -import org.session.libsession.messaging.MessagingConfiguration -import org.session.libsession.messaging.fileserver.FileServerAPI +import org.session.libsession.messaging.MessagingModuleConfiguration +import org.session.libsession.messaging.file_server.FileServerAPI import org.session.libsession.messaging.messages.Message import org.session.libsession.messaging.sending_receiving.MessageSender import org.session.libsession.messaging.utilities.DotNetAPI @@ -42,11 +42,11 @@ class AttachmentUploadJob(val attachmentID: Long, val threadID: String, val mess override fun execute() { try { - val attachment = MessagingConfiguration.shared.messageDataProvider.getScaledSignalAttachmentStream(attachmentID) + val attachment = MessagingModuleConfiguration.shared.messageDataProvider.getScaledSignalAttachmentStream(attachmentID) ?: return handleFailure(Error.NoAttachment) val usePadding = false - val openGroup = MessagingConfiguration.shared.storage.getOpenGroup(threadID) + val openGroup = MessagingModuleConfiguration.shared.storage.getOpenGroup(threadID) val server = if (openGroup != null) openGroup.server else FileServerAPI.shared.server val shouldEncrypt = (openGroup == null) // Encrypt if this isn't an open group @@ -74,14 +74,14 @@ class AttachmentUploadJob(val attachmentID: Long, val threadID: String, val mess private fun handleSuccess(attachment: SignalServiceAttachmentStream, attachmentKey: ByteArray, uploadResult: DotNetAPI.UploadResult) { Log.w(TAG, "Attachment uploaded successfully.") delegate?.handleJobSucceeded(this) - MessagingConfiguration.shared.messageDataProvider.updateAttachmentAfterUploadSucceeded(attachmentID, attachment, attachmentKey, uploadResult) - MessagingConfiguration.shared.storage.resumeMessageSendJobIfNeeded(messageSendJobID) + MessagingModuleConfiguration.shared.messageDataProvider.updateAttachmentAfterUploadSucceeded(attachmentID, attachment, attachmentKey, uploadResult) + MessagingModuleConfiguration.shared.storage.resumeMessageSendJobIfNeeded(messageSendJobID) } private fun handlePermanentFailure(e: Exception) { Log.w(TAG, "Attachment upload failed permanently due to error: $this.") delegate?.handleJobFailedPermanently(this, e) - MessagingConfiguration.shared.messageDataProvider.updateAttachmentAfterUploadFailed(attachmentID) + MessagingModuleConfiguration.shared.messageDataProvider.updateAttachmentAfterUploadFailed(attachmentID) failAssociatedMessageSendJob(e) } @@ -94,7 +94,7 @@ class AttachmentUploadJob(val attachmentID: Long, val threadID: String, val mess } private fun failAssociatedMessageSendJob(e: Exception) { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val messageSendJob = storage.getMessageSendJob(messageSendJobID) MessageSender.handleFailedMessageSend(this.message, e) if (messageSendJob != null) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/JobQueue.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/JobQueue.kt index 9e8e1374dc..ae9e5d4b35 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/JobQueue.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/JobQueue.kt @@ -3,7 +3,7 @@ package org.session.libsession.messaging.jobs import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.Channel.Factory.UNLIMITED -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsignal.utilities.logging.Log import java.util.* import java.util.concurrent.ConcurrentHashMap @@ -54,7 +54,7 @@ class JobQueue : JobDelegate { jobTimestampMap.putIfAbsent(currentTime, AtomicInteger()) job.id = currentTime.toString() + jobTimestampMap[currentTime]!!.getAndIncrement().toString() - MessagingConfiguration.shared.storage.persistJob(job) + MessagingModuleConfiguration.shared.storage.persistJob(job) } fun resumePendingJobs() { @@ -65,7 +65,7 @@ class JobQueue : JobDelegate { hasResumedPendingJobs = true val allJobTypes = listOf(AttachmentDownloadJob.KEY, AttachmentDownloadJob.KEY, MessageReceiveJob.KEY, MessageSendJob.KEY, NotifyPNServerJob.KEY) allJobTypes.forEach { type -> - val allPendingJobs = MessagingConfiguration.shared.storage.getAllPendingJobs(type) + val allPendingJobs = MessagingModuleConfiguration.shared.storage.getAllPendingJobs(type) allPendingJobs.sortedBy { it.id }.forEach { job -> Log.i("Jobs", "Resuming pending job of type: ${job::class.simpleName}.") queue.offer(job) // Offer always called on unlimited capacity @@ -74,12 +74,12 @@ class JobQueue : JobDelegate { } override fun handleJobSucceeded(job: Job) { - MessagingConfiguration.shared.storage.markJobAsSucceeded(job) + MessagingModuleConfiguration.shared.storage.markJobAsSucceeded(job) } override fun handleJobFailed(job: Job, error: Exception) { job.failureCount += 1 - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage if (storage.isJobCanceled(job)) { return Log.i("Jobs", "${job::class.simpleName} canceled.")} storage.persistJob(job) if (job.failureCount == job.maxFailureCount) { @@ -96,7 +96,7 @@ class JobQueue : JobDelegate { override fun handleJobFailedPermanently(job: Job, error: Exception) { job.failureCount += 1 - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage storage.persistJob(job) storage.markJobAsFailed(job) } diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt index 066ab85b2e..c695df8311 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt @@ -3,7 +3,7 @@ package org.session.libsession.messaging.jobs import com.esotericsoftware.kryo.Kryo import com.esotericsoftware.kryo.io.Input import com.esotericsoftware.kryo.io.Output -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.Destination import org.session.libsession.messaging.messages.Message import org.session.libsession.messaging.messages.visible.VisibleMessage @@ -27,7 +27,7 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { } override fun execute() { - val messageDataProvider = MessagingConfiguration.shared.messageDataProvider + val messageDataProvider = MessagingModuleConfiguration.shared.messageDataProvider val message = message as? VisibleMessage message?.let { if(!messageDataProvider.isOutgoingMessage(message.sentTimestamp!!)) return // The message has been deleted @@ -38,7 +38,7 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { val attachments = attachmentIDs.mapNotNull { messageDataProvider.getDatabaseAttachment(it) } val attachmentsToUpload = attachments.filter { it.url.isNullOrEmpty() } attachmentsToUpload.forEach { - if (MessagingConfiguration.shared.storage.getAttachmentUploadJob(it.attachmentId.rowId) != null) { + if (MessagingModuleConfiguration.shared.storage.getAttachmentUploadJob(it.attachmentId.rowId) != null) { // Wait for it to finish } else { val job = AttachmentUploadJob(it.attachmentId.rowId, message.threadID!!.toString(), message, id!!) @@ -71,7 +71,7 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { Log.w(TAG, "Failed to send $message::class.simpleName.") val message = message as? VisibleMessage message?.let { - if(!MessagingConfiguration.shared.messageDataProvider.isOutgoingMessage(message.sentTimestamp!!)) return // The message has been deleted + if(!MessagingModuleConfiguration.shared.messageDataProvider.isOutgoingMessage(message.sentTimestamp!!)) return // The message has been deleted } delegate?.handleJobFailed(this, error) } diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/Destination.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/Destination.kt index ef389b08b0..250479ec93 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/Destination.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/Destination.kt @@ -1,6 +1,6 @@ package org.session.libsession.messaging.messages -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.threads.Address import org.session.libsession.utilities.GroupUtil import org.session.libsignal.service.loki.utilities.toHexString @@ -29,8 +29,8 @@ sealed class Destination { ClosedGroup(groupPublicKey) } address.isOpenGroup -> { - val threadID = MessagingConfiguration.shared.storage.getThreadID(address.contactIdentifier())!! - val openGroup = MessagingConfiguration.shared.storage.getOpenGroup(threadID)!! + val threadID = MessagingModuleConfiguration.shared.storage.getThreadID(address.contactIdentifier())!! + val openGroup = MessagingModuleConfiguration.shared.storage.getOpenGroup(threadID)!! OpenGroup(openGroup.channel, openGroup.server) } else -> { diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt index ef60aaa83e..d6204dc123 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt @@ -5,7 +5,6 @@ import org.session.libsession.utilities.GroupUtil import org.session.libsignal.service.internal.push.SignalServiceProtos abstract class Message { - var id: Long? = null var threadID: Long? = null var sentTimestamp: Long? = null @@ -18,7 +17,6 @@ abstract class Message { open val ttl: Long = 14 * 24 * 60 * 60 * 1000 open val isSelfSendValid: Boolean = false - // validation open fun isValid(): Boolean { sentTimestamp?.let { if (it <= 0) return false diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt index 83c223b1ac..75af2abd6a 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt @@ -1,7 +1,7 @@ package org.session.libsession.messaging.messages.control import com.google.protobuf.ByteString -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.threads.Address import org.session.libsession.messaging.threads.recipients.Recipient import org.session.libsession.utilities.GroupUtil @@ -172,7 +172,7 @@ class ClosedGroupControlMessage() : ControlMessage() { // Expiration timer // TODO: We * want * expiration timer updates to be explicit. But currently Android will disable the expiration timer for a conversation // if it receives a message without the current expiration timer value attached to it... - dataMessageProto.expireTimer = Recipient.from(MessagingConfiguration.shared.context, Address.fromSerialized(GroupUtil.doubleEncodeGroupID(recipient!!)), false).expireMessages + dataMessageProto.expireTimer = Recipient.from(MessagingModuleConfiguration.shared.context, Address.fromSerialized(GroupUtil.doubleEncodeGroupID(recipient!!)), false).expireMessages contentProto.dataMessage = dataMessageProto.build() return contentProto.build() } catch (e: Exception) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt index 2fbf13588f..29aa13e586 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt @@ -1,7 +1,7 @@ package org.session.libsession.messaging.messages.control import com.google.protobuf.ByteString -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.threads.Address import org.session.libsession.utilities.GroupUtil import org.session.libsession.utilities.TextSecurePreferences @@ -26,13 +26,14 @@ class ConfigurationMessage(var closedGroups: List, var openGroups: } companion object { + fun fromProto(proto: SignalServiceProtos.ConfigurationMessage.ClosedGroup): ClosedGroup? { if (!proto.hasPublicKey() || !proto.hasName() || !proto.hasEncryptionKeyPair()) return null val publicKey = proto.publicKey.toByteArray().toHexString() val name = proto.name val encryptionKeyPairAsProto = proto.encryptionKeyPair val encryptionKeyPair = ECKeyPair(DjbECPublicKey(encryptionKeyPairAsProto.publicKey.toByteArray().removing05PrefixIfNeeded()), - DjbECPrivateKey(encryptionKeyPairAsProto.privateKey.toByteArray())) + DjbECPrivateKey(encryptionKeyPairAsProto.privateKey.toByteArray())) val members = proto.membersList.map { it.toByteArray().toHexString() } val admins = proto.adminsList.map { it.toByteArray().toHexString() } return ClosedGroup(publicKey, name, encryptionKeyPair, members, admins) @@ -58,6 +59,7 @@ class ConfigurationMessage(var closedGroups: List, var openGroups: internal constructor(): this("", "", null, null) companion object { + fun fromProto(proto: SignalServiceProtos.ConfigurationMessage.Contact): Contact? { if (!proto.hasName() || !proto.hasProfileKey()) return null val publicKey = proto.publicKey.toByteArray().toHexString() @@ -94,7 +96,7 @@ class ConfigurationMessage(var closedGroups: List, var openGroups: fun getCurrent(contacts: List): ConfigurationMessage? { val closedGroups = mutableListOf() val openGroups = mutableListOf() - val sharedConfig = MessagingConfiguration.shared + val sharedConfig = MessagingModuleConfiguration.shared val storage = sharedConfig.storage val context = sharedConfig.context val displayName = TextSecurePreferences.getProfileName(context) ?: return null diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/DataExtractionNotification.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/DataExtractionNotification.kt index 538b0b0001..5aec11827b 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/DataExtractionNotification.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/DataExtractionNotification.kt @@ -6,13 +6,12 @@ import org.session.libsignal.utilities.logging.Log class DataExtractionNotification(): ControlMessage() { var kind: Kind? = null - // Kind enum sealed class Kind { class Screenshot() : Kind() class MediaSaved(val timestamp: Long) : Kind() val description: String = - when(this) { + when (this) { is Screenshot -> "screenshot" is MediaSaved -> "mediaSaved" } @@ -35,12 +34,10 @@ class DataExtractionNotification(): ControlMessage() { } } - //constructor internal constructor(kind: Kind) : this() { this.kind = kind } - // MARK: Validation override fun isValid(): Boolean { if (!super.isValid()) return false val kind = kind ?: return false diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ExpirationTimerUpdate.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ExpirationTimerUpdate.kt index 5dff39072c..5d1854e815 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ExpirationTimerUpdate.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ExpirationTimerUpdate.kt @@ -1,12 +1,11 @@ package org.session.libsession.messaging.messages.control -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.visible.VisibleMessage import org.session.libsignal.utilities.logging.Log import org.session.libsignal.service.internal.push.SignalServiceProtos class ExpirationTimerUpdate() : ControlMessage() { - /// In the case of a sync message, the public key of the person the message was targeted at. /// - Note: `nil` if this isn't a sync message. var syncTarget: String? = null @@ -27,7 +26,6 @@ class ExpirationTimerUpdate() : ControlMessage() { } } - //constructor internal constructor(syncTarget: String?, duration: Int) : this() { this.syncTarget = syncTarget this.duration = duration @@ -38,7 +36,6 @@ class ExpirationTimerUpdate() : ControlMessage() { this.duration = duration } - // validation override fun isValid(): Boolean { if (!super.isValid()) return false return duration != null @@ -58,7 +55,7 @@ class ExpirationTimerUpdate() : ControlMessage() { dataMessageProto.syncTarget = syncTarget } // Group context - if (MessagingConfiguration.shared.storage.isClosedGroup(recipient!!)) { + if (MessagingModuleConfiguration.shared.storage.isClosedGroup(recipient!!)) { try { setGroupContext(dataMessageProto) } catch(e: Exception) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ReadReceipt.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ReadReceipt.kt index d842e079f9..a912740da0 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ReadReceipt.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ReadReceipt.kt @@ -4,7 +4,6 @@ import org.session.libsignal.service.internal.push.SignalServiceProtos import org.session.libsignal.utilities.logging.Log class ReadReceipt() : ControlMessage() { - var timestamps: List? = null companion object { @@ -19,12 +18,10 @@ class ReadReceipt() : ControlMessage() { } } - //constructor internal constructor(timestamps: List?) : this() { this.timestamps = timestamps } - // validation override fun isValid(): Boolean { if (!super.isValid()) return false val timestamps = timestamps ?: return false diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/TypingIndicator.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/TypingIndicator.kt index 8bbfd727bb..dd26ae7031 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/TypingIndicator.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/TypingIndicator.kt @@ -4,8 +4,8 @@ import org.session.libsignal.service.internal.push.SignalServiceProtos import org.session.libsignal.utilities.logging.Log class TypingIndicator() : ControlMessage() { - override val ttl: Long = 30 * 1000 + var kind: Kind? = null companion object { const val TAG = "TypingIndicator" @@ -17,11 +17,8 @@ class TypingIndicator() : ControlMessage() { } } - // Kind enum enum class Kind { - STARTED, - STOPPED, - ; + STARTED, STOPPED; companion object { @JvmStatic @@ -40,14 +37,10 @@ class TypingIndicator() : ControlMessage() { } } - var kind: Kind? = null - - //constructor internal constructor(kind: Kind) : this() { this.kind = kind } - // validation override fun isValid(): Boolean { if (!super.isValid()) return false return kind != null diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingGroupMessage.java b/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingGroupMessage.java index 125267afb7..213f815ded 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingGroupMessage.java +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/signal/IncomingGroupMessage.java @@ -1,7 +1,5 @@ package org.session.libsession.messaging.messages.signal; -import static org.session.libsignal.service.internal.push.SignalServiceProtos.GroupContext; - public class IncomingGroupMessage extends IncomingTextMessage { private final String groupID; diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Attachment.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Attachment.kt index c7c6a670e6..1630502671 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Attachment.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Attachment.kt @@ -11,7 +11,6 @@ import org.session.libsignal.service.internal.push.SignalServiceProtos import java.io.File class Attachment { - var fileName: String? = null var contentType: String? = null var key: ByteArray? = null @@ -23,6 +22,7 @@ class Attachment { var url: String? = null companion object { + fun fromProto(proto: SignalServiceProtos.AttachmentPointer): Attachment { val result = Attachment() result.fileName = proto.fileName @@ -88,7 +88,6 @@ class Attachment { GENERIC } - // validation fun isValid(): Boolean { // key and digest can be nil for open group attachments return (contentType != null && kind != null && size != null && sizeInBytes != null && url != null) diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Contact.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Contact.kt deleted file mode 100644 index 1b959e5e03..0000000000 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Contact.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.session.libsession.messaging.messages.visible - -import org.session.libsession.database.MessageDataProvider -import org.session.libsignal.service.internal.push.SignalServiceProtos - -class Contact() { - - companion object { - fun fromProto(proto: SignalServiceProtos.Content): Contact? { - TODO("Not yet implemented") - } - } - - fun toProto(): SignalServiceProtos.DataMessage.Contact? { - TODO("Not yet implemented") - } -} \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/LinkPreview.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/LinkPreview.kt index ddfb397173..63395bb155 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/LinkPreview.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/LinkPreview.kt @@ -1,12 +1,11 @@ package org.session.libsession.messaging.messages.visible -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.sending_receiving.linkpreview.LinkPreview as SignalLinkPreiview import org.session.libsignal.utilities.logging.Log import org.session.libsignal.service.internal.push.SignalServiceProtos class LinkPreview() { - var title: String? = null var url: String? = null var attachmentID: Long? = 0 @@ -29,15 +28,12 @@ class LinkPreview() { } } - //constructor internal constructor(title: String?, url: String, attachmentID: Long?) : this() { this.title = title this.url = url this.attachmentID = attachmentID } - - // validation fun isValid(): Boolean { return (title != null && url != null && attachmentID != null) } @@ -53,7 +49,7 @@ class LinkPreview() { title?.let { linkPreviewProto.title = title } val attachmentID = attachmentID attachmentID?.let { - MessagingConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(attachmentID)?.let { + MessagingModuleConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(attachmentID)?.let { val attachmentProto = Attachment.createAttachmentPointer(it) linkPreviewProto.image = attachmentProto } diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Profile.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Profile.kt index 49cc97dce4..7464a4be5d 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Profile.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Profile.kt @@ -5,7 +5,6 @@ import org.session.libsignal.utilities.logging.Log import org.session.libsignal.service.internal.push.SignalServiceProtos class Profile() { - var displayName: String? = null var profileKey: ByteArray? = null var profilePictureURL: String? = null @@ -27,7 +26,6 @@ class Profile() { } } - //constructor internal constructor(displayName: String, profileKey: ByteArray? = null, profilePictureURL: String? = null) : this() { this.displayName = displayName this.profileKey = profileKey diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Quote.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Quote.kt index e1255c6ef0..88bf089a1c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Quote.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/Quote.kt @@ -1,14 +1,13 @@ package org.session.libsession.messaging.messages.visible import com.goterl.lazycode.lazysodium.BuildConfig -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel as SignalQuote import org.session.libsignal.utilities.logging.Log import org.session.libsignal.service.internal.push.SignalServiceProtos class Quote() { - var timestamp: Long? = 0 var publicKey: String? = null var text: String? = null @@ -34,7 +33,6 @@ class Quote() { } } - //constructor internal constructor(timestamp: Long, publicKey: String, text: String?, attachmentID: Long?) : this() { this.timestamp = timestamp this.publicKey = publicKey @@ -42,7 +40,6 @@ class Quote() { this.attachmentID = attachmentID } - // validation fun isValid(): Boolean { return (timestamp != null && publicKey != null) } @@ -70,7 +67,7 @@ class Quote() { private fun addAttachmentsIfNeeded(quoteProto: SignalServiceProtos.DataMessage.Quote.Builder) { if (attachmentID == null) return - val attachment = MessagingConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(attachmentID!!) + val attachment = MessagingModuleConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(attachmentID!!) if (attachment == null) { Log.w(TAG, "Ignoring invalid attachment for quoted message.") return diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/VisibleMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/VisibleMessage.kt index 0b2c4b59e8..63756c0948 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/visible/VisibleMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/visible/VisibleMessage.kt @@ -1,7 +1,7 @@ package org.session.libsession.messaging.messages.visible import com.goterl.lazycode.lazysodium.BuildConfig -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.Message import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment import org.session.libsession.messaging.threads.Address @@ -12,13 +12,11 @@ import org.session.libsignal.utilities.logging.Log import org.session.libsession.messaging.sending_receiving.attachments.Attachment as SignalAttachment class VisibleMessage : Message() { - var syncTarget: String? = null var text: String? = null val attachmentIDs: MutableList = mutableListOf() var quote: Quote? = null var linkPreview: LinkPreview? = null - var contact: Contact? = null var profile: Profile? = null override val isSelfSendValid: Boolean = true @@ -60,10 +58,9 @@ class VisibleMessage : Message() { } fun isMediaMessage(): Boolean { - return attachmentIDs.isNotEmpty() || quote != null || linkPreview != null || contact != null + return attachmentIDs.isNotEmpty() || quote != null || linkPreview != null } - // validation override fun isValid(): Boolean { if (!super.isValid()) return false if (attachmentIDs.isNotEmpty()) return true @@ -98,7 +95,7 @@ class VisibleMessage : Message() { } } //Attachments - val attachments = attachmentIDs.mapNotNull { MessagingConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(it) } + val attachments = attachmentIDs.mapNotNull { MessagingModuleConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(it) } if (!attachments.all { !it.url.isNullOrEmpty() }) { if (BuildConfig.DEBUG) { //TODO equivalent to iOS's preconditionFailure @@ -111,8 +108,8 @@ class VisibleMessage : Message() { // Expiration timer // TODO: We * want * expiration timer updates to be explicit. But currently Android will disable the expiration timer for a conversation // if it receives a message without the current expiration timer value attached to it... - val storage = MessagingConfiguration.shared.storage - val context = MessagingConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context val expiration = if (storage.isClosedGroup(recipient!!)) Recipient.from(context, Address.fromSerialized(GroupUtil.doubleEncodeGroupID(recipient!!)), false).expireMessages else Recipient.from(context, Address.fromSerialized(recipient!!), false).expireMessages dataMessage.expireTimer = expiration diff --git a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroup.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroup.kt similarity index 96% rename from libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroup.kt rename to libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroup.kt index c0a48274cd..cf89c9009e 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroup.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroup.kt @@ -1,4 +1,4 @@ -package org.session.libsession.messaging.opengroups +package org.session.libsession.messaging.open_groups import org.session.libsignal.service.loki.api.opengroups.PublicChat import org.session.libsignal.utilities.JsonUtil diff --git a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupAPI.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPI.kt similarity index 97% rename from libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupAPI.kt rename to libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPI.kt index f7b1fd56b2..211bf33643 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupAPI.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPI.kt @@ -1,12 +1,11 @@ -package org.session.libsession.messaging.opengroups +package org.session.libsession.messaging.open_groups import nl.komponents.kovenant.Kovenant import nl.komponents.kovenant.Promise import nl.komponents.kovenant.deferred import nl.komponents.kovenant.functional.map import nl.komponents.kovenant.then -import org.session.libsession.messaging.MessagingConfiguration -import org.session.libsession.messaging.fileserver.FileServerAPI +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.utilities.DotNetAPI import org.session.libsignal.service.loki.utilities.retryIfNeeded import org.session.libsignal.utilities.* @@ -51,7 +50,7 @@ object OpenGroupAPI: DotNetAPI() { // region Public API fun getMessages(channel: Long, server: String): Promise, Exception> { Log.d("Loki", "Getting messages for open group with ID: $channel on server: $server.") - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val parameters = mutableMapOf( "include_annotations" to 1 ) val lastMessageServerID = storage.getLastMessageServerID(channel, server) if (lastMessageServerID != null) { @@ -157,7 +156,7 @@ object OpenGroupAPI: DotNetAPI() { @JvmStatic fun getDeletedMessageServerIDs(channel: Long, server: String): Promise, Exception> { Log.d("Loki", "Getting deleted messages for open group with ID: $channel on server: $server.") - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val parameters = mutableMapOf() val lastDeletionServerID = storage.getLastDeletionServerID(channel, server) if (lastDeletionServerID != null) { @@ -190,7 +189,7 @@ object OpenGroupAPI: DotNetAPI() { @JvmStatic fun sendMessage(message: OpenGroupMessage, channel: Long, server: String): Promise { val deferred = deferred() - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userKeyPair = storage.getUserKeyPair() ?: throw Error.Generic val userDisplayName = storage.getUserDisplayName() ?: throw Error.Generic ThreadUtils.queue { @@ -286,7 +285,7 @@ object OpenGroupAPI: DotNetAPI() { val memberCount = countInfo["subscribers"] as? Int ?: (countInfo["subscribers"] as? Long)?.toInt() ?: (countInfo["subscribers"] as String).toInt() val profilePictureURL = info["avatar"] as String val publicChatInfo = OpenGroupInfo(displayName, profilePictureURL, memberCount) - MessagingConfiguration.shared.storage.setUserCount(channel, server, memberCount) + MessagingModuleConfiguration.shared.storage.setUserCount(channel, server, memberCount) publicChatInfo } catch (exception: Exception) { Log.d("Loki", "Couldn't parse info for open group with ID: $channel on server: $server.") @@ -298,7 +297,7 @@ object OpenGroupAPI: DotNetAPI() { @JvmStatic fun updateProfileIfNeeded(channel: Long, server: String, groupID: String, info: OpenGroupInfo, isForcedUpdate: Boolean) { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage storage.setUserCount(channel, server, info.memberCount) storage.updateTitle(groupID, info.displayName) // Download and update profile picture if needed diff --git a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupInfo.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupInfo.kt similarity index 69% rename from libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupInfo.kt rename to libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupInfo.kt index b02431bf26..6de51187d3 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupInfo.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupInfo.kt @@ -1,4 +1,4 @@ -package org.session.libsession.messaging.opengroups +package org.session.libsession.messaging.open_groups data class OpenGroupInfo ( val displayName: String, diff --git a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessage.kt similarity index 95% rename from libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupMessage.kt rename to libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessage.kt index 5a05d0f5f8..492cb4f7c7 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/opengroups/OpenGroupMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessage.kt @@ -1,6 +1,6 @@ -package org.session.libsession.messaging.opengroups +package org.session.libsession.messaging.open_groups -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.visible.VisibleMessage import org.session.libsignal.service.loki.utilities.removing05PrefixIfNeeded import org.session.libsignal.utilities.Hex @@ -24,7 +24,7 @@ data class OpenGroupMessage( // region Settings companion object { fun from(message: VisibleMessage, server: String): OpenGroupMessage? { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey() ?: return null val attachmentIDs = message.attachmentIDs // Validation @@ -50,7 +50,7 @@ data class OpenGroupMessage( linkPreview?.let { if (!linkPreview.isValid()) { return@let } val attachmentID = linkPreview.attachmentID ?: return@let - val attachment = MessagingConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(attachmentID) ?: return@let + val attachment = MessagingModuleConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(attachmentID) ?: return@let val openGroupLinkPreview = Attachment( Attachment.Kind.LinkPreview, server, @@ -69,7 +69,7 @@ data class OpenGroupMessage( } // Attachments val attachments = message.attachmentIDs.mapNotNull { - val attachment = MessagingConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(it) ?: return@mapNotNull null + val attachment = MessagingModuleConfiguration.shared.messageDataProvider.getSignalAttachmentPointer(it) ?: return@mapNotNull null return@mapNotNull Attachment( Attachment.Kind.Attachment, server, diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt index 216d79627c..20d21053fb 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiver.kt @@ -1,6 +1,6 @@ package org.session.libsession.messaging.sending_receiving -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.Message import org.session.libsession.messaging.messages.control.* import org.session.libsession.messaging.messages.visible.VisibleMessage @@ -44,7 +44,7 @@ object MessageReceiver { } internal fun parse(data: ByteArray, openGroupServerID: Long?, isRetry: Boolean = false): Pair { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey() val isOpenGroupMessage = openGroupServerID != null // Parse the envelope @@ -64,17 +64,17 @@ object MessageReceiver { } else { when (envelope.type) { SignalServiceProtos.Envelope.Type.UNIDENTIFIED_SENDER -> { - val userX25519KeyPair = MessagingConfiguration.shared.storage.getUserX25519KeyPair() + val userX25519KeyPair = MessagingModuleConfiguration.shared.storage.getUserX25519KeyPair() val decryptionResult = MessageReceiverDecryption.decryptWithSessionProtocol(ciphertext.toByteArray(), userX25519KeyPair) plaintext = decryptionResult.first sender = decryptionResult.second } SignalServiceProtos.Envelope.Type.CLOSED_GROUP_CIPHERTEXT -> { val hexEncodedGroupPublicKey = envelope.source - if (hexEncodedGroupPublicKey == null || !MessagingConfiguration.shared.storage.isClosedGroup(hexEncodedGroupPublicKey)) { + if (hexEncodedGroupPublicKey == null || !MessagingModuleConfiguration.shared.storage.isClosedGroup(hexEncodedGroupPublicKey)) { throw Error.InvalidGroupPublicKey } - val encryptionKeyPairs = MessagingConfiguration.shared.storage.getClosedGroupEncryptionKeyPairs(hexEncodedGroupPublicKey) + val encryptionKeyPairs = MessagingModuleConfiguration.shared.storage.getClosedGroupEncryptionKeyPairs(hexEncodedGroupPublicKey) if (encryptionKeyPairs.isEmpty()) { throw Error.NoGroupKeyPair } // Loop through all known group key pairs in reverse order (i.e. try the latest key pair first (which'll more than // likely be the one we want) but try older ones in case that didn't work) diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverDecryption.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverDecryption.kt index 2474d75ba5..6c0fb5953e 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverDecryption.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverDecryption.kt @@ -1,11 +1,11 @@ package org.session.libsession.messaging.sending_receiving -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsignal.libsignal.ecc.ECKeyPair object MessageReceiverDecryption { internal fun decryptWithSessionProtocol(ciphertext: ByteArray, x25519KeyPair: ECKeyPair): Pair { - return MessagingConfiguration.shared.sessionProtocol.decrypt(ciphertext, x25519KeyPair) + return MessagingModuleConfiguration.shared.sessionProtocol.decrypt(ciphertext, x25519KeyPair) } } \ No newline at end of file diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt index 567b4ad021..44d3013b13 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageReceiverHandler.kt @@ -1,7 +1,7 @@ package org.session.libsession.messaging.sending_receiving import android.text.TextUtils -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.jobs.AttachmentDownloadJob import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.messages.Message @@ -35,7 +35,7 @@ import java.util.* import kotlin.collections.ArrayList internal fun MessageReceiver.isBlock(publicKey: String): Boolean { - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context val recipient = Recipient.from(context, Address.fromSerialized(publicKey), false) return recipient.isBlocked } @@ -53,7 +53,7 @@ fun MessageReceiver.handle(message: Message, proto: SignalServiceProtos.Content, } private fun MessageReceiver.handleReadReceipt(message: ReadReceipt) { - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context SSKEnvironment.shared.readReceiptManager.processReadReceipts(context, message.sender!!, message.timestamps!!, message.receivedTimestamp!!) } @@ -65,23 +65,23 @@ private fun MessageReceiver.handleTypingIndicator(message: TypingIndicator) { } fun MessageReceiver.showTypingIndicatorIfNeeded(senderPublicKey: String) { - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context val address = Address.fromSerialized(senderPublicKey) - val threadID = MessagingConfiguration.shared.storage.getThreadIdFor(address) ?: return + val threadID = MessagingModuleConfiguration.shared.storage.getThreadIdFor(address) ?: return SSKEnvironment.shared.typingIndicators.didReceiveTypingStartedMessage(context, threadID, address, 1) } fun MessageReceiver.hideTypingIndicatorIfNeeded(senderPublicKey: String) { - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context val address = Address.fromSerialized(senderPublicKey) - val threadID = MessagingConfiguration.shared.storage.getThreadIdFor(address) ?: return + val threadID = MessagingModuleConfiguration.shared.storage.getThreadIdFor(address) ?: return SSKEnvironment.shared.typingIndicators.didReceiveTypingStoppedMessage(context, threadID, address, 1, false) } fun MessageReceiver.cancelTypingIndicatorsIfNeeded(senderPublicKey: String) { - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context val address = Address.fromSerialized(senderPublicKey) - val threadID = MessagingConfiguration.shared.storage.getThreadIdFor(address) ?: return + val threadID = MessagingModuleConfiguration.shared.storage.getThreadIdFor(address) ?: return SSKEnvironment.shared.typingIndicators.didReceiveIncomingMessage(context, threadID, address, 1) } @@ -99,7 +99,7 @@ private fun MessageReceiver.handleDataExtractionNotification(message: DataExtrac // we don't handle data extraction messages for groups (they shouldn't be sent, but in case we filter them here too) if (message.groupPublicKey != null) return - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val senderPublicKey = message.sender!! val notification: DataExtractionNotificationInfoMessage = when(message.kind) { is DataExtractionNotification.Kind.Screenshot -> DataExtractionNotificationInfoMessage(DataExtractionNotificationInfoMessage.Kind.SCREENSHOT) @@ -112,8 +112,8 @@ private fun MessageReceiver.handleDataExtractionNotification(message: DataExtrac // Configuration message handling private fun MessageReceiver.handleConfigurationMessage(message: ConfigurationMessage) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage if (TextSecurePreferences.getConfigurationMessageSynced(context) && !TextSecurePreferences.shouldUpdateProfile(context, message.sentTimestamp!!)) return val userPublicKey = storage.getUserPublicKey() if (userPublicKey == null || message.sender != storage.getUserPublicKey()) return @@ -146,8 +146,8 @@ private fun MessageReceiver.handleConfigurationMessage(message: ConfigurationMes } fun MessageReceiver.handleVisibleMessage(message: VisibleMessage, proto: SignalServiceProtos.Content, openGroupID: String?) { - val storage = MessagingConfiguration.shared.storage - val context = MessagingConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context // Update profile if needed val newProfile = message.profile if (newProfile != null) { @@ -180,10 +180,10 @@ fun MessageReceiver.handleVisibleMessage(message: VisibleMessage, proto: SignalS if (message.quote != null && proto.dataMessage.hasQuote()) { val quote = proto.dataMessage.quote val author = Address.fromSerialized(quote.author) - val messageInfo = MessagingConfiguration.shared.messageDataProvider.getMessageForQuote(quote.id, author) + val messageInfo = MessagingModuleConfiguration.shared.messageDataProvider.getMessageForQuote(quote.id, author) if (messageInfo != null) { - val attachments = if (messageInfo.second) MessagingConfiguration.shared.messageDataProvider.getAttachmentsAndLinkPreviewFor(messageInfo.first) else ArrayList() - quoteModel = QuoteModel(quote.id, author, MessagingConfiguration.shared.messageDataProvider.getMessageBodyFor(quote.id, quote.author), false, attachments) + val attachments = if (messageInfo.second) MessagingModuleConfiguration.shared.messageDataProvider.getAttachmentsAndLinkPreviewFor(messageInfo.first) else ArrayList() + quoteModel = QuoteModel(quote.id, author, MessagingModuleConfiguration.shared.messageDataProvider.getMessageBodyFor(quote.id, quote.author), false, attachments) } else { quoteModel = QuoteModel(quote.id, author, quote.text, true, PointerAttachment.forPointers(proto.dataMessage.quote.attachmentsList)) } @@ -251,8 +251,8 @@ private fun MessageReceiver.handleNewClosedGroup(message: ClosedGroupControlMess // Parameter @sender:String is just for inserting incoming info message private fun handleNewClosedGroup(sender: String, sentTimestamp: Long, groupPublicKey: String, name: String, encryptionKeyPair: ECKeyPair, members: List, admins: List, formationTimestamp: Long) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage // Create the group val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) if (storage.getGroup(groupID) != null) { @@ -283,7 +283,7 @@ private fun handleNewClosedGroup(sender: String, sentTimestamp: Long, groupPubli private fun MessageReceiver.handleClosedGroupEncryptionKeyPair(message: ClosedGroupControlMessage) { // Prepare - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val senderPublicKey = message.sender ?: return val kind = message.kind!! as? ClosedGroupControlMessage.Kind.EncryptionKeyPair ?: return val groupPublicKey = kind.publicKey?.toByteArray()?.toHexString() ?: message.groupPublicKey ?: return @@ -321,8 +321,8 @@ private fun MessageReceiver.handleClosedGroupEncryptionKeyPair(message: ClosedGr } private fun MessageReceiver.handleClosedGroupNameChanged(message: ClosedGroupControlMessage) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = TextSecurePreferences.getLocalNumber(context) val senderPublicKey = message.sender ?: return val kind = message.kind!! as? ClosedGroupControlMessage.Kind.NameChange ?: return @@ -357,8 +357,8 @@ private fun MessageReceiver.handleClosedGroupNameChanged(message: ClosedGroupCon } private fun MessageReceiver.handleClosedGroupMembersAdded(message: ClosedGroupControlMessage) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! val senderPublicKey = message.sender ?: return val kind = message.kind!! as? ClosedGroupControlMessage.Kind.MembersAdded ?: return @@ -404,8 +404,8 @@ private fun MessageReceiver.handleClosedGroupMembersAdded(message: ClosedGroupCo } private fun MessageReceiver.handleClosedGroupMembersRemoved(message: ClosedGroupControlMessage) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! val senderPublicKey = message.sender ?: return val kind = message.kind!! as? ClosedGroupControlMessage.Kind.MembersRemoved ?: return @@ -463,8 +463,8 @@ private fun MessageReceiver.handleClosedGroupMembersRemoved(message: ClosedGroup } private fun MessageReceiver.handleClosedGroupMemberLeft(message: ClosedGroupControlMessage) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val senderPublicKey = message.sender ?: return val userPublicKey = storage.getUserPublicKey()!! if (message.kind!! !is ClosedGroupControlMessage.Kind.MemberLeft) return @@ -528,7 +528,7 @@ private fun isValidGroupUpdate(group: GroupRecord, } fun MessageReceiver.disableLocalGroupAndUnsubscribe(groupPublicKey: String, groupID: String, userPublicKey: String) { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage storage.removeClosedGroupPublicKey(groupPublicKey) // Remove the key pairs storage.removeAllClosedGroupEncryptionKeyPairs(groupPublicKey) diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt index 3847e70659..20f860c18c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt @@ -2,7 +2,7 @@ package org.session.libsession.messaging.sending_receiving import nl.komponents.kovenant.Promise import nl.komponents.kovenant.deferred -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.jobs.MessageSendJob import org.session.libsession.messaging.jobs.NotifyPNServerJob @@ -12,8 +12,8 @@ import org.session.libsession.messaging.messages.control.ClosedGroupControlMessa import org.session.libsession.messaging.messages.control.ConfigurationMessage import org.session.libsession.messaging.messages.control.ExpirationTimerUpdate import org.session.libsession.messaging.messages.visible.* -import org.session.libsession.messaging.opengroups.OpenGroupAPI -import org.session.libsession.messaging.opengroups.OpenGroupMessage +import org.session.libsession.messaging.open_groups.OpenGroupAPI +import org.session.libsession.messaging.open_groups.OpenGroupMessage import org.session.libsession.messaging.threads.Address import org.session.libsession.messaging.utilities.MessageWrapper import org.session.libsession.snode.RawResponsePromise @@ -72,7 +72,7 @@ object MessageSender { private fun sendToSnodeDestination(destination: Destination, message: Message, isSyncMessage: Boolean = false): Promise { val deferred = deferred() val promise = deferred.promise - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey() // Set the timestamp, sender and recipient message.sentTimestamp ?: run { message.sentTimestamp = System.currentTimeMillis() } /* Visible messages will already have their sent timestamp set */ @@ -125,7 +125,7 @@ object MessageSender { when (destination) { is Destination.Contact -> ciphertext = MessageSenderEncryption.encryptWithSessionProtocol(plaintext, destination.publicKey) is Destination.ClosedGroup -> { - val encryptionKeyPair = MessagingConfiguration.shared.storage.getLatestClosedGroupEncryptionKeyPair(destination.groupPublicKey)!! + val encryptionKeyPair = MessagingModuleConfiguration.shared.storage.getLatestClosedGroupEncryptionKeyPair(destination.groupPublicKey)!! ciphertext = MessageSenderEncryption.encryptWithSessionProtocol(plaintext, encryptionKeyPair.hexEncodedPublicKey) } is Destination.OpenGroup -> throw Error.PreconditionFailure("Destination should not be open groups!") @@ -195,7 +195,7 @@ object MessageSender { // Open Groups private fun sendToOpenGroupDestination(destination: Destination, message: Message): Promise { val deferred = deferred() - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage message.sentTimestamp ?: run { message.sentTimestamp = System.currentTimeMillis() } message.sender = storage.getUserPublicKey() // Set the failure handler (need it here already for precondition failure handling) @@ -239,7 +239,7 @@ object MessageSender { // Result Handling fun handleSuccessfulMessageSend(message: Message, destination: Destination, isSyncMessage: Boolean = false) { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! val messageId = storage.getMessageIdInDatabase(message.sentTimestamp!!, message.sender?:userPublicKey) ?: return // Ignore future self-sends @@ -267,7 +267,7 @@ object MessageSender { } fun handleFailedMessageSend(message: Message, error: Exception) { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! storage.setErrorMessage(message.sentTimestamp!!, message.sender?:userPublicKey, error) } @@ -275,7 +275,7 @@ object MessageSender { // Convenience @JvmStatic fun send(message: VisibleMessage, address: Address, attachments: List, quote: SignalQuote?, linkPreview: SignalLinkPreview?) { - val dataProvider = MessagingConfiguration.shared.messageDataProvider + val dataProvider = MessagingModuleConfiguration.shared.messageDataProvider val attachmentIDs = dataProvider.getAttachmentIDsFor(message.id!!) message.attachmentIDs.addAll(attachmentIDs) message.quote = Quote.from(quote) @@ -293,7 +293,7 @@ object MessageSender { @JvmStatic fun send(message: Message, address: Address) { - val threadID = MessagingConfiguration.shared.storage.getOrCreateThreadIdFor(address) + val threadID = MessagingModuleConfiguration.shared.storage.getOrCreateThreadIdFor(address) message.threadID = threadID val destination = Destination.from(address) val job = MessageSendJob(message, destination) @@ -301,13 +301,13 @@ object MessageSender { } fun sendNonDurably(message: VisibleMessage, attachments: List, address: Address): Promise { - val attachmentIDs = MessagingConfiguration.shared.messageDataProvider.getAttachmentIDsFor(message.id!!) + val attachmentIDs = MessagingModuleConfiguration.shared.messageDataProvider.getAttachmentIDsFor(message.id!!) message.attachmentIDs.addAll(attachmentIDs) return sendNonDurably(message, address) } fun sendNonDurably(message: Message, address: Address): Promise { - val threadID = MessagingConfiguration.shared.storage.getOrCreateThreadIdFor(address) + val threadID = MessagingModuleConfiguration.shared.storage.getOrCreateThreadIdFor(address) message.threadID = threadID val destination = Destination.from(address) return send(message, destination) diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderClosedGroup.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderClosedGroup.kt index bcd824f3a5..427bf4b832 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderClosedGroup.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderClosedGroup.kt @@ -5,7 +5,7 @@ package org.session.libsession.messaging.sending_receiving import com.google.protobuf.ByteString import nl.komponents.kovenant.Promise import nl.komponents.kovenant.deferred -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.messages.control.ClosedGroupControlMessage import org.session.libsession.messaging.sending_receiving.MessageSender.Error import org.session.libsession.messaging.sending_receiving.notifications.PushNotificationAPI @@ -32,8 +32,8 @@ fun MessageSender.create(name: String, members: Collection): Promise() ThreadUtils.queue { // Prepare - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! val membersAsData = members.map { ByteString.copyFrom(Hex.fromStringCondensed(it)) } // Generate the group's public key @@ -72,8 +72,8 @@ fun MessageSender.create(name: String, members: Collection): Promise, name: String) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: run { Log.d("Loki", "Can't update nonexistent closed group.") @@ -90,8 +90,8 @@ fun MessageSender.update(groupPublicKey: String, members: List, name: St } fun MessageSender.setName(groupPublicKey: String, newName: String) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: run { Log.d("Loki", "Can't change name for nonexistent closed group.") @@ -114,8 +114,8 @@ fun MessageSender.setName(groupPublicKey: String, newName: String) { } fun MessageSender.addMembers(groupPublicKey: String, membersToAdd: List) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: run { Log.d("Loki", "Can't add members to nonexistent closed group.") @@ -157,8 +157,8 @@ fun MessageSender.addMembers(groupPublicKey: String, membersToAdd: List) } fun MessageSender.removeMembers(groupPublicKey: String, membersToRemove: List) { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: run { @@ -198,8 +198,8 @@ fun MessageSender.removeMembers(groupPublicKey: String, membersToRemove: List { val deferred = deferred() ThreadUtils.queue { - val context = MessagingConfiguration.shared.context - val storage = MessagingConfiguration.shared.storage + val context = MessagingModuleConfiguration.shared.context + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = TextSecurePreferences.getLocalNumber(context)!! val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: return@queue deferred.reject(Error.NoThread) @@ -230,7 +230,7 @@ fun MessageSender.leave(groupPublicKey: String, notifyUser: Boolean = true): Pro fun MessageSender.generateAndSendNewEncryptionKeyPair(groupPublicKey: String, targetMembers: Collection) { // Prepare - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: run { @@ -279,7 +279,7 @@ fun MessageSender.sendEncryptionKeyPair(groupPublicKey: String, newKeyPair: ECKe } fun MessageSender.sendLatestEncryptionKeyPair(publicKey: String, groupPublicKey: String) { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val groupID = GroupUtil.doubleEncodeGroupID(groupPublicKey) val group = storage.getGroup(groupID) ?: run { Log.d("Loki", "Can't send encryption key pair for nonexistent closed group.") diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderEncryption.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderEncryption.kt index a108724e9c..c96fc82b16 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderEncryption.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSenderEncryption.kt @@ -5,7 +5,7 @@ import com.goterl.lazycode.lazysodium.SodiumAndroid import com.goterl.lazycode.lazysodium.interfaces.Box import com.goterl.lazycode.lazysodium.interfaces.Sign -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.sending_receiving.MessageSender.Error import org.session.libsession.utilities.KeyPairUtilities @@ -26,7 +26,7 @@ object MessageSenderEncryption { * @return the encrypted message. */ internal fun encryptWithSessionProtocol(plaintext: ByteArray, recipientHexEncodedX25519PublicKey: String): ByteArray{ - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context val userED25519KeyPair = KeyPairUtilities.getUserED25519KeyPair(context) ?: throw Error.NoUserED25519KeyPair val recipientX25519PublicKey = Hex.fromStringCondensed(recipientHexEncodedX25519PublicKey.removing05PrefixIfNeeded()) diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/DatabaseAttachment.java b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/DatabaseAttachment.java index 7253cf31e5..aba155f160 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/DatabaseAttachment.java +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/attachments/DatabaseAttachment.java @@ -4,7 +4,7 @@ import android.net.Uri; import androidx.annotation.Nullable; -import org.session.libsession.messaging.MessagingConfiguration; +import org.session.libsession.messaging.MessagingModuleConfiguration; public class DatabaseAttachment extends Attachment { @@ -33,7 +33,7 @@ public class DatabaseAttachment extends Attachment { @Nullable public Uri getDataUri() { if (hasData) { - return MessagingConfiguration.shared.getStorage().getAttachmentDataUri(attachmentId); + return MessagingModuleConfiguration.shared.getStorage().getAttachmentDataUri(attachmentId); } else { return null; } @@ -43,7 +43,7 @@ public class DatabaseAttachment extends Attachment { @Nullable public Uri getThumbnailUri() { if (hasThumbnail) { - return MessagingConfiguration.shared.getStorage().getAttachmentThumbnailUri(attachmentId); + return MessagingModuleConfiguration.shared.getStorage().getAttachmentThumbnailUri(attachmentId); } else { return null; } diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/PushNotificationAPI.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/PushNotificationAPI.kt index ed0f771498..76a93ac344 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/PushNotificationAPI.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/notifications/PushNotificationAPI.kt @@ -5,7 +5,7 @@ import nl.komponents.kovenant.functional.map import okhttp3.MediaType import okhttp3.Request import okhttp3.RequestBody -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.snode.OnionRequestAPI import org.session.libsession.utilities.TextSecurePreferences import org.session.libsignal.service.loki.utilities.retryIfNeeded @@ -14,7 +14,7 @@ import org.session.libsignal.utilities.logging.Log @SuppressLint("StaticFieldLeak") object PushNotificationAPI { - val context = MessagingConfiguration.shared.context + val context = MessagingModuleConfiguration.shared.context val server = "https://live.apns.getsession.org" val serverPublicKey = "642a6585919742e5a2d4dc51244964fbcd8bcab2b75612407de58b810740d049" private val maxRetryCount = 4 @@ -50,8 +50,8 @@ object PushNotificationAPI { } } // Unsubscribe from all closed groups - val allClosedGroupPublicKeys = MessagingConfiguration.shared.storage.getAllClosedGroupPublicKeys() - val userPublicKey = MessagingConfiguration.shared.storage.getUserPublicKey()!! + val allClosedGroupPublicKeys = MessagingModuleConfiguration.shared.storage.getAllClosedGroupPublicKeys() + val userPublicKey = MessagingModuleConfiguration.shared.storage.getUserPublicKey()!! allClosedGroupPublicKeys.forEach { closedGroup -> performOperation(ClosedGroupOperation.Unsubscribe, closedGroup, userPublicKey) } @@ -80,7 +80,7 @@ object PushNotificationAPI { } } // Subscribe to all closed groups - val allClosedGroupPublicKeys = MessagingConfiguration.shared.storage.getAllClosedGroupPublicKeys() + val allClosedGroupPublicKeys = MessagingModuleConfiguration.shared.storage.getAllClosedGroupPublicKeys() allClosedGroupPublicKeys.forEach { closedGroup -> performOperation(ClosedGroupOperation.Subscribe, closedGroup, publicKey) } diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/ClosedGroupPoller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/ClosedGroupPoller.kt index b78c382658..e6d68911d3 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/ClosedGroupPoller.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/ClosedGroupPoller.kt @@ -4,7 +4,7 @@ import android.os.Handler import nl.komponents.kovenant.Promise import nl.komponents.kovenant.functional.bind import nl.komponents.kovenant.functional.map -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.jobs.MessageReceiveJob import org.session.libsession.messaging.utilities.MessageWrapper @@ -59,7 +59,7 @@ class ClosedGroupPoller { // region Private API private fun poll(): List> { if (!isPolling) { return listOf() } - val publicKeys = MessagingConfiguration.shared.storage.getAllActiveClosedGroupPublicKeys() + val publicKeys = MessagingModuleConfiguration.shared.storage.getAllActiveClosedGroupPublicKeys() return publicKeys.map { publicKey -> val promise = SnodeAPI.getSwarm(publicKey).bind { swarm -> val snode = swarm.getRandomElementOrNull() ?: throw InsufficientSnodesException() // Should be cryptographically secure @@ -67,7 +67,7 @@ class ClosedGroupPoller { SnodeAPI.getRawMessages(snode, publicKey).map {SnodeAPI.parseRawMessagesResponse(it, snode, publicKey) } } promise.successBackground { messages -> - if (!MessagingConfiguration.shared.storage.isGroupActive(publicKey)) { + if (!MessagingModuleConfiguration.shared.storage.isGroupActive(publicKey)) { // ignore inactive group's messages return@successBackground } diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt index d213b3b6a6..b94cb07e21 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupPoller.kt @@ -3,12 +3,12 @@ package org.session.libsession.messaging.sending_receiving.pollers import com.google.protobuf.ByteString import nl.komponents.kovenant.Promise import nl.komponents.kovenant.deferred -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.jobs.MessageReceiveJob -import org.session.libsession.messaging.opengroups.OpenGroup -import org.session.libsession.messaging.opengroups.OpenGroupAPI -import org.session.libsession.messaging.opengroups.OpenGroupMessage +import org.session.libsession.messaging.open_groups.OpenGroup +import org.session.libsession.messaging.open_groups.OpenGroupAPI +import org.session.libsession.messaging.open_groups.OpenGroupMessage import org.session.libsignal.service.internal.push.SignalServiceProtos.* import org.session.libsignal.utilities.logging.Log import org.session.libsignal.utilities.successBackground @@ -26,7 +26,7 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ private val cancellableFutures = mutableListOf>() // region Convenience - private val userHexEncodedPublicKey = MessagingConfiguration.shared.storage.getUserPublicKey() ?: "" + private val userHexEncodedPublicKey = MessagingModuleConfiguration.shared.storage.getUserPublicKey() ?: "" private var displayNameUpdates = setOf() // endregion @@ -79,7 +79,7 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ fun generateDisplayName(rawDisplayName: String): String { return "$rawDisplayName (...${senderPublicKey.takeLast(8)})" } - val senderDisplayName = MessagingConfiguration.shared.storage.getOpenGroupDisplayName(senderPublicKey, openGroup.channel, openGroup.server) ?: generateDisplayName(message.displayName) + val senderDisplayName = MessagingModuleConfiguration.shared.storage.getOpenGroupDisplayName(senderPublicKey, openGroup.channel, openGroup.server) ?: generateDisplayName(message.displayName) val id = openGroup.id.toByteArray() // Main message val dataMessageProto = DataMessage.newBuilder() @@ -203,7 +203,7 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ for (pair in mapping.entries) { if (pair.key == userHexEncodedPublicKey) continue val senderDisplayName = "${pair.value} (...${pair.key.substring(pair.key.count() - 8)})" - MessagingConfiguration.shared.storage.setOpenGroupDisplayName(pair.key, openGroup.channel, openGroup.server, senderDisplayName) + MessagingModuleConfiguration.shared.storage.setOpenGroupDisplayName(pair.key, openGroup.channel, openGroup.server, senderDisplayName) } }.fail { displayNameUpdates = displayNameUpdates.union(hexEncodedPublicKeys) @@ -212,9 +212,9 @@ class OpenGroupPoller(private val openGroup: OpenGroup, private val executorServ private fun pollForDeletedMessages() { OpenGroupAPI.getDeletedMessageServerIDs(openGroup.channel, openGroup.server).success { deletedMessageServerIDs -> - val deletedMessageIDs = deletedMessageServerIDs.mapNotNull { MessagingConfiguration.shared.messageDataProvider.getMessageID(it) } + val deletedMessageIDs = deletedMessageServerIDs.mapNotNull { MessagingModuleConfiguration.shared.messageDataProvider.getMessageID(it) } deletedMessageIDs.forEach { - MessagingConfiguration.shared.messageDataProvider.deleteMessage(it) + MessagingModuleConfiguration.shared.messageDataProvider.deleteMessage(it) } }.fail { Log.d("Loki", "Failed to get deleted messages for group chat with ID: ${openGroup.channel} on server: ${openGroup.server}.") diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt index 80db18b7e6..d8187bad03 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/Poller.kt @@ -2,7 +2,7 @@ package org.session.libsession.messaging.sending_receiving.pollers import nl.komponents.kovenant.* import nl.komponents.kovenant.functional.bind -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.jobs.JobQueue import org.session.libsession.messaging.jobs.MessageReceiveJob import org.session.libsession.messaging.utilities.MessageWrapper @@ -17,7 +17,7 @@ import java.util.* private class PromiseCanceledException : Exception("Promise canceled.") class Poller { - var userPublicKey = MessagingConfiguration.shared.storage.getUserPublicKey() ?: "" + var userPublicKey = MessagingModuleConfiguration.shared.storage.getUserPublicKey() ?: "" private var hasStarted: Boolean = false private val usedSnodes: MutableSet = mutableSetOf() public var isCaughtUp = false diff --git a/libsession/src/main/java/org/session/libsession/messaging/threads/GroupRecord.kt b/libsession/src/main/java/org/session/libsession/messaging/threads/GroupRecord.kt index 5e09d30ee5..ac12a60e72 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/threads/GroupRecord.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/threads/GroupRecord.kt @@ -13,6 +13,7 @@ class GroupRecord( ) { var members: List
= LinkedList
() var admins: List
= LinkedList
() + fun getId(): ByteArray { return try { GroupUtil.getDecodedGroupIDAsData(encodedId) diff --git a/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/Recipient.java b/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/Recipient.java index 1c9463ec38..9a85c75c7c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/Recipient.java +++ b/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/Recipient.java @@ -28,7 +28,7 @@ import androidx.annotation.Nullable; import com.annimon.stream.function.Consumer; import org.greenrobot.eventbus.EventBus; -import org.session.libsession.messaging.MessagingConfiguration; +import org.session.libsession.messaging.MessagingModuleConfiguration; import org.session.libsession.messaging.avatars.TransparentContactPhoto; import org.session.libsession.messaging.threads.Address; import org.session.libsession.messaging.threads.GroupRecord; @@ -286,7 +286,7 @@ public class Recipient implements RecipientModifiedListener { } public synchronized @Nullable String getName() { - String displayName = MessagingConfiguration.shared.getStorage().getDisplayName(this.address.toString()); + String displayName = MessagingModuleConfiguration.shared.getStorage().getDisplayName(this.address.toString()); if (displayName != null) { return displayName; } if (this.name == null && isMmsGroupRecipient()) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/RecipientProvider.java b/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/RecipientProvider.java index e42363acd1..2e634aa957 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/RecipientProvider.java +++ b/libsession/src/main/java/org/session/libsession/messaging/threads/recipients/RecipientProvider.java @@ -23,7 +23,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.session.libsession.messaging.MessagingConfiguration; +import org.session.libsession.messaging.MessagingModuleConfiguration; import org.session.libsignal.libsignal.util.guava.Optional; import org.session.libsession.utilities.color.MaterialColor; import org.session.libsession.messaging.threads.Address; @@ -115,7 +115,7 @@ class RecipientProvider { private @NonNull RecipientDetails getIndividualRecipientDetails(Context context, @NonNull Address address, Optional settings) { if (!settings.isPresent()) { - settings = Optional.fromNullable(MessagingConfiguration.shared.getStorage().getRecipientSettings(address)); + settings = Optional.fromNullable(MessagingModuleConfiguration.shared.getStorage().getRecipientSettings(address)); } if (!settings.isPresent() && STATIC_DETAILS.containsKey(address.serialize())) { @@ -130,12 +130,12 @@ class RecipientProvider { private @NonNull RecipientDetails getGroupRecipientDetails(Context context, Address groupId, Optional groupRecord, Optional settings, boolean asynchronous) { if (!groupRecord.isPresent()) { - groupRecord = Optional.fromNullable(MessagingConfiguration.shared.getStorage().getGroup(groupId.toGroupString())); + groupRecord = Optional.fromNullable(MessagingModuleConfiguration.shared.getStorage().getGroup(groupId.toGroupString())); } if (!settings.isPresent()) { - settings = Optional.fromNullable(MessagingConfiguration.shared.getStorage().getRecipientSettings(groupId)); + settings = Optional.fromNullable(MessagingModuleConfiguration.shared.getStorage().getRecipientSettings(groupId)); } if (groupRecord.isPresent()) { diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/ClosedGroupUpdateMessageBuilder.kt similarity index 80% rename from libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt rename to libsession/src/main/java/org/session/libsession/messaging/utilities/ClosedGroupUpdateMessageBuilder.kt index 4239c8bdb2..3393d50b99 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageBuilder.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/ClosedGroupUpdateMessageBuilder.kt @@ -2,39 +2,38 @@ package org.session.libsession.messaging.utilities import android.content.Context import org.session.libsession.R -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.sending_receiving.dataextraction.DataExtractionNotificationInfoMessage import org.session.libsession.utilities.ExpirationUtil -import org.session.libsignal.service.api.messages.SignalServiceGroup -object UpdateMessageBuilder { +object ClosedGroupUpdateMessageBuilder { - fun buildGroupUpdateMessage(context: Context, updateMessageData: UpdateMessageData, sender: String? = null, isOutgoing: Boolean = false): String { + fun buildGroupUpdateMessage(context: Context, updateMessageData: ClosedGroupUpdateMessageData, sender: String? = null, isOutgoing: Boolean = false): String { var message = "" val updateData = updateMessageData.kind ?: return message if (!isOutgoing && sender == null) return message val senderName: String = if (!isOutgoing) { - MessagingConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender + MessagingModuleConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender } else { context.getString(R.string.MessageRecord_you) } when (updateData) { - is UpdateMessageData.Kind.GroupCreation -> { + is ClosedGroupUpdateMessageData.Kind.GroupCreation -> { message = if (isOutgoing) { context.getString(R.string.MessageRecord_you_created_a_new_group) } else { context.getString(R.string.MessageRecord_s_added_you_to_the_group, senderName) } } - is UpdateMessageData.Kind.GroupNameChange -> { + is ClosedGroupUpdateMessageData.Kind.GroupNameChange -> { message = if (isOutgoing) { context.getString(R.string.MessageRecord_you_renamed_the_group_to_s, updateData.name) } else { context.getString(R.string.MessageRecord_s_renamed_the_group_to_s, senderName, updateData.name) } } - is UpdateMessageData.Kind.GroupMemberAdded -> { + is ClosedGroupUpdateMessageData.Kind.GroupMemberAdded -> { val members = updateData.updatedMembers.joinToString(", ") { - MessagingConfiguration.shared.storage.getDisplayNameForRecipient(it) ?: it + MessagingModuleConfiguration.shared.storage.getDisplayNameForRecipient(it) ?: it } message = if (isOutgoing) { context.getString(R.string.MessageRecord_you_added_s_to_the_group, members) @@ -42,8 +41,8 @@ object UpdateMessageBuilder { context.getString(R.string.MessageRecord_s_added_s_to_the_group, senderName, members) } } - is UpdateMessageData.Kind.GroupMemberRemoved -> { - val storage = MessagingConfiguration.shared.storage + is ClosedGroupUpdateMessageData.Kind.GroupMemberRemoved -> { + val storage = MessagingModuleConfiguration.shared.storage val userPublicKey = storage.getUserPublicKey()!! // 1st case: you are part of the removed members message = if (userPublicKey in updateData.updatedMembers) { @@ -64,7 +63,7 @@ object UpdateMessageBuilder { } } } - is UpdateMessageData.Kind.GroupMemberLeft -> { + is ClosedGroupUpdateMessageData.Kind.GroupMemberLeft -> { message = if (isOutgoing) { context.getString(R.string.MessageRecord_left_group) } else { @@ -78,7 +77,7 @@ object UpdateMessageBuilder { fun buildExpirationTimerMessage(context: Context, duration: Long, sender: String? = null, isOutgoing: Boolean = false): String { if (!isOutgoing && sender == null) return "" val senderName: String? = if (!isOutgoing) { - MessagingConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender + MessagingModuleConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender } else { context.getString(R.string.MessageRecord_you) } return if (duration <= 0) { if (isOutgoing) context.getString(R.string.MessageRecord_you_disabled_disappearing_messages) @@ -91,7 +90,7 @@ object UpdateMessageBuilder { } fun buildDataExtractionMessage(context: Context, kind: DataExtractionNotificationInfoMessage.Kind, sender: String? = null): String { - val senderName = MessagingConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender + val senderName = MessagingModuleConfiguration.shared.storage.getDisplayNameForRecipient(sender!!) ?: sender return when (kind) { DataExtractionNotificationInfoMessage.Kind.SCREENSHOT -> context.getString(R.string.MessageRecord_s_took_a_screenshot, senderName) diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageData.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/ClosedGroupUpdateMessageData.kt similarity index 70% rename from libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageData.kt rename to libsession/src/main/java/org/session/libsession/messaging/utilities/ClosedGroupUpdateMessageData.kt index 4285bab78e..47efd03a4c 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/utilities/UpdateMessageData.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/ClosedGroupUpdateMessageData.kt @@ -9,7 +9,7 @@ import org.session.libsignal.utilities.logging.Log import java.util.* // class used to save update messages details -class UpdateMessageData () { +class ClosedGroupUpdateMessageData () { var kind: Kind? = null @@ -41,22 +41,22 @@ class UpdateMessageData () { } companion object { - val TAG = UpdateMessageData::class.simpleName + val TAG = ClosedGroupUpdateMessageData::class.simpleName - fun buildGroupUpdate(type: SignalServiceGroup.Type, name: String, members: Collection): UpdateMessageData? { + fun buildGroupUpdate(type: SignalServiceGroup.Type, name: String, members: Collection): ClosedGroupUpdateMessageData? { return when(type) { - SignalServiceGroup.Type.CREATION -> UpdateMessageData(Kind.GroupCreation()) - SignalServiceGroup.Type.NAME_CHANGE -> UpdateMessageData(Kind.GroupNameChange(name)) - SignalServiceGroup.Type.MEMBER_ADDED -> UpdateMessageData(Kind.GroupMemberAdded(members)) - SignalServiceGroup.Type.MEMBER_REMOVED -> UpdateMessageData(Kind.GroupMemberRemoved(members)) - SignalServiceGroup.Type.QUIT -> UpdateMessageData(Kind.GroupMemberLeft()) + SignalServiceGroup.Type.CREATION -> ClosedGroupUpdateMessageData(Kind.GroupCreation()) + SignalServiceGroup.Type.NAME_CHANGE -> ClosedGroupUpdateMessageData(Kind.GroupNameChange(name)) + SignalServiceGroup.Type.MEMBER_ADDED -> ClosedGroupUpdateMessageData(Kind.GroupMemberAdded(members)) + SignalServiceGroup.Type.MEMBER_REMOVED -> ClosedGroupUpdateMessageData(Kind.GroupMemberRemoved(members)) + SignalServiceGroup.Type.QUIT -> ClosedGroupUpdateMessageData(Kind.GroupMemberLeft()) else -> null } } - fun fromJSON(json: String): UpdateMessageData? { + fun fromJSON(json: String): ClosedGroupUpdateMessageData? { return try { - JsonUtil.fromJson(json, UpdateMessageData::class.java) + JsonUtil.fromJson(json, ClosedGroupUpdateMessageData::class.java) } catch (e: JsonParseException) { Log.e(TAG, "${e.message}") null diff --git a/libsession/src/main/java/org/session/libsession/messaging/utilities/DotNetAPI.kt b/libsession/src/main/java/org/session/libsession/messaging/utilities/DotNetAPI.kt index d18527bfe5..562715a90a 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/utilities/DotNetAPI.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/utilities/DotNetAPI.kt @@ -6,10 +6,9 @@ import nl.komponents.kovenant.functional.map import nl.komponents.kovenant.then import okhttp3.* -import org.session.libsession.messaging.MessagingConfiguration +import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.snode.OnionRequestAPI -import org.session.libsession.snode.SnodeAPI -import org.session.libsession.messaging.fileserver.FileServerAPI +import org.session.libsession.messaging.file_server.FileServerAPI import org.session.libsignal.utilities.logging.Log import org.session.libsignal.utilities.DiffieHellman @@ -62,7 +61,7 @@ open class DotNetAPI { public data class UploadResult(val id: Long, val url: String, val digest: ByteArray?) fun getAuthToken(server: String): Promise { - val storage = MessagingConfiguration.shared.storage + val storage = MessagingModuleConfiguration.shared.storage val token = storage.getAuthToken(server) if (token != null) { return Promise.of(token) } // Avoid multiple token requests to the server by caching @@ -81,7 +80,7 @@ open class DotNetAPI { private fun requestNewAuthToken(server: String): Promise { Log.d("Loki", "Requesting auth token for server: $server.") - val userKeyPair = MessagingConfiguration.shared.storage.getUserKeyPair() ?: throw Error.Generic + val userKeyPair = MessagingModuleConfiguration.shared.storage.getUserKeyPair() ?: throw Error.Generic val parameters: Map = mapOf( "pubKey" to userKeyPair.first ) return execute(HTTPVerb.GET, server, "loki/v1/get_challenge", false, parameters).map { json -> try { @@ -107,7 +106,7 @@ open class DotNetAPI { private fun submitAuthToken(token: String, server: String): Promise { Log.d("Loki", "Submitting auth token for server: $server.") - val userPublicKey = MessagingConfiguration.shared.storage.getUserPublicKey() ?: throw Error.Generic + val userPublicKey = MessagingModuleConfiguration.shared.storage.getUserPublicKey() ?: throw Error.Generic val parameters = mapOf( "pubKey" to userPublicKey, "token" to token ) return execute(HTTPVerb.POST, server, "loki/v1/submit_challenge", false, parameters, isJSONRequired = false).map { token } } @@ -146,7 +145,7 @@ open class DotNetAPI { if (exception is HTTP.HTTPRequestFailedException) { val statusCode = exception.statusCode if (statusCode == 401 || statusCode == 403) { - MessagingConfiguration.shared.storage.setAuthToken(server, null) + MessagingModuleConfiguration.shared.storage.setAuthToken(server, null) throw Error.TokenExpired } } @@ -335,7 +334,7 @@ open class DotNetAPI { if (exception is HTTP.HTTPRequestFailedException) { val statusCode = exception.statusCode if (statusCode == 401 || statusCode == 403) { - MessagingConfiguration.shared.storage.setAuthToken(server, null) + MessagingModuleConfiguration.shared.storage.setAuthToken(server, null) } throw NonSuccessfulResponseCodeException("Request returned with status code ${exception.statusCode}.") } diff --git a/libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt b/libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt index 2cf6b18e6a..4447c494e5 100644 --- a/libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt +++ b/libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt @@ -6,7 +6,7 @@ import nl.komponents.kovenant.deferred import nl.komponents.kovenant.functional.bind import nl.komponents.kovenant.functional.map import okhttp3.Request -import org.session.libsession.messaging.fileserver.FileServerAPI +import org.session.libsession.messaging.file_server.FileServerAPI import org.session.libsession.utilities.AESGCM import org.session.libsignal.utilities.logging.Log import org.session.libsignal.utilities.Base64