[android] Changed work with facebook sdk for login, i.e. replaced the LoginButton with custom textview and LoginManager direct usage

This commit is contained in:
Alexander Zatsepin 2018-05-17 17:02:03 +03:00 committed by Aleksandr Zatsepin
parent 71e037bdfe
commit f342295e36
2 changed files with 32 additions and 24 deletions

View file

@ -100,23 +100,26 @@
android:minHeight="@dimen/height_primary_button"
android:layout_marginTop="@dimen/margin_base"
tools:targetApi="jelly_bean"/>
<com.facebook.login.widget.LoginButton
xmlns:fb="http://schemas.android.com/apk/res-auto"
<TextView
android:id="@+id/facebook_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/height_primary_button"
android:foreground="?clickableBackground"
android:background="?facebookButtonBackground"
android:textColor="?accentButtonTextColor"
android:drawableStart="@drawable/img_facebook"
android:drawableLeft="@drawable/img_facebook"
android:paddingLeft="@dimen/margin_half_plus"
android:paddingStart="@dimen/margin_half_plus"
android:paddingRight="@dimen/margin_base_plus"
android:paddingEnd="@dimen/margin_base_plus"
android:textAppearance="@style/MwmTextAppearance.Body3.Primary"
android:fontFamily="@string/robotoMedium"
android:text="@string/facebook"
android:gravity="center"
android:minHeight="@dimen/height_primary_button"
android:layout_marginTop="@dimen/margin_base"
android:textSize="@dimen/text_size_body_3"
fb:com_facebook_login_text="@string/facebook"
android:paddingStart="@dimen/margin_base"
android:paddingLeft="@dimen/margin_base"
android:paddingEnd="@dimen/margin_base"
android:paddingRight="@dimen/margin_base"
android:paddingTop="@dimen/margin_half_plus"
android:paddingBottom="@dimen/margin_half_plus"
android:layout_gravity="center_horizontal"/>
tools:targetApi="jelly_bean"/>
<TextView
android:id="@+id/phone_button"
android:layout_width="match_parent"

View file

@ -23,7 +23,6 @@ import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInClient;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
@ -68,6 +67,13 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
startActivityForResult(intent, Constants.REQ_CODE_GOOGLE_SIGN_IN);
}
};
@NonNull
private final View.OnClickListener mFacebookClickListener = v -> {
LoginManager lm = LoginManager.getInstance();
lm.logInWithReadPermissions(SocialAuthDialogFragment.this,
Constants.FACEBOOK_PERMISSIONS);
lm.registerCallback(mFacebookCallbackManager, new FBCallback(SocialAuthDialogFragment.this));
};
@SuppressWarnings("NullableProblems")
@NonNull
private CheckBox mPrivacyPolicyCheck;
@ -105,17 +111,9 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
{
View view = inflater.inflate(R.layout.fragment_auth_passport_dialog, container, false);
View googleButton = view.findViewById(R.id.google_button);
googleButton.setOnClickListener(mGoogleClickListener);
LoginManager.getInstance().logOut();
LoginButton facebookButton = view.findViewById(R.id.facebook_button);
facebookButton.setReadPermissions(Constants.FACEBOOK_PERMISSIONS);
facebookButton.setFragment(this);
facebookButton.registerCallback(mFacebookCallbackManager, new FBCallback(this));
View phoneButton = view.findViewById(R.id.phone_button);
phoneButton.setOnClickListener(mPhoneClickListener);
setLoginButton(view, R.id.google_button, mGoogleClickListener);
setLoginButton(view, R.id.facebook_button, mFacebookClickListener);
setLoginButton(view, R.id.phone_button, mPhoneClickListener);
mPromoCheck = view.findViewById(R.id.newsCheck);
mPrivacyPolicyCheck = view.findViewById(R.id.privacyPolicyCheck);
@ -136,6 +134,13 @@ public class SocialAuthDialogFragment extends BaseMwmDialogFragment
return view;
}
private static void setLoginButton(@NonNull View root, @IdRes int id,
@NonNull View.OnClickListener clickListener)
{
View button = root.findViewById(id);
button.setOnClickListener(clickListener);
}
private static void linkifyPolicyViews(@NonNull View root, @IdRes int... ids)
{
for (int id : ids)