<script setup lang="ts">
import type { mastodon } from 'masto'
import { formatTimeAgo } from '@vueuse/core'

const { status } = defineProps<{
  status: mastodon.v1.Status
}>()

const paginator = useMastoClient().v1.statuses.listHistory(status.id)

const showHistory = (edit: mastodon.v1.StatusEdit) => {
  openEditHistoryDialog(edit)
}
const timeAgoOptions = useTimeAgoOptions()

// TODO: rework, this is only reversing the first page of edits
const reverseHistory = (items: mastodon.v1.StatusEdit[]) =>
  [...items].reverse()
</script>

<template>
  <CommonPaginator :paginator="paginator" key-prop="createdAt" :preprocess="reverseHistory" :buffer="0">
    <template #default="{ items, item, index }">
      <CommonDropdownItem
        px="0.5"
        @click="showHistory(item)"
      >
        {{ getDisplayName(item.account) }}

        <template v-if="index === items.length - 1">
          <i18n-t keypath="status_history.created">
            {{ formatTimeAgo(new Date(item.createdAt), timeAgoOptions) }}
          </i18n-t>
        </template>
        <i18n-t v-else keypath="status_history.edited">
          {{ formatTimeAgo(new Date(item.createdAt), timeAgoOptions) }}
        </i18n-t>
      </CommonDropdownItem>
    </template>
    <template #loading>
      <StatusEditHistorySkeleton />
      <StatusEditHistorySkeleton op50 />
      <StatusEditHistorySkeleton op25 />
    </template>
    <template #done>
      <span />
    </template>
  </CommonPaginator>
</template>
