Support for anonymous users
This commit is contained in:
parent
13a2ccac2c
commit
3e9ad9fa6a
@ -13,6 +13,11 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme"
|
||||||
android:usesCleartextTraffic="true">
|
android:usesCleartextTraffic="true">
|
||||||
|
<activity
|
||||||
|
android:name=".ui.onboarding.AnonymousSignInActivity"
|
||||||
|
android:label="@string/title_activity_anonymous_sign_in"
|
||||||
|
android:theme="@style/AppTheme.NoActionBar">
|
||||||
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.checkout.CheckoutActivity"
|
android:name=".ui.checkout.CheckoutActivity"
|
||||||
android:label="@string/title_activity_checkout"
|
android:label="@string/title_activity_checkout"
|
||||||
|
|||||||
@ -3,12 +3,14 @@ package me.gilo.wc
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v7.app.AppCompatActivity
|
import android.support.v7.app.AppCompatActivity
|
||||||
|
import com.google.firebase.auth.FirebaseAuth
|
||||||
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
import me.gilo.raison.ui.user.onboarding.SignInActivity
|
||||||
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||||
import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity
|
import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity
|
||||||
import me.gilo.wc.ui.customer.BillingAddressActivity
|
import me.gilo.wc.ui.customer.BillingAddressActivity
|
||||||
import me.gilo.wc.ui.customer.ShippingAddressActivity
|
import me.gilo.wc.ui.customer.ShippingAddressActivity
|
||||||
import me.gilo.wc.ui.home.HomeActivity
|
import me.gilo.wc.ui.home.HomeActivity
|
||||||
|
import me.gilo.wc.ui.onboarding.AnonymousSignInActivity
|
||||||
import me.gilo.wc.ui.product.ProductActivity
|
import me.gilo.wc.ui.product.ProductActivity
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
@ -19,12 +21,12 @@ class MainActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
|
|
||||||
startActivity(Intent(baseContext, HomeActivity::class.java))
|
|
||||||
|
|
||||||
// val intent = Intent(baseContext, ProductActivity::class.java)
|
if(FirebaseAuth.getInstance().currentUser != null) {
|
||||||
// intent.putExtra("productId", 63)
|
startActivity(Intent(baseContext, HomeActivity::class.java))
|
||||||
//
|
}else{
|
||||||
// startActivity(intent)
|
startActivity(Intent(baseContext, AnonymousSignInActivity::class.java))
|
||||||
|
}
|
||||||
|
|
||||||
finish()
|
finish()
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import me.gilo.wc.ui.customer.BillingAddressActivity;
|
|||||||
import me.gilo.wc.ui.customer.ProfileActivity;
|
import me.gilo.wc.ui.customer.ProfileActivity;
|
||||||
import me.gilo.wc.ui.customer.ShippingAddressActivity;
|
import me.gilo.wc.ui.customer.ShippingAddressActivity;
|
||||||
import me.gilo.wc.ui.home.HomeActivity;
|
import me.gilo.wc.ui.home.HomeActivity;
|
||||||
|
import me.gilo.wc.ui.onboarding.AnonymousSignInActivity;
|
||||||
import me.gilo.wc.ui.product.CartActivity;
|
import me.gilo.wc.ui.product.CartActivity;
|
||||||
import me.gilo.wc.ui.product.ProductActivity;
|
import me.gilo.wc.ui.product.ProductActivity;
|
||||||
import me.gilo.wc.ui.product.ShopActivity;
|
import me.gilo.wc.ui.product.ShopActivity;
|
||||||
@ -51,4 +52,7 @@ abstract class ActivitiesModule {
|
|||||||
@ContributesAndroidInjector
|
@ContributesAndroidInjector
|
||||||
abstract ProfileActivity contributesProfileActivity();
|
abstract ProfileActivity contributesProfileActivity();
|
||||||
|
|
||||||
|
@ContributesAndroidInjector
|
||||||
|
abstract AnonymousSignInActivity contributesAnonymousSignInActivity();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,6 +38,17 @@ public class FirebaseUserRepository extends FirebaseRepository {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public CompletionGenericLiveData<AuthResult> anonymousSignIn() {
|
||||||
|
final CompletionGenericLiveData<AuthResult> completion = new CompletionGenericLiveData();
|
||||||
|
|
||||||
|
FirebaseAuth auth = FirebaseAuth.getInstance();
|
||||||
|
auth.signInAnonymously().addOnCompleteListener(completion);
|
||||||
|
|
||||||
|
return completion;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public CompletionGenericLiveData<AuthResult> signUp(String email, String password) {
|
public CompletionGenericLiveData<AuthResult> signUp(String email, String password) {
|
||||||
final CompletionGenericLiveData<AuthResult> completion = new CompletionGenericLiveData();
|
final CompletionGenericLiveData<AuthResult> completion = new CompletionGenericLiveData();
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,70 @@
|
|||||||
|
package me.gilo.wc.ui.onboarding
|
||||||
|
|
||||||
|
import android.arch.lifecycle.Observer
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.support.design.widget.Snackbar
|
||||||
|
import android.support.v7.app.AppCompatActivity
|
||||||
|
import android.widget.Toast
|
||||||
|
import io.github.inflationx.viewpump.ViewPumpContextWrapper
|
||||||
|
import me.gilo.wc.R
|
||||||
|
|
||||||
|
import kotlinx.android.synthetic.main.activity_anonymous_sign_in.*
|
||||||
|
import kotlinx.android.synthetic.main.content_sign_in.*
|
||||||
|
import me.gilo.raison.ui.user.onboarding.SignUpActivity
|
||||||
|
import me.gilo.wc.common.BaseActivity
|
||||||
|
import me.gilo.wc.common.Status
|
||||||
|
import me.gilo.wc.ui.WooDroidActivity
|
||||||
|
import me.gilo.wc.ui.home.HomeActivity
|
||||||
|
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||||
|
import me.gilo.wc.viewmodels.UserViewModel
|
||||||
|
import java.util.regex.Matcher
|
||||||
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
|
class AnonymousSignInActivity : WooDroidActivity<UserViewModel>() {
|
||||||
|
|
||||||
|
|
||||||
|
override lateinit var viewModel : UserViewModel
|
||||||
|
|
||||||
|
override fun attachBaseContext(newBase: Context) {
|
||||||
|
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase))
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
setContentView(R.layout.activity_anonymous_sign_in)
|
||||||
|
|
||||||
|
viewModel = getViewModel(UserViewModel::class.java)
|
||||||
|
anonymousSignIn()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun anonymousSignIn() {
|
||||||
|
viewModel.anonymousSignIn().observe(this, Observer {
|
||||||
|
response->
|
||||||
|
when (response!!.status()){
|
||||||
|
Status.LOADING ->{
|
||||||
|
showLoading("Setting you up with an account", "This will only take a short while")
|
||||||
|
}
|
||||||
|
|
||||||
|
Status.SUCCESS ->{
|
||||||
|
stopShowingLoading()
|
||||||
|
startActivity(Intent(baseContext, HomeActivity::class.java))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Status.ERROR ->{
|
||||||
|
stopShowingLoading()
|
||||||
|
Toast.makeText(baseContext, "Something went wrong", Toast.LENGTH_LONG).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
Status.EMPTY ->{
|
||||||
|
stopShowingLoading()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,19 +11,20 @@ import kotlinx.android.synthetic.main.content_sign_in.*
|
|||||||
import me.gilo.wc.R
|
import me.gilo.wc.R
|
||||||
import me.gilo.wc.common.BaseActivity
|
import me.gilo.wc.common.BaseActivity
|
||||||
import me.gilo.wc.common.Status
|
import me.gilo.wc.common.Status
|
||||||
|
import me.gilo.wc.ui.WooDroidActivity
|
||||||
import me.gilo.wc.ui.home.HomeActivity
|
import me.gilo.wc.ui.home.HomeActivity
|
||||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||||
|
import me.gilo.wc.viewmodels.CustomerViewModel
|
||||||
import me.gilo.wc.viewmodels.UserViewModel
|
import me.gilo.wc.viewmodels.UserViewModel
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import java.util.regex.Matcher
|
import java.util.regex.Matcher
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
|
|
||||||
class SignInActivity : BaseActivity() {
|
class SignInActivity : WooDroidActivity<UserViewModel>() {
|
||||||
|
|
||||||
|
|
||||||
lateinit var viewModel : UserViewModel
|
override lateinit var viewModel : UserViewModel
|
||||||
val TAG = this::getLocalClassName
|
|
||||||
|
|
||||||
private lateinit var progressDialog: ProgressDialogFragment
|
private lateinit var progressDialog: ProgressDialogFragment
|
||||||
private val pattern = Pattern.compile(EMAIL_PATTERN)
|
private val pattern = Pattern.compile(EMAIL_PATTERN)
|
||||||
@ -107,17 +108,6 @@ class SignInActivity : BaseActivity() {
|
|||||||
return matcher!!.matches()
|
return matcher!!.matches()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showLoading(title: String, message: String) {
|
|
||||||
val manager = supportFragmentManager
|
|
||||||
progressDialog = ProgressDialogFragment.newInstance(title, message)
|
|
||||||
progressDialog.isCancelable = false
|
|
||||||
progressDialog.show(manager, "progress")
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun stopShowingLoading() {
|
|
||||||
progressDialog.dismiss()
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
|
private const val EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,15 +13,16 @@ import me.gilo.wc.common.BaseActivity
|
|||||||
import me.gilo.wc.common.Status
|
import me.gilo.wc.common.Status
|
||||||
|
|
||||||
import me.gilo.wc.models.User
|
import me.gilo.wc.models.User
|
||||||
|
import me.gilo.wc.ui.WooDroidActivity
|
||||||
import me.gilo.wc.ui.home.HomeActivity
|
import me.gilo.wc.ui.home.HomeActivity
|
||||||
import me.gilo.wc.ui.state.ProgressDialogFragment
|
import me.gilo.wc.ui.state.ProgressDialogFragment
|
||||||
import me.gilo.wc.viewmodels.UserViewModel
|
import me.gilo.wc.viewmodels.UserViewModel
|
||||||
import java.util.regex.Matcher
|
import java.util.regex.Matcher
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
class SignUpActivity : BaseActivity() {
|
class SignUpActivity : WooDroidActivity<UserViewModel>() {
|
||||||
|
|
||||||
lateinit var viewModel : UserViewModel
|
override lateinit var viewModel : UserViewModel
|
||||||
val TAG = this::getLocalClassName
|
val TAG = this::getLocalClassName
|
||||||
|
|
||||||
private lateinit var progressDialog: ProgressDialogFragment
|
private lateinit var progressDialog: ProgressDialogFragment
|
||||||
@ -186,17 +187,6 @@ class SignUpActivity : BaseActivity() {
|
|||||||
return matcher!!.matches()
|
return matcher!!.matches()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showLoading(title: String, message: String) {
|
|
||||||
val manager = supportFragmentManager
|
|
||||||
progressDialog = ProgressDialogFragment.newInstance(title, message)
|
|
||||||
progressDialog.isCancelable = false
|
|
||||||
progressDialog.show(manager, "progress")
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun stopShowingLoading() {
|
|
||||||
progressDialog.dismiss()
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
|
private const val EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,6 +29,10 @@ public final class UserViewModel extends ViewModel {
|
|||||||
return firebaseUserRepository.login(username, password);
|
return firebaseUserRepository.login(username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CompletionGenericLiveData<AuthResult> anonymousSignIn() {
|
||||||
|
return firebaseUserRepository.anonymousSignIn();
|
||||||
|
}
|
||||||
|
|
||||||
public CompletionGenericLiveData<AuthResult> firebaseLogin(String email, String password) {
|
public CompletionGenericLiveData<AuthResult> firebaseLogin(String email, String password) {
|
||||||
return firebaseUserRepository.login(email, password);
|
return firebaseUserRepository.login(email, password);
|
||||||
}
|
}
|
||||||
|
|||||||
26
app/src/main/res/layout/activity_anonymous_sign_in.xml
Normal file
26
app/src/main/res/layout/activity_anonymous_sign_in.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<android.support.design.widget.CoordinatorLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".ui.onboarding.AnonymousSignInActivity">
|
||||||
|
|
||||||
|
<android.support.design.widget.AppBarLayout
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:theme="@style/AppTheme.AppBarOverlay">
|
||||||
|
|
||||||
|
<android.support.v7.widget.Toolbar
|
||||||
|
android:id="@+id/toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
android:background="?attr/colorPrimary"
|
||||||
|
app:popupTheme="@style/AppTheme.PopupOverlay"/>
|
||||||
|
|
||||||
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
|
<include layout="@layout/content_anonymous_sign_in"/>
|
||||||
|
|
||||||
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.v4.widget.NestedScrollView
|
<android.support.constraint.ConstraintLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
@ -9,10 +9,36 @@
|
|||||||
android:layout_margin="16dp"
|
android:layout_margin="16dp"
|
||||||
>
|
>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvText"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</android.support.v4.widget.NestedScrollView>
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@mipmap/ic_launcher"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
android:id="@+id/imageView2"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tvSplashText"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Loading"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:layout_marginLeft="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginRight="8dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/imageView2"/>
|
||||||
|
|
||||||
|
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
||||||
13
app/src/main/res/layout/content_anonymous_sign_in.xml
Normal file
13
app/src/main/res/layout/content_anonymous_sign_in.xml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<android.support.constraint.ConstraintLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/bg"
|
||||||
|
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||||
|
tools:showIn="@layout/activity_anonymous_sign_in"
|
||||||
|
tools:context=".ui.onboarding.AnonymousSignInActivity">
|
||||||
|
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
||||||
@ -45,5 +45,6 @@
|
|||||||
</string>
|
</string>
|
||||||
<string name="title_activity_cart">CartActivity</string>
|
<string name="title_activity_cart">CartActivity</string>
|
||||||
<string name="title_activity_checkout">CheckoutActivity</string>
|
<string name="title_activity_checkout">CheckoutActivity</string>
|
||||||
|
<string name="title_activity_anonymous_sign_in">AnonymousSignInActivity</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user