package com.feedbackreactnativesdk;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;

public class FeedbackReactNativeSdkModule extends NativeFeedbackReactNativeSdkSpec {

  public static final String NAME = FeedbackReactNativeSdkModuleImpl.NAME;
  static ReactApplicationContext globalContext = null;

  FeedbackReactNativeSdkModule(ReactApplicationContext context) {
    super(context);
    globalContext = context;
  }

  @Override
  @NonNull
  public String getName() {
    return FeedbackReactNativeSdkModuleImpl.NAME;
  }

  @Override
  public void debugMode(boolean debugMode) {
    FeedbackReactNativeSdkModuleImpl.debugMode(debugMode);
  }

  @Override
  public void boot(@NonNull String appId, @NonNull String accessKey, @NonNull String code,
      @NonNull String apiUrl, @NonNull String feedbackUrl, @Nullable String eventUrl,
      @Nullable Callback callback) {
    FeedbackReactNativeSdkModuleImpl.boot(globalContext, appId, accessKey, code, apiUrl,
        feedbackUrl, eventUrl, callback);
  }

  @Override
  public void show(double viewMode, @Nullable String title, @Nullable Double titleFontSize,
      @Nullable String code, @Nullable String language, @Nullable ReadableMap customer,
      @Nullable ReadableMap payload, @NonNull Callback callback) {
    FeedbackReactNativeSdkModuleImpl.show(viewMode, title, titleFontSize, code, language,
        customer, payload, callback);
  }

  @Override
  public void clear() {
    FeedbackReactNativeSdkModuleImpl.clear();
  }
}
