summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/page
diff options
context:
space:
mode:
authorMarie <marie@kaifa.ch>2024-02-03 20:19:44 +0100
committerMarie <marie@kaifa.ch>2024-02-03 20:19:44 +0100
commit11628e4b6a439a8a5f0ed1e1e8997f4edc894ace (patch)
tree865f01b5a5fbaf98bc838451cb7bd39e44bceb66 /packages/frontend/src/components/page
parentmerge: Fix sfm-js linkage (!399) (diff)
parent2024.2.0-beta.9 (diff)
downloadsharkey-11628e4b6a439a8a5f0ed1e1e8997f4edc894ace.tar.gz
sharkey-11628e4b6a439a8a5f0ed1e1e8997f4edc894ace.tar.bz2
sharkey-11628e4b6a439a8a5f0ed1e1e8997f4edc894ace.zip
merge: upstream
Diffstat (limited to 'packages/frontend/src/components/page')
-rw-r--r--packages/frontend/src/components/page/block.type.ts34
-rw-r--r--packages/frontend/src/components/page/page.block.vue3
-rw-r--r--packages/frontend/src/components/page/page.image.vue12
-rw-r--r--packages/frontend/src/components/page/page.note.vue4
-rw-r--r--packages/frontend/src/components/page/page.section.vue3
-rw-r--r--packages/frontend/src/components/page/page.text.vue5
6 files changed, 14 insertions, 47 deletions
diff --git a/packages/frontend/src/components/page/block.type.ts b/packages/frontend/src/components/page/block.type.ts
deleted file mode 100644
index cdd39339e6..0000000000
--- a/packages/frontend/src/components/page/block.type.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * SPDX-FileCopyrightText: syuilo and other misskey contributors
- * SPDX-License-Identifier: AGPL-3.0-only
- */
-
-export type BlockBase = {
- id: string;
- type: string;
-};
-
-export type TextBlock = BlockBase & {
- type: 'text';
- text: string;
-};
-
-export type SectionBlock = BlockBase & {
- type: 'section';
- title: string;
- children: Block[];
-};
-
-export type ImageBlock = BlockBase & {
- type: 'image';
- fileId: string | null;
-};
-
-export type NoteBlock = BlockBase & {
- type: 'note';
- detailed: boolean;
- note: string | null;
-};
-
-export type Block =
- TextBlock | SectionBlock | ImageBlock | NoteBlock;
diff --git a/packages/frontend/src/components/page/page.block.vue b/packages/frontend/src/components/page/page.block.vue
index 7dbbaa03b4..c53ca6519d 100644
--- a/packages/frontend/src/components/page/page.block.vue
+++ b/packages/frontend/src/components/page/page.block.vue
@@ -14,7 +14,6 @@ import XText from './page.text.vue';
import XSection from './page.section.vue';
import XImage from './page.image.vue';
import XNote from './page.note.vue';
-import { Block } from './block.type.js';
function getComponent(type: string) {
switch (type) {
@@ -27,7 +26,7 @@ function getComponent(type: string) {
}
defineProps<{
- block: Block,
+ block: Misskey.entities.PageBlock,
h: number,
page: Misskey.entities.Page,
}>();
diff --git a/packages/frontend/src/components/page/page.image.vue b/packages/frontend/src/components/page/page.image.vue
index 29aebf63e5..af37c7b1b3 100644
--- a/packages/frontend/src/components/page/page.image.vue
+++ b/packages/frontend/src/components/page/page.image.vue
@@ -14,15 +14,19 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { ref } from 'vue';
+import { onMounted, ref } from 'vue';
import * as Misskey from 'misskey-js';
-import { ImageBlock } from './block.type.js';
import MediaImage from '@/components/MkMediaImage.vue';
const props = defineProps<{
- block: ImageBlock,
+ block: Misskey.entities.PageBlock,
page: Misskey.entities.Page,
}>();
-const image = ref<Misskey.entities.DriveFile>(props.page.attachedFiles.find(x => x.id === props.block.fileId));
+const image = ref<Misskey.entities.DriveFile | null>(null);
+
+onMounted(() => {
+ image.value = props.page.attachedFiles.find(x => x.id === props.block.fileId) ?? null;
+});
+
</script>
diff --git a/packages/frontend/src/components/page/page.note.vue b/packages/frontend/src/components/page/page.note.vue
index 83fdf24deb..5093ee9b79 100644
--- a/packages/frontend/src/components/page/page.note.vue
+++ b/packages/frontend/src/components/page/page.note.vue
@@ -13,19 +13,19 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import * as Misskey from 'misskey-js';
-import { NoteBlock } from './block.type.js';
import MkNote from '@/components/MkNote.vue';
import MkNoteDetailed from '@/components/MkNoteDetailed.vue';
import { misskeyApi } from '@/scripts/misskey-api.js';
const props = defineProps<{
- block: NoteBlock,
+ block: Misskey.entities.PageBlock,
page: Misskey.entities.Page,
}>();
const note = ref<Misskey.entities.Note | null>(null);
onMounted(() => {
+ if (props.block.note == null) return;
misskeyApi('notes/show', { noteId: props.block.note })
.then(result => {
note.value = result;
diff --git a/packages/frontend/src/components/page/page.section.vue b/packages/frontend/src/components/page/page.section.vue
index e4e5a43b59..63c155ada6 100644
--- a/packages/frontend/src/components/page/page.section.vue
+++ b/packages/frontend/src/components/page/page.section.vue
@@ -25,12 +25,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup>
import { defineAsyncComponent } from 'vue';
import * as Misskey from 'misskey-js';
-import { SectionBlock } from './block.type.js';
const XBlock = defineAsyncComponent(() => import('./page.block.vue'));
defineProps<{
- block: SectionBlock,
+ block: Misskey.entities.PageBlock,
h: number,
page: Misskey.entities.Page,
}>();
diff --git a/packages/frontend/src/components/page/page.text.vue b/packages/frontend/src/components/page/page.text.vue
index 2cb49d9a8f..b66f0a23ec 100644
--- a/packages/frontend/src/components/page/page.text.vue
+++ b/packages/frontend/src/components/page/page.text.vue
@@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div class="_gaps">
- <Mfm :text="block.text" :isNote="false"/>
+ <Mfm :text="block.text ?? ''" :isNote="false"/>
<MkUrlPreview v-for="url in urls" :key="url" :url="url"/>
</div>
</template>
@@ -14,13 +14,12 @@ SPDX-License-Identifier: AGPL-3.0-only
import { defineAsyncComponent } from 'vue';
import * as mfm from '@transfem-org/sfm-js';
import * as Misskey from 'misskey-js';
-import { TextBlock } from './block.type.js';
import { extractUrlFromMfm } from '@/scripts/extract-url-from-mfm.js';
const MkUrlPreview = defineAsyncComponent(() => import('@/components/MkUrlPreview.vue'));
const props = defineProps<{
- block: TextBlock,
+ block: Misskey.entities.PageBlock,
page: Misskey.entities.Page,
}>();