AIRA-android/app/src/main/java/sushi/hardcore/aira/LoginActivity.kt

69 lines
2.3 KiB
Kotlin

package sushi.hardcore.aira
import android.content.Intent
import android.os.Binder
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import sushi.hardcore.aira.background_service.AIRAService
import java.io.File
class LoginActivity : AppCompatActivity() {
companion object {
const val NAME_ARG = "identityName"
const val BINDER_ARG = "binder"
}
init {
AIRADatabase.init()
}
inner class ActivityLauncher: Binder() {
fun launch() {
startMainActivity()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
val databaseFolder = Constants.getDatabaseFolder(this)
val dbFile = File(databaseFolder)
if (!dbFile.isDirectory) {
if (!dbFile.mkdir()) {
Toast.makeText(this, R.string.db_mkdir_failed, Toast.LENGTH_SHORT).show()
}
}
val isProtected = AIRADatabase.isIdentityProtected(databaseFolder)
val name = AIRADatabase.getIdentityName(databaseFolder)
if (AIRAService.isServiceRunning) {
startMainActivity()
} else if (name != null && !isProtected) {
if (AIRADatabase.loadIdentity(databaseFolder, null)) {
AIRADatabase.clearCache()
startMainActivity()
} else {
Toast.makeText(this, R.string.identity_load_failed, Toast.LENGTH_SHORT).show()
}
} else {
supportFragmentManager.beginTransaction()
.add(
R.id.fragment_container, if (name == null) {
AIRADatabase.removeIdentityAvatar(databaseFolder)
CreateIdentityFragment.newInstance(this, ActivityLauncher())
} else {
LoginFragment.newInstance(name, ActivityLauncher())
}
)
.commit()
}
}
private fun startMainActivity() {
val mainActivityIntent = Intent(this, MainActivity::class.java)
mainActivityIntent.action = intent.action
mainActivityIntent.putExtras(intent)
startActivity(mainActivityIntent)
finish()
}
}