Skip to content

Commit 1094568

Browse files
Fix missing json handling for official communities (#1475)
1 parent 12174d8 commit 1094568

File tree

2 files changed

+6
-55
lines changed

2 files changed

+6
-55
lines changed

app/src/main/java/org/session/libsession/messaging/MessagingModuleConfiguration.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.session.libsession.messaging
22

33
import android.content.Context
44
import dagger.hilt.android.qualifiers.ApplicationContext
5+
import kotlinx.serialization.json.Json
56
import org.session.libsession.database.MessageDataProvider
67
import org.session.libsession.database.StorageProtocol
78
import org.session.libsession.messaging.groups.GroupManagerV2
@@ -34,6 +35,7 @@ class MessagingModuleConfiguration @Inject constructor(
3435
val avatarUtils: AvatarUtils,
3536
val proStatusManager: ProStatusManager,
3637
val messageSendJobFactory: MessageSendJob.Factory,
38+
val json: Json,
3739
) {
3840

3941
companion object {

app/src/main/java/org/session/libsession/messaging/open_groups/OpenGroupApi.kt

Lines changed: 4 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import kotlinx.coroutines.GlobalScope
1010
import kotlinx.coroutines.flow.MutableSharedFlow
1111
import kotlinx.serialization.SerialName
1212
import kotlinx.serialization.Serializable
13+
import kotlinx.serialization.json.decodeFromStream
1314
import network.loki.messenger.libsession_util.ED25519
1415
import network.loki.messenger.libsession_util.Hash
1516
import network.loki.messenger.libsession_util.util.BlindKeyAPI
@@ -25,7 +26,6 @@ import org.session.libsession.snode.OnionResponse
2526
import org.session.libsession.snode.SnodeAPI
2627
import org.session.libsession.snode.utilities.asyncPromise
2728
import org.session.libsession.snode.utilities.await
28-
import org.session.libsession.utilities.TextSecurePreferences
2929
import org.session.libsignal.utilities.AccountId
3030
import org.session.libsignal.utilities.Base64.encodeBytes
3131
import org.session.libsignal.utilities.ByteArraySlice
@@ -46,15 +46,6 @@ import kotlin.collections.set
4646

4747
object OpenGroupApi {
4848
val defaultRooms = MutableSharedFlow<List<DefaultGroup>>(replay = 1)
49-
private val hasPerformedInitialPoll = mutableMapOf<String, Boolean>()
50-
private var hasUpdatedLastOpenDate = false
51-
private val timeSinceLastOpen by lazy {
52-
val context = MessagingModuleConfiguration.shared.context
53-
val lastOpenDate = TextSecurePreferences.getLastOpenTimeDate(context)
54-
val now = System.currentTimeMillis()
55-
now - lastOpenDate
56-
}
57-
5849
const val defaultServerPublicKey = "a03c383cf63c3c4efe67acc52112a6dd734b3a946b9545f488aaa93da7991238"
5950
const val legacyServerIP = "116.203.70.33"
6051
const val legacyDefaultServer = "http://116.203.70.33" // TODO: migrate all references to use new value
@@ -736,18 +727,6 @@ object OpenGroupApi {
736727
}
737728
}
738729

739-
fun getRoomInfo(roomToken: String, server: String): Promise<RoomInfoDetails, Exception> {
740-
val request = Request(
741-
verb = GET,
742-
room = null,
743-
server = server,
744-
endpoint = Endpoint.Room(roomToken)
745-
)
746-
return getResponseBody(request).map { response ->
747-
JsonUtil.fromJson(response, RoomInfoDetails::class.java)
748-
}
749-
}
750-
751730
private fun getAllRooms(): Promise<List<RoomInfoDetails>, Exception> {
752731
val request = Request(
753732
verb = GET,
@@ -756,10 +735,9 @@ object OpenGroupApi {
756735
endpoint = Endpoint.Rooms
757736
)
758737
return getResponseBody(request, signRequest = false).map { response ->
759-
val rawRooms = JsonUtil.fromJson(response, List::class.java) ?: throw Error.ParsingFailed
760-
rawRooms.mapNotNull {
761-
JsonUtil.fromJson(JsonUtil.toJson(it), RoomInfoDetails::class.java)
762-
}
738+
MessagingModuleConfiguration.shared.json
739+
.decodeFromStream<Array<RoomInfoDetails>>(response.inputStream())
740+
.toList()
763741
}
764742
}
765743

@@ -770,35 +748,6 @@ object OpenGroupApi {
770748
}
771749
}
772750

773-
fun getCapabilitiesAndRoomInfo(
774-
room: String,
775-
server: String
776-
): Promise<Pair<Capabilities, RoomInfoDetails>, Exception> {
777-
val requests = mutableListOf<BatchRequestInfo<*>>(
778-
BatchRequestInfo(
779-
request = BatchRequest(
780-
method = GET,
781-
path = "/capabilities"
782-
),
783-
endpoint = Endpoint.Capabilities,
784-
responseType = object : TypeReference<Capabilities>(){}
785-
),
786-
BatchRequestInfo(
787-
request = BatchRequest(
788-
method = GET,
789-
path = "/room/$room"
790-
),
791-
endpoint = Endpoint.Room(room),
792-
responseType = object : TypeReference<RoomInfoDetails>(){}
793-
)
794-
)
795-
return sequentialBatch(server, requests).map {
796-
val capabilities = it.firstOrNull()?.body as? Capabilities ?: throw Error.ParsingFailed
797-
val roomInfo = it.lastOrNull()?.body as? RoomInfoDetails ?: throw Error.ParsingFailed
798-
capabilities to roomInfo
799-
}
800-
}
801-
802751
fun sendDirectMessage(message: String, blindedAccountId: String, server: String): Promise<DirectMessage, Exception> {
803752
val request = Request(
804753
verb = POST,

0 commit comments

Comments
 (0)