#pragma once

#include <solanaceae/message3/registry_message_model.hpp>

#include "./image_loader.hpp"

namespace Message::Components {

	struct TagNotImage {};

} // Message::Components

// adds metadata to file messages
class MediaMetaInfoLoader : public RegistryMessageModelEventI {
	protected:
		RegistryMessageModelI& _rmm;
		RegistryMessageModelI::SubscriptionReference _rmm_sr;

		std::vector<std::unique_ptr<ImageLoaderI>> _image_loaders;

		void handleMessage(const Message3Handle& m);

	public:
		MediaMetaInfoLoader(RegistryMessageModelI& rmm);
		virtual ~MediaMetaInfoLoader(void);

	protected: // rmm
		bool onEvent(const Message::Events::MessageConstruct& e) override;
		bool onEvent(const Message::Events::MessageUpdated& e) override;

	//protected: // os
	//    bool onEvent(const ObjectStore::Events::ObjectConstruct& e) override;
	// should listen on update
	//    bool onEvent(const ObjectStore::Events::ObjectUpdate& e) override;
};