From d9cf37aecf5554a0efbc1da8b564f6933477d3c6 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 4 Aug 2023 12:14:21 -0700 Subject: Collection of small UI fixes & improvements (#1104) * Fix black bar appearing in link card images * Include QPs in posts cache * Fix like color for feed likes in notifications * Fix post embed spacing --- src/state/models/cache/posts.ts | 41 +++++++++++++++++++++- src/view/com/notifications/FeedItem.tsx | 2 +- src/view/com/post-thread/PostThreadItem.tsx | 4 +-- src/view/com/post/Post.tsx | 8 +++-- src/view/com/posts/FeedItem.tsx | 12 ++++--- .../com/util/post-embeds/ExternalLinkEmbed.tsx | 20 ++++++++--- 6 files changed, 70 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/state/models/cache/posts.ts b/src/state/models/cache/posts.ts index 48621226a..d3632f436 100644 --- a/src/state/models/cache/posts.ts +++ b/src/state/models/cache/posts.ts @@ -1,6 +1,11 @@ import {LRUMap} from 'lru_map' import {RootStoreModel} from '../root-store' -import {AppBskyFeedDefs} from '@atproto/api' +import { + AppBskyFeedDefs, + AppBskyEmbedRecord, + AppBskyEmbedRecordWithMedia, + AppBskyFeedPost, +} from '@atproto/api' type PostView = AppBskyFeedDefs.PostView @@ -27,5 +32,39 @@ export class PostsCache { ) { this.set(feedItem.reply.parent.uri, feedItem.reply.parent) } + const embed = feedItem.post.embed + if ( + AppBskyEmbedRecord.isView(embed) && + AppBskyEmbedRecord.isViewRecord(embed.record) && + AppBskyFeedPost.isRecord(embed.record.value) && + AppBskyFeedPost.validateRecord(embed.record.value).success + ) { + this.set(embed.record.uri, embedViewToPostView(embed.record)) + } + if ( + AppBskyEmbedRecordWithMedia.isView(embed) && + AppBskyEmbedRecord.isViewRecord(embed.record?.record) && + AppBskyFeedPost.isRecord(embed.record.record.value) && + AppBskyFeedPost.validateRecord(embed.record.record.value).success + ) { + this.set( + embed.record.record.uri, + embedViewToPostView(embed.record.record), + ) + } + } +} + +function embedViewToPostView( + embedView: AppBskyEmbedRecord.ViewRecord, +): PostView { + return { + $type: 'app.bsky.feed.post#view', + uri: embedView.uri, + cid: embedView.cid, + author: embedView.author, + record: embedView.value, + indexedAt: embedView.indexedAt, + labels: embedView.labels, } } diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx index ce9f5bc0d..7b07bb30f 100644 --- a/src/view/com/notifications/FeedItem.tsx +++ b/src/view/com/notifications/FeedItem.tsx @@ -171,7 +171,7 @@ export const FeedItem = observer(function ({ action = `liked your custom feed '${new AtUri(item.subjectUri).rkey}'` icon = 'HeartIconSolid' iconStyle = [ - s.red3 as FontAwesomeIconStyle, + s.likeColor as FontAwesomeIconStyle, {position: 'relative', top: -4}, ] } else { diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index b5469c6fb..c00e7a9c6 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -252,7 +252,7 @@ export const PostThreadItem = observer(function PostThreadItem({ ) : undefined} {item.post.embed && ( - + )} @@ -386,7 +386,7 @@ export const PostThreadItem = observer(function PostThreadItem({ ) : undefined} {item.post.embed && ( - + )} {needsTranslation && ( diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx index 4b03d4667..f6873b0a0 100644 --- a/src/view/com/post/Post.tsx +++ b/src/view/com/post/Post.tsx @@ -265,9 +265,11 @@ const PostLoaded = observer( /> ) : undefined} - - - + {item.post.embed ? ( + + + + ) : null} {needsTranslation && ( diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 9750ee50d..eecb4c533 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -289,11 +289,13 @@ export const FeedItem = observer(function ({ /> ) : undefined} - - - + {item.post.embed ? ( + + + + ) : null} {needsTranslation && ( diff --git a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx index a4cbb3e29..d371cbfc8 100644 --- a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx @@ -1,6 +1,6 @@ import React from 'react' +import {Image} from 'expo-image' import {Text} from '../text/Text' -import {AutoSizedImage} from '../images/AutoSizedImage' import {StyleSheet, View} from 'react-native' import {usePalette} from 'lib/hooks/usePalette' import {AppBskyEmbedExternal} from '@atproto/api' @@ -16,9 +16,14 @@ export const ExternalLinkEmbed = ({ return ( <> {link.thumb ? ( - + + {imageChild} - + ) : undefined} @@ -47,11 +52,16 @@ const styles = StyleSheet.create({ extInner: { padding: 10, }, - extImage: { + extImageContainer: { borderTopLeftRadius: 6, borderTopRightRadius: 6, width: '100%', - maxHeight: 200, + height: 200, + overflow: 'hidden', + }, + extImage: { + width: '100%', + height: 200, }, extUri: { marginTop: 2, -- cgit 1.4.1