coolant
Version:
The modular build radiator
51 lines (50 loc) • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var moment_1 = tslib_1.__importDefault(require("moment"));
var invokeAction = function (action) {
var result = action();
if (result !== undefined) {
result.then();
}
};
exports.periodically = function (action, intervalSeconds) {
if (intervalSeconds === void 0) { intervalSeconds = 5; }
invokeAction(action);
return setInterval(function () { return invokeAction(action); }, intervalSeconds * 1000); // TODO: Remove this case when storybook issue resolved
};
var isPromise = function (value) { return value.then !== undefined; };
exports.periodicallyWithState = function (action, initialState, intervalSeconds) {
var state = initialState;
return exports.periodically(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
var result, _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
result = action(state);
if (!isPromise(result)) return [3 /*break*/, 2];
return [4 /*yield*/, result];
case 1:
_a = _b.sent();
return [3 /*break*/, 3];
case 2:
_a = result;
_b.label = 3;
case 3:
state = _a;
return [2 /*return*/];
}
});
}); }, intervalSeconds);
};
exports.atTime = function (time, action) {
exports.periodicallyWithState(function (_a) {
var alreadyTriggered = _a.alreadyTriggered;
var desiredMoment = moment_1.default(time, "hh:mm");
var isDesiredMoment = moment_1.default().isSame(desiredMoment, "minute");
if (isDesiredMoment && !alreadyTriggered) {
action();
}
return { alreadyTriggered: isDesiredMoment };
}, { alreadyTriggered: false });
};