Files
Undecked/Backend/dist/Decks/DeckManager.js
2023-08-29 19:55:48 +02:00

99 lines
3.8 KiB
JavaScript

exports.__esModule = true;
exports.DeckManager = void 0;
var path = require("path");
var Logger_1 = require("../Logger");
var StreamDeck = require("@elgato-stream-deck/node");
var Deck_1 = require("./Deck");
var fs = require("fs-extra");
var writeFile = fs.writeFile, pathExists = fs.pathExists, readJson = fs.readJson;
var DeckManager = /** @class */ (function () {
function DeckManager() {
}
DeckManager.prototype.load = function (callback) {
var _this = this;
this.managerConfigPath = path.join(Undecked.dataPath, 'decks.json');
this.decks = {};
this.loadConfig(function () {
for (var i = 0; i < _this.managerConfig.decks.length; i++) {
var deckConfig = _this.managerConfig.decks[i];
_this.decks[deckConfig.serialNumber] = new Deck_1.Deck(deckConfig, null);
}
_this.ensureDecks(function (newDecks) {
Logger_1.Log('info', "Loaded " + (Object.keys(_this.decks).length - newDecks) + " existing deck(s) and " + newDecks + " new deck(s)");
callback();
});
});
};
DeckManager.prototype.loadConfig = function (callback) {
var _this = this;
pathExists(this.managerConfigPath, function (err, exists) {
if (err)
throw err;
if (exists) {
readJson(_this.managerConfigPath, function (err, json) {
if (err)
throw err;
_this.managerConfig = json;
callback();
});
}
else {
_this.managerConfig = defaultDeckConfig;
_this.saveConfig(callback);
}
});
};
DeckManager.prototype.saveConfig = function (callback) {
var toSave = {
decks: []
};
for (var serialNumber in this.decks)
toSave.decks.push(this.decks[serialNumber]["export"]());
writeFile(this.managerConfigPath, JSON.stringify(toSave, null, 4), function (err) {
if (err)
Logger_1.Log('error', 'Error whilst saving manager config', err.message);
if (callback)
callback();
});
};
DeckManager.prototype.hasDeck = function (serialNumber) {
return this.decks[serialNumber] != undefined;
};
DeckManager.prototype.getDeck = function (serialNumber) {
if (this.decks[serialNumber])
return this.decks[serialNumber];
return null;
};
DeckManager.prototype.ensureDecks = function (callback) {
var _this = this;
var currentDecks = Object.keys(this.decks).length;
var decks = StreamDeck.listStreamDecks();
for (var i = 0; i < decks.length; i++) {
if (!this.hasDeck(decks[i].serialNumber))
this.decks[decks[i].serialNumber] = new Deck_1.Deck({
serialNumber: decks[i].serialNumber,
model: decks[i].model,
name: "Unnamed " + decks[i].model
}, decks[i].path);
else
this.decks[decks[i].serialNumber].setDevicePath(decks[i].path);
}
if (Object.keys(this.decks).length > currentDecks)
this.saveConfig(function () { return callback(Object.keys(_this.decks).length - currentDecks); });
else
callback(0);
};
DeckManager.prototype.getList = function () {
var list = [];
for (var serialNumber in this.decks) {
list.push({ serialNumber: serialNumber, name: this.decks[serialNumber].getName() });
}
return list;
};
return DeckManager;
}());
exports.DeckManager = DeckManager;
var defaultDeckConfig = {
decks: []
};
//# sourceMappingURL=DeckManager.js.map