
Untitled
By: a guest on
Jun 21st, 2012 | syntax:
None | size: 1.62 KB | hits: 10 | expires: Never
/* Loads the user data and executes callback() ; also executes it (but with no userData passed) if failed */
loadUserData = function(argsDict, userID, callback)
{
var installationName = argsDict.Installation || "main";
if (!userDataCache[userID])
userDataCache[userID] = new Object();
/* Checks if the entry is cached */
if (userDataCache[userID][installationName])
{
callback(userDataCache[userID][installationName]);
return;
}
/* Build the actual userData after finding the installation */
installationsCol.findOne({Name: installationName, userID: userID}, function(err, installation)
{
var userData = new Object(), appCollection;
if (!installation || !Object.keys(installation.InstalledApps).length || !(appCollection = appCollections[installation.OSRelease]))
{
callback();
return;
}
console.log("Building userdata for "+userID);
userData.installed = {}, userData.upgradable = {};
var userDataBuilt = function()
{
console.log(userData);
userDataCache[userID][installationName] = userData;
setTimeout(function()
{
/* Don't keep that in memory forever */
delete userDataCache[userID][installationName];
}, 30*60*1000);
callback(userData);
};
var i=0;
for (Name in installation.InstalledApps)
{
var Versions = installation.InstalledApps[Name];
appCollection.findOne({Name: Name}, function(err, app)
{
if (app)
{
userData.installed.push(app._id);
if (Versions.indexOf(app.Version) == -1)
userData.upgradable[app._id] = 1;
}
if (++i==Object.keys(installation.InstalledApps).length)
userDataBuilt();
});
}
});
}