#pragma once #include #include namespace rack { /** Synchronizes plugins with the VCV Library and updates Rack itself */ namespace library { struct UpdateInfo { std::string name; std::string version; std::string changelogUrl; bool downloaded = false; }; void init(); void destroy(); void checkAppUpdate(); bool isAppUpdateAvailable(); bool isLoggedIn(); void logIn(const std::string& email, const std::string& password); void logOut(); void checkUpdates(); bool hasUpdates(); void syncUpdate(const std::string& slug); void syncUpdates(); extern std::string appVersion; extern std::string appDownloadUrl; extern std::string appChangelogUrl; extern std::string loginStatus; // plugin slug -> UpdateInfo extern std::map updateInfos; extern std::string updateStatus; extern std::string updateSlug; extern float updateProgress; /** Whether plugins are currently downloading. */ extern bool isSyncing; /** Whether the UI should ask the user to restart after updating plugins. */ extern bool restartRequested; } // namespace library } // namespace rack