From 280a2d0376a84cb050eefaadb31afa3097e06273 Mon Sep 17 00:00:00 2001 From: dangered wolf Date: Thu, 14 Jul 2022 18:22:18 -0400 Subject: [PATCH] Add user-agent parameter to handleStatus --- src/poll.ts | 10 ++++++++-- src/server.ts | 3 ++- src/status.ts | 5 +++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/poll.ts b/src/poll.ts index 6f7e40d..f44dc0c 100644 --- a/src/poll.ts +++ b/src/poll.ts @@ -1,4 +1,4 @@ -const barLength = 36; +let barLength = 36; export const calculateTimeLeft = (date: Date) => { const now = new Date(); @@ -22,12 +22,17 @@ export const calculateTimeLeftString = (date: Date) => { return daysString || hoursString || minutesString || secondsString || 'Final results'; }; -export const renderPoll = async (card: TweetCard): Promise => { +export const renderPoll = async (card: TweetCard, userAgent: string = ''): Promise => { let str = '\n\n'; const values = card.binding_values; console.log('rendering poll on ', card); + // Telegram's bars need to be a lot smaller to fit its bubbles + if (userAgent.indexOf('Telegram') > -1) { + barLength = 24; + } + let choices: { [label: string]: number } = {}; let totalVotes = 0; let timeLeft = ''; @@ -37,6 +42,7 @@ export const renderPoll = async (card: TweetCard): Promise => { timeLeft = calculateTimeLeftString(date); } + /* TODO: make this cleaner */ if ( typeof values !== 'undefined' && typeof values.choice1_count !== 'undefined' && diff --git a/src/server.ts b/src/server.ts index 5185ef8..5f15899 100644 --- a/src/server.ts +++ b/src/server.ts @@ -29,7 +29,7 @@ const statusRequest = async (request: any) => { const userAgent = request.headers.get('User-Agent'); if (userAgent.match(/bot/gi) !== null) { - return new Response(await handleStatus(id, parseInt(mediaNumber || 1)), { + return new Response(await handleStatus(id, parseInt(mediaNumber || 1), userAgent), { headers: Constants.RESPONSE_HEADERS, status: 200 }); @@ -49,6 +49,7 @@ router.get('/owoembed', async (request: any) => { console.log('oembed hit!'); const { searchParams } = new URL(request.url); + /* Fallbacks */ let text = searchParams.get('text') || 'Twitter'; let author = searchParams.get('author') || 'dangeredwolf'; let status = searchParams.get('status') || '1547514042146865153'; diff --git a/src/status.ts b/src/status.ts index 63d43e1..dc1c58c 100644 --- a/src/status.ts +++ b/src/status.ts @@ -8,7 +8,8 @@ import { handleQuote } from './quote'; export const handleStatus = async ( status: string, - mediaNumber?: number + mediaNumber?: number, + userAgent?: string ): Promise => { const conversation = await fetchUsingGuest(status); @@ -58,7 +59,7 @@ export const handleStatus = async ( let authorText = 'Twitter'; if (tweet.card) { - text += await renderPoll(tweet.card); + text += await renderPoll(tweet.card, userAgent); } text = linkFixer(tweet, text);