@foxpage/foxpage-manager
Version:
foxpage resource manager
95 lines (94 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VariableManagerImpl = void 0;
const common_1 = require("../common");
const data_service_1 = require("../data-service");
const variable_1 = require("./variable");
/**
* variable manager
*
* @export
* @class VariableManager
* @extends {ManagerBaseImpl}
*/
class VariableManagerImpl extends common_1.ManagerBaseImpl {
constructor(app) {
super(app, { type: 'variable', diskCache: { enable: true } });
}
/**
* add variable to manager
*
* @param {Variable} variable
*/
addVariable(variable) {
this.logger.info(`add variable@${variable.id}, detail`);
this.logger.debug(`add variable@${variable.id}, detail:`, JSON.stringify(variable));
const newVar = this.newVariable(variable);
this.addOne(variable.id, variable, newVar);
return newVar;
}
/**
* remove local variable via variableId
*
* @param {string[]} variableIds
*/
removeVariables(variableIds) {
this.remove(variableIds);
}
/**
* get variable from local first, not exist will fetch from server
*
* @param {string} variableId
* @return {*} {(Promise<Variable | undefined>)}
*/
async getVariable(variableId) {
return (await this.getVariables([variableId]))[0];
}
/**
* get variables
*
* @param {string[]} variableIds
* @return {*} {Promise<Variable[]>}
*/
async getVariables(variableIds) {
return await this.find(variableIds);
}
/**
* fetch application variable
*/
async freshVariables(variableIds) {
const variables = await data_service_1.foxpageDataService.fetchVariables(this.appId, { variableIds });
return variables.map(variable => {
return this.addVariable(variable);
});
}
async onFetch(list) {
return await this.freshVariables(list);
}
async onPull(data) {
const { updates, removes } = data.variable || {};
if (updates && updates.length > 0) {
const contentIds = await this.filterExists(updates);
if (contentIds.length > 0) {
this.markNeedUpdates(contentIds);
await this.freshVariables(contentIds);
}
}
if (removes && removes.length > 0) {
this.removeVariables(removes);
}
}
onStash(data) {
var _a;
(_a = data.variables) === null || _a === void 0 ? void 0 : _a.map(variable => {
this.addVariable(variable);
});
}
async createInstance(data) {
return this.newVariable(data);
}
newVariable(data) {
return new variable_1.VariableInstance(data);
}
}
exports.VariableManagerImpl = VariableManagerImpl;