Skip to content

Commit

Permalink
refactor(app): replace ButterKnife with View Binding (#1930)
Browse files Browse the repository at this point in the history
  • Loading branch information
thatfiredev authored Apr 7, 2021
1 parent 4455f41 commit 3d578ef
Show file tree
Hide file tree
Showing 21 changed files with 294 additions and 364 deletions.
11 changes: 6 additions & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ android {
lintOptions {
// Common lint options across all modules
disable(
"ObsoleteLintCustomCheck", // ButterKnife will fix this in v9.0
"IconExpectedSize",
"InvalidPackage", // Firestore uses GRPC which makes lint mad
"NewerVersionAvailable", "GradleDependency", // For reproducible builds
Expand All @@ -58,8 +57,12 @@ android {
}

compileOptions {
setSourceCompatibility(JavaVersion.VERSION_1_8)
setTargetCompatibility(JavaVersion.VERSION_1_8)
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

buildFeatures {
viewBinding = true
}
}

Expand Down Expand Up @@ -87,9 +90,7 @@ dependencies {
// They are used to make some aspects of the demo app implementation simpler for
// demonstrative purposes, and you may find them useful in your own apps; YMMV.
implementation(Config.Libs.Misc.permissions)
implementation(Config.Libs.Misc.butterKnife)
implementation(Config.Libs.Androidx.constraint)
annotationProcessor(Config.Libs.Misc.butterKnifeCompiler)
debugImplementation(Config.Libs.Misc.leakCanary)
debugImplementation(Config.Libs.Misc.leakCanaryFragments)
releaseImplementation(Config.Libs.Misc.leakCanaryNoop)
Expand Down
17 changes: 7 additions & 10 deletions app/src/main/java/com/firebase/uidemo/ChooserActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,17 @@
import com.firebase.uidemo.database.firestore.FirestorePagingActivity;
import com.firebase.uidemo.database.realtime.FirebaseDbPagingActivity;
import com.firebase.uidemo.database.realtime.RealtimeDbChatActivity;
import com.firebase.uidemo.databinding.ActivityChooserBinding;
import com.firebase.uidemo.storage.ImageActivity;

import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import butterknife.BindView;
import butterknife.ButterKnife;

public class ChooserActivity extends AppCompatActivity {
@BindView(R.id.activities)
RecyclerView mActivities;
private ActivityChooserBinding mBinding;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
Expand All @@ -55,13 +53,12 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
finish();
return;
}
mBinding = ActivityChooserBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());

setContentView(R.layout.activity_chooser);
ButterKnife.bind(this);

mActivities.setLayoutManager(new LinearLayoutManager(this));
mActivities.setAdapter(new ActivityChooserAdapter());
mActivities.setHasFixedSize(true);
mBinding.activities.setLayoutManager(new LinearLayoutManager(this));
mBinding.activities.setAdapter(new ActivityChooserAdapter());
mBinding.activities.setHasFixedSize(true);
}

private static class ActivityChooserAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;
import android.widget.Toast;

import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.ErrorCodes;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.uidemo.R;
import com.firebase.uidemo.databinding.ActivityAnonymousUpgradeBinding;
import com.firebase.uidemo.util.ConfigurationUtils;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
Expand All @@ -25,38 +25,22 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class AnonymousUpgradeActivity extends AppCompatActivity {

private static final String TAG = "AccountLink";

private static final int RC_SIGN_IN = 123;

@BindView(R.id.status_text)
TextView mStatus;

@BindView(R.id.anon_sign_in)
Button mAnonSignInButton;

@BindView(R.id.begin_flow)
Button mLaunchUIButton;

@BindView(R.id.resolve_merge)
Button mResolveMergeButton;

@BindView(R.id.sign_out)
Button mSignOutButton;
private ActivityAnonymousUpgradeBinding mBinding;

private AuthCredential mPendingCredential;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anonymous_upgrade);
ButterKnife.bind(this);
mBinding = ActivityAnonymousUpgradeBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());

updateUI();

Expand All @@ -67,9 +51,36 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
handleSignInResult(RC_SIGN_IN, ErrorCodes.ANONYMOUS_UPGRADE_MERGE_CONFLICT,
getIntent());
}

mBinding.anonSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signInAnonymously();
}
});

