return ADN_PATH;
}
- static isAddon(path) {
+ static checkAddon(path) {
let tmpPath = require('path');
let mani_path = tmpPath.join(path, MANIFEST_FILE);
- let db_path = tmpPath.join(ADN_PATH, ADDONS_DB_FILE);
let tmpfs = require('fs');
let json;
+ let addon = null;
+
try {
json = JSON.parse(tmpfs.readFileSync(mani_path));
} catch (e) {
console.log('fail to read manifest');
- return false;
+ return addon;
}
- let addon = new Object();
+ addon = new Object();
addon.name = json.name;
addon.version = json.version;
addon.settings = json.settings;
addon.type = 'WRT';
addon.activate = true;
+ return addon;
+ }
+
+ static updateDB(adnPkgs) {
+ let tmpPath = require('path');
+ let db_path = tmpPath.join(ADN_PATH, ADDONS_DB_FILE);
+ let tmpfs = require('fs');
let addon_list = [];
try {
addon_list = JSON.parse(tmpfs.readFileSync(db_path));
}
}
- let allowPush = true;
- if (addon_list) {
- for (let i in addon_list) {
- let tmpAddon = addon_list[i];
- if (tmpAddon.name == addon.name) {
- console.log('already in db');
- allowPush = false;
- break;
+ for (let addon of adnPkgs) {
+ if (addon_list) {
+ for (let tmpAddon of addon_list) {
+ if (tmpAddon.name == addon.name) {
+ console.log('already in db');
+ adnPkgs[adnPkgs.indexOf(addon)].activate =
+ tmpAddon.activate;
+ }
}
}
}
- if (allowPush) {
- addon_list.push(addon);
- }
var fd;
try {
console.log('db file open error');
return false;
}
- fs.writeSync(fd, JSON.stringify(addon_list));
+ fs.writeSync(fd, JSON.stringify(adnPkgs));
fs.closeSync(fd);
fs.chmodSync(db_path, 0o666);
return true;
this.inspectorEnabledByVconf = false;
this.sandbox = [];
this.webContents = null;
+ this.addonPkgs = [];
var _this = this;
app.on('before-quit', function(event) {
event.preventDefault();
}
});
- wrt.on('wgt-installed', function(event, path) {
- console.log('wgt-installed at ' + path);
- if (AddonManager.isAddon(path)) {
- console.log('Addon is updated on DB');
+ wrt.on('addon-installed', function(event, path) {
+ console.log('addon-installed at ' + path);
+ let dbInfo = AddonManager.checkAddon(path);
+ if (dbInfo) {
+ _this.addonPkgs.push(dbInfo);
}
});
wrt.on('addon-uninstalled', function(event, id) {
console.log('addon-unistalled named ' + id);
});
+ wrt.on('wgt-checking-done', function(event) {
+ console.log('wgt-checking-done');
+ AddonManager.updateDB(_this.addonPkgs);
+ });
/* FIXME: will uncheck after chromium-efl released */
if (wrt.getPlatformType() !== "product_tv") {
wrt.getInstalledPkg();