feat: init public notes

This commit is contained in:
Julien Calixte
2026-02-10 20:05:21 +01:00
parent eb88bfa8e4
commit 63903d48eb
4 changed files with 62 additions and 2 deletions

View File

@@ -0,0 +1,13 @@
export const getAka = async (dids: Set<string>) => {
const correspondance = await Promise.all(
[...dids].map(async (did) => {
const response = await fetch(`https://plc.directory/${did}`)
const {
alsoKnownAs: [aka],
} = await response.json()
return [did, aka] as [string, string]
}),
)
return new Map(correspondance)
}

View File

@@ -1,7 +1,19 @@
import { DataType } from '@/data/DataType.enum' import { DataType } from "@/data/DataType.enum"
import { Model } from '@/data/models/Model' import { Model } from "@/data/models/Model"
export interface Note extends Model<DataType.Note> { export interface Note extends Model<DataType.Note> {
content: string content: string
editedSha?: string editedSha?: string
} }
export interface PublicNoteListItem {
did: string
rkey: string
title: string
publishedAt: string
createdAt: string
}
export interface PublicNote extends PublicNoteListItem {
content: string
}

View File

@@ -14,6 +14,11 @@ const routes: Array<RouteRecordRaw> = [
props: true, props: true,
component: () => import("@/views/FluxNoteView.vue"), component: () => import("@/views/FluxNoteView.vue"),
}, },
{
path: "/notes",
name: "PublicNoteView",
component: () => import("@/views/PublicNoteView.vue"),
},
{ {
path: "/:user/:repo/share/:note", path: "/:user/:repo/share/:note",
name: "ShareNotes", name: "ShareNotes",

View File

@@ -0,0 +1,30 @@
<script setup lang="ts">
import { PublicNoteListItem } from "@/modules/note/models/Note"
import { useAsyncState } from "@vueuse/core"
const { state, isLoading } = useAsyncState<{
notes: PublicNoteListItem[]
}>(
async () => {
const response = await fetch("https://api.litenote.li212.fr/notes")
return response.json()
},
{ notes: [] },
)
</script>
<template>
<div v-if="isLoading"></div>
<div class="public-note-view" v-else>
<ul>
<li v-for="note in state.notes">
{{ note.did }}/{{ note.rkey }}: {{ note.title }}
</li>
</ul>
</div>
</template>
<style scoped lang="scss">
.public-note-view {
}
</style>