MCPcopy Create free account
hub / github.com/VCVRack/Rack / checkUpdates

Function checkUpdates

src/library.cpp:167–338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

165}
166
167void checkUpdates() {
168 if (!updateMutex.try_lock())
169 return;
170 DEFER({updateMutex.unlock();});
171
172 if (settings::token.empty())
173 return;
174
175 // Refuse to check for updates while updating plugins
176 if (isSyncing)
177 return;
178
179 updateStatus = string::translate("library.queryingUpdates");
180
181 // Check user token
182 std::string userUrl = API_URL + "/user";
183 json_t* userResJ = network::requestJson(network::METHOD_GET, userUrl, NULL, getTokenCookies());
184 if (!userResJ) {
185 WARN("Request for user account failed");
186 updateStatus = string::translate("library.queryAccountFailed");
187 return;
188 }
189 DEFER({json_decref(userResJ);});
190
191 json_t* userErrorJ = json_object_get(userResJ, "error");
192 if (userErrorJ) {
193 std::string userError = json_string_value(userErrorJ);
194 WARN("Request for user account error: %s", userError.c_str());
195 // Unset token
196 settings::token = "";
197 refreshRequested = true;
198 return;
199 }
200
201 // Get library manifests
202 std::string manifestsUrl = API_URL + "/library/manifests";
203 json_t* manifestsReq = json_object();
204 json_object_set_new(manifestsReq, "version", json_string(APP_VERSION_MAJOR.c_str()));
205 json_t* manifestsResJ = network::requestJson(network::METHOD_GET, manifestsUrl, manifestsReq);
206 json_decref(manifestsReq);
207 if (!manifestsResJ) {
208 WARN("Request for library manifests failed");
209 updateStatus = string::translate("library.queryManifestsFailed");
210 return;
211 }
212 DEFER({json_decref(manifestsResJ);});
213
214 // Get user's modules
215 std::string modulesUrl = API_URL + "/modules";
216 json_t* modulesResJ = network::requestJson(network::METHOD_GET, modulesUrl, NULL, getTokenCookies());
217 if (!modulesResJ) {
218 WARN("Request for user's modules failed");
219 updateStatus = string::translate("library.queryModulesFailed");
220 return;
221 }
222 DEFER({json_decref(modulesResJ);});
223
224 json_t* manifestsJ = json_object_get(manifestsResJ, "manifests");

Callers 3

initFunction · 0.85
onActionMethod · 0.85
onActionMethod · 0.85

Calls 7

translateFunction · 0.85
requestJsonFunction · 0.85
getTokenCookiesFunction · 0.85
PluginWhitelistClass · 0.85
try_lockMethod · 0.80
unlockMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected