Skip to content

Commit 0c2ff96

Browse files
SessionHero01ThomasSessionmpretty-cyro
authored
Bring 1.31.0 to dev (#1905)
* Adding logs to networking layer * Adding "Unban" functionality * Icons update * Adding "Unban" functionality * Updated icons * Lighter logs for requests * More logs * Menu string change * Adding "Unban" functionality * Updated icons * Lighter logs for requests * More logs * [Automated] Update translations from Crowdin * Updatd strings and new item ordering in menu * [Automated] Update translations from Crowdin * latest strings with bold * [Automated] Update translations from Crowdin * Fix crash on clearing onion request paths (#1902) --------- Co-authored-by: ThomasSession <thomas.r@getsession.org> Co-authored-by: ThomasSession <171472362+ThomasSession@users.noreply.github.com> Co-authored-by: mpretty-cyro <15862619+mpretty-cyro@users.noreply.github.com>
2 parents ebbaa8b + 3ea802c commit 0c2ff96

27 files changed

+257
-168
lines changed

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

Lines changed: 0 additions & 81 deletions
This file was deleted.

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import android.net.Uri
44
import dagger.assisted.Assisted
55
import dagger.assisted.AssistedFactory
66
import dagger.assisted.AssistedInject
7+
import kotlinx.serialization.Serializable
78
import org.thoughtcrime.securesms.api.ApiExecutorContext
9+
import org.thoughtcrime.securesms.api.http.HttpBody
810
import org.thoughtcrime.securesms.api.http.HttpResponse
11+
import okhttp3.MediaType
912

1013
class BanUserApi @AssistedInject constructor(
1114
@Assisted("user") private val userToBan: String,
@@ -17,6 +20,17 @@ class BanUserApi @AssistedInject constructor(
1720
override val httpEndpoint: String =
1821
"/user/${Uri.encode(userToBan)}/ban"
1922

23+
@Serializable
24+
private data class BanBody(val rooms: List<String>)
25+
26+
override fun buildRequestBody(
27+
serverBaseUrl: String,
28+
x25519PubKeyHex: String
29+
): Pair<MediaType, HttpBody> {
30+
// JSON body {"rooms":[room]}
31+
return buildJsonRequestBody(BanBody(rooms = listOf(room)))
32+
}
33+
2034
override suspend fun handleSuccessResponse(
2135
executorContext: ApiExecutorContext,
2236
baseUrl: String,
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.session.libsession.messaging.open_groups.api
2+
3+
import android.net.Uri
4+
import dagger.assisted.Assisted
5+
import dagger.assisted.AssistedFactory
6+
import dagger.assisted.AssistedInject
7+
import kotlinx.serialization.Serializable
8+
import org.thoughtcrime.securesms.api.ApiExecutorContext
9+
import org.thoughtcrime.securesms.api.http.HttpBody
10+
import org.thoughtcrime.securesms.api.http.HttpResponse
11+
import okhttp3.MediaType
12+
13+
class UnbanUserApi @AssistedInject constructor(
14+
@Assisted("user") private val userToBan: String,
15+
@Assisted override val room: String,
16+
deps: CommunityApiDependencies,
17+
) : CommunityApi<Unit>(deps) {
18+
override val requiresSigning: Boolean get() = true
19+
override val httpMethod: String get() = "POST"
20+
override val httpEndpoint: String =
21+
"/user/${Uri.encode(userToBan)}/unban"
22+
23+
@Serializable
24+
private data class BanBody(val rooms: List<String>)
25+
26+
override fun buildRequestBody(
27+
serverBaseUrl: String,
28+
x25519PubKeyHex: String
29+
): Pair<MediaType, HttpBody> {
30+
// JSON body {"rooms":[room]}
31+
return buildJsonRequestBody(BanBody(rooms = listOf(room)))
32+
}
33+
34+
override suspend fun handleSuccessResponse(
35+
executorContext: ApiExecutorContext,
36+
baseUrl: String,
37+
response: HttpResponse
38+
) = Unit
39+
40+
@AssistedFactory
41+
interface Factory {
42+
fun create(
43+
@Assisted("user") userToBan: String,
44+
room: String
45+
): UnbanUserApi
46+
}
47+
}

app/src/main/java/org/thoughtcrime/securesms/api/http/OkHttpApiExecutor.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import kotlinx.coroutines.withContext
77
import okhttp3.OkHttpClient
88
import okhttp3.RequestBody.Companion.toRequestBody
99
import org.session.libsignal.utilities.ByteArraySlice.Companion.toRequestBody
10+
import org.session.libsignal.utilities.Log
1011
import org.thoughtcrime.securesms.api.ApiExecutorContext
1112

1213
class OkHttpApiExecutor(

app/src/main/java/org/thoughtcrime/securesms/api/onion/OnionSessionApiExecutor.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.session.libsession.utilities.AESGCM
2222
import org.session.libsignal.utilities.Base64
2323
import org.session.libsignal.utilities.ByteArraySlice
2424
import org.session.libsignal.utilities.ByteArraySlice.Companion.view
25+
import org.session.libsignal.utilities.Log
2526
import org.thoughtcrime.securesms.api.ApiExecutorContext
2627
import org.thoughtcrime.securesms.api.SessionApiExecutor
2728
import org.thoughtcrime.securesms.api.SessionApiRequest
@@ -69,12 +70,15 @@ class OnionSessionApiExecutor @Inject constructor(
6970

7071
when (req) {
7172
is SessionApiRequest.SnodeJsonRPC -> {
73+
Log.d("OnionSessionApiExecutor", "Sending Onion request to Snode destination. Method: ${req.request.method} -- Destination: ${req.snode}")
74+
7275
onionRequestVersion = OnionRequestVersion.V3
7376
onionDestination = OnionDestination.SnodeDestination(req.snode)
7477
payload = json.encodeToString(req.request).toByteArray()
7578
}
7679

7780
is SessionApiRequest.HttpServerRequest -> {
81+
Log.d("OnionSessionApiExecutor", "Sending Onion request to Server destination. Url: ${req.request.url}")
7882
onionRequestVersion = OnionRequestVersion.V4
7983
onionDestination = OnionDestination.ServerDestination(
8084
host = req.request.url.host,
@@ -193,6 +197,8 @@ class OnionSessionApiExecutor @Inject constructor(
193197
): OnionError {
194198
val guardSnode = path.first()
195199

200+
Log.d("OnionSessionApiExecutor", "Networking Error, got a non 200 response code: $httpResponseCode, body: $httpResponseBody")
201+
196202
// ---- 502: hop can't find/contact next hop ----
197203
val nextNodeNotFound = "Next node not found: "
198204
val nextNodeUnreachable = "Next node is currently unreachable: "

app/src/main/java/org/thoughtcrime/securesms/api/server/ServerApi.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.thoughtcrime.securesms.api.server
22

3+
import org.session.libsignal.utilities.Log
34
import org.thoughtcrime.securesms.api.ApiExecutorContext
45
import org.thoughtcrime.securesms.api.error.ErrorWithFailureDecision
56
import org.thoughtcrime.securesms.api.http.HttpRequest
@@ -44,6 +45,8 @@ abstract class ServerApi<ResponseType>(
4445
ctx = failureContext,
4546
)
4647

48+
Log.d("ServerApi", "Network error for a Server endpoint ($baseUrl), with status:${response.statusCode} - error: $error")
49+
4750
executorContext.set(
4851
key = ServerClientFailureContextKey,
4952
value = failureContext.copy(previousErrorCode = response.statusCode)

app/src/main/java/org/thoughtcrime/securesms/api/snode/AbstractSnodeApi.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import kotlinx.serialization.json.JsonElement
44
import kotlinx.serialization.json.JsonObject
55
import kotlinx.serialization.json.JsonPrimitive
66
import org.session.libsession.snode.SwarmAuth
7+
import org.session.libsignal.utilities.Log
78
import org.session.libsignal.utilities.Snode
89
import org.thoughtcrime.securesms.api.ApiExecutorContext
910
import org.thoughtcrime.securesms.api.error.ErrorWithFailureDecision
@@ -47,6 +48,8 @@ abstract class AbstractSnodeApi<RespType : SnodeApiResponse>(
4748
ctx = failureContext
4849
)
4950

51+
Log.d("SnodeApi", "Network error for a Snode endpoint ($snode), with status:${code} - error: $error")
52+
5053
ctx.set(SnodeClientFailureKey, failureContext.copy(previousErrorCode = code))
5154

5255
if (decision != null) {

app/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void setText(Recipient recipient, boolean read) {
7777

7878
setText(builder);
7979

80-
if (recipient.getBlocked()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_user_round_x, 0, 0, 0);
80+
if (recipient.getBlocked()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_user_round_block, 0, 0, 0);
8181
else if (recipient.isMuted()) setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_volume_off, 0, 0, 0);
8282
else setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
8383
}

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2802,12 +2802,29 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
28022802
override fun banUser(messages: Set<MessageRecord>) {
28032803
showSessionDialog {
28042804
title(R.string.banUser)
2805-
text(R.string.communityBanDescription)
2805+
text(
2806+
Phrase.from(applicationContext, R.string.communityBanUserDescription)
2807+
.put(NAME_KEY, messages.first().individualRecipient.displayName())
2808+
.format()
2809+
)
28062810
dangerButton(R.string.theContinue) { viewModel.banUser(messages.first().individualRecipient.address); endActionMode() }
28072811
cancelButton(::endActionMode)
28082812
}
28092813
}
28102814

2815+
override fun unbanUser(messages: Set<MessageRecord>) {
2816+
showSessionDialog {
2817+
title(R.string.banUnbanUser)
2818+
text(
2819+
Phrase.from(applicationContext, R.string.communityUnbanUserDescription)
2820+
.put(NAME_KEY, messages.first().individualRecipient.displayName())
2821+
.format()
2822+
)
2823+
dangerButton(R.string.theContinue) { viewModel.unbanUser(messages.first().individualRecipient.address); endActionMode() }
2824+
cancelButton(::endActionMode)
2825+
}
2826+
}
2827+
28112828
override fun banAndDeleteAll(messages: Set<MessageRecord>) {
28122829
showSessionDialog {
28132830
title(R.string.banDeleteAll)
@@ -3123,6 +3140,7 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
31233140
ConversationReactionOverlay.Action.DELETE -> deleteMessages(selectedItems)
31243141
ConversationReactionOverlay.Action.BAN_AND_DELETE_ALL -> banAndDeleteAll(selectedItems)
31253142
ConversationReactionOverlay.Action.BAN_USER -> banUser(selectedItems)
3143+
ConversationReactionOverlay.Action.UNBAN_USER -> unbanUser(selectedItems)
31263144
ConversationReactionOverlay.Action.COPY_ACCOUNT_ID -> copyAccountID(selectedItems)
31273145
}
31283146
}

0 commit comments

Comments
 (0)