feat(pages): create authors page
this page will load a list of all authors on the site (users with >=1 story)
This commit is contained in:
parent
c67f1bcfb1
commit
bed696b8ae
53
pages/authors.vue
Normal file
53
pages/authors.vue
Normal file
@ -0,0 +1,53 @@
|
||||
<script lang="ts" setup>
|
||||
import icon from "~/components/icon.vue";
|
||||
import { bp, subscriptions } from "~/lib/client/listActions";
|
||||
import { IUser } from "~/models/user";
|
||||
|
||||
const { data: authors } = (await useApiFetch<any[]>("/authors")) as {
|
||||
data: Ref<any[]>;
|
||||
};
|
||||
|
||||
const { data: rd }: { data: any } = useAuth();
|
||||
const data = rd as { user: IUser };
|
||||
// console.log("d_u", data?.user?.subscriptions)
|
||||
const hider = subscriptions;
|
||||
if (authors.value == null) authors.value = [];
|
||||
</script>
|
||||
<template>
|
||||
<a-list v-model:data-source="authors" :grid="bp">
|
||||
<template #renderItem="{ item }">
|
||||
<a-list-item>
|
||||
<a-row :gutter="[5, 5]">
|
||||
<a-col>
|
||||
<nuxt-link :to="`/user/${item._id}`">
|
||||
{{ item.username }}
|
||||
</nuxt-link>
|
||||
</a-col>
|
||||
<!-- subscribe... -->
|
||||
<a-col>
|
||||
<span>({{ item.numStories }})</span>
|
||||
</a-col>
|
||||
<a-col v-if="data?.user && data?.user._id" style="margin-left: auto">
|
||||
<a
|
||||
v-if="!data?.user.subscriptions.authors.includes(item._id)"
|
||||
@click="(e) => hider(authors, item._id, 'subscribe', 'authors')"
|
||||
>
|
||||
<icon :istyle="'regular'" name="paper-plane" :size="12" />
|
||||
</a>
|
||||
<a
|
||||
v-else
|
||||
@click="(e) => hider(authors, item._id, 'unsubscribe', 'authors')"
|
||||
>
|
||||
<icon :istyle="'regular'" name="x" :size="12" />
|
||||
</a>
|
||||
</a-col>
|
||||
<a-col v-if="data?.user._id">
|
||||
<a @click="(e) => hider(authors, item._id, 'hide', 'authors')">
|
||||
<icon :istyle="'regular'" name="eye-slash" :size="12" />
|
||||
</a>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-list-item>
|
||||
</template>
|
||||
</a-list>
|
||||
</template>
|
Loading…
Reference in New Issue
Block a user