added username and password for up- and download

This commit is contained in:
oxidiert
2025-09-23 16:10:19 +02:00
parent 91f6f77b73
commit 5f5c766133
5 changed files with 145 additions and 109 deletions

View File

@ -434,59 +434,80 @@ class HandlerOpeningScreen(private val activity: MainActivity) {
private fun setupUploadButton() {
uploadButton.text = t("upload")
uploadButton.setOnClickListener {
val clientCode = editText.text.toString().trim()
GlobalValues.LAST_CLIENT_CODE = clientCode
val input = EditText(activity).apply { hint = "Server-Passwort" }
android.app.AlertDialog.Builder(activity)
.setTitle(t("login_required"))
.setView(input)
.setPositiveButton("OK") { _, _ ->
val password = input.text.toString()
if (password.isNotBlank()) {
Toast.makeText(activity, t("checking_login"), Toast.LENGTH_SHORT).show()
DatabaseUploader.uploadDatabaseWithLogin(activity, password)
} else {
Toast.makeText(activity, t("enter_password"), Toast.LENGTH_SHORT).show()
}
GlobalValues.LAST_CLIENT_CODE = editText.text.toString().trim()
promptCredentials(
title = t("login_required") ?: "Login erforderlich",
onOk = { user, pass ->
// Login -> Upload
DatabaseUploader.uploadDatabaseWithLogin(activity, user, pass)
}
.setNegativeButton(t("cancel"), null)
.show()
)
}
}
private fun setupDownloadButton() {
downloadButton.text = t("download")
downloadButton.setOnClickListener {
val clientCode = editText.text.toString().trim()
GlobalValues.LAST_CLIENT_CODE = clientCode
val input = EditText(activity).apply { hint = "Server-Passwort" }
android.app.AlertDialog.Builder(activity)
.setTitle(t("login_required"))
.setView(input)
.setPositiveButton("OK") { _, _ ->
val password = input.text.toString()
if (password.isNotBlank()) {
LoginManager.loginUser(
context = activity,
password = password,
onSuccess = { token ->
Toast.makeText(activity, t("login_ok"), Toast.LENGTH_SHORT).show()
DatabaseDownloader.downloadAndReplaceDatabase(activity, token)
updateMainButtonsState(true)
},
onError = { error ->
Toast.makeText(activity, error, Toast.LENGTH_LONG).show()
}
)
} else {
Toast.makeText(activity, t("enter_password"), Toast.LENGTH_SHORT).show()
}
GlobalValues.LAST_CLIENT_CODE = editText.text.toString().trim()
promptCredentials(
title = t("login_required") ?: "Login erforderlich",
onOk = { user, pass ->
// Login -> Token -> Download
LoginManager.loginUserWithCredentials(
context = activity,
username = user,
password = pass,
onSuccess = { token ->
Toast.makeText(activity, t("login_ok") ?: "Login OK", Toast.LENGTH_SHORT).show()
DatabaseDownloader.downloadAndReplaceDatabase(activity, token)
updateMainButtonsState(true)
},
onError = { error ->
Toast.makeText(activity, error, Toast.LENGTH_LONG).show()
}
)
}
.setNegativeButton(t("cancel"), null)
.show()
)
}
}
private fun promptCredentials(
title: String,
onOk: (username: String, password: String) -> Unit
) {
val wrapper = LinearLayout(activity).apply {
orientation = LinearLayout.VERTICAL
setPadding(dp(20), dp(8), dp(20), 0)
}
val etUser = EditText(activity).apply {
hint = "Username"
setSingleLine()
}
val etPass = EditText(activity).apply {
hint = "Passwort"
setSingleLine()
inputType = android.text.InputType.TYPE_CLASS_TEXT or
android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD
}
wrapper.addView(etUser)
wrapper.addView(etPass)
android.app.AlertDialog.Builder(activity)
.setTitle(title)
.setView(wrapper)
.setPositiveButton("OK") { _, _ ->
val u = etUser.text.toString().trim()
val p = etPass.text.toString()
if (u.isNotEmpty() && p.isNotEmpty()) {
onOk(u, p)
} else {
Toast.makeText(activity, t("enter_password") ?: "Bitte Username & Passwort eingeben", Toast.LENGTH_SHORT).show()
}
}
.setNegativeButton(t("cancel") ?: "Abbrechen", null)
.show()
}
private fun setupDatabaseButtonHandler() {
DatabaseButtonHandler(
activity = activity,