diff --git a/app/src/main/res/layout/default_group_chip.xml b/app/src/main/res/layout/default_group_chip.xml index 4a1e228f9e..844898e885 100644 --- a/app/src/main/res/layout/default_group_chip.xml +++ b/app/src/main/res/layout/default_group_chip.xml @@ -4,8 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:theme="@style/Theme.MaterialComponents.DayNight" style="?attr/chipStyle" - app:textStartPadding="10dp" - app:textEndPadding="10dp" + app:chipStartPadding="6dp" android:layout_columnWeight="1" android:layout_marginHorizontal="2dp" tools:text="Main Group" diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt index 0c67cebc98..e7f45d2f03 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupAPIV2.kt @@ -17,6 +17,8 @@ import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.open_groups.OpenGroupAPIV2.Error import org.session.libsession.snode.OnionRequestAPI import org.session.libsession.utilities.AESGCM +import org.session.libsession.utilities.GroupUtil +import org.session.libsession.utilities.TextSecurePreferences import org.session.libsignal.service.loki.api.utilities.HTTP import org.session.libsignal.service.loki.api.utilities.HTTP.Verb.* import org.session.libsignal.service.loki.utilities.removing05PrefixIfNeeded @@ -29,13 +31,11 @@ import org.session.libsignal.utilities.logging.Log import org.whispersystems.curve25519.Curve25519 import java.util.* -typealias DeletionList = List - object OpenGroupAPIV2 { private val moderators: HashMap> = hashMapOf() // Server URL to (channel ID to set of moderator IDs) - const val DEFAULT_SERVER = "https://sog.ibolpap.finance" - private const val DEFAULT_SERVER_PUBLIC_KEY = "b464aa186530c97d6bcf663a3a3b7465a5f782beaa67c83bee99468824b4aa10" + const val DEFAULT_SERVER = "http://116.203.70.33" + private const val DEFAULT_SERVER_PUBLIC_KEY = "a03c383cf63c3c4efe67acc52112a6dd734b3a946b9545f488aaa93da7991238" val defaultRooms = MutableSharedFlow>(replay = 1) diff --git a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessageV2.kt b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessageV2.kt index 3ea79008ce..262c3d2a7b 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessageV2.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupMessageV2.kt @@ -62,8 +62,8 @@ data class OpenGroupMessageV2( return jsonMap } - fun toProto(): SignalServiceProtos.DataMessage = decode(base64EncodedData).let(PushTransportDetails::getStrippedPaddingMessageBody).let { bytes -> - SignalServiceProtos.DataMessage.parseFrom(bytes) + fun toProto(): SignalServiceProtos.Content = decode(base64EncodedData).let(PushTransportDetails::getStrippedPaddingMessageBody).let { bytes -> + SignalServiceProtos.Content.parseFrom(bytes) } } \ No newline at end of file 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 9df7423863..84afeff63b 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 @@ -262,7 +262,7 @@ object MessageSender { val openGroupMessage = OpenGroupMessageV2( sender = message.sender, sentTimestamp = message.sentTimestamp!!, - base64EncodedData = Base64.encodeBytes(PushTransportDetails.getPaddedMessageBody(proto.dataMessage!!.toByteArray())), + base64EncodedData = Base64.encodeBytes(proto.toByteArray()), ) OpenGroupAPIV2.send(openGroupMessage,room,server).success { diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt index c42c5e3ec7..93a960e4fe 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt @@ -170,7 +170,8 @@ fun MessageReceiver.handleVisibleMessage(message: VisibleMessage, proto: SignalS if (displayName.isNotEmpty()) { profileManager.setDisplayName(context, recipient, displayName) } - if (newProfile.profileKey?.isNotEmpty() == true && !MessageDigest.isEqual(recipient.profileKey, newProfile.profileKey)) { + if (newProfile.profileKey?.isNotEmpty() == true + && (recipient.profileKey == null || !MessageDigest.isEqual(recipient.profileKey, newProfile.profileKey))) { profileManager.setProfileKey(context, recipient, newProfile.profileKey!!) profileManager.setUnidentifiedAccessMode(context, recipient, Recipient.UnidentifiedAccessMode.UNKNOWN) val newUrl = newProfile.profilePictureURL diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupV2Poller.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupV2Poller.kt index 930af4f3e1..f43f75e8c0 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupV2Poller.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/pollers/OpenGroupV2Poller.kt @@ -90,16 +90,12 @@ class OpenGroupV2Poller(private val openGroups: List, private val e try { val senderPublicKey = message.sender!! // Main message - val dataMessageProto = message.toProto() - // Content - val content = SignalServiceProtos.Content.newBuilder() - content.dataMessage = dataMessageProto // Envelope val builder = SignalServiceProtos.Envelope.newBuilder() builder.type = SignalServiceProtos.Envelope.Type.SESSION_MESSAGE builder.source = senderPublicKey builder.sourceDevice = 1 - builder.content = content.build().toByteString() + builder.content = message.toProto().toByteString() builder.timestamp = message.sentTimestamp val envelope = builder.build() val job = MessageReceiveJob(envelope.toByteArray(), isBackgroundPoll, message.serverID, serverRoomId) 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 5a62a4361b..e6c969a272 100644 --- a/libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt +++ b/libsession/src/main/java/org/session/libsession/snode/OnionRequestAPI.kt @@ -79,7 +79,7 @@ object OnionRequestAPI { internal sealed class Destination { class Snode(val snode: org.session.libsignal.service.loki.Snode) : Destination() - class Server(val host: String, val target: String, val x25519PublicKey: String) : Destination() + class Server(val host: String, val target: String, val x25519PublicKey: String, val scheme: String, val port: Int) : Destination() } // region Private API @@ -461,7 +461,8 @@ object OnionRequestAPI { "method" to request.method(), "headers" to headers ) - val destination = Destination.Server(host, target, x25519PublicKey) + url.isHttps + val destination = Destination.Server(host, target, x25519PublicKey, url.scheme(), url.port()) return sendOnionRequest(destination, payload, isJSONRequired).recover { exception -> Log.d("Loki", "Couldn't reach server: $urlAsString due to error: $exception.") throw exception diff --git a/libsession/src/main/java/org/session/libsession/snode/OnionRequestEncryption.kt b/libsession/src/main/java/org/session/libsession/snode/OnionRequestEncryption.kt index 77de1c783c..c462e8f94f 100644 --- a/libsession/src/main/java/org/session/libsession/snode/OnionRequestEncryption.kt +++ b/libsession/src/main/java/org/session/libsession/snode/OnionRequestEncryption.kt @@ -70,7 +70,13 @@ object OnionRequestEncryption { payload = mutableMapOf( "destination" to rhs.snode.publicKeySet!!.ed25519Key ) } is OnionRequestAPI.Destination.Server -> { - payload = mutableMapOf( "host" to rhs.host, "target" to rhs.target, "method" to "POST" ) + payload = mutableMapOf( + "host" to rhs.host, + "target" to rhs.target, + "method" to "POST", + "protocol" to rhs.scheme, + "port" to rhs.port + ) } } payload["ephemeral_key"] = previousEncryptionResult.ephemeralPublicKey.toHexString()