Merge pull request #2249 from alipgoldberg/setup-telegram-no-telegram-fallback
feat(setup): clearer "Open Telegram" card with mobile fallback
This commit is contained in:
@@ -21,8 +21,9 @@ import * as p from '@clack/prompts';
|
|||||||
import k from 'kleur';
|
import k from 'kleur';
|
||||||
|
|
||||||
import * as setupLog from '../logs.js';
|
import * as setupLog from '../logs.js';
|
||||||
|
import { isHeadless } from '../platform.js';
|
||||||
import { BACK_TO_CHANNEL_SELECTION, type ChannelFlowResult } from '../lib/back-nav.js';
|
import { BACK_TO_CHANNEL_SELECTION, type ChannelFlowResult } from '../lib/back-nav.js';
|
||||||
import { confirmThenOpen, formatNoteLink } from '../lib/browser.js';
|
import { confirmThenOpen, formatNoteLink, openUrl } from '../lib/browser.js';
|
||||||
import { brightSelect } from '../lib/bright-select.js';
|
import { brightSelect } from '../lib/bright-select.js';
|
||||||
import { askOperatorRole } from '../lib/role-prompt.js';
|
import { askOperatorRole } from '../lib/role-prompt.js';
|
||||||
import {
|
import {
|
||||||
@@ -52,14 +53,37 @@ export async function runTelegramChannel(displayName: string): Promise<ChannelFl
|
|||||||
// installed, or the bot's web profile if not. tg://resolve?domain= is
|
// installed, or the bot's web profile if not. tg://resolve?domain= is
|
||||||
// more direct but silently fails when the scheme isn't registered.
|
// more direct but silently fails when the scheme isn't registered.
|
||||||
const botUrl = `https://t.me/${botUsername}`;
|
const botUrl = `https://t.me/${botUsername}`;
|
||||||
note(
|
// Two card variants — auto-open fires only on GUI, so headless users
|
||||||
[
|
// need full self-serve instructions inside the card itself, while GUI
|
||||||
|
// users get a leaner status line plus the auto-open + a single
|
||||||
|
// combined dim fallback line (URL + mobile alternative) on the
|
||||||
|
// confirm prompt below.
|
||||||
|
if (isHeadless()) {
|
||||||
|
note(
|
||||||
|
[
|
||||||
|
`Open @${botUsername} in Telegram now — the pairing code is coming next, and that's where you'll send it.`,
|
||||||
|
'',
|
||||||
|
`Get started: ${botUrl}`,
|
||||||
|
'',
|
||||||
|
`Don't have Telegram installed here? Open it on any device and search for @${botUsername}`,
|
||||||
|
].join('\n'),
|
||||||
|
'Open Telegram',
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
note(
|
||||||
`Opening @${botUsername} in Telegram so it's ready when the pairing code shows up.`,
|
`Opening @${botUsername} in Telegram so it's ready when the pairing code shows up.`,
|
||||||
formatNoteLink(botUrl),
|
'Open Telegram',
|
||||||
].filter((line): line is string => line !== null).join('\n'),
|
);
|
||||||
'Open Telegram',
|
ensureAnswer(
|
||||||
);
|
await p.confirm({
|
||||||
await confirmThenOpen(botUrl, 'Press Enter to open Telegram');
|
message: `Press Enter to open Telegram (must be installed here)\n${k.dim(
|
||||||
|
`If browser does not appear, please visit: ${botUrl} — or search for @${botUsername} in Telegram`,
|
||||||
|
)}`,
|
||||||
|
initialValue: true,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
openUrl(botUrl);
|
||||||
|
}
|
||||||
|
|
||||||
const install = await runQuietChild(
|
const install = await runQuietChild(
|
||||||
'telegram-install',
|
'telegram-install',
|
||||||
|
|||||||
Reference in New Issue
Block a user