UNPKG

@puregram/scenes

Version:

Simple implementation of middleware-based scene management for puregram

31 lines (30 loc) 1.05 kB
"use strict"; 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;