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 destroy(); | |||
void checkAppUpdate(); | |||
bool isAppUpdateAvailable(); | |||
bool isLoggedIn(); | |||
void logIn(const std::string& email, const std::string& password); | |||
void logOut(); | |||
void queryUpdates(); | |||
void checkUpdates(); | |||
bool hasUpdates(); | |||
void syncUpdate(const std::string& slug); | |||
void syncUpdates(); | |||
@@ -53,7 +53,7 @@ extern std::list<std::string> recentPatchPaths; | |||
extern std::vector<NVGcolor> cableColors; | |||
// pluginSlug -> moduleSlugs | |||
extern std::map<std::string, std::set<std::string>> moduleWhitelist; | |||
extern bool checkAppUpdates; | |||
extern bool autoCheckUpdates; | |||
json_t* toJson(); | |||
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 { | |||
void onAction(const event::Action& e) override { | |||
library::logOut(); | |||
} | |||
}; | |||
struct LibraryMenu : ui::Menu { | |||
bool loggedIn = false; | |||
@@ -793,6 +805,11 @@ struct LibraryMenu : ui::Menu { | |||
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 { | |||
NotificationIcon* notification; | |||
@@ -870,6 +897,11 @@ struct HelpButton : MenuButton { | |||
appUpdateItem->rightText = APP_VERSION + " → " + library::appVersion; | |||
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; | |||
manualItem->text = "Manual"; | |||
@@ -16,24 +16,18 @@ namespace rack { | |||
namespace library { | |||
static void queryAppUpdate(); | |||
void init() { | |||
if (settings::devMode) | |||
return; | |||
if (settings::checkAppUpdates) { | |||
if (settings::autoCheckUpdates && !settings::devMode) { | |||
std::thread t([&]() { | |||
queryAppUpdate(); | |||
checkAppUpdate(); | |||
}); | |||
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"; | |||
json_t* resJ = network::requestJson(network::METHOD_GET, versionUrl, NULL); | |||
if (!resJ) { | |||
@@ -108,7 +102,7 @@ void logIn(const std::string& email, const std::string& password) { | |||
const char* tokenStr = json_string_value(tokenJ); | |||
settings::token = tokenStr; | |||
loginStatus = ""; | |||
queryUpdates(); | |||
checkUpdates(); | |||
} | |||
@@ -118,7 +112,7 @@ void logOut() { | |||
} | |||
void queryUpdates() { | |||
void checkUpdates() { | |||
if (settings::token.empty()) | |||
return; | |||
@@ -50,7 +50,7 @@ std::vector<NVGcolor> cableColors = { | |||
color::fromHexString("#8c1889ff"), // purple | |||
}; | |||
std::map<std::string, std::set<std::string>> moduleWhitelist = {}; | |||
bool checkAppUpdates = true; | |||
bool autoCheckUpdates = true; | |||
json_t* toJson() { | |||
@@ -120,7 +120,7 @@ json_t* toJson() { | |||
} | |||
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; | |||
} | |||
@@ -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) { | |||