parent
e625297718
commit
4ba94db742
|
|
@ -2,6 +2,7 @@ package chat.revolt.screens.chat
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.activity.compose.BackHandler
|
import androidx.activity.compose.BackHandler
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.animation.Crossfade
|
import androidx.compose.animation.Crossfade
|
||||||
|
|
@ -66,6 +67,7 @@ import chat.revolt.api.realtime.RealtimeSocket
|
||||||
import chat.revolt.api.routes.server.fetchMembers
|
import chat.revolt.api.routes.server.fetchMembers
|
||||||
import chat.revolt.api.schemas.ChannelType
|
import chat.revolt.api.schemas.ChannelType
|
||||||
import chat.revolt.api.schemas.User
|
import chat.revolt.api.schemas.User
|
||||||
|
import chat.revolt.api.settings.FeatureFlag
|
||||||
import chat.revolt.api.settings.SyncedSettings
|
import chat.revolt.api.settings.SyncedSettings
|
||||||
import chat.revolt.components.chat.DisconnectedNotice
|
import chat.revolt.components.chat.DisconnectedNotice
|
||||||
import chat.revolt.components.generic.GroupIcon
|
import chat.revolt.components.generic.GroupIcon
|
||||||
|
|
@ -93,6 +95,7 @@ import com.airbnb.lottie.compose.animateLottieCompositionAsState
|
||||||
import com.airbnb.lottie.compose.rememberLottieComposition
|
import com.airbnb.lottie.compose.rememberLottieComposition
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||||
|
import io.sentry.Sentry
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
@ -181,12 +184,38 @@ class ChatRouterViewModel @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FeatureFlag("ClosedBetaAccessControl")
|
||||||
|
private var hardCrashCounter = 0
|
||||||
|
|
||||||
fun navigateToChannel(channelId: String, navController: NavController, pure: Boolean = false) {
|
fun navigateToChannel(channelId: String, navController: NavController, pure: Boolean = false) {
|
||||||
if (!pure) setSaveCurrentChannel(channelId)
|
if (!pure) setSaveCurrentChannel(channelId)
|
||||||
|
|
||||||
navController.navigate("channel/$channelId") {
|
// Only allow access to closed beta users, currently "has access to #beta-chat in Jenvolt"
|
||||||
navController.graph.startDestinationRoute?.let { route ->
|
@FeatureFlag("ClosedBetaAccessControl")
|
||||||
popUpTo(route)
|
if (RevoltAPI.channelCache.size > 0 && !RevoltAPI.channelCache.containsKey("01H7X2KRB0CA4QDSMB4N7WGERF")) {
|
||||||
|
hardCrashCounter++
|
||||||
|
|
||||||
|
navController.navigate("no_current_channel") {
|
||||||
|
navController.graph.startDestinationRoute?.let { route ->
|
||||||
|
popUpTo(route)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hardCrashCounter > 2) {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
"You do not have access to the closed beta.",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
Sentry.init("") // we are about to crash on purpose, let's not send this to Sentry
|
||||||
|
throw IllegalStateException()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Navigate as normal
|
||||||
|
navController.navigate("channel/$channelId") {
|
||||||
|
navController.graph.startDestinationRoute?.let { route ->
|
||||||
|
popUpTo(route)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue