#include "rive/assets/file_asset.hpp"
#include "rive/backboard.hpp"
#include "rive/importers/backboard_importer.hpp"

using namespace rive;

StatusCode FileAsset::import(ImportStack& importStack) {
    auto backboardImporter =
        importStack.latest<BackboardImporter>(Backboard::typeKey);
    if (backboardImporter == nullptr) {
        return StatusCode::MissingObject;
    }
    backboardImporter->addFileAsset(this);

    return Super::import(importStack);
}

std::string FileAsset::uniqueFilename() {
    // remove final extension
    std::string uniqueFilename = name();
    std::size_t finalDot = uniqueFilename.rfind('.');

    if (finalDot != std::string::npos) {
        uniqueFilename = uniqueFilename.substr(0, finalDot);
    }
    return uniqueFilename + "-" + std::to_string(assetId()) + "." +
           fileExtension();
}
