diff --git a/package.json b/package.json
index bc2b62ec..97fd91b0 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"make-deploy-bundle": "bash scripts/bundleUpdate.sh"
},
"dependencies": {
- "@atproto/api": "^0.12.0",
+ "@atproto/api": "^0.12.1",
"@bam.tech/react-native-image-resizer": "^3.0.4",
"@braintree/sanitize-url": "^6.0.2",
"@emoji-mart/react": "^1.1.1",
diff --git a/src/state/queries/actor-autocomplete.ts b/src/state/queries/actor-autocomplete.ts
index f14b3d65..e6bf04ba 100644
--- a/src/state/queries/actor-autocomplete.ts
+++ b/src/state/queries/actor-autocomplete.ts
@@ -101,13 +101,7 @@ function computeSuggestions(
}
for (const item of searched) {
if (!items.find(item2 => item2.handle === item.handle)) {
- items.push({
- did: item.did,
- handle: item.handle,
- displayName: item.displayName,
- avatar: item.avatar,
- labels: item.labels,
- })
+ items.push(item)
}
}
return items.filter(profile => {
diff --git a/src/state/shell/composer.tsx b/src/state/shell/composer.tsx
index a09e8fba..5b4e5054 100644
--- a/src/state/shell/composer.tsx
+++ b/src/state/shell/composer.tsx
@@ -3,6 +3,7 @@ import {
AppBskyEmbedRecord,
AppBskyRichtextFacet,
ModerationDecision,
+ AppBskyActorDefs,
} from '@atproto/api'
import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
@@ -10,11 +11,7 @@ export interface ComposerOptsPostRef {
uri: string
cid: string
text: string
- author: {
- handle: string
- displayName?: string
- avatar?: string
- }
+ author: AppBskyActorDefs.ProfileViewBasic
embed?: AppBskyEmbedRecord.ViewRecord['embed']
moderation?: ModerationDecision
}
diff --git a/src/view/com/auth/login/ChooseAccountForm.tsx b/src/view/com/auth/login/ChooseAccountForm.tsx
index 32cd8315..d3b075fd 100644
--- a/src/view/com/auth/login/ChooseAccountForm.tsx
+++ b/src/view/com/auth/login/ChooseAccountForm.tsx
@@ -45,7 +45,11 @@ function AccountItem({
accessibilityHint={_(msg`Double tap to sign in`)}>
-
+
diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx
index 0a2692d0..ab7551b6 100644
--- a/src/view/com/composer/Composer.tsx
+++ b/src/view/com/composer/Composer.tsx
@@ -415,7 +415,11 @@ export const ComposePost = observer(function ComposePost({
styles.textInputLayout,
isNative && styles.textInputLayoutMobile,
]}>
-
+
diff --git a/src/view/com/composer/Prompt.tsx b/src/view/com/composer/Prompt.tsx
index 632bb263..16d1b6fb 100644
--- a/src/view/com/composer/Prompt.tsx
+++ b/src/view/com/composer/Prompt.tsx
@@ -23,7 +23,11 @@ export function ComposePrompt({onPressCompose}: {onPressCompose: () => void}) {
accessibilityRole="button"
accessibilityLabel={_(msg`Compose reply`)}
accessibilityHint={_(msg`Opens composer`)}>
-
+
-
+
{displayName}
diff --git a/src/view/com/composer/text-input/web/Autocomplete.tsx b/src/view/com/composer/text-input/web/Autocomplete.tsx
index 76058fed..29b8f0bc 100644
--- a/src/view/com/composer/text-input/web/Autocomplete.tsx
+++ b/src/view/com/composer/text-input/web/Autocomplete.tsx
@@ -175,7 +175,11 @@ const MentionList = forwardRef(
}}
accessibilityRole="button">
-
+
{displayName}
diff --git a/src/view/com/modals/ListAddRemoveUsers.tsx b/src/view/com/modals/ListAddRemoveUsers.tsx
index 27c33f80..4715348d 100644
--- a/src/view/com/modals/ListAddRemoveUsers.tsx
+++ b/src/view/com/modals/ListAddRemoveUsers.tsx
@@ -231,7 +231,11 @@ function UserResult({
width: 54,
paddingLeft: 4,
}}>
-
+
-
+
diff --git a/src/view/com/modals/UserAddRemoveLists.tsx b/src/view/com/modals/UserAddRemoveLists.tsx
index 8452f251..8a61b1a7 100644
--- a/src/view/com/modals/UserAddRemoveLists.tsx
+++ b/src/view/com/modals/UserAddRemoveLists.tsx
@@ -180,7 +180,7 @@ function ListItem({
},
]}>
-
+
{
return {
@@ -109,6 +112,7 @@ let FeedItem = ({
displayName: author.displayName,
avatar: author.avatar,
moderation: moderateProfile(author, moderationOpts),
+ associated: author.associated,
}
}) || []),
]
@@ -337,6 +341,7 @@ function CondensedAuthorsList({
handle={authors[0].handle}
avatar={authors[0].avatar}
moderation={authors[0].moderation.ui('avatar')}
+ type={authors[0].associated?.labeler ? 'labeler' : 'user'}
/>
)
@@ -355,6 +360,7 @@ function CondensedAuthorsList({
size={35}
avatar={author.avatar}
moderation={author.moderation.ui('avatar')}
+ type={author.associated?.labeler ? 'labeler' : 'user'}
/>
))}
@@ -413,6 +419,7 @@ function ExpandedAuthorsList({
size={35}
avatar={author.avatar}
moderation={author.moderation.ui('avatar')}
+ type={author.associated?.labeler ? 'labeler' : 'user'}
/>
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx
index c073b55a..ce4d8d9f 100644
--- a/src/view/com/post-thread/PostThreadItem.tsx
+++ b/src/view/com/post-thread/PostThreadItem.tsx
@@ -205,11 +205,7 @@ let PostThreadItemLoaded = ({
uri: post.uri,
cid: post.cid,
text: record.text,
- author: {
- handle: post.author.handle,
- displayName: post.author.displayName,
- avatar: post.author.avatar,
- },
+ author: post.author,
embed: post.embed,
moderation,
},
@@ -256,6 +252,7 @@ let PostThreadItemLoaded = ({
handle={post.author.handle}
avatar={post.author.avatar}
moderation={moderation.ui('avatar')}
+ type={post.author.associated?.labeler ? 'labeler' : 'user'}
/>
@@ -452,6 +449,7 @@ let PostThreadItemLoaded = ({
handle={post.author.handle}
avatar={post.author.avatar}
moderation={moderation.ui('avatar')}
+ type={post.author.associated?.labeler ? 'labeler' : 'user'}
/>
{showChildReplyLine && (
diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx
index c7bd4ba2..47e46eb0 100644
--- a/src/view/com/post/Post.tsx
+++ b/src/view/com/post/Post.tsx
@@ -118,11 +118,7 @@ function PostInner({
uri: post.uri,
cid: post.cid,
text: record.text,
- author: {
- handle: post.author.handle,
- displayName: post.author.displayName,
- avatar: post.author.avatar,
- },
+ author: post.author,
embed: post.embed,
moderation,
},
@@ -144,6 +140,7 @@ function PostInner({
handle={post.author.handle}
avatar={post.author.avatar}
moderation={moderation.ui('avatar')}
+ type={post.author.associated?.labeler ? 'labeler' : 'user'}
/>
diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx
index 0706ddb9..0fbcc4a1 100644
--- a/src/view/com/posts/FeedItem.tsx
+++ b/src/view/com/posts/FeedItem.tsx
@@ -126,11 +126,7 @@ let FeedItemInner = ({
uri: post.uri,
cid: post.cid,
text: record.text || '',
- author: {
- handle: post.author.handle,
- displayName: post.author.displayName,
- avatar: post.author.avatar,
- },
+ author: post.author,
embed: post.embed,
moderation,
},
@@ -243,6 +239,7 @@ let FeedItemInner = ({
handle={post.author.handle}
avatar={post.author.avatar}
moderation={moderation.ui('avatar')}
+ type={post.author.associated?.labeler ? 'labeler' : 'user'}
/>
{isThreadParent && (
@@ -101,7 +103,7 @@ export function ProfileCard({
/>
{!!profile.viewer?.followedBy && }
- {renderButton ? (
+ {renderButton && !isLabeler ? (
{renderButton(profile)}
) : undefined}
@@ -223,6 +225,7 @@ function FollowersList({
avatar={f.avatar}
size={32}
moderation={mod.ui('avatar')}
+ type={f.associated?.labeler ? 'labeler' : 'user'}
/>
diff --git a/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx b/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx
index 947d6e9c..a22866b8 100644
--- a/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx
+++ b/src/view/com/profile/ProfileHeaderSuggestedFollows.tsx
@@ -98,9 +98,11 @@ export function ProfileHeaderSuggestedFollows({
>
) : data ? (
- data.suggestions.map(profile => (
-
- ))
+ data.suggestions
+ .filter(s => (s.associated?.labeler ? false : true))
+ .map(profile => (
+
+ ))
) : (
)}
diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx
index 53dc20e7..529fc54e 100644
--- a/src/view/com/util/PostMeta.tsx
+++ b/src/view/com/util/PostMeta.tsx
@@ -11,16 +11,11 @@ import {sanitizeHandle} from 'lib/strings/handles'
import {isAndroid, isWeb} from 'platform/detection'
import {TimeElapsed} from './TimeElapsed'
import {makeProfileLink} from 'lib/routes/links'
-import {ModerationDecision, ModerationUI} from '@atproto/api'
+import {AppBskyActorDefs, ModerationDecision, ModerationUI} from '@atproto/api'
import {usePrefetchProfileQuery} from '#/state/queries/profile'
interface PostMetaOpts {
- author: {
- avatar?: string
- did: string
- handle: string
- displayName?: string | undefined
- }
+ author: AppBskyActorDefs.ProfileViewBasic
moderation: ModerationDecision | undefined
authorHasWarning: boolean
postHref: string
@@ -47,6 +42,7 @@ let PostMeta = (opts: PostMetaOpts): React.ReactNode => {
avatar={opts.author.avatar}
size={opts.avatarSize || 16}
moderation={opts.avatarModeration}
+ type={opts.author.associated?.labeler ? 'labeler' : 'user'}
/>
)}
diff --git a/src/view/screens/PostThread.tsx b/src/view/screens/PostThread.tsx
index aa09ab9e..ba1fa130 100644
--- a/src/view/screens/PostThread.tsx
+++ b/src/view/screens/PostThread.tsx
@@ -59,11 +59,7 @@ export function PostThreadScreen({route}: Props) {
uri: thread.post.uri,
cid: thread.post.cid,
text: thread.record.text,
- author: {
- handle: thread.post.author.handle,
- displayName: thread.post.author.displayName,
- avatar: thread.post.author.avatar,
- },
+ author: thread.post.author,
embed: thread.post.embed,
},
onPost: () =>
diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index 42eec53d..326e1e55 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -141,6 +141,7 @@ function SearchScreenSuggestedFollows() {
friends.slice(0, 4).map(friend =>
getSuggestedFollowsByActor(friend.did).then(foafsRes => {
for (const user of foafsRes.suggestions) {
+ if (user.associated?.labeler) continue
friendsOfFriends.set(user.did, user)
}
}),
diff --git a/src/view/screens/Settings/index.tsx b/src/view/screens/Settings/index.tsx
index 21225f58..74fc5d3c 100644
--- a/src/view/screens/Settings/index.tsx
+++ b/src/view/screens/Settings/index.tsx
@@ -82,7 +82,11 @@ function SettingsAccountCard({account}: {account: SessionAccount}) {
const contents = (
-
+
diff --git a/src/view/shell/Drawer.tsx b/src/view/shell/Drawer.tsx
index 2a37d1fe..d2dd67dc 100644
--- a/src/view/shell/Drawer.tsx
+++ b/src/view/shell/Drawer.tsx
@@ -75,6 +75,7 @@ let DrawerProfileCard = ({
avatar={profile?.avatar}
// See https://github.com/bluesky-social/social-app/pull/1801:
usePlainRNImage={true}
+ type={profile?.associated?.labeler ? 'labeler' : 'user'}
/>
) : (
@@ -238,6 +239,7 @@ export function BottomBar({navigation}: BottomTabBarProps) {
size={28}
// See https://github.com/bluesky-social/social-app/pull/1801:
usePlainRNImage={true}
+ type={profile?.associated?.labeler ? 'labeler' : 'user'}
/>
)}
diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx
index c56ba941..097ca2fb 100644
--- a/src/view/shell/desktop/LeftNav.tsx
+++ b/src/view/shell/desktop/LeftNav.tsx
@@ -64,7 +64,11 @@ function ProfileCard() {
style={[styles.profileCard, !isDesktop && styles.profileCardTablet]}
title={_(msg`My Profile`)}
asAnchor>
-
+
) : (
diff --git a/src/view/shell/desktop/Search.tsx b/src/view/shell/desktop/Search.tsx
index 8933324e..0c5bd452 100644
--- a/src/view/shell/desktop/Search.tsx
+++ b/src/view/shell/desktop/Search.tsx
@@ -112,6 +112,7 @@ export function SearchProfileCard({
size={40}
avatar={profile.avatar}
moderation={moderation.ui('avatar')}
+ type={profile.associated?.labeler ? 'labeler' : 'user'}
/>