// Copyright © 2022 Olo Inc. All rights reserved.
// This software is made available under the Olo Pay SDK License (See LICENSE.md file)
import { useCallback } from 'react';
import type { CardField } from '../definitions';

// Load commands for Fabric
const Commands = require('../components/specs/PaymentCardDetailsViewNativeComponent').Commands;

export interface PaymentCardDetailsViewNativeMethods {
  focus(ref: any, field: CardField): void;
  blur(ref: any): void;
  clear(ref: any): void;
  createPaymentMethod(ref: any): void;
}

export default function usePaymentCardDetailsViewManager(): PaymentCardDetailsViewNativeMethods {
  const blur = useCallback((ref: any): void => {
    Commands.blur(ref.current);
  }, []);

  const focus = useCallback((ref: any, field: CardField): void => {
    Commands.focus(ref.current, field);
  }, []);

  const clear = useCallback((ref: any): void => {
    Commands.clear(ref.current);
  }, []);

  const createPaymentMethod = useCallback((ref: any): void => {
    // Result comes via onPaymentMethodResult event
    Commands.createPaymentMethod(ref.current);
  }, []);

  return {
    blur,
    clear,
    focus,
    createPaymentMethod,
  };
}