diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-01-03 09:53:41 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-03 09:53:41 -0800 |
commit | df277e5977cb0b1f7e11c7e94265029f8e37ece4 (patch) | |
tree | 68b40d5d5571e6396b7aac7b673748f7d1fbfeaa /src | |
parent | 2c31e2a042f73d99be114cf6cb4a2eb9d5407d68 (diff) | |
download | voidsky-df277e5977cb0b1f7e11c7e94265029f8e37ece4.tar.zst |
Multiple improvements to link cards and quote posts (#2398)
* fix canvas * fix external link embed styles * Use the same link-card style on web and mobile and give a little more height on desktop to the card images * Use dark border on link embeds to match quote post style * Fix the highlighting behavior on linkcards and quoteposts --------- Co-authored-by: Hailey <me@haileyok.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/media/manip.web.ts | 10 | ||||
-rw-r--r-- | src/lib/themes.ts | 2 | ||||
-rw-r--r-- | src/view/com/util/post-embeds/ExternalLinkEmbed.tsx | 40 | ||||
-rw-r--r-- | src/view/com/util/post-embeds/QuoteEmbed.tsx | 1 | ||||
-rw-r--r-- | src/view/com/util/post-embeds/index.tsx | 18 |
5 files changed, 27 insertions, 44 deletions
diff --git a/src/lib/media/manip.web.ts b/src/lib/media/manip.web.ts index 914b05d2e..bdf6836a1 100644 --- a/src/lib/media/manip.web.ts +++ b/src/lib/media/manip.web.ts @@ -117,9 +117,6 @@ function createResizedImage( return reject(new Error('Failed to resize image')) } - canvas.width = width - canvas.height = height - let scale = 1 if (mode === 'cover') { scale = img.width < img.height ? width / img.width : height / img.height @@ -128,10 +125,11 @@ function createResizedImage( } let w = img.width * scale let h = img.height * scale - let x = (width - w) / 2 - let y = (height - h) / 2 - ctx.drawImage(img, x, y, w, h) + canvas.width = w + canvas.height = h + + ctx.drawImage(img, 0, 0, w, h) resolve(canvas.toDataURL('image/jpeg', quality)) }) img.src = dataUri diff --git a/src/lib/themes.ts b/src/lib/themes.ts index b778d5b30..ad7574db6 100644 --- a/src/lib/themes.ts +++ b/src/lib/themes.ts @@ -25,6 +25,7 @@ export const defaultTheme: Theme = { postCtrl: '#71768A', brandText: '#0066FF', emptyStateIcon: '#B6B6C9', + borderLinkHover: '#cac1c1', }, primary: { background: colors.blue3, @@ -310,6 +311,7 @@ export const darkTheme: Theme = { postCtrl: '#707489', brandText: '#0085ff', emptyStateIcon: colors.gray4, + borderLinkHover: colors.gray5, }, primary: { ...defaultTheme.palette.primary, diff --git a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx index 27aa804d3..1523dcf53 100644 --- a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx @@ -23,29 +23,16 @@ export const ExternalLinkEmbed = ({ ) return ( - <View - style={{ - flexDirection: !isMobile && !embedPlayerParams ? 'row' : 'column', - }}> + <View style={{flexDirection: 'column'}}> {link.thumb && !embedPlayerParams ? ( <View - style={ - !isMobile - ? { - borderTopLeftRadius: 6, - borderBottomLeftRadius: 6, - width: 120, - aspectRatio: 1, - overflow: 'hidden', - } - : { - borderTopLeftRadius: 6, - borderTopRightRadius: 6, - width: '100%', - height: 200, - overflow: 'hidden', - } - }> + style={{ + borderTopLeftRadius: 6, + borderTopRightRadius: 6, + width: '100%', + height: isMobile ? 200 : 300, + overflow: 'hidden', + }}> <Image style={styles.extImage} source={{uri: link.thumb}} @@ -61,7 +48,6 @@ export const ExternalLinkEmbed = ({ paddingHorizontal: isMobile ? 10 : 14, paddingTop: 8, paddingBottom: 10, - flex: !isMobile ? 1 : undefined, }}> <Text type="sm" @@ -69,16 +55,13 @@ export const ExternalLinkEmbed = ({ style={[pal.textLight, styles.extUri]}> {toNiceDomain(link.uri)} </Text> - <Text - type="lg-bold" - numberOfLines={isMobile ? 4 : 2} - style={[pal.text]}> + <Text type="lg-bold" numberOfLines={4} style={[pal.text]}> {link.title || link.uri} </Text> {link.description ? ( <Text type="md" - numberOfLines={isMobile ? 4 : 2} + numberOfLines={4} style={[pal.text, styles.extDescription]}> {link.description} </Text> @@ -90,8 +73,7 @@ export const ExternalLinkEmbed = ({ const styles = StyleSheet.create({ extImage: { - width: '100%', - height: 200, + flex: 1, }, extUri: { marginTop: 2, diff --git a/src/view/com/util/post-embeds/QuoteEmbed.tsx b/src/view/com/util/post-embeds/QuoteEmbed.tsx index e793f983e..fbb89af27 100644 --- a/src/view/com/util/post-embeds/QuoteEmbed.tsx +++ b/src/view/com/util/post-embeds/QuoteEmbed.tsx @@ -98,6 +98,7 @@ export function QuoteEmbed({ return ( <Link style={[styles.container, pal.borderDark, style]} + hoverStyle={{borderColor: pal.colors.borderLinkHover}} href={itemHref} title={itemTitle}> <PostMeta diff --git a/src/view/com/util/post-embeds/index.tsx b/src/view/com/util/post-embeds/index.tsx index c94ce9684..00a102e7b 100644 --- a/src/view/com/util/post-embeds/index.tsx +++ b/src/view/com/util/post-embeds/index.tsx @@ -63,7 +63,7 @@ export function PostEmbeds({ const mediaModeration = isModOnQuote ? {} : moderation const quoteModeration = isModOnQuote ? moderation : {} return ( - <View style={[styles.stackContainer, style]}> + <View style={style}> <PostEmbeds embed={embed.media} moderation={mediaModeration} /> <ContentHider moderation={quoteModeration}> <MaybeQuoteEmbed embed={embed.record} moderation={quoteModeration} /> @@ -168,11 +168,14 @@ export function PostEmbeds({ const link = embed.external return ( - <View style={[styles.extOuter, pal.view, pal.border, style]}> - <Link asAnchor href={link.uri}> - <ExternalLinkEmbed link={link} /> - </Link> - </View> + <Link + asAnchor + anchorNoUnderline + href={link.uri} + style={[styles.extOuter, pal.view, pal.borderDark, style]} + hoverStyle={{borderColor: pal.colors.borderLinkHover}}> + <ExternalLinkEmbed link={link} /> + </Link> ) } @@ -180,9 +183,6 @@ export function PostEmbeds({ } const styles = StyleSheet.create({ - stackContainer: { - gap: 6, - }, imagesContainer: { marginTop: 8, }, |