Skip to content

[In-App Messaging] DisplayErrorListener won't be triggered while displaying error in-app messaging.  #5644

@ione0213

Description

@ione0213

[READ] Step 1: Are you in the right place?

  • Yes

[REQUIRED] Step 2: Describe your environment

  • Android Studio version: Hedgehog 2023.1.1 Patch 1
  • Firebase Component: In-App Messaging
  • Component version: 32.2.3

[REQUIRED] Step 3: Describe the problem

DisplayErrorListener won't trigger while displaying error in-app messaging.

Steps to reproduce:

  1. Add FirebaseInAppMessagingDisplayErrorListener via FirebaseInAppMessaging.getInstance().addDisplayErrorListener().
  2. Create a new campaign with a jpeg whose format is unsupported and make it display in the app.
  3. DisplayErrorListener won't be triggered while displaying error in-app messaging.

What happened? How can we make the problem occur?
This could be a description, log/console output, etc.

We found while the function onLoadFailed was accessed, the inAppMessage and displayCallbacks objects are always null.
Hence DisplayErrorListener will never be triggered.

Relevant Code:

@FirebaseAppScope
public class GlideErrorListener implements RequestListener<Object> {
  private InAppMessage inAppMessage;
  private FirebaseInAppMessagingDisplayCallbacks displayCallbacks;

  @Inject
  GlideErrorListener() {}

  public void setInAppMessage(
      InAppMessage inAppMessage, FirebaseInAppMessagingDisplayCallbacks displayCallbacks) {
    this.inAppMessage = inAppMessage;
    this.displayCallbacks = displayCallbacks;
  }

  @Override
  public boolean onLoadFailed(
      @Nullable GlideException e, Object model, Target<Object> target, boolean isFirstResource) {
    Logging.logd("Image Downloading  Error : " + e.getMessage() + ":" + e.getCause());

    if (inAppMessage != null && displayCallbacks != null) {
      if (e.getLocalizedMessage().contains("Failed to decode")) {
        displayCallbacks.displayErrorEncountered(
            FirebaseInAppMessagingDisplayCallbacks.InAppMessagingErrorReason
                .IMAGE_UNSUPPORTED_FORMAT);
      } else {
        displayCallbacks.displayErrorEncountered(
            FirebaseInAppMessagingDisplayCallbacks.InAppMessagingErrorReason
                .UNSPECIFIED_RENDER_ERROR);
      }
    }

    return false;
  }

  @Override
  public boolean onResourceReady(
      Object resource,
      Object model,
      Target<Object> target,
      DataSource dataSource,
      boolean isFirstResource) {
    Logging.logd("Image Downloading  Success : " + resource);
    return false;
  }
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions