package uk.beads.manager import android.content.Intent import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.google.firebase.messaging.FirebaseMessaging import uk.beads.manager.databinding.ActivityLoginBinding class LoginActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding private var sessionReady = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) if (SessionManager.getToken(this) != null) { openOrders() return } binding.btnLogin.isEnabled = false binding.btnLogin.text = "Initializing..." SessionInitializer.init(this) { runOnUiThread { sessionReady = true binding.btnLogin.isEnabled = true binding.btnLogin.text = "Sign In" } } binding.btnLogin.setOnClickListener { if (!sessionReady) { Toast.makeText(this, "Still initializing...", Toast.LENGTH_SHORT).show() return@setOnClickListener } val username = binding.inputUsername.text.toString().trim() val password = binding.inputPassword.text.toString() if (username.isEmpty() || password.isEmpty()) { Toast.makeText(this, "Enter username and password", Toast.LENGTH_SHORT).show() return@setOnClickListener } Thread { try { val response = ApiClient.login(username, password) if (response.success && response.token != null) { SessionManager.save(this, response.token, username) FirebaseMessaging.getInstance().token.addOnCompleteListener { task -> task.result?.let { ApiClient.registerDevice(this, it) } } runOnUiThread { openOrders() } } else { runOnUiThread { Toast.makeText(this, response.message ?: "Login failed", Toast.LENGTH_SHORT).show() } } } catch (e: Exception) { val msg = "${e.javaClass.simpleName}: ${e.message}" e.printStackTrace() runOnUiThread { Toast.makeText(this, msg, Toast.LENGTH_LONG).show() } } }.start() } } private fun openOrders() { startActivity(Intent(this, OrdersActivity::class.java)) finish() } }