diff --git a/app/soapbox/__fixtures__/truthsocial-status-with-external-video.json b/app/soapbox/__fixtures__/truthsocial-status-with-external-video.json new file mode 100644 index 0000000000..eb61501927 --- /dev/null +++ b/app/soapbox/__fixtures__/truthsocial-status-with-external-video.json @@ -0,0 +1,95 @@ +{ + "id": "108046244464677537", + "created_at": "2022-03-30T15:40:53.287Z", + "in_reply_to_id": null, + "in_reply_to_account_id": null, + "sensitive": false, + "spoiler_text": "", + "visibility": "public", + "language": null, + "uri": "https://truthsocial.com/users/alex/statuses/108046244464677537", + "url": "https://truthsocial.com/@alex/108046244464677537", + "replies_count": 0, + "reblogs_count": 0, + "favourites_count": 0, + "favourited": false, + "reblogged": false, + "muted": false, + "bookmarked": false, + "pinned": false, + "content": "", + "reblog": null, + "application": { + "name": "Soapbox FE", + "website": "https://soapbox.pub/" + }, + "account": { + "id": "107759994408336377", + "username": "alex", + "acct": "alex", + "display_name": "Alex Gleason", + "locked": false, + "bot": false, + "discoverable": null, + "group": false, + "created_at": "2022-02-08T00:00:00.000Z", + "note": "
Launching Truth Social
", + "url": "https://truthsocial.com/@alex", + "avatar": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/accounts/avatars/107/759/994/408/336/377/original/119cb0dd1fa615b7.png", + "avatar_static": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/accounts/avatars/107/759/994/408/336/377/original/119cb0dd1fa615b7.png", + "header": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/accounts/headers/107/759/994/408/336/377/original/31f62b0453ccf554.png", + "header_static": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/accounts/headers/107/759/994/408/336/377/original/31f62b0453ccf554.png", + "followers_count": 4713, + "following_count": 43, + "statuses_count": 7, + "last_status_at": "2022-03-30", + "verified": true, + "location": "Texas", + "website": "https://soapbox.pub/", + "emojis": [], + "fields": [] + }, + "media_attachments": [ + { + "id": "108046243948255335", + "type": "video", + "url": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/media_attachments/files/108/046/243/948/255/335/original/3b17ce701c0d6f08.mp4", + "preview_url": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/cache/preview_cards/images/000/543/912/original/e1fcf6ace01d9ded.jpg", + "external_video_id": "vwfnq9", + "remote_url": null, + "preview_remote_url": null, + "text_url": "https://truthsocial.com/media/SpbYvqKIT2VubC9FFn0", + "meta": { + "original": { + "width": 988, + "height": 556, + "frame_rate": "60/1", + "duration": 1.949025, + "bitrate": 402396 + } + }, + "description": null, + "blurhash": null + } + ], + "mentions": [], + "tags": [], + "emojis": [], + "card": { + "url": "https://rumble.com/vz1trd-video-upload-for-108046244464677537.html?mref=ummtf&mc=3nvg0", + "title": "Video upload for 108046244464677537", + "description": "", + "type": "video", + "author_name": "hostid1", + "author_url": "https://rumble.com/user/hostid1", + "provider_name": "Rumble.com", + "provider_url": "https://rumble.com/", + "html": "", + "width": 988, + "height": 556, + "image": "https://static-assets.truthsocial.com/tmtg:prime-truth-social-assets/cache/preview_cards/images/000/543/912/original/e1fcf6ace01d9ded.jpg", + "embed_url": "", + "blurhash": "UQH1;m~8sks,%M~9?DRk-mRnR+xs9cWVj[bH" + }, + "poll": null +} diff --git a/app/soapbox/components/status.js b/app/soapbox/components/status.js index ef9aafdbeb..eafc149223 100644 Binary files a/app/soapbox/components/status.js and b/app/soapbox/components/status.js differ diff --git a/app/soapbox/features/status/components/detailed_status.js b/app/soapbox/features/status/components/detailed_status.js index 0ae6451294..5e1cb54075 100644 Binary files a/app/soapbox/features/status/components/detailed_status.js and b/app/soapbox/features/status/components/detailed_status.js differ diff --git a/app/soapbox/normalizers/__tests__/status-test.js b/app/soapbox/normalizers/__tests__/status-test.js index ebfcb3eeee..ac9358f51a 100644 Binary files a/app/soapbox/normalizers/__tests__/status-test.js and b/app/soapbox/normalizers/__tests__/status-test.js differ diff --git a/app/soapbox/normalizers/attachment.ts b/app/soapbox/normalizers/attachment.ts index 26e6166967..de960d2580 100644 --- a/app/soapbox/normalizers/attachment.ts +++ b/app/soapbox/normalizers/attachment.ts @@ -15,6 +15,7 @@ import { mergeDefined } from 'soapbox/utils/normalizers'; export const AttachmentRecord = ImmutableRecord({ blurhash: undefined, description: '', + external_video_id: null as string | null, // TruthSocial id: '', meta: ImmutableMap(), pleroma: ImmutableMap(), diff --git a/app/soapbox/utils/features.ts b/app/soapbox/utils/features.ts index 7e5ca16ed6..c9b050f1ce 100644 --- a/app/soapbox/utils/features.ts +++ b/app/soapbox/utils/features.ts @@ -48,14 +48,19 @@ const getInstanceFeatures = (instance: Instance) => { ]), suggestions: any([ v.software === MASTODON && gte(v.compatVersion, '2.4.3'), + v.software === TRUTHSOCIAL, features.includes('v2_suggestions'), ]), suggestionsV2: any([ v.software === MASTODON && gte(v.compatVersion, '3.4.0'), + v.software === TRUTHSOCIAL, features.includes('v2_suggestions'), ]), blockersVisible: features.includes('blockers_visible'), - trends: v.software === MASTODON && gte(v.compatVersion, '3.0.0'), + trends: any([ + v.software === MASTODON && gte(v.compatVersion, '3.0.0'), + v.software === TRUTHSOCIAL, + ]), mediaV2: any([ v.software === MASTODON && gte(v.compatVersion, '3.1.3'), // Even though Pleroma supports these endpoints, it has disadvantages