Migrate AccountActivity to fragment
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -153,7 +153,6 @@
|
|||||||
<activity android:name=".view.ui.details.DetailsReviewActivity" />
|
<activity android:name=".view.ui.details.DetailsReviewActivity" />
|
||||||
<activity android:name=".view.ui.downloads.DownloadActivity" />
|
<activity android:name=".view.ui.downloads.DownloadActivity" />
|
||||||
<activity android:name=".view.ui.account.GoogleActivity" />
|
<activity android:name=".view.ui.account.GoogleActivity" />
|
||||||
<activity android:name=".view.ui.account.AccountActivity" />
|
|
||||||
<activity android:name=".view.ui.details.DetailsExodusActivity" />
|
<activity android:name=".view.ui.details.DetailsExodusActivity" />
|
||||||
<activity android:name=".view.ui.details.DevAppsActivity" />
|
<activity android:name=".view.ui.details.DevAppsActivity" />
|
||||||
<activity android:name=".view.ui.preferences.SettingsActivity" />
|
<activity android:name=".view.ui.preferences.SettingsActivity" />
|
||||||
|
|||||||
@@ -53,9 +53,8 @@ import com.aurora.store.databinding.ActivityMainBinding
|
|||||||
import com.aurora.store.util.CertUtil.isFDroidApp
|
import com.aurora.store.util.CertUtil.isFDroidApp
|
||||||
import com.aurora.store.util.Log
|
import com.aurora.store.util.Log
|
||||||
import com.aurora.store.util.Preferences
|
import com.aurora.store.util.Preferences
|
||||||
import com.aurora.store.view.ui.account.AccountActivity
|
import com.aurora.store.view.ui.account.AccountFragment
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
import com.aurora.store.view.ui.commons.BaseActivity
|
||||||
import com.aurora.store.view.ui.commons.BlacklistFragment
|
|
||||||
import com.aurora.store.view.ui.downloads.DownloadActivity
|
import com.aurora.store.view.ui.downloads.DownloadActivity
|
||||||
import com.aurora.store.view.ui.preferences.SettingsActivity
|
import com.aurora.store.view.ui.preferences.SettingsActivity
|
||||||
import com.aurora.store.view.ui.search.SearchSuggestionActivity
|
import com.aurora.store.view.ui.search.SearchSuggestionActivity
|
||||||
@@ -260,7 +259,8 @@ class MainActivity : BaseActivity() {
|
|||||||
B.drawerLayout.close()
|
B.drawerLayout.close()
|
||||||
}
|
}
|
||||||
R.id.menu_account_manager -> {
|
R.id.menu_account_manager -> {
|
||||||
open(AccountActivity::class.java)
|
navController.navigate(R.id.accountFragment)
|
||||||
|
B.drawerLayout.close()
|
||||||
}
|
}
|
||||||
R.id.menu_settings -> {
|
R.id.menu_settings -> {
|
||||||
open(SettingsActivity::class.java)
|
open(SettingsActivity::class.java)
|
||||||
|
|||||||
@@ -19,11 +19,14 @@
|
|||||||
|
|
||||||
package com.aurora.store.view.ui.account
|
package com.aurora.store.view.ui.account
|
||||||
|
|
||||||
|
import android.app.Activity.RESULT_CANCELED
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.aurora.extensions.browse
|
import com.aurora.extensions.browse
|
||||||
import com.aurora.extensions.getEmptyActivityAnimation
|
import com.aurora.extensions.getEmptyActivityAnimation
|
||||||
import com.aurora.extensions.load
|
import com.aurora.extensions.load
|
||||||
@@ -33,9 +36,7 @@ import com.aurora.store.data.AuthState
|
|||||||
import com.aurora.store.data.event.BusEvent
|
import com.aurora.store.data.event.BusEvent
|
||||||
import com.aurora.store.data.providers.AccountProvider
|
import com.aurora.store.data.providers.AccountProvider
|
||||||
import com.aurora.store.data.providers.AuthProvider
|
import com.aurora.store.data.providers.AuthProvider
|
||||||
import com.aurora.store.databinding.ActivityAccountBinding
|
import com.aurora.store.databinding.FragmentAccountBinding
|
||||||
import com.aurora.store.util.Preferences
|
|
||||||
import com.aurora.store.view.ui.commons.BaseActivity
|
|
||||||
import com.aurora.store.viewmodel.auth.AuthViewModel
|
import com.aurora.store.viewmodel.auth.AuthViewModel
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||||
import nl.komponents.kovenant.task
|
import nl.komponents.kovenant.task
|
||||||
@@ -44,51 +45,65 @@ import nl.komponents.kovenant.ui.successUi
|
|||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.Subscribe
|
||||||
|
|
||||||
class AccountActivity : BaseActivity() {
|
class AccountFragment : Fragment(R.layout.fragment_account) {
|
||||||
|
|
||||||
|
private var _binding: FragmentAccountBinding? = null
|
||||||
|
private val binding: FragmentAccountBinding
|
||||||
|
get() = _binding!!
|
||||||
|
|
||||||
private lateinit var VM: AuthViewModel
|
private lateinit var VM: AuthViewModel
|
||||||
private lateinit var B: ActivityAccountBinding
|
|
||||||
|
|
||||||
private lateinit var authData: AuthData
|
private lateinit var authData: AuthData
|
||||||
private lateinit var accountProvider: AccountProvider
|
private lateinit var accountProvider: AccountProvider
|
||||||
|
|
||||||
private val URL_TOS = "https://play.google.com/about/play-terms/"
|
private val URL_TOS = "https://play.google.com/about/play-terms/"
|
||||||
private val URL_LICENSE = "https://gitlab.com/AuroraOSS/AuroraStore/blob/master/LICENSE"
|
private val URL_LICENSE = "https://gitlab.com/AuroraOSS/AuroraStore/blob/master/LICENSE"
|
||||||
private val URL_DISCLAIMER = "https://gitlab.com/AuroraOSS/AuroraStore/blob/master/DISCLAIMER.md"
|
private val URL_DISCLAIMER =
|
||||||
|
"https://gitlab.com/AuroraOSS/AuroraStore/blob/master/DISCLAIMER.md"
|
||||||
|
|
||||||
private val startForResult =
|
private val startForResult =
|
||||||
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
|
||||||
if (it.resultCode == RESULT_CANCELED) {
|
if (it.resultCode == RESULT_CANCELED) {
|
||||||
resetActions()
|
resetActions()
|
||||||
} else {
|
} else {
|
||||||
B.btnGoogle.updateProgress(true)
|
binding.btnGoogle.updateProgress(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this)
|
||||||
|
|
||||||
B = ActivityAccountBinding.inflate(layoutInflater)
|
_binding = FragmentAccountBinding.bind(view)
|
||||||
VM = ViewModelProvider(this)[AuthViewModel::class.java]
|
VM = ViewModelProvider(this)[AuthViewModel::class.java]
|
||||||
|
|
||||||
setContentView(B.root)
|
authData = AuthProvider.with(view.context).getAuthData()
|
||||||
|
accountProvider = AccountProvider.with(view.context)
|
||||||
|
|
||||||
authData = AuthProvider.with(this).getAuthData()
|
// Toolbar
|
||||||
accountProvider = AccountProvider.with(this)
|
binding.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager)
|
||||||
|
binding.layoutToolbarAction.imgActionPrimary.setOnClickListener {
|
||||||
|
findNavController().navigateUp()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chips
|
||||||
|
view.context.apply {
|
||||||
|
binding.chipDisclaimer.setOnClickListener { browse(URL_DISCLAIMER) }
|
||||||
|
binding.chipLicense.setOnClickListener { browse(URL_LICENSE) }
|
||||||
|
binding.chipTos.setOnClickListener { browse(URL_TOS) }
|
||||||
|
}
|
||||||
|
|
||||||
attachToolbar()
|
|
||||||
attachChips()
|
|
||||||
attachActions()
|
attachActions()
|
||||||
|
|
||||||
updateContents()
|
updateContents()
|
||||||
|
|
||||||
VM.liveData.observe(this) {
|
VM.liveData.observe(viewLifecycleOwner) {
|
||||||
when (it) {
|
when (it) {
|
||||||
AuthState.Fetching -> {
|
AuthState.Fetching -> {
|
||||||
updateStatus(getString(R.string.requesting_new_session))
|
updateStatus(getString(R.string.requesting_new_session))
|
||||||
}
|
}
|
||||||
|
|
||||||
AuthState.Valid -> {
|
AuthState.Valid -> {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -120,9 +135,10 @@ class AccountActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
EventBus.getDefault().unregister(this)
|
EventBus.getDefault().unregister(this)
|
||||||
super.onDestroy()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe()
|
@Subscribe()
|
||||||
@@ -136,6 +152,7 @@ class AccountActivity : BaseActivity() {
|
|||||||
updateStatus(getString(R.string.session_login_failed_google))
|
updateStatus(getString(R.string.session_login_failed_google))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -144,10 +161,10 @@ class AccountActivity : BaseActivity() {
|
|||||||
|
|
||||||
private fun updateContents() {
|
private fun updateContents() {
|
||||||
if (accountProvider.isSignedIn()) {
|
if (accountProvider.isSignedIn()) {
|
||||||
B.viewFlipper.displayedChild = 1
|
binding.viewFlipper.displayedChild = 1
|
||||||
updateStatus(getString(R.string.session_good))
|
updateStatus(getString(R.string.session_good))
|
||||||
} else {
|
} else {
|
||||||
B.viewFlipper.displayedChild = 0
|
binding.viewFlipper.displayedChild = 0
|
||||||
updateStatus(getString(R.string.session_enjoy))
|
updateStatus(getString(R.string.session_enjoy))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,8 +172,8 @@ class AccountActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateStatus(string: String?) {
|
private fun updateStatus(string: String?) {
|
||||||
runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
B.txtStatus.apply {
|
binding.txtStatus.apply {
|
||||||
text = string
|
text = string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,51 +181,37 @@ class AccountActivity : BaseActivity() {
|
|||||||
|
|
||||||
private fun updateActionLayout(isVisible: Boolean) {
|
private fun updateActionLayout(isVisible: Boolean) {
|
||||||
if (isVisible) {
|
if (isVisible) {
|
||||||
B.layoutAction.visibility = View.VISIBLE
|
binding.layoutAction.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
B.layoutAction.visibility = View.INVISIBLE
|
binding.layoutAction.visibility = View.INVISIBLE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun attachToolbar() {
|
|
||||||
B.layoutToolbarAction.txtTitle.text = getString(R.string.title_account_manager)
|
|
||||||
B.layoutToolbarAction.imgActionPrimary.setOnClickListener {
|
|
||||||
finishAfterTransition()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun attachChips() {
|
|
||||||
B.chipDisclaimer.setOnClickListener { browse(URL_DISCLAIMER) }
|
|
||||||
B.chipLicense.setOnClickListener { browse(URL_LICENSE) }
|
|
||||||
B.chipTos.setOnClickListener { browse(URL_TOS) }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private fun attachActions() {
|
private fun attachActions() {
|
||||||
B.btnAnonymous.updateProgress(false)
|
binding.btnAnonymous.updateProgress(false)
|
||||||
B.btnGoogle.updateProgress(false)
|
binding.btnGoogle.updateProgress(false)
|
||||||
|
|
||||||
B.btnAnonymous.addOnClickListener {
|
binding.btnAnonymous.addOnClickListener {
|
||||||
if (VM.liveData.value != AuthState.Fetching) {
|
if (VM.liveData.value != AuthState.Fetching) {
|
||||||
B.btnAnonymous.updateProgress(true)
|
binding.btnAnonymous.updateProgress(true)
|
||||||
VM.buildAnonymousAuthData()
|
VM.buildAnonymousAuthData()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
B.btnGoogle.addOnClickListener {
|
binding.btnGoogle.addOnClickListener {
|
||||||
if (VM.liveData.value != AuthState.Fetching) {
|
if (VM.liveData.value != AuthState.Fetching) {
|
||||||
B.btnGoogle.updateProgress(true)
|
binding.btnGoogle.updateProgress(true)
|
||||||
val intent = Intent(this, GoogleActivity::class.java)
|
val intent = Intent(requireContext(), GoogleActivity::class.java)
|
||||||
startForResult.launch(intent, getEmptyActivityAnimation())
|
startForResult.launch(intent, requireContext().getEmptyActivityAnimation())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
B.btnLogout.addOnClickListener {
|
binding.btnLogout.addOnClickListener {
|
||||||
task {
|
task {
|
||||||
AccountProvider.with(this).logout()
|
AccountProvider.with(it.context).logout()
|
||||||
} successUi {
|
} successUi {
|
||||||
B.btnAnonymous.updateProgress(false)
|
binding.btnAnonymous.updateProgress(false)
|
||||||
B.btnGoogle.updateProgress(false)
|
binding.btnGoogle.updateProgress(false)
|
||||||
updateContents()
|
updateContents()
|
||||||
} failUi {
|
} failUi {
|
||||||
|
|
||||||
@@ -217,55 +220,43 @@ class AccountActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun resetActions() {
|
private fun resetActions() {
|
||||||
B.btnGoogle.apply {
|
binding.btnGoogle.apply {
|
||||||
updateProgress(false)
|
updateProgress(false)
|
||||||
isEnabled = true
|
isEnabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
B.btnAnonymous.apply {
|
binding.btnAnonymous.apply {
|
||||||
updateProgress(false)
|
updateProgress(false)
|
||||||
isEnabled = true
|
isEnabled = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateUserProfile() {
|
private fun updateUserProfile() {
|
||||||
authData = AuthProvider.with(this).getAuthData()
|
authData = AuthProvider.with(requireContext()).getAuthData()
|
||||||
|
|
||||||
if (accountProvider.isSignedIn()) {
|
if (accountProvider.isSignedIn()) {
|
||||||
authData.userProfile?.let {
|
authData.userProfile?.let {
|
||||||
B.imgAvatar.load(it.artwork.url) {
|
binding.imgAvatar.load(it.artwork.url) {
|
||||||
placeholder(R.drawable.bg_placeholder)
|
placeholder(R.drawable.bg_placeholder)
|
||||||
transform(RoundedCorners(32))
|
transform(RoundedCorners(32))
|
||||||
}
|
}
|
||||||
|
|
||||||
B.txtName.text = if (authData.isAnonymous)
|
binding.txtName.text = if (authData.isAnonymous)
|
||||||
"Anonymous"
|
"Anonymous"
|
||||||
else
|
else
|
||||||
it.name
|
it.name
|
||||||
|
|
||||||
B.txtEmail.text = if (authData.isAnonymous)
|
binding.txtEmail.text = if (authData.isAnonymous)
|
||||||
"anonymous@gmail.com"
|
"anonymous@gmail.com"
|
||||||
else
|
else
|
||||||
it.email
|
it.email
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
B.imgAvatar.load(R.mipmap.ic_launcher) {
|
binding.imgAvatar.load(R.mipmap.ic_launcher) {
|
||||||
transform(RoundedCorners(32))
|
transform(RoundedCorners(32))
|
||||||
}
|
}
|
||||||
B.txtName.text = getString(R.string.app_name)
|
binding.txtName.text = getString(R.string.app_name)
|
||||||
B.txtEmail.text = getString(R.string.account_logged_out)
|
binding.txtEmail.text = getString(R.string.account_logged_out)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onConnected() {
|
|
||||||
hideNetworkConnectivitySheet()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDisconnected() {
|
|
||||||
showNetworkConnectivitySheet()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onReconnected() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -24,7 +24,8 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
tools:context=".view.ui.account.AccountFragment">
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/layout_toolbar_action"
|
android:id="@+id/layout_toolbar_action"
|
||||||
@@ -25,7 +25,8 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:weightSum="2">
|
android:weightSum="2"
|
||||||
|
tools:context=".view.ui.account.AccountFragment">
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/layout_toolbar_action"
|
android:id="@+id/layout_toolbar_action"
|
||||||
@@ -65,4 +65,9 @@
|
|||||||
android:name="com.aurora.store.view.ui.commons.BlacklistFragment"
|
android:name="com.aurora.store.view.ui.commons.BlacklistFragment"
|
||||||
android:label="@string/title_blacklist_manager"
|
android:label="@string/title_blacklist_manager"
|
||||||
tools:layout="@layout/activity_generic_recycler" />
|
tools:layout="@layout/activity_generic_recycler" />
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/accountFragment"
|
||||||
|
android:name="com.aurora.store.view.ui.account.AccountFragment"
|
||||||
|
android:label="@string/title_account_manager"
|
||||||
|
tools:layout="@layout/fragment_account" />
|
||||||
</navigation>
|
</navigation>
|
||||||
Reference in New Issue
Block a user