#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) :
    m_FileAsset(fileAsset), m_FileAssetResolver(assetResolver) {}

void FileAssetImporter::loadContents(const FileAssetContents& contents) {
    auto data = contents.bytes();
    if (m_FileAsset->decode(data.begin(), data.size())) {
        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;
}
