Skip to content

Commit

Permalink
FDL getDynamicLink(Intent) method to accept null intent to be in sync…
Browse files Browse the repository at this point in the history
… with the documentation and since the intent is not a must parameter to derive the pending FDL. (#2629)
  • Loading branch information
eldhosembabu authored Sep 23, 2021
1 parent 5f29bb7 commit d5eec48
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import android.content.Intent;
import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
Expand Down Expand Up @@ -99,7 +100,7 @@ public static synchronized FirebaseDynamicLinks getInstance(@NonNull FirebaseApp
* <p>If a dynamic link, the call will also send FirebaseAnalytics dynamic link event.
*/
@NonNull
public abstract Task<PendingDynamicLinkData> getDynamicLink(@NonNull Intent intent);
public abstract Task<PendingDynamicLinkData> getDynamicLink(@Nullable Intent intent);

/**
* Determine if the app has a pending dynamic link and provide access to the dynamic link
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,15 +104,20 @@ public PendingDynamicLinkData getPendingDynamicLinkData(@NonNull Intent intent)
}

@Override
public Task<PendingDynamicLinkData> getDynamicLink(@NonNull final Intent intent) {
public Task<PendingDynamicLinkData> getDynamicLink(@Nullable final Intent intent) {
String dynamicLinkDataString = intent != null ? intent.getDataString() : null;
Task<PendingDynamicLinkData> result =
googleApi.doWrite(new GetDynamicLinkImpl(analytics, intent.getDataString()));
PendingDynamicLinkData pendingDynamicLinkData = getPendingDynamicLinkData(intent);
if (pendingDynamicLinkData != null) {
// DynamicLinkData included in the Intent, return it immediately and allow the Task to run in
// the background to do logging and mark the FDL as returned.
result = Tasks.forResult(pendingDynamicLinkData);
googleApi.doWrite(new GetDynamicLinkImpl(analytics, dynamicLinkDataString));

if (intent != null) {
PendingDynamicLinkData pendingDynamicLinkData = getPendingDynamicLinkData(intent);
if (pendingDynamicLinkData != null) {
// DynamicLinkData included in the Intent, return it immediately and allow the Task to run
// in the background to do logging and mark the FDL as returned.
result = Tasks.forResult(pendingDynamicLinkData);
}
}

return result;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,13 @@ public void testGetDynamicLink_Intent() {
.doWrite(ArgumentMatchers.<TaskApiCall<DynamicLinksClient, PendingDynamicLinkData>>any());
}

@Test
public void testGetDynamicLink_NullIntent() {
api.getDynamicLink((Intent) null);
verify(mockGoogleApi)
.doWrite(ArgumentMatchers.<TaskApiCall<DynamicLinksClient, PendingDynamicLinkData>>any());
}

@Test
public void testGetDynamicLink_IntentWithDynamicLinkData() {
Bundle extensions = new Bundle();
Expand Down

0 comments on commit d5eec48

Please sign in to comment.