mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 08:39:22 +01:00
Implement a libsignal-net shadowing web socket.
This commit is contained in:
committed by
Alex Hart
parent
78bbab37fb
commit
9a0bb243cd
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright 2024 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.thoughtcrime.securesms.net
|
||||
|
||||
import android.app.Application
|
||||
import android.app.Notification
|
||||
import android.app.PendingIntent
|
||||
import android.content.Intent
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import org.signal.core.util.PendingIntentFlags
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.keyvalue.InternalValues
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.logsubmit.SubmitDebugLogActivity
|
||||
import org.thoughtcrime.securesms.notifications.NotificationChannels
|
||||
import org.thoughtcrime.securesms.notifications.NotificationIds
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags
|
||||
import org.whispersystems.signalservice.internal.websocket.WebSocketShadowingBridge
|
||||
|
||||
/**
|
||||
* Implements a [WebSocketShadowingBridge] to provide shadowing-specific functionality to
|
||||
* [org.whispersystems.signalservice.internal.websocket.ShadowingWebSocketConnection]
|
||||
*/
|
||||
class DefaultWebSocketShadowingBridge(private val context: Application) : WebSocketShadowingBridge {
|
||||
private val store: InternalValues = SignalStore.internalValues()
|
||||
|
||||
override fun writeStatsSnapshot(bytes: ByteArray) {
|
||||
store.setWebSocketShadowingStats(bytes)
|
||||
}
|
||||
|
||||
override fun readStatsSnapshot(): ByteArray? {
|
||||
return store.getWebSocketShadowingStats(null)
|
||||
}
|
||||
|
||||
override fun triggerFailureNotification(message: String) {
|
||||
if (!FeatureFlags.internalUser()) {
|
||||
return
|
||||
}
|
||||
val notification: Notification = NotificationCompat.Builder(context, NotificationChannels.getInstance().FAILURES)
|
||||
.setSmallIcon(R.drawable.ic_notification)
|
||||
.setContentTitle("[Internal-only] $message")
|
||||
.setContentText("Tap to send a debug log")
|
||||
.setContentIntent(
|
||||
PendingIntent.getActivity(
|
||||
context,
|
||||
0,
|
||||
Intent(context, SubmitDebugLogActivity::class.java),
|
||||
PendingIntentFlags.mutable()
|
||||
)
|
||||
)
|
||||
.build()
|
||||
|
||||
NotificationManagerCompat.from(context).notify(NotificationIds.INTERNAL_ERROR, notification)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user