Handle share intents when not logged in
This commit is contained in:
parent
ad36b78df7
commit
ccb32b7fb6
|
@ -29,14 +29,7 @@
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<activity android:name=".ChatActivity" android:theme="@style/Theme.AIRA.NoActionBar"/>
|
<activity android:name=".ChatActivity" android:theme="@style/Theme.AIRA.NoActionBar"/>
|
||||||
<activity android:name=".MainActivity" android:theme="@style/Theme.AIRA.NoActionBar">
|
<activity android:name=".MainActivity" android:theme="@style/Theme.AIRA.NoActionBar"/>
|
||||||
<intent-filter android:label="@string/share_label">
|
|
||||||
<action android:name="android.intent.action.SEND"/>
|
|
||||||
<action android:name="android.intent.action.SEND_MULTIPLE"/>
|
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
|
||||||
<data android:mimeType="*/*"/>
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".LoginActivity"
|
android:name=".LoginActivity"
|
||||||
android:windowSoftInputMode="adjustResize">
|
android:windowSoftInputMode="adjustResize">
|
||||||
|
@ -44,6 +37,12 @@
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN"/>
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<intent-filter android:label="@string/share_label">
|
||||||
|
<action android:name="android.intent.action.SEND"/>
|
||||||
|
<action android:name="android.intent.action.SEND_MULTIPLE"/>
|
||||||
|
<category android:name="android.intent.category.DEFAULT"/>
|
||||||
|
<data android:mimeType="*/*"/>
|
||||||
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name=".SettingsActivity"/>
|
<activity android:name=".SettingsActivity"/>
|
||||||
</application>
|
</application>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package sushi.hardcore.aira
|
package sushi.hardcore.aira
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.os.Binder
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -16,8 +16,12 @@ class CreateIdentityFragment(private val activity: AppCompatActivity) : Fragment
|
||||||
private external fun createNewIdentity(databaseFolder: String, name: String, password: ByteArray?): Boolean
|
private external fun createNewIdentity(databaseFolder: String, name: String, password: ByteArray?): Boolean
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun newInstance(activity: AppCompatActivity): CreateIdentityFragment {
|
fun newInstance(activity: AppCompatActivity, binder: Binder): CreateIdentityFragment {
|
||||||
return CreateIdentityFragment(activity)
|
return CreateIdentityFragment(activity).apply {
|
||||||
|
arguments = Bundle().apply {
|
||||||
|
putBinder(LoginActivity.BINDER_ARG, binder)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,17 +75,17 @@ class CreateIdentityFragment(private val activity: AppCompatActivity) : Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createIdentity(identityName: String, password: ByteArray?) {
|
private fun createIdentity(identityName: String, password: ByteArray?) {
|
||||||
val databaseFolder = Constants.getDatabaseFolder(requireContext())
|
var success = false
|
||||||
if (createNewIdentity(
|
arguments?.let { bundle ->
|
||||||
databaseFolder,
|
bundle.getBinder(LoginActivity.BINDER_ARG)?.let { binder ->
|
||||||
identityName,
|
val databaseFolder = Constants.getDatabaseFolder(requireContext())
|
||||||
password
|
if (createNewIdentity(databaseFolder, identityName, password)) {
|
||||||
)) {
|
(binder as LoginActivity.ActivityLauncher).launch(identityName)
|
||||||
val intent = Intent(activity, MainActivity::class.java)
|
success = true
|
||||||
intent.putExtra("identityName", identityName)
|
}
|
||||||
startActivity(intent)
|
}
|
||||||
activity.finish()
|
}
|
||||||
} else {
|
if (!success) {
|
||||||
Toast.makeText(activity, R.string.identity_create_failed, Toast.LENGTH_SHORT).show()
|
Toast.makeText(activity, R.string.identity_create_failed, Toast.LENGTH_SHORT).show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package sushi.hardcore.aira
|
package sushi.hardcore.aira
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.os.Binder
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
@ -11,6 +12,8 @@ class LoginActivity : AppCompatActivity() {
|
||||||
private external fun getIdentityName(databaseFolder: String): String?
|
private external fun getIdentityName(databaseFolder: String): String?
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
const val NAME_ARG = "identityName"
|
||||||
|
const val BINDER_ARG = "binder"
|
||||||
private external fun initLogging()
|
private external fun initLogging()
|
||||||
init {
|
init {
|
||||||
System.loadLibrary("aira")
|
System.loadLibrary("aira")
|
||||||
|
@ -18,6 +21,12 @@ class LoginActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inner class ActivityLauncher: Binder() {
|
||||||
|
fun launch(identityName: String) {
|
||||||
|
startMainActivity(identityName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_login)
|
setContentView(R.layout.activity_login)
|
||||||
|
@ -31,8 +40,7 @@ class LoginActivity : AppCompatActivity() {
|
||||||
val isProtected = AIRADatabase.isIdentityProtected(databaseFolder)
|
val isProtected = AIRADatabase.isIdentityProtected(databaseFolder)
|
||||||
val name = getIdentityName(databaseFolder)
|
val name = getIdentityName(databaseFolder)
|
||||||
if (AIRAService.isServiceRunning) {
|
if (AIRAService.isServiceRunning) {
|
||||||
startActivity(Intent(this, MainActivity::class.java))
|
startMainActivity(null)
|
||||||
finish()
|
|
||||||
} else if (name != null && !isProtected) {
|
} else if (name != null && !isProtected) {
|
||||||
if (AIRADatabase.loadIdentity(databaseFolder, null)) {
|
if (AIRADatabase.loadIdentity(databaseFolder, null)) {
|
||||||
AIRADatabase.clearCache()
|
AIRADatabase.clearCache()
|
||||||
|
@ -45,9 +53,9 @@ class LoginActivity : AppCompatActivity() {
|
||||||
.add(
|
.add(
|
||||||
R.id.fragment_container, if (name == null) {
|
R.id.fragment_container, if (name == null) {
|
||||||
AIRADatabase.removeIdentityAvatar(databaseFolder)
|
AIRADatabase.removeIdentityAvatar(databaseFolder)
|
||||||
CreateIdentityFragment.newInstance(this)
|
CreateIdentityFragment.newInstance(this, ActivityLauncher())
|
||||||
} else {
|
} else {
|
||||||
LoginFragment.newInstance(name)
|
LoginFragment.newInstance(name, ActivityLauncher())
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.commit()
|
.commit()
|
||||||
|
@ -55,9 +63,11 @@ class LoginActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startMainActivity(identityName: String?) {
|
private fun startMainActivity(identityName: String?) {
|
||||||
val intent = Intent(this, MainActivity::class.java)
|
val mainActivityIntent = Intent(this, MainActivity::class.java)
|
||||||
intent.putExtra("identityName", identityName)
|
mainActivityIntent.action = intent.action
|
||||||
startActivity(intent)
|
mainActivityIntent.putExtras(intent)
|
||||||
|
mainActivityIntent.putExtra(NAME_ARG, identityName)
|
||||||
|
startActivity(mainActivityIntent)
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package sushi.hardcore.aira
|
package sushi.hardcore.aira
|
||||||
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
@ -11,10 +10,12 @@ import sushi.hardcore.aira.databinding.FragmentLoginBinding
|
||||||
|
|
||||||
class LoginFragment : Fragment() {
|
class LoginFragment : Fragment() {
|
||||||
companion object {
|
companion object {
|
||||||
private const val NAME_ARG = "identityName"
|
fun newInstance(name: String, binder: LoginActivity.ActivityLauncher): LoginFragment {
|
||||||
fun newInstance(name: String): LoginFragment {
|
|
||||||
return LoginFragment().apply {
|
return LoginFragment().apply {
|
||||||
arguments = Bundle().apply { putString(NAME_ARG, name) }
|
arguments = Bundle().apply {
|
||||||
|
putBinder(LoginActivity.BINDER_ARG, binder)
|
||||||
|
putString(LoginActivity.NAME_ARG, name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,24 +29,23 @@ class LoginFragment : Fragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
arguments?.let { bundle ->
|
arguments?.let { bundle ->
|
||||||
bundle.getString(NAME_ARG)?.let { name ->
|
bundle.getString(LoginActivity.NAME_ARG)?.let { name ->
|
||||||
val databaseFolder = Constants.getDatabaseFolder(requireContext())
|
bundle.getBinder(LoginActivity.BINDER_ARG)?.let { binder ->
|
||||||
val avatar = AIRADatabase.getIdentityAvatar(databaseFolder)
|
val databaseFolder = Constants.getDatabaseFolder(requireContext())
|
||||||
if (avatar == null) {
|
val avatar = AIRADatabase.getIdentityAvatar(databaseFolder)
|
||||||
binding.avatar.setTextAvatar(name)
|
if (avatar == null) {
|
||||||
} else {
|
binding.avatar.setTextAvatar(name)
|
||||||
binding.avatar.setImageAvatar(avatar)
|
|
||||||
}
|
|
||||||
binding.textIdentityName.text = name
|
|
||||||
binding.buttonLogin.setOnClickListener {
|
|
||||||
if (AIRADatabase.loadIdentity(databaseFolder, binding.editPassword.text.toString().toByteArray())) {
|
|
||||||
AIRADatabase.clearCache()
|
|
||||||
val intent = Intent(activity, MainActivity::class.java)
|
|
||||||
intent.putExtra("identityName", name)
|
|
||||||
startActivity(intent)
|
|
||||||
activity?.finish()
|
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(activity, R.string.identity_load_failed, Toast.LENGTH_SHORT).show()
|
binding.avatar.setImageAvatar(avatar)
|
||||||
|
}
|
||||||
|
binding.textIdentityName.text = name
|
||||||
|
binding.buttonLogin.setOnClickListener {
|
||||||
|
if (AIRADatabase.loadIdentity(databaseFolder, binding.editPassword.text.toString().toByteArray())) {
|
||||||
|
AIRADatabase.clearCache()
|
||||||
|
(binder as LoginActivity.ActivityLauncher).launch(name)
|
||||||
|
} else {
|
||||||
|
Toast.makeText(activity, R.string.identity_load_failed, Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ class MainActivity : ServiceBoundActivity() {
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
setSupportActionBar(binding.toolbar.toolbar)
|
setSupportActionBar(binding.toolbar.toolbar)
|
||||||
|
|
||||||
val identityName = intent.getStringExtra("identityName")
|
val identityName = intent.getStringExtra(LoginActivity.NAME_ARG)
|
||||||
identityName?.let {
|
identityName?.let {
|
||||||
initToolbar(it)
|
initToolbar(it)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue