feat(android): "Change server URL" link on Login (parity map: Auth)

Ports flutter_client/lib/auth/login_screen.dart:86-89 — a TextButton
under the Sign-in button that routes to the ServerUrl screen, so a
wrong server URL is recoverable pre-login without reinstalling or
signing out from Settings. Disabled while a submit is in flight.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-28 08:15:44 -04:00
parent f62e72b2f2
commit 903a7961e3
@@ -14,6 +14,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -28,6 +29,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import com.fabledsword.minstrel.nav.Home import com.fabledsword.minstrel.nav.Home
import com.fabledsword.minstrel.nav.Login import com.fabledsword.minstrel.nav.Login
import com.fabledsword.minstrel.nav.ServerUrl
@Composable @Composable
fun LoginScreen( fun LoginScreen(
@@ -55,6 +57,7 @@ fun LoginScreen(
onUsernameChange = viewModel::setUsername, onUsernameChange = viewModel::setUsername,
onPasswordChange = viewModel::setPassword, onPasswordChange = viewModel::setPassword,
onSubmit = viewModel::submit, onSubmit = viewModel::submit,
onChangeServerUrl = { navController.navigate(ServerUrl) },
) )
} }
} }
@@ -65,6 +68,7 @@ private fun LoginForm(
onUsernameChange: (String) -> Unit, onUsernameChange: (String) -> Unit,
onPasswordChange: (String) -> Unit, onPasswordChange: (String) -> Unit,
onSubmit: () -> Unit, onSubmit: () -> Unit,
onChangeServerUrl: () -> Unit,
) { ) {
Column( Column(
modifier = Modifier modifier = Modifier
@@ -112,6 +116,12 @@ private fun LoginForm(
) )
} }
SubmitButton(state = state, onSubmit = onSubmit) SubmitButton(state = state, onSubmit = onSubmit)
TextButton(
onClick = onChangeServerUrl,
enabled = !state.isSubmitting,
) {
Text("Change server URL")
}
} }
} }