diff --git a/DysonNetwork.Sphere/Client/package.json b/DysonNetwork.Sphere/Client/package.json index 0d8e4be..4f38d7d 100644 --- a/DysonNetwork.Sphere/Client/package.json +++ b/DysonNetwork.Sphere/Client/package.json @@ -18,6 +18,9 @@ "@fingerprintjs/fingerprintjs": "^4.6.2", "@fontsource-variable/nunito": "^5.2.6", "@hcaptcha/vue3-hcaptcha": "^1.3.0", + "@milkdown/crepe": "^7.15.2", + "@milkdown/kit": "^7.15.2", + "@milkdown/vue": "^7.15.2", "@tailwindcss/typography": "^0.5.16", "@tailwindcss/vite": "^4.1.11", "@vueuse/core": "^13.5.0", diff --git a/DysonNetwork.Sphere/Client/src/components/AttachmentItem.vue b/DysonNetwork.Sphere/Client/src/components/AttachmentItem.vue index b0e6ced..cd70071 100644 --- a/DysonNetwork.Sphere/Client/src/components/AttachmentItem.vue +++ b/DysonNetwork.Sphere/Client/src/components/AttachmentItem.vue @@ -14,5 +14,5 @@ const props = defineProps<{ item: any }>() const itemType = computed(() => props.item.mime_type.split('/')[0] ?? 'unknown') -const remoteSource = computed(() => `/cgi/drive/files/${props.item.id}`) +const remoteSource = computed(() => `/cgi/drive/files/${props.item.id}?original=true`) diff --git a/DysonNetwork.Sphere/Client/src/components/PostEditor.vue b/DysonNetwork.Sphere/Client/src/components/PostEditor.vue new file mode 100644 index 0000000..d1da17d --- /dev/null +++ b/DysonNetwork.Sphere/Client/src/components/PostEditor.vue @@ -0,0 +1,54 @@ + + + diff --git a/DysonNetwork.Sphere/Client/src/components/PostEditorPro.vue b/DysonNetwork.Sphere/Client/src/components/PostEditorPro.vue new file mode 100644 index 0000000..070345b --- /dev/null +++ b/DysonNetwork.Sphere/Client/src/components/PostEditorPro.vue @@ -0,0 +1,19 @@ + + + diff --git a/DysonNetwork.Sphere/Client/src/components/PubSelect.vue b/DysonNetwork.Sphere/Client/src/components/PubSelect.vue new file mode 100644 index 0000000..30eed4b --- /dev/null +++ b/DysonNetwork.Sphere/Client/src/components/PubSelect.vue @@ -0,0 +1,97 @@ + + + diff --git a/DysonNetwork.Sphere/Client/src/root.vue b/DysonNetwork.Sphere/Client/src/root.vue index f838752..0520d7d 100644 --- a/DysonNetwork.Sphere/Client/src/root.vue +++ b/DysonNetwork.Sphere/Client/src/root.vue @@ -15,6 +15,8 @@ import { usePreferredDark } from '@vueuse/core' import { useUserStore } from './stores/user' import { onMounted } from 'vue' import { useServicesStore } from './stores/services' +import { MilkdownProvider } from '@milkdown/vue' +import { usePubStore } from './stores/pub' const themeOverrides = { common: { @@ -30,26 +32,30 @@ const isDark = usePreferredDark() const userStore = useUserStore() const servicesStore = useServicesStore() +const pubStore = usePubStore() onMounted(() => { userStore.initialize() userStore.fetchUser() servicesStore.fetchServices() + pubStore.fetchPublishers() }) diff --git a/DysonNetwork.Sphere/Client/src/stores/pub.ts b/DysonNetwork.Sphere/Client/src/stores/pub.ts new file mode 100644 index 0000000..62617af --- /dev/null +++ b/DysonNetwork.Sphere/Client/src/stores/pub.ts @@ -0,0 +1,13 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const usePubStore = defineStore('pub', () => { + const publishers = ref([]) + + async function fetchPublishers() { + const resp = await fetch('/api/publishers') + publishers.value = await resp.json() + } + + return { publishers, fetchPublishers } +}) diff --git a/DysonNetwork.Sphere/Client/src/views/index.vue b/DysonNetwork.Sphere/Client/src/views/index.vue index 8e57671..cea94b9 100644 --- a/DysonNetwork.Sphere/Client/src/views/index.vue +++ b/DysonNetwork.Sphere/Client/src/views/index.vue @@ -9,7 +9,7 @@ - +

Welcome to the Solar Network

The open social network. Friendly to everyone.

@@ -22,16 +22,27 @@

+ + + + + The flutter based web app Solian has been moved to + web.solian.app + + 网页版 Solian 已经被移动到 + web.solian.app +