Rename "checkAppUpdates" setting to "autoCheckUpdates". Make it disable/enable plugin updates in addition to app update.tags/v2.0.0
@@ -23,12 +23,13 @@ struct Update { | |||||
void init(); | void init(); | ||||
void destroy(); | void destroy(); | ||||
void checkAppUpdate(); | |||||
bool isAppUpdateAvailable(); | bool isAppUpdateAvailable(); | ||||
bool isLoggedIn(); | bool isLoggedIn(); | ||||
void logIn(const std::string& email, const std::string& password); | void logIn(const std::string& email, const std::string& password); | ||||
void logOut(); | void logOut(); | ||||
void queryUpdates(); | |||||
void checkUpdates(); | |||||
bool hasUpdates(); | bool hasUpdates(); | ||||
void syncUpdate(const std::string& slug); | void syncUpdate(const std::string& slug); | ||||
void syncUpdates(); | void syncUpdates(); | ||||
@@ -53,7 +53,7 @@ extern std::list<std::string> recentPatchPaths; | |||||
extern std::vector<NVGcolor> cableColors; | extern std::vector<NVGcolor> cableColors; | ||||
// pluginSlug -> moduleSlugs | // pluginSlug -> moduleSlugs | ||||
extern std::map<std::string, std::set<std::string>> moduleWhitelist; | extern std::map<std::string, std::set<std::string>> moduleWhitelist; | ||||
extern bool checkAppUpdates; | |||||
extern bool autoCheckUpdates; | |||||
json_t* toJson(); | json_t* toJson(); | ||||
void fromJson(json_t* rootJ); | void fromJson(json_t* rootJ); | ||||
@@ -714,12 +714,24 @@ struct SyncUpdateItem : ui::MenuItem { | |||||
} | } | ||||
}; | }; | ||||
struct CheckUpdatesItem : ui::MenuItem { | |||||
void onAction(const event::Action& e) override { | |||||
std::thread t([&] { | |||||
library::checkUpdates(); | |||||
}); | |||||
t.detach(); | |||||
} | |||||
}; | |||||
struct LogOutItem : ui::MenuItem { | struct LogOutItem : ui::MenuItem { | ||||
void onAction(const event::Action& e) override { | void onAction(const event::Action& e) override { | ||||
library::logOut(); | library::logOut(); | ||||
} | } | ||||
}; | }; | ||||
struct LibraryMenu : ui::Menu { | struct LibraryMenu : ui::Menu { | ||||
bool loggedIn = false; | bool loggedIn = false; | ||||
@@ -793,6 +805,11 @@ struct LibraryMenu : ui::Menu { | |||||
addChild(updateItem); | addChild(updateItem); | ||||
} | } | ||||
} | } | ||||
else if (!settings::autoCheckUpdates) { | |||||
CheckUpdatesItem* checkUpdatesItem = new CheckUpdatesItem; | |||||
checkUpdatesItem->text = "Check for updates"; | |||||
addChild(checkUpdatesItem); | |||||
} | |||||
} | } | ||||
} | } | ||||
}; | }; | ||||
@@ -851,6 +868,16 @@ struct AppUpdateItem : ui::MenuItem { | |||||
}; | }; | ||||
struct CheckAppUpdateItem : ui::MenuItem { | |||||
void onAction(const event::Action& e) override { | |||||
std::thread t([&]() { | |||||
library::checkAppUpdate(); | |||||
}); | |||||
t.detach(); | |||||
} | |||||
}; | |||||
struct HelpButton : MenuButton { | struct HelpButton : MenuButton { | ||||
NotificationIcon* notification; | NotificationIcon* notification; | ||||
@@ -870,6 +897,11 @@ struct HelpButton : MenuButton { | |||||
appUpdateItem->rightText = APP_VERSION + " → " + library::appVersion; | appUpdateItem->rightText = APP_VERSION + " → " + library::appVersion; | ||||
menu->addChild(appUpdateItem); | menu->addChild(appUpdateItem); | ||||
} | } | ||||
else if (!settings::autoCheckUpdates && !settings::devMode) { | |||||
CheckAppUpdateItem* checkAppUpdateItem = new CheckAppUpdateItem; | |||||
checkAppUpdateItem->text = "Check for " + APP_NAME + " update"; | |||||
menu->addChild(checkAppUpdateItem); | |||||
} | |||||
UrlItem* manualItem = new UrlItem; | UrlItem* manualItem = new UrlItem; | ||||
manualItem->text = "Manual"; | manualItem->text = "Manual"; | ||||
@@ -16,24 +16,18 @@ namespace rack { | |||||
namespace library { | namespace library { | ||||
static void queryAppUpdate(); | |||||
void init() { | void init() { | ||||
if (settings::devMode) | |||||
return; | |||||
if (settings::checkAppUpdates) { | |||||
if (settings::autoCheckUpdates && !settings::devMode) { | |||||
std::thread t([&]() { | std::thread t([&]() { | ||||
queryAppUpdate(); | |||||
checkAppUpdate(); | |||||
}); | }); | ||||
t.detach(); | t.detach(); | ||||
} | |||||
std::thread t2([&] { | |||||
queryUpdates(); | |||||
}); | |||||
t2.detach(); | |||||
std::thread t2([&] { | |||||
checkUpdates(); | |||||
}); | |||||
t2.detach(); | |||||
} | |||||
} | } | ||||
@@ -41,7 +35,7 @@ void destroy() { | |||||
} | } | ||||
static void queryAppUpdate() { | |||||
void checkAppUpdate() { | |||||
std::string versionUrl = API_URL + "/version"; | std::string versionUrl = API_URL + "/version"; | ||||
json_t* resJ = network::requestJson(network::METHOD_GET, versionUrl, NULL); | json_t* resJ = network::requestJson(network::METHOD_GET, versionUrl, NULL); | ||||
if (!resJ) { | if (!resJ) { | ||||
@@ -108,7 +102,7 @@ void logIn(const std::string& email, const std::string& password) { | |||||
const char* tokenStr = json_string_value(tokenJ); | const char* tokenStr = json_string_value(tokenJ); | ||||
settings::token = tokenStr; | settings::token = tokenStr; | ||||
loginStatus = ""; | loginStatus = ""; | ||||
queryUpdates(); | |||||
checkUpdates(); | |||||
} | } | ||||
@@ -118,7 +112,7 @@ void logOut() { | |||||
} | } | ||||
void queryUpdates() { | |||||
void checkUpdates() { | |||||
if (settings::token.empty()) | if (settings::token.empty()) | ||||
return; | return; | ||||
@@ -50,7 +50,7 @@ std::vector<NVGcolor> cableColors = { | |||||
color::fromHexString("#8c1889ff"), // purple | color::fromHexString("#8c1889ff"), // purple | ||||
}; | }; | ||||
std::map<std::string, std::set<std::string>> moduleWhitelist = {}; | std::map<std::string, std::set<std::string>> moduleWhitelist = {}; | ||||
bool checkAppUpdates = true; | |||||
bool autoCheckUpdates = true; | |||||
json_t* toJson() { | json_t* toJson() { | ||||
@@ -120,7 +120,7 @@ json_t* toJson() { | |||||
} | } | ||||
json_object_set_new(rootJ, "moduleWhitelist", moduleWhitelistJ); | json_object_set_new(rootJ, "moduleWhitelist", moduleWhitelistJ); | ||||
json_object_set_new(rootJ, "checkAppUpdates", json_boolean(checkAppUpdates)); | |||||
json_object_set_new(rootJ, "autoCheckUpdates", json_boolean(autoCheckUpdates)); | |||||
return rootJ; | return rootJ; | ||||
} | } | ||||
@@ -246,9 +246,9 @@ void fromJson(json_t* rootJ) { | |||||
} | } | ||||
} | } | ||||
json_t* checkAppUpdatesJ = json_object_get(rootJ, "checkAppUpdates"); | |||||
if (checkAppUpdatesJ) | |||||
checkAppUpdates = json_boolean_value(checkAppUpdatesJ); | |||||
json_t* autoCheckUpdatesJ = json_object_get(rootJ, "autoCheckUpdates"); | |||||
if (autoCheckUpdatesJ) | |||||
autoCheckUpdates = json_boolean_value(autoCheckUpdatesJ); | |||||
} | } | ||||
void save(const std::string& path) { | void save(const std::string& path) { | ||||