diff --git a/eslint-suppressions.json b/eslint-suppressions.json
index e1e981fd08..a3cbe60000 100644
--- a/eslint-suppressions.json
+++ b/eslint-suppressions.json
@@ -617,11 +617,6 @@
"count": 3
}
},
- "src/components/dialogs/InAppBrowserConsent.tsx": {
- "@typescript-eslint/no-floating-promises": {
- "count": 2
- }
- },
"src/components/dialogs/LanguageSelectDialog.tsx": {
"@typescript-eslint/no-explicit-any": {
"count": 1
@@ -629,7 +624,7 @@
},
"src/components/dialogs/LinkWarning.tsx": {
"@typescript-eslint/no-floating-promises": {
- "count": 2
+ "count": 1
}
},
"src/components/dialogs/MutedWords.tsx": {
@@ -848,11 +843,6 @@
"count": 1
}
},
- "src/features/liveNow/components/LiveStatusDialog.tsx": {
- "@typescript-eslint/no-floating-promises": {
- "count": 1
- }
- },
"src/features/liveNow/index.tsx": {
"@typescript-eslint/no-explicit-any": {
"count": 3
@@ -975,14 +965,6 @@
"count": 4
}
},
- "src/lib/hooks/useOpenLink.ts": {
- "@typescript-eslint/no-floating-promises": {
- "count": 2
- },
- "@typescript-eslint/require-await": {
- "count": 1
- }
- },
"src/lib/hooks/usePermissions.ts": {
"@typescript-eslint/no-misused-promises": {
"count": 1
@@ -2394,9 +2376,6 @@
"src/view/com/util/Link.tsx": {
"@typescript-eslint/no-explicit-any": {
"count": 2
- },
- "@typescript-eslint/no-misused-promises": {
- "count": 2
}
},
"src/view/com/util/LoadingPlaceholder.tsx": {
diff --git a/src/components/Post/Embed/StandardSiteEmbed/index.tsx b/src/components/Post/Embed/StandardSiteEmbed/index.tsx
index dc60db53ad..64e93e4c68 100644
--- a/src/components/Post/Embed/StandardSiteEmbed/index.tsx
+++ b/src/components/Post/Embed/StandardSiteEmbed/index.tsx
@@ -127,7 +127,6 @@ export const StandardSiteEmbed = ({
style={[
a.flex_col,
a.rounded_lg,
- a.overflow_hidden,
a.w_full,
a.border,
t.atoms.bg,
@@ -135,126 +134,149 @@ export const StandardSiteEmbed = ({
preview && a.pointer_events_none,
style,
]}>
+ {/*
+ * The article is an in-flow `Link` wrapping the content so the iOS peek
+ * menu has something to lift. The publication footer below lives outside
+ * it - it has its own link (to the publication) and Subscribe button, so
+ * it can't be nested inside the article's peek.
+ */}
- <>>
-
-
-
- {imageUri ? (
-
- ) : undefined}
-
-
+ {() => (
-
- {view.title}
-
- {view.description ? (
-
- {view.description}
-
+ {imageUri ? (
+
) : undefined}
- {isStandard && (view.createdAt || view.readingTime) && (
+
- {view.createdAt && (
+ style={[
+ a.pb_xs,
+ a.px_md,
+ {gap: 3},
+ isStandard && [{gap: 5}, a.pb_sm],
+ ]}>
+
+ {view.title}
+
+ {view.description ? (
- {niceDate(i18n, view.createdAt, 'long', 'none')}
+ emoji
+ numberOfLines={view.thumb ? 2 : 4}
+ style={[a.text_sm, a.leading_snug]}>
+ {view.description}
- )}
- {view.readingTime && (
-
-
-
- {l({
- message: plural(view.readingTime, {
- one: '#m',
- other: '#m',
- }),
- comment: `How long it takes to read an article, in minutes. Displayed in a short form, e.g. "5m" for 5 minutes.`,
- })}
-
+ ) : undefined}
+
+ {isStandard && (view.createdAt || view.readingTime) && (
+
+ {view.createdAt && (
+
+ {niceDate(i18n, view.createdAt, 'long', 'none')}
+
+ )}
+ {view.readingTime && (
+
+
+
+ {l({
+ message: plural(view.readingTime, {
+ one: '#m',
+ other: '#m',
+ }),
+ comment: `How long it takes to read an article, in minutes. Displayed in a short form, e.g. "5m" for 5 minutes.`,
+ })}
+
+
+ )}
)}
+
+
+ {!view.source && (
+
+
+
+
+
+
)}
-
-
- {!view.source && (
-
-
-
-
-
-
)}
-
+
{view.source && (
-
+
{
+ (url: string, override?: boolean, shouldProxy?: boolean) => {
if (isBskyRSSUrl(url) && isRelativeUrl(url)) {
url = createBskyAppAbsoluteUrl(url)
}
@@ -66,12 +66,12 @@ export function useOpenLink() {
}).catch(err => {
if (__DEV__)
logger.error('Could not open web browser', {message: err})
- Linking.openURL(url)
+ void Linking.openURL(url)
})
return
}
}
- Linking.openURL(url)
+ void Linking.openURL(url)
},
[ax, enabled, inAppBrowserConsentControl, t, dialogContext],
)