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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user