From 8a58ef1afa1df65f433d22ed02670baea111d5df Mon Sep 17 00:00:00 2001 From: Lim Chee Aun Date: Tue, 18 Nov 2025 09:37:08 +0800 Subject: [PATCH] Remove edit-media supports check Due to Mastodon v4.1 is EOL --- src/components/compose.jsx | 2 +- src/components/media-attachment.jsx | 2 +- src/data/features.json | 1 - src/utils/supports.js | 10 +++++++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 0376db8b..f33fa30f 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -1334,7 +1334,7 @@ function Compose({ params.quote_approval_policy = quoteApprovalPolicy; } if ( - supports('@mastodon/edit-media-attributes') || + supports('@mastodon') || supports('@gotosocial/edit-media-attributes') ) { params.media_attributes = mediaAttachments.map( diff --git a/src/components/media-attachment.jsx b/src/components/media-attachment.jsx index 6b884d14..11e56760 100644 --- a/src/components/media-attachment.jsx +++ b/src/components/media-attachment.jsx @@ -38,7 +38,7 @@ function MediaAttachment({ const { i18n, t } = useLingui(); const [uiState, setUIState] = useState('default'); const supportsEdit = - supports('@mastodon/edit-media-attributes') || + supports('@mastodon') || supports('@gotosocial/edit-media-attributes'); const { type, id, file } = attachment; const url = useMemo( diff --git a/src/data/features.json b/src/data/features.json index 722ab1d1..32884f9c 100644 --- a/src/data/features.json +++ b/src/data/features.json @@ -1,5 +1,4 @@ { - "@mastodon/edit-media-attributes": ">=4.1", "@mastodon/list-exclusive": ">=4.2", "@gotosocial/list-exclusive": ">=0.17", "@gotosocial/edit-media-attributes": ">=0.18", diff --git a/src/utils/supports.js b/src/utils/supports.js index 1ea47ad0..3fac68b9 100644 --- a/src/utils/supports.js +++ b/src/utils/supports.js @@ -31,6 +31,7 @@ const platformFeatures = { const supportsCache = {}; const semverExtract = /^\d+\.\d+(\.\d+)?/; +const atSoftwareSlashMatch = /^@([a-z]+)\//i; function supports(feature) { try { @@ -49,11 +50,18 @@ function supports(feature) { return (supportsCache[key] = platformFeatures[feature].test(version)); } + const featureMatch = feature.match(atSoftwareSlashMatch); + if (!featureMatch) { + // Only software match, e.g. supports('@mastodon') + const software = feature.replace(/^@/, ''); + return (supportsCache[key] = softwareName === software); + } + const range = features[feature]; if (!range) return false; // '@mastodon/blah' => 'mastodon' - const featureSoftware = feature.match(/^@([a-z]+)\//)[1]; + const featureSoftware = featureMatch[1]; const doesSoftwareMatch = featureSoftware === softwareName.toLowerCase(); let satisfiesRange = satisfies(version, range, { -- 2.51.2