slightly better status, internationalization
This commit is contained in:
		
							parent
							
								
									7c5acad535
								
							
						
					
					
						commit
						a06dd22da4
					
				
					 22 changed files with 2416 additions and 1009 deletions
				
			
		| 
						 | 
				
			
			@ -1,7 +1,36 @@
 | 
			
		|||
<script setup lang="ts">
 | 
			
		||||
import { useI18n } from "vue-i18n";
 | 
			
		||||
import type Activity from "@/lib/api/entities/activity";
 | 
			
		||||
import { IconWorld, IconHome, IconLock, IconMail } from "@tabler/icons-vue";
 | 
			
		||||
 | 
			
		||||
const { t } = useI18n();
 | 
			
		||||
defineProps<{ status: Activity }>();
 | 
			
		||||
 | 
			
		||||
const statusScopeKey = ({ visibility }: Activity) => {
 | 
			
		||||
	switch (visibility) {
 | 
			
		||||
		case "direct":
 | 
			
		||||
			return "status.visibility.directMessage";
 | 
			
		||||
		case "private":
 | 
			
		||||
			return "status.visibility.followersOnly";
 | 
			
		||||
		case "unlisted":
 | 
			
		||||
			return "status.visibility.unlisted";
 | 
			
		||||
		case "public":
 | 
			
		||||
			return "status.visibility.public";
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const statusScopeIcon = ({ visibility }: Activity) => {
 | 
			
		||||
	switch (visibility) {
 | 
			
		||||
		case "direct":
 | 
			
		||||
			return IconMail
 | 
			
		||||
		case "private":
 | 
			
		||||
			return IconLock
 | 
			
		||||
		case "unlisted":
 | 
			
		||||
			return IconHome
 | 
			
		||||
		case "public":
 | 
			
		||||
			return IconWorld
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<template>
 | 
			
		||||
| 
						 | 
				
			
			@ -12,8 +41,8 @@ defineProps<{ status: Activity }>();
 | 
			
		|||
					class="rounded-full m-2"
 | 
			
		||||
					:src="status.account.avatar"
 | 
			
		||||
					width="64"
 | 
			
		||||
					alt="Avatar for {{ status.account.acct }}"
 | 
			
		||||
					title="Avatar for {{ status.account.acct }}"
 | 
			
		||||
					:alt="t('status.avatar', { name: status.account.acct })"
 | 
			
		||||
					:title="t('status.avatar', { name: status.account.acct })"
 | 
			
		||||
				/>
 | 
			
		||||
			</RouterLink>
 | 
			
		||||
			<div class="flex flex-col my-1">
 | 
			
		||||
| 
						 | 
				
			
			@ -29,11 +58,10 @@ defineProps<{ status: Activity }>();
 | 
			
		|||
		</div>
 | 
			
		||||
		<div class="my-1 flex flex-row">
 | 
			
		||||
			<span>
 | 
			
		||||
				<span title="{t(statusScopeKey(status))}" aria-hidden="true">
 | 
			
		||||
					<!-- <StatusScopeIcon status="{status}" /> -->
 | 
			
		||||
					Public
 | 
			
		||||
				<span :title="t(statusScopeKey(status))" aria-hidden="true">
 | 
			
		||||
					<component :is="statusScopeIcon(status)" />
 | 
			
		||||
				</span>
 | 
			
		||||
				<span class="sr-only">{t(statusScopeKey(status))}</span>
 | 
			
		||||
				<span class="sr-only">{{ t(statusScopeKey(status)) }}</span>
 | 
			
		||||
			</span>
 | 
			
		||||
			<RouterLink :to="`/@${status.account.acct}/statuses/${status.id}`">
 | 
			
		||||
				{humanizeDuration(time)}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue