2021-01-26 19:45:18 +01:00
|
|
|
package sushi.hardcore.aira
|
|
|
|
|
|
|
|
import android.content.Intent
|
2021-06-04 11:48:43 +02:00
|
|
|
import android.os.Binder
|
2021-01-26 19:45:18 +01:00
|
|
|
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() {
|
|
|
|
private external fun getIdentityName(databaseFolder: String): String?
|
|
|
|
|
|
|
|
companion object {
|
2021-06-04 11:48:43 +02:00
|
|
|
const val NAME_ARG = "identityName"
|
|
|
|
const val BINDER_ARG = "binder"
|
2021-05-27 20:15:03 +02:00
|
|
|
private external fun initLogging()
|
2021-01-26 19:45:18 +01:00
|
|
|
init {
|
|
|
|
System.loadLibrary("aira")
|
2021-05-27 20:15:03 +02:00
|
|
|
initLogging()
|
2021-01-26 19:45:18 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-04 11:48:43 +02:00
|
|
|
inner class ActivityLauncher: Binder() {
|
|
|
|
fun launch(identityName: String) {
|
|
|
|
startMainActivity(identityName)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-01-26 19:45:18 +01:00
|
|
|
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 = getIdentityName(databaseFolder)
|
|
|
|
if (AIRAService.isServiceRunning) {
|
2021-06-04 11:48:43 +02:00
|
|
|
startMainActivity(null)
|
2021-01-26 19:45:18 +01:00
|
|
|
} else if (name != null && !isProtected) {
|
|
|
|
if (AIRADatabase.loadIdentity(databaseFolder, null)) {
|
2021-05-27 20:15:03 +02:00
|
|
|
AIRADatabase.clearCache()
|
2021-01-26 19:45:18 +01:00
|
|
|
startMainActivity(name)
|
|
|
|
} else {
|
|
|
|
Toast.makeText(this, R.string.identity_load_failed, Toast.LENGTH_SHORT).show()
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
supportFragmentManager.beginTransaction()
|
|
|
|
.add(
|
|
|
|
R.id.fragment_container, if (name == null) {
|
2021-05-27 20:15:03 +02:00
|
|
|
AIRADatabase.removeIdentityAvatar(databaseFolder)
|
2021-06-04 11:48:43 +02:00
|
|
|
CreateIdentityFragment.newInstance(this, ActivityLauncher())
|
2021-01-26 19:45:18 +01:00
|
|
|
} else {
|
2021-06-04 11:48:43 +02:00
|
|
|
LoginFragment.newInstance(name, ActivityLauncher())
|
2021-01-26 19:45:18 +01:00
|
|
|
}
|
|
|
|
)
|
|
|
|
.commit()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun startMainActivity(identityName: String?) {
|
2021-06-04 11:48:43 +02:00
|
|
|
val mainActivityIntent = Intent(this, MainActivity::class.java)
|
|
|
|
mainActivityIntent.action = intent.action
|
|
|
|
mainActivityIntent.putExtras(intent)
|
|
|
|
mainActivityIntent.putExtra(NAME_ARG, identityName)
|
|
|
|
startActivity(mainActivityIntent)
|
2021-01-26 19:45:18 +01:00
|
|
|
finish()
|
|
|
|
}
|
|
|
|
}
|