feat: debugprep

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-10-13 13:35:01 +02:00
parent 6018050553
commit 7ce3ee3152
3 changed files with 111 additions and 5 deletions

View File

@ -49,7 +49,8 @@ import java.lang.reflect.InvocationTargetException
import java.net.SocketException
import chat.revolt.api.schemas.Channel as ChannelSchema
const val REVOLT_BASE = "https://revolt.chat/api"
// The reason this is a var is because in debug builds we have the ability to swap the base URL.
var REVOLT_BASE = "https://revolt.chat/api"
const val REVOLT_SUPPORT = "https://support.revolt.chat"
const val REVOLT_MARKETING = "https://revolt.chat"
const val REVOLT_FILES = "https://autumn.revolt.chat"

View File

@ -15,14 +15,18 @@ import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Button
import androidx.compose.material3.ElevatedButton
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.LocalContentColor
import androidx.compose.material3.LocalTextStyle
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
@ -38,14 +42,30 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.navigation.NavController
import chat.revolt.BuildConfig
import chat.revolt.R
import chat.revolt.api.REVOLT_MARKETING
import chat.revolt.components.generic.Weblink
import chat.revolt.internals.extensions.BottomSheetInsets
import chat.revolt.sheets.DebugPrepSheet
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun LoginGreetingScreen(navController: NavController) {
val context = LocalContext.current
var catTaps by remember { mutableIntStateOf(0) }
var showDebugPrep by remember { mutableStateOf(false) }
if (showDebugPrep) {
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
ModalBottomSheet(
onDismissRequest = { showDebugPrep = false },
sheetState = sheetState,
windowInsets = BottomSheetInsets
) {
DebugPrepSheet()
}
}
Column(
modifier = Modifier
@ -73,9 +93,9 @@ fun LoginGreetingScreen(navController: NavController) {
interactionSource = remember(::MutableInteractionSource),
indication = null
) {
if (catTaps < 9) {
catTaps++
} else {
if ((catTaps >= (9 * 2)) && BuildConfig.DEBUG) {
showDebugPrep = true
} else if (catTaps == 9) {
Toast
.makeText(
context,
@ -83,8 +103,8 @@ fun LoginGreetingScreen(navController: NavController) {
Toast.LENGTH_SHORT
)
.show()
catTaps = 0
}
catTaps++
}
)

View File

@ -0,0 +1,85 @@
package chat.revolt.sheets
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.SegmentedButton
import androidx.compose.material3.SingleChoiceSegmentedButtonRow
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import chat.revolt.api.REVOLT_BASE
import chat.revolt.components.generic.SheetEnd
enum class DebugPrepSheetPage {
API
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DebugPrepSheet(modifier: Modifier = Modifier) {
var mode by remember { mutableStateOf(DebugPrepSheetPage.API) }
Column(
Modifier
.verticalScroll(rememberScrollState())
.padding(horizontal = 16.dp),
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
Text("Debug Preparation", style = MaterialTheme.typography.headlineMedium)
SingleChoiceSegmentedButtonRow(Modifier.fillMaxWidth()) {
SegmentedButton(
selected = mode == DebugPrepSheetPage.API,
onClick = { mode = DebugPrepSheetPage.API },
shape = CircleShape
) {
Text("API")
}
}
when (mode) {
DebugPrepSheetPage.API -> {
Text("API Base URL (not reactive)")
SingleChoiceSegmentedButtonRow(Modifier.fillMaxWidth()) {
SegmentedButton(
selected = REVOLT_BASE == "https://api.revolt.chat",
onClick = {
REVOLT_BASE = "https://api.revolt.chat"
},
shape = CircleShape.copy(
topEnd = CornerSize(0),
bottomEnd = CornerSize(0)
)
) {
Text("api.")
}
SegmentedButton(
selected = REVOLT_BASE == "https://revolt.chat/api",
onClick = {
REVOLT_BASE = "https://revolt.chat/api"
},
shape = CircleShape.copy(
topStart = CornerSize(0),
bottomStart = CornerSize(0)
)
) {
Text("/api")
}
}
}
}
}
SheetEnd()
}