diff --git a/MIGRATION.md b/MIGRATION.md index 3e9c8ac..cdb7438 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -70,7 +70,7 @@ Set `chatActions.stopOnNavigation: true` to stop refreshing active chat actions Page cleanup can be controlled with global `clearChatOnPageOpen`, component `clearChatOnOpen`, or transition `clearChat`. All are optional and the fallback remains `true`, preserving historical behavior. `spamProtection` is also configurable and defaults to `true`. -Page cleanup is applied consistently for `openPage()`, `goToPage()`, and inline-button navigation between different components. Callback actions within the currently open component do not trigger page-level cleanup. +Inline callback routing, `goToPage()`, and `goToPlugin()` preserve the current message so target actions can replace it with `update()`. Page-level cleanup remains part of explicit `openPage()` lifecycle; actions can still request cleanup through their existing `clearChat` behavior. The returned TBF application now has an idempotent `stop(signal?)` method. Automatic `SIGINT` and `SIGTERM` handling is opt-in through `gracefulShutdown.handleSignals` and defaults to `false`. diff --git a/README.md b/README.md index c37ab17..05f5a78 100644 --- a/README.md +++ b/README.md @@ -371,7 +371,7 @@ You can use them inside functions declared in Component or in actions. ### Component's action methods Routing * `this.goToAction({action, data?})` sends user to action inside your component. -* `this.goToPage({page, action?, data?})` opens a page and applies its `clearChatOnOpen`/global cleanup policy. +* `this.goToPage({page, action?, data?})` routes to a page while preserving the current callback message for `update()`. * `this.goToPlugin({page, action?, data?})` it's like `goToPage()` but it sends user to plugin. Messaging diff --git a/lib/page_loader.js b/lib/page_loader.js index a4fc15d..27f0c1b 100644 --- a/lib/page_loader.js +++ b/lib/page_loader.js @@ -303,8 +303,11 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, if (found_component) { if (config.chatActions?.stopOnNavigation) chatActionManager.stop(_this.ctx); + await db.setValue(_this.ctx, "step", component + "�" + action); + let action_fn = extractHandler(found_component.actions[action]); try { - return await found_component.open?.({ ctx: _this.ctx, data, action }); + const actionBinding = { ..._this, ...{ id: component } }; + return await runAction(found_component.actions[action], actionBinding, () => action_fn.bind(actionBinding)({ ctx: _this.ctx, data })); } catch (error) { console.error("goToComponent error", error); @@ -459,14 +462,6 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, let main_fn = extractHandler(pageObject.actions.main); main_fn.bind(binding); } - const prepareOpen = async (ctx, clearChat) => { - if (ctx.from) { - await db.setValue(ctx, "from", ctx.from); - } - const shouldClearChat = clearChat ?? pageObject.clearChatOnOpen ?? config.clearChatOnPageOpen ?? true; - if (shouldClearChat) - await db.messages.removeMessages(ctx); - }; if (!pageObject.onCallbackQuery) { pageObject.onCallbackQuery = async (ctx) => { pageObject.ctx = ctx; @@ -552,12 +547,8 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, pageObject.call = async (ctx) => { if (config.debug) console.log("[call]", pageObject.id, ctx.routing); - if (ctx.routing.type == 'callback_query') { - const previousComponent = ctx.routing.step?.split("�")[0]; - if (previousComponent !== pageObject.id) - await prepareOpen(ctx); + if (ctx.routing.type == 'callback_query') await pageObject.onCallbackQuery(ctx); - } if (ctx.routing.type == 'message') await pageObject.onMessage(ctx); const eventHandler = pageObject.events?.[ctx.updateType]; @@ -567,12 +558,17 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, } if (!pageObject.open) pageObject.open = async function ({ ctx, data, action, clearChat, }) { + if (ctx.from) { + await db.setValue(ctx, "from", ctx.from); + } let act = action || 'main'; let action_fn = extractHandler(pageObject.actions[act]); - await prepareOpen(ctx, clearChat); + const shouldClearChat = clearChat ?? pageObject.clearChatOnOpen ?? config.clearChatOnPageOpen ?? true; + if (shouldClearChat) + await db.messages.removeMessages(ctx); await db.setValue(ctx, "step", pageObject.id + "�" + act); const actionBinding = { ...binding, ctx }; - return await runAction(pageObject.actions[act], actionBinding, () => action_fn.bind(actionBinding)({ ctx, data })); + await runAction(pageObject.actions[act], actionBinding, () => action_fn.bind(actionBinding)({ ctx, data })); }; components.push({ ...pageObject, type: componentType }); } diff --git a/lib/page_loader.js.map b/lib/page_loader.js.map index 7d8f114..e926c84 100644 --- a/lib/page_loader.js.map +++ b/lib/page_loader.js.map @@ -1 +1 @@ -{"version":3,"file":"page_loader.js","sourceRoot":"","sources":["../src/page_loader.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"page_loader.js","sourceRoot":"","sources":["../src/page_loader.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f64544b..7370e6d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@powerdot/telegram_bot_framework", - "version": "2.0.3", + "version": "2.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@powerdot/telegram_bot_framework", - "version": "2.0.3", + "version": "2.0.4", "license": "ISC", "dependencies": { "@types/express": "^5.0.6", diff --git a/package.json b/package.json index 59a4d49..50fad4c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@powerdot/telegram_bot_framework", - "version": "2.0.3", + "version": "2.0.4", "description": "A component-oriented Telegram bot framework built on Telegraf", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/src/page_loader.ts b/src/page_loader.ts index f9d7dd7..460b561 100644 --- a/src/page_loader.ts +++ b/src/page_loader.ts @@ -334,8 +334,13 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, let found_component = loadedComponents.find(x => x.id == component && x.type == type); if (found_component) { if (config.chatActions?.stopOnNavigation) chatActionManager.stop(_this.ctx); + await db.setValue(_this.ctx, "step", component + "�" + action); + let action_fn = extractHandler(found_component.actions[action]); try { - return await found_component.open?.({ ctx: _this.ctx, data, action }); + const actionBinding = { ..._this, ...{ id: component } }; + return await runAction(found_component.actions[action], actionBinding, () => + action_fn.bind(actionBinding)({ ctx: _this.ctx, data }) + ); } catch (error) { console.error("goToComponent error", error); return null; @@ -488,13 +493,6 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, let main_fn = extractHandler(pageObject.actions.main); main_fn.bind(binding); } - const prepareOpen = async (ctx: TBFContext, clearChat?: boolean) => { - if (ctx.from) { - await db.setValue(ctx, "from", ctx.from); - } - const shouldClearChat = clearChat ?? pageObject.clearChatOnOpen ?? config.clearChatOnPageOpen ?? true; - if (shouldClearChat) await db.messages.removeMessages(ctx); - }; if (!pageObject.onCallbackQuery) { pageObject.onCallbackQuery = async (ctx: TBFContext) => { pageObject.ctx = ctx; @@ -571,11 +569,7 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, if (!pageObject.call) { pageObject.call = async (ctx) => { if (config.debug) console.log("[call]", pageObject.id, ctx.routing); - if (ctx.routing.type == 'callback_query') { - const previousComponent = ctx.routing.step?.split("�")[0]; - if (previousComponent !== pageObject.id) await prepareOpen(ctx); - await pageObject.onCallbackQuery(ctx); - } + if (ctx.routing.type == 'callback_query') await pageObject.onCallbackQuery(ctx); if (ctx.routing.type == 'message') await pageObject.onMessage(ctx); const eventHandler = pageObject.events?.[ctx.updateType]; if (eventHandler) await eventHandler.bind({ ...binding, ctx })(ctx); @@ -587,12 +581,16 @@ function loader({ db, config, inputComponents, componentType, loadedComponents, action, clearChat, }: { ctx: TBFContext, data: any, action: string, clearChat?: boolean }) { + if (ctx.from) { + await db.setValue(ctx, "from", ctx.from); + } let act = action || 'main'; let action_fn = extractHandler(pageObject.actions[act]); - await prepareOpen(ctx, clearChat); + const shouldClearChat = clearChat ?? pageObject.clearChatOnOpen ?? config.clearChatOnPageOpen ?? true; + if (shouldClearChat) await db.messages.removeMessages(ctx); await db.setValue(ctx, "step", pageObject.id + "�" + act); const actionBinding = { ...binding, ctx }; - return await runAction(pageObject.actions[act], actionBinding, () => + await runAction(pageObject.actions[act], actionBinding, () => action_fn.bind(actionBinding)({ ctx, data }) ); } diff --git a/test/page_navigation.test.ts b/test/page_navigation.test.ts index cfe17ad..551810f 100644 --- a/test/page_navigation.test.ts +++ b/test/page_navigation.test.ts @@ -6,23 +6,19 @@ import test from "node:test"; import loadPages from "../src/page_loader"; -function callbackContext(step: string, component: string) { +function routing(step: string, component: string) { return { - chatId: 77, - updateType: "callback_query", - routing: { - type: "callback_query", - component, - action: "main", - data: undefined, - step, - message: undefined, - isMessageFromUser: false, - }, - } as never; + type: "callback_query", + component, + action: "main", + data: undefined, + step, + message: undefined, + isMessageFromUser: false, + }; } -test("page cleanup is consistent across programmatic and callback navigation", async () => { +test("callback and goToPage navigation preserve the message used by update", async () => { const root = mkdtempSync(join(tmpdir(), "tbf-navigation-")); const pagesPath = join(root, "pages"); const pluginsPath = join(root, "plugins"); @@ -36,35 +32,31 @@ test("page cleanup is consistent across programmatic and callback navigation", a } }); `); - writeFileSync(join(pagesPath, "progress.js"), ` + writeFileSync(join(pagesPath, "target.js"), ` module.exports = () => ({ actions: { - main() { - globalThis.__tbfNavigationOrder.push("progress"); - return "progress-result"; - } - } - }); - `); - writeFileSync(join(pagesPath, "settings.js"), ` - module.exports = () => ({ - clearChatOnOpen: false, - actions: { - main() { globalThis.__tbfNavigationOrder.push("settings"); } + main() { return this.update({ text: "Target" }); } } }); `); - const order: string[] = []; + let removals = 0; + let edits = 0; const db = { messages: { - async removeMessages() { order.push("remove"); }, + async removeMessages() { removals += 1; }, }, - async setValue(_ctx: unknown, key: string, value: unknown) { - if (key === "step") order.push(`step:${value}`); + async setValue() {}, + } as never; + const ctx = { + chatId: 77, + updateType: "callback_query", + routing: routing("source�main", "source"), + async editMessageText() { + edits += 1; + return true; }, } as never; - (globalThis as any).__tbfNavigationOrder = order; try { const { pages } = loadPages({ @@ -76,59 +68,21 @@ test("page cleanup is consistent across programmatic and callback navigation", a }, }); const source = pages.find(page => page.id === "source")!; - const progress = pages.find(page => page.id === "progress")!; - const settings = pages.find(page => page.id === "settings")!; - const sourceCtx = { chatId: 77 } as never; + const target = pages.find(page => page.id === "target")!; - await source.open?.({ ctx: sourceCtx, action: "main", data: undefined }); + await source.open?.({ ctx, action: "main", data: undefined }); const sourceBinding = (globalThis as any).__tbfSourceBinding; - order.length = 0; - const result = await sourceBinding.goToPage({ page: "progress", action: "main" }); - assert.equal(result, "progress-result"); - assert.deepEqual(order, ["remove", "step:progress�main", "progress"]); - - order.length = 0; - await sourceBinding.goToPage({ page: "settings", action: "main" }); - assert.deepEqual(order, ["step:settings�main", "settings"]); - - order.length = 0; - await progress.call?.(callbackContext("source�main", "progress")); - assert.deepEqual(order, ["remove", "step:progress�main", "progress"]); - - order.length = 0; - await progress.call?.(callbackContext("progress�details", "progress")); - assert.deepEqual(order, ["step:progress�main", "progress"]); - - order.length = 0; - await settings.call?.(callbackContext("progress�main", "settings")); - assert.deepEqual(order, ["step:settings�main", "settings"]); - - const noCleanupOrder: string[] = []; - (globalThis as any).__tbfNavigationOrder = noCleanupOrder; - const noCleanupDb = { - messages: { - async removeMessages() { noCleanupOrder.push("remove"); }, - }, - async setValue(_ctx: unknown, key: string, value: unknown) { - if (key === "step") noCleanupOrder.push(`step:${value}`); - }, - } as never; - const { pages: pagesWithoutGlobalCleanup } = loadPages({ - db: noCleanupDb, - config: { - pages: { path: pagesPath }, - plugins: { path: pluginsPath }, - clearChatOnPageOpen: false, - }, - }); - const progressWithoutGlobalCleanup = pagesWithoutGlobalCleanup.find(page => page.id === "progress")!; + await sourceBinding.goToPage({ page: "target", action: "main" }); + assert.equal(removals, 0); + assert.equal(edits, 1); - await progressWithoutGlobalCleanup.call?.(callbackContext("source�main", "progress")); - assert.deepEqual(noCleanupOrder, ["step:progress�main", "progress"]); + (ctx as any).routing = routing("source�main", "target"); + await target.call?.(ctx); + assert.equal(removals, 0); + assert.equal(edits, 2); } finally { delete (globalThis as any).__tbfSourceBinding; - delete (globalThis as any).__tbfNavigationOrder; rmSync(root, { recursive: true, force: true }); } });