@puregram/scenes
Version:
Simple implementation of middleware-based scene management for puregram
31 lines (30 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StepScene = void 0;
const contexts_1 = require("../contexts");
class StepScene {
constructor(slug, rawOptions) {
const options = Array.isArray(rawOptions)
? { steps: rawOptions }
: rawOptions;
this.slug = slug;
this.steps = options.steps;
this.onEnterHandler = options.enterHandler || (() => { });
this.onLeaveHandler = options.leaveHandler || (() => { });
}
async enterHandler(context) {
context.scene.step = new contexts_1.StepSceneContext({
context,
// @ts-expect-error T does not extend {} :shrug:
steps: this.steps
});
await this.onEnterHandler(context);
if (context.scene.lastAction !== contexts_1.LastAction.LEAVE) {
await context.scene.step.reenter();
}
}
leaveHandler(context) {
return Promise.resolve(this.onLeaveHandler(context));
}
}
exports.StepScene = StepScene;