tgsnake
Version:
Telegram MTProto framework for nodejs.
55 lines (54 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConversationJob = exports.Conversation = void 0;
const Filters_js_1 = require("../Context/Filters.js");
class Conversation {
handler;
constructor() {
this.handler = (_, next) => next();
}
middleware(context, next) {
return this.handler(context, next);
}
wait(key, filter = (context) => {
context;
return true;
}) {
const job = new ConversationJob();
const middleware = (context, next) => {
if (!job.resolved) {
if ((0, Filters_js_1.filter)(key, context) &&
filter(context)) {
job.resolve(context);
return this.end();
}
}
return next();
};
this.handler = middleware;
return job.promise;
}
end() {
this.handler = (_, next) => next();
}
}
exports.Conversation = Conversation;
class ConversationJob {
resolve;
reject;
promise;
resolved;
constructor() {
this.promise = new Promise((res, rej) => {
this.resolve = (results) => {
this.resolved = true;
res(results);
};
this.reject = (error) => {
this.resolved = true;
rej(error);
};
});
}
}
exports.ConversationJob = ConversationJob;