#include "rive/importers/file_asset_importer.hpp"
#include "rive/assets/file_asset_contents.hpp"
#include "rive/assets/file_asset.hpp"
#include "rive/file_asset_resolver.hpp"
#include "rive/span.hpp"
#include <cstdint>

using namespace rive;

FileAssetImporter::FileAssetImporter(FileAsset* fileAsset, FileAssetResolver* assetResolver, Factory* factory) :
    m_FileAsset(fileAsset),
    m_FileAssetResolver(assetResolver),
    m_Factory(factory)
{}

void FileAssetImporter::loadContents(const FileAssetContents& contents) {
    auto data = contents.bytes();
    if (m_FileAsset->decode(data, m_Factory)) {
        m_LoadedContents = true;
    }
}

StatusCode FileAssetImporter::resolve() {
    if (!m_LoadedContents && m_FileAssetResolver != nullptr) {
        // Contents weren't available in-band, or they couldn't be decoded. Try
        // to find them out of band.
        m_FileAssetResolver->loadContents(*m_FileAsset);
    }

    // Note that it's ok for an asset to not resolve (or to resolve async).
    return StatusCode::Ok;
}
