Skip to content

Commit 8f19abe

Browse files
committed
fix: ssr likes
1 parent e5d1638 commit 8f19abe

2 files changed

Lines changed: 14 additions & 26 deletions

File tree

app/composables/atproto/useProfileLikes.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,7 @@ export type LikesResult = {
77
}
88

99
export function useProfileLikes(handle: MaybeRefOrGetter<string>) {
10-
const cachedFetch = useCachedFetch()
11-
return useLazyAsyncData(`profile:${toValue(handle)}:likes`, async (_nuxtApp, { signal }) => {
12-
const { data: likes, isStale } = await cachedFetch<LikesResult>(
13-
`/api/social/profile/${toValue(handle)}/likes`,
14-
{ signal },
15-
)
10+
const asyncData = useLazyFetch<LikesResult>(() => `/api/social/profile/${toValue(handle)}/likes`)
1611

17-
return { likes, isStale }
18-
})
12+
return asyncData
1913
}

app/pages/profile/[handle]/index.vue

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async function updateProfile() {
6868
}
6969
}
7070
71-
const { data: likesData, status } = useProfileLikes(handle)
71+
const { data: likes, status } = useProfileLikes(handle)
7272
7373
useSeoMeta({
7474
title: () => $t('profile.seo_title', { handle: handle.value }),
@@ -122,19 +122,16 @@ defineOgImageComponent('Default', {
122122
</label>
123123
<div class="flex gap-4 items-center font-mono text-sm">
124124
<h2>@{{ handle }}</h2>
125-
<button
126-
@click="isEditing = false"
127-
class="link-subtle font-mono text-sm inline-flex items-center gap-2 px-2 py-1.5 hover:bg-bg-subtle focus-visible:outline-accent/70 rounded"
128-
>
125+
<ButtonBase @click="isEditing = false">
129126
{{ $t('common.cancel') }}
130-
</button>
131-
<button
127+
</ButtonBase>
128+
<ButtonBase
132129
@click="updateProfile"
130+
variant="primary"
133131
:disabled="isUpdateProfileActionPending"
134-
class="link-subtle font-mono text-sm inline-flex items-center gap-2 px-2 py-1.5 hover:bg-bg-subtle focus-visible:outline-accent/70 rounded"
135132
>
136133
{{ $t('common.save') }}
137-
</button>
134+
</ButtonBase>
138135
</div>
139136
</div>
140137

@@ -149,13 +146,13 @@ defineOgImageComponent('Default', {
149146
<LinkBase v-if="profile.website" :to="profile.website" classicon="i-lucide:link">
150147
{{ profile.website }}
151148
</LinkBase>
152-
<button
149+
<ButtonBase
153150
v-if="user?.handle === handle"
154151
@click="isEditing = true"
155-
class="hidden sm:inline-flex link-subtle font-mono text-sm items-center gap-2 px-2 py-1.5 hover:bg-bg-subtle focus-visible:outline-accent/70 rounded"
152+
class="hidden sm:inline-flex"
156153
>
157154
{{ $t('common.edit') }}
158-
</button>
155+
</ButtonBase>
159156
</div>
160157
</div>
161158
</header>
@@ -167,19 +164,16 @@ defineOgImageComponent('Default', {
167164
dir="ltr"
168165
>
169166
{{ $t('profile.likes') }}
170-
<span v-if="likesData">({{ likesData.likes?.records?.length ?? 0 }})</span>
167+
<span v-if="likes">({{ likes.records?.length ?? 0 }})</span>
171168
</h2>
172169
<div v-if="status === 'pending'" class="grid grid-cols-1 lg:grid-cols-2 gap-4">
173170
<SkeletonBlock v-for="i in 4" :key="i" class="h-16 rounded-lg" />
174171
</div>
175172
<div v-else-if="status === 'error'">
176173
<p>{{ $t('common.error') }}</p>
177174
</div>
178-
<div v-else-if="likesData?.likes?.records" class="grid grid-cols-1 lg:grid-cols-2 gap-4">
179-
<PackageLikeCard
180-
v-for="like in likesData.likes.records"
181-
:packageUrl="like.value.subjectRef"
182-
/>
175+
<div v-else-if="likes?.records" class="grid grid-cols-1 lg:grid-cols-2 gap-4">
176+
<PackageLikeCard v-for="like in likes.records" :packageUrl="like.value.subjectRef" />
183177
</div>
184178
</section>
185179
</main>

0 commit comments

Comments
 (0)