From 5019d7b596af804879f5e3a6ec7248ea1862e19a Mon Sep 17 00:00:00 2001 From: teidesu <86301490+teidesu@users.noreply.github.com> Date: Mon, 29 Aug 2022 18:54:43 +0300 Subject: [PATCH] feat(i18n): removed immediate dependency on client to allow for outside usage --- packages/i18n/package.json | 3 -- packages/i18n/src/utils.ts | 60 +++++++++++++++----------------------- 2 files changed, 24 insertions(+), 39 deletions(-) diff --git a/packages/i18n/package.json b/packages/i18n/package.json index a6d77c03..5c2e2fe2 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -11,8 +11,5 @@ "coverage": "nyc npm run test", "build": "tsc", "docs": "typedoc" - }, - "dependencies": { - "@mtcute/client": "workspace:^1.0.0" } } diff --git a/packages/i18n/src/utils.ts b/packages/i18n/src/utils.ts index 49f53216..bae37675 100644 --- a/packages/i18n/src/utils.ts +++ b/packages/i18n/src/utils.ts @@ -1,21 +1,11 @@ -import { - ParsedUpdate, - assertNever, - User, - Message, - DeleteMessageUpdate, - ChatMemberUpdate, - InlineQuery, - ChosenInlineResult, - CallbackQuery, - PollUpdate, - PollVoteUpdate, - UserStatusUpdate, - BotStoppedUpdate, - BotChatJoinRequestUpdate, -} from '@mtcute/client' +import type { ParsedUpdate } from '@mtcute/client' import { I18nValue } from './types' +let client: any +try { + client = require('@mtcute/client') +} catch (e) {} + export function createI18nStringsIndex( strings: Record ): Record { @@ -41,27 +31,25 @@ export function createI18nStringsIndex( export function extractLanguageFromUpdate( update: ParsedUpdate['data'] ): string | null | undefined { - switch (update.constructor) { - case Message: + if (!client) { + throw new Error( + '@mtcute/client is not installed, you must provide your own adapter' + ) + } + + const upd = update as any + switch (upd.constructor) { + case client.Message: // if sender is Chat it will just be undefined - return ((update as Message).sender as User).language - case ChatMemberUpdate: - case InlineQuery: - case ChosenInlineResult: - case CallbackQuery: - case PollVoteUpdate: - case BotStoppedUpdate: - case BotChatJoinRequestUpdate: - return ( - update as - | ChatMemberUpdate - | InlineQuery - | ChosenInlineResult - | CallbackQuery - | PollVoteUpdate - | BotStoppedUpdate - | BotChatJoinRequestUpdate - ).user.language + return upd.sender.language + case client.ChatMemberUpdate: + case client.InlineQuery: + case client.ChosenInlineResult: + case client.CallbackQuery: + case client.PollVoteUpdate: + case client.BotStoppedUpdate: + case client.BotChatJoinRequestUpdate: + return upd.user.language } return null