diff --git a/shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java b/shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java index 35d17f8..31f0a35 100644 --- a/shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java +++ b/shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java @@ -16,6 +16,7 @@ package com.linkedin.android.shaky; import android.app.Activity; +import android.app.DialogFragment; import androidx.annotation.IntDef; import androidx.annotation.MenuRes; @@ -131,6 +132,14 @@ public Integer getPopupTheme() { public void collectData(@NonNull Activity activity, @NonNull Result data) { } + /** + * @return a custom dialog to be shown before the feedback flow + */ + @Nullable + public DialogFragment getCustomDialog() { + return null; + } + /** * Called when the user submits the Feedback form. Creates and starts an email Intent. * This method can be overridden to send data to a custom URL endpoint, etc. diff --git a/shaky/src/main/java/com/linkedin/android/shaky/Shaky.java b/shaky/src/main/java/com/linkedin/android/shaky/Shaky.java index 69ce045..c5bf791 100644 --- a/shaky/src/main/java/com/linkedin/android/shaky/Shaky.java +++ b/shaky/src/main/java/com/linkedin/android/shaky/Shaky.java @@ -50,9 +50,9 @@ public class Shaky implements ShakeDetector.Listener { private static final String SEND_FEEDBACK_TAG = "SendFeedback"; private static final String COLLECT_DATA_TAG = "CollectFeedbackData"; + private static final String CUSTOM_DIALOG_TAG = "CustomDialog"; private static final long SHAKE_COOLDOWN_MS = TimeUnit.SECONDS.toMillis(5); - private final ShakeDelegate delegate; private final ShakeDetector shakeDetector; @Nullable @@ -186,7 +186,11 @@ public void hearShake() { arguments.putInt(ShakySettingDialog.SHAKY_CURRENT_SENSITIVITY, delegate.getSensitivityLevel()); SendFeedbackDialog sendFeedbackDialog = new SendFeedbackDialog(); sendFeedbackDialog.setArguments(arguments); - sendFeedbackDialog.show(activity.getFragmentManager(), SEND_FEEDBACK_TAG); + if (delegate.getCustomDialog() != null) { + delegate.getCustomDialog().show(activity.getFragmentManager(), CUSTOM_DIALOG_TAG); + } else { + sendFeedbackDialog.show(activity.getFragmentManager(), SEND_FEEDBACK_TAG); + } if (shakyFlowCallback != null) { shakyFlowCallback.onUserPromptShown(); }