diff --git a/src/api/status.ts b/src/api/status.ts index 7913b0a..028d6df 100644 --- a/src/api/status.ts +++ b/src/api/status.ts @@ -301,8 +301,8 @@ export const statusAPI = async ( if (quoteTweet) { apiTweet.quote = (await populateTweetProperties(quoteTweet, res, language)) as APITweet; /* Only override the twitter_card if it's a basic tweet, since media always takes precedence */ - if (apiTweet.twitter_card === 'tweet' && apiTweet.quote !== null) { - apiTweet.twitter_card = apiTweet.quote.twitter_card; + if (apiTweet.embed_card === 'tweet' && apiTweet.quote !== null) { + apiTweet.embed_card = apiTweet.quote.embed_card; } } diff --git a/src/helpers/quote.ts b/src/helpers/quote.ts index f72a009..d1b4a0a 100644 --- a/src/helpers/quote.ts +++ b/src/helpers/quote.ts @@ -1,7 +1,7 @@ import { Strings } from '../strings'; /* Helper for Quote Tweets */ -export const handleQuote = (quote: APITweet): string | null => { +export const handleQuote = (quote: APIPost): string | null => { console.log('Quoting status ', quote.id); let str = `\n`; diff --git a/src/providers/twitter/processor.ts b/src/providers/twitter/processor.ts index 3b8e1b7..a2816af 100644 --- a/src/providers/twitter/processor.ts +++ b/src/providers/twitter/processor.ts @@ -6,6 +6,7 @@ import { handleMosaic } from '../../helpers/mosaic'; import { unescapeText } from '../../helpers/utils'; import { processMedia } from '../../helpers/media'; import { convertToApiUser } from '../../api/user'; +import { translateTweet } from '../../helpers/translate'; export const buildAPITweet = async ( tweet: GraphQLTweet, @@ -135,7 +136,7 @@ export const buildAPITweet = async ( if (quoteTweet) { apiTweet.quote = (await buildAPITweet(quoteTweet, language)) as APITweet; /* Only override the embed_card if it's a basic tweet, since media always takes precedence */ - if (apiTweet.embed_card === 'tweet'&& apiTweet.quote !== null) { + if (apiTweet.embed_card === 'tweet' && apiTweet.quote !== null) { apiTweet.embed_card = apiTweet.quote.embed_card; } } @@ -199,10 +200,6 @@ export const buildAPITweet = async ( } } - /* Workaround: Force player card by default for videos */ - /* TypeScript gets confused and re-interprets the type'tweet' instead of 'tweet' | 'summary' | 'summary_large_image' | 'player' - The mediaList however can set it to something else. TODO: Reimplement as enums */ - // @ts-expect-error see above comment if (apiTweet.media?.videos && apiTweet.embed_card !== 'player') { apiTweet.embed_card = 'player'; } @@ -210,16 +207,16 @@ export const buildAPITweet = async ( /* If a language is specified in API or by user, let's try translating it! */ if (typeof language === 'string' && language.length === 2 && language !== tweet.legacy.lang) { /* TODO: Reimplement */ - // console.log(`Attempting to translate Tweet to ${language}...`); - // const translateAPI = await translateTweet(tweet, conversation.guestToken || '', language); - // if (translateAPI !== null && translateAPI?.translation) { - // apiTweet.translation = { - // text: unescapeText(linkFixer(tweet.legacy?.entities?.urls, translateAPI?.translation || '')), - // source_lang: translateAPI?.sourceLanguage || '', - // target_lang: translateAPI?.destinationLanguage || '', - // source_lang_en: translateAPI?.localizedSourceLanguage || '' - // }; - // } + console.log(`Attempting to translate Tweet to ${language}...`); + const translateAPI = await translateTweet(tweet, '', language); + if (translateAPI !== null && translateAPI?.translation) { + apiTweet.translation = { + text: unescapeText(linkFixer(tweet.legacy?.entities?.urls, translateAPI?.translation || '')), + source_lang: translateAPI?.sourceLanguage || '', + target_lang: translateAPI?.destinationLanguage || '', + source_lang_en: translateAPI?.localizedSourceLanguage || '' + }; + } } return apiTweet; diff --git a/src/providers/twitter/status.ts b/src/providers/twitter/status.ts index f43c141..40375f2 100644 --- a/src/providers/twitter/status.ts +++ b/src/providers/twitter/status.ts @@ -172,6 +172,11 @@ export const processTwitterThread = async (id: string, processThread = false, re } const post = await buildAPITweet(originalTweet, undefined, false, false); + + if (post === null) { + return { post: null, thread: null, author: null }; + } + const author = post.author; /* remove post.author */ // @ts-expect-error lmao