personal web client for Bluesky
typescript solidjs bluesky atcute

feat: labels on profiles

mary.my.id 2914e344 34f3fe2a

verified
Changed files
+13 -4
src
components
+2 -1
src/components/moderation/labels-on-me.tsx
··· 7 7 import CircleInfoOutlinedIcon from '../icons-central/circle-info-outline'; 8 8 9 9 export interface LabelsOnMeProps { 10 + type: 'content' | 'account'; 10 11 labels: ComAtprotoLabelDefs.Label[] | undefined; 11 12 large?: boolean; 12 13 class?: string; ··· 38 39 <CircleInfoOutlinedIcon 39 40 class={`ml-1 opacity-80 group-hover:opacity-100` + (!props.large ? ` text-xs` : ` w-4 text-sm`)} 40 41 /> 41 - <span class="mx-1.5">{`${labels().length} ${labels().length === 1 ? `label` : `labels`} placed on this content`}</span> 42 + <span class="mx-1.5">{`${labels().length} ${labels().length === 1 ? `label` : `labels`} placed on this ${props.type}`}</span> 42 43 </button> 43 44 </div> 44 45 )}
+9 -1
src/components/profiles/profile-view-header.tsx
··· 4 4 5 5 import { useProfileShadow } from '~/api/cache/profile-shadow'; 6 6 import { getModerationUI } from '~/api/moderation'; 7 - import { ContextProfileMedia } from '~/api/moderation/constants'; 7 + import { ContextProfileMedia, ContextProfileView } from '~/api/moderation/constants'; 8 8 import { moderateProfile } from '~/api/moderation/entities/profile'; 9 9 import { parseAtUri } from '~/api/utils/strings'; 10 10 ··· 24 24 import MailOutlinedIcon from '../icons-central/mail-outline'; 25 25 import MuteOutlinedIcon from '../icons-central/mute-outline'; 26 26 import ImageViewerModalLazy from '../images/image-viewer-modal-lazy'; 27 + import LabelsOnMe from '../moderation/labels-on-me'; 28 + import ModerationAlerts from '../moderation/moderation-alerts'; 27 29 28 30 import EditProfileDialogLazy from './edit-profile-dialog-lazy'; 29 31 import HandleOverflowMenu from './handle-overflow-menu'; ··· 169 171 })()} 170 172 </p> 171 173 </div> 174 + 175 + {isSelf ? ( 176 + <LabelsOnMe type="account" labels={data().labels} large /> 177 + ) : ( 178 + <ModerationAlerts ui={getModerationUI(moderation(), ContextProfileView)} large /> 179 + )} 172 180 173 181 <div class="whitespace-pre-wrap break-words text-sm empty:hidden">{data().description?.trim()}</div> 174 182
+1 -1
src/components/threads/highlighted-post.tsx
··· 135 135 </div> 136 136 </div> 137 137 138 - {isOurPost && <LabelsOnMe labels={post().labels} large class="mb-1" />} 138 + {isOurPost && <LabelsOnMe type="content" labels={post().labels} large class="mb-1" />} 139 139 140 140 <ModerationAlerts ui={ui()} large class="mb-1" /> 141 141
+1 -1
src/components/timeline/post-feed-item.tsx
··· 117 117 <PostMeta post={post} href={href} authorHref={authorHref} gutterBottom /> 118 118 <PostReplyContext item={item} /> 119 119 120 - {isOurPost && <LabelsOnMe labels={post.labels} class="-mx-1 my-1" />} 120 + {isOurPost && <LabelsOnMe type="content" labels={post.labels} class="-mx-1 my-1" />} 121 121 <ModerationAlerts ui={ui()} class="-mx-1 my-1" /> 122 122 123 123 <ContentHider