package com.helpshift.react.utils;

import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;

import com.helpshift.react.activity.ReactNativeDelegateActivity;

public class IntentProvider {
  private IntentProvider() {
    // empty
  }

  /**
   * Get ReactNativeDelegateActivity intent.
   *
   * @param context
   * @param originalPendingIntent
   * @return
   */
  public static PendingIntent wrapPendingIntentWithReactNativeDelegateActivity(Context context,
                                                                         PendingIntent originalPendingIntent) {
    Intent reactActivityIntent = new Intent();
    reactActivityIntent.setClass(context, ReactNativeDelegateActivity.class);

    // Insert the actual intent to be called from delegate after dex is loaded.
    reactActivityIntent.putExtra("delegateIntent", originalPendingIntent);

    int randomInt = (int) System.currentTimeMillis() % 1000;
    int pendingIntentFlag = Build.VERSION.SDK_INT < 23 ? 0 : PendingIntent.FLAG_IMMUTABLE;
    pendingIntentFlag = pendingIntentFlag | PendingIntent.FLAG_CANCEL_CURRENT;
    return PendingIntent.getActivity(context, randomInt, reactActivityIntent, pendingIntentFlag);
  }
}