mBinding.beginFlow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startAuthUI();
}
});

mBinding.resolveMerge.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
resolveMerge();
}
});

mBinding.signOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signOut();
}
});
}

@OnClick(R.id.anon_sign_in)
public void signInAnonymously() {
FirebaseAuth.getInstance().signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
Expand All @@ -87,7 +98,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
});
}

@OnClick(R.id.begin_flow)
public void startAuthUI() {
List<AuthUI.IdpConfig> providers = ConfigurationUtils.getConfiguredProviders(this);
Intent intent = AuthUI.getInstance().createSignInIntentBuilder()
Expand All @@ -98,7 +108,6 @@ public void startAuthUI() {
startActivityForResult(intent, RC_SIGN_IN);
}

@OnClick(R.id.resolve_merge)
public void resolveMerge() {
if (mPendingCredential == null) {
Toast.makeText(this, "Nothing to resolve.", Toast.LENGTH_SHORT).show();
Expand All @@ -125,7 +134,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
});
}

@OnClick(R.id.sign_out)
public void signOut() {
AuthUI.getInstance().signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
Expand Down Expand Up @@ -156,7 +164,7 @@ private void handleSignInResult(int requestCode, int resultCode, Intent data) {
} else if (response.getError().getErrorCode() == ErrorCodes
.ANONYMOUS_UPGRADE_MERGE_CONFLICT) {
setStatus("Merge conflict: user already exists.");
mResolveMergeButton.setEnabled(true);
mBinding.resolveMerge.setEnabled(true);
mPendingCredential = response.getCredentialForLinking();
} else {
Toast.makeText(this, "Auth error, see logs", Toast.LENGTH_SHORT).show();
Expand All @@ -172,33 +180,33 @@ private void updateUI() {

if (currentUser == null) {
// Not signed in
mAnonSignInButton.setEnabled(true);
mLaunchUIButton.setEnabled(false);
mResolveMergeButton.setEnabled(false);
mSignOutButton.setEnabled(false);
mBinding.anonSignIn.setEnabled(true);
mBinding.beginFlow.setEnabled(false);
mBinding.resolveMerge.setEnabled(false);
mBinding.signOut.setEnabled(false);
} else if (mPendingCredential == null && currentUser.isAnonymous()) {
// Anonymous user, waiting for linking
mAnonSignInButton.setEnabled(false);
mLaunchUIButton.setEnabled(true);
mResolveMergeButton.setEnabled(false);
mSignOutButton.setEnabled(true);
mBinding.anonSignIn.setEnabled(false);
mBinding.beginFlow.setEnabled(true);
mBinding.resolveMerge.setEnabled(false);
mBinding.signOut.setEnabled(true);
} else if (mPendingCredential == null && !currentUser.isAnonymous()) {
// Fully signed in
mAnonSignInButton.setEnabled(false);
mLaunchUIButton.setEnabled(false);
mResolveMergeButton.setEnabled(false);
mSignOutButton.setEnabled(true);
mBinding.anonSignIn.setEnabled(false);
mBinding.beginFlow.setEnabled(false);
mBinding.resolveMerge.setEnabled(false);
mBinding.signOut.setEnabled(true);
} else if (mPendingCredential != null) {
// Signed in anonymous, awaiting merge conflict
mAnonSignInButton.setEnabled(false);
mLaunchUIButton.setEnabled(false);
mResolveMergeButton.setEnabled(true);
mSignOutButton.setEnabled(true);
mBinding.anonSignIn.setEnabled(false);
mBinding.beginFlow.setEnabled(false);
mBinding.resolveMerge.setEnabled(true);
mBinding.signOut.setEnabled(true);
}
}

private void setStatus(String message) {
mStatus.setText(message);
mBinding.statusText.setText(message);
}

private String getUserIdentifier(FirebaseUser user) {
Expand Down
Loading

0 comments on commit 3d578ef

Please sign in to comment.