Skip to content

Add supported providers annotation #700

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Jun 1, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions auth/src/main/java/com/firebase/ui/auth/AuthUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StringDef;
import android.support.annotation.StyleRes;
import android.support.v4.app.FragmentActivity;

Expand Down Expand Up @@ -73,6 +74,13 @@
* for examples on how to get started with FirebaseUI Auth.
*/
public class AuthUI {
@StringDef({
EmailAuthProvider.PROVIDER_ID, EMAIL_PROVIDER,
GoogleAuthProvider.PROVIDER_ID, GOOGLE_PROVIDER,
FacebookAuthProvider.PROVIDER_ID, FACEBOOK_PROVIDER,
TwitterAuthProvider.PROVIDER_ID, TWITTER_PROVIDER
})
public @interface SupportedProvider {}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want this to be public? I feel like it could be useful, but it also means we have to maintain backwards compatibility...


/**
* Provider identifier for email and password credentials, for use with
Expand Down Expand Up @@ -333,7 +341,7 @@ public static class IdpConfig implements Parcelable {
private final String mProviderId;
private final List<String> mScopes;

private IdpConfig(@NonNull String providerId, List<String> scopes) {
private IdpConfig(@SupportedProvider @NonNull String providerId, List<String> scopes) {
mProviderId = providerId;
mScopes = Collections.unmodifiableList(scopes);
}
Expand All @@ -343,6 +351,7 @@ private IdpConfig(Parcel in) {
mScopes = Collections.unmodifiableList(in.createStringArrayList());
}

@SupportedProvider
public String getProviderId() {
return mProviderId;
}
Expand Down Expand Up @@ -398,7 +407,7 @@ public String toString() {
}

public static class Builder {
private String mProviderId;
@SupportedProvider private String mProviderId;
private List<String> mScopes = new ArrayList<>();

/**
Expand All @@ -408,7 +417,7 @@ public static class Builder {
* AuthUI#GOOGLE_PROVIDER}. See {@link AuthUI#SUPPORTED_PROVIDERS} for
* the complete list of supported Identity providers
*/
public Builder(@NonNull String providerId) {
public Builder(@SupportedProvider @NonNull String providerId) {
if (!SUPPORTED_PROVIDERS.contains(providerId)) {
throw new IllegalArgumentException("Unkown provider: " + providerId);
}
Expand Down
3 changes: 2 additions & 1 deletion auth/src/main/java/com/firebase/ui/auth/IdpResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ public Intent toIntent() {
* Get the type of provider. e.g. {@link AuthUI#GOOGLE_PROVIDER}
*/
@NonNull
@AuthUI.SupportedProvider
public String getProviderType() {
return mProviderId;
}
Expand Down Expand Up @@ -158,7 +159,7 @@ public static class Builder {
private String mToken;
private String mSecret;

public Builder(@NonNull String providerId, @Nullable String email) {
public Builder(@AuthUI.SupportedProvider @NonNull String providerId, @Nullable String email) {
mProviderId = providerId;
mEmail = email;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ public String getName(Context context) {
}

@Override
@AuthUI.SupportedProvider
public String getProviderId() {
return FacebookAuthProvider.PROVIDER_ID;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import android.util.Log;
import android.widget.Toast;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.AuthUI.IdpConfig;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
Expand Down Expand Up @@ -104,6 +105,7 @@ public String getName(Context context) {
}

@Override
@AuthUI.SupportedProvider
public String getProviderId() {
return GoogleAuthProvider.PROVIDER_ID;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import android.support.annotation.LayoutRes;
import android.util.Log;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.google.firebase.auth.AuthCredential;
Expand Down Expand Up @@ -54,6 +55,7 @@ public String getName(Context context) {
}

@Override
@AuthUI.SupportedProvider
public String getProviderId() {
return TwitterAuthProvider.PROVIDER_ID;
}
Expand Down
5 changes: 4 additions & 1 deletion auth/src/main/java/com/firebase/ui/auth/ui/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;

import com.firebase.ui.auth.AuthUI;

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public class User implements Parcelable {
public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {
Expand Down Expand Up @@ -57,6 +59,7 @@ public String getName() {
}

@Nullable
@AuthUI.SupportedProvider
public String getProvider() {
return mProvider;
}
Expand Down Expand Up @@ -94,7 +97,7 @@ public Builder setName(String name) {
return this;
}

public Builder setProvider(String provider) {
public Builder setProvider(@AuthUI.SupportedProvider String provider) {
mProvider = provider;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import android.support.annotation.RestrictTo;
import android.util.Log;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.ErrorCodes;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ResultCodes;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import android.support.v4.app.FragmentManager;
import android.text.TextUtils;
import android.util.Log;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.AuthUI.IdpConfig;
import com.firebase.ui.auth.IdpResponse;
Expand Down Expand Up @@ -194,7 +195,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
private List<String> getSupportedAccountTypes() {
List<String> accounts = new ArrayList<>();
for (AuthUI.IdpConfig idpConfig : mHelper.getFlowParams().providerInfo) {
String providerId = idpConfig.getProviderId();
@AuthUI.SupportedProvider String providerId = idpConfig.getProviderId();
if (providerId.equals(GoogleAuthProvider.PROVIDER_ID)
|| providerId.equals(FacebookAuthProvider.PROVIDER_ID)
|| providerId.equals(TwitterAuthProvider.PROVIDER_ID)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import android.util.Pair;
import android.widget.Toast;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.ui.FragmentBase;
import com.google.android.gms.auth.api.credentials.Credential;
import com.google.android.gms.auth.api.credentials.IdentityProviders;
Expand Down Expand Up @@ -42,7 +43,7 @@ public abstract class SmartLockBase<R extends Result> extends FragmentBase imple
* Translate a Firebase Auth provider ID (such as {@link GoogleAuthProvider#PROVIDER_ID}) to
* a Credentials API account type (such as {@link IdentityProviders#GOOGLE}).
*/
public static String providerIdToAccountType(@NonNull String providerId) {
public static String providerIdToAccountType(@AuthUI.SupportedProvider @NonNull String providerId) {
switch (providerId) {
case GoogleAuthProvider.PROVIDER_ID:
return IdentityProviders.GOOGLE;
Expand All @@ -58,6 +59,7 @@ public static String providerIdToAccountType(@NonNull String providerId) {
}
}

@AuthUI.SupportedProvider
public static String accountTypeToProviderId(@NonNull String accountType) {
switch (accountType) {
case IdentityProviders.GOOGLE:
Expand All @@ -84,7 +86,7 @@ public static List<Credential> credentialsFromFirebaseUser(@NonNull FirebaseUser
List<Credential> credentials = new ArrayList<>();
for (UserInfo userInfo : user.getProviderData()) {
// Get provider ID from Firebase Auth
String providerId = userInfo.getProviderId();
@AuthUI.SupportedProvider String providerId = userInfo.getProviderId();

// Convert to Credentials API account type
String accountType = providerIdToAccountType(providerId);
Expand Down Expand Up @@ -132,10 +134,6 @@ public void onStop() {
@Override
public void onDestroy() {
super.onDestroy();
cleanup();
}

public void cleanup() {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@samtstern What size level of changes do you want me to split into other PRs? I'm happy to move this to another PR. (it was just a small nit Intellij complained about)

if (mGoogleApiClient != null) {
mGoogleApiClient.disconnect();
}
Expand Down