import Animated, { useDerivedValue } from 'react-native-reanimated';

import { formatDatetime } from '../../utils';
import type { TFormatterFn } from './types';
import { useCandleData } from './useCandleData';

export function useCandlestickChartDatetime({
  format,
  locale,
  options,
}: {
  format?: TFormatterFn<number>;
  locale?: string;
  options?: { [key: string]: string };
} = {}): {
  value: Readonly<Animated.SharedValue<string>>;
  formatted: Readonly<Animated.SharedValue<string>>;
} {
  const candle = useCandleData();

  const timestamp = useDerivedValue(() => {
    return candle.value.timestamp;
  });

  const timestampString = useDerivedValue(() => {
    if (timestamp.value === -1) return '';
    return timestamp.value.toString();
  });

  const formatted = useDerivedValue(() => {
    if (timestamp.value === -1) return '';
    const formattedDatetime = formatDatetime({
      value: timestamp.value,
      locale,
      options,
    });
    return format
      ? format({ value: timestamp.value, formatted: formattedDatetime })
      : formattedDatetime;
  });

  return { value: timestampString, formatted };
}