import FastImage, { Source } from "@applicaster/react-native-fast-image";
import { useMemo } from "react";
import { ImageRequireSource } from "react-native";

function getSourceCache(cache: Source["cache"]) {
  return cache || FastImage.cacheControl.web;
}

export const useImageSource = (source?: Source | ImageRequireSource) => {
  return useMemo(() => {
    if (source) {
      if (typeof source === "number") {
        return source;
      }

      return {
        uri: source.uri,
        headers: source.headers,
        priority: source.priority,
        cache: getSourceCache(source?.cache),
        maxWidth: source.maxWidth,
        maxHeight: source.maxHeight,
      };
    }

    return undefined;
  }, [
    ...(typeof source === "object"
      ? [
          source?.uri,
          source?.priority,
          source?.cache,
          source?.headers,
          source?.maxWidth,
          source?.maxHeight,
        ]
      : []),
  ]);
};
