diff --git a/.gitpod.yml b/.gitpod.yml index 9632d94da..c70293618 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -32,6 +32,8 @@ tasks: poetry run python manage.py gitpod dev - name: Frontend + env: + VUE_EDITOR: code before: cd front init: | yarn install @@ -42,6 +44,7 @@ tasks: env: COMPOSE_FILE: /workspace/funkwhale/.gitpod/docker-compose.yml ENV_FILE: /workspace/funkwhale/.gitpod/.env + VUE_EDITOR: code command: | clear echo "" diff --git a/front/package.json b/front/package.json index 23ea89142..06dab1a23 100644 --- a/front/package.json +++ b/front/package.json @@ -18,31 +18,35 @@ "postinstall": "yarn run fix-fomantic-css" }, "dependencies": { + "@tiptap/starter-kit": "^2.0.0-beta.191", + "@tiptap/vue-3": "^2.0.0-beta.96", "@vue/runtime-core": "3.2.37", "@vueuse/core": "8.9.4", "@vueuse/integrations": "8.9.4", "axios": "0.27.2", - "axios-auth-refresh": "3.3.1", + "axios-auth-refresh": "3.3.3", "diff": "5.1.0", - "dompurify": "2.3.8", + "dompurify": "2.3.10", "focus-trap": "6.9.4", "fomantic-ui-css": "2.8.8", "howler": "2.2.3", "js-logger": "1.6.1", "lodash-es": "4.17.21", + "mavon-editor": "^3.0.0-beta", "moment": "2.29.4", "qs": "6.11.0", "register-service-worker": "1.7.2", "sanitize-html": "2.7.1", - "sass": "1.53.0", + "sass": "1.54.0", "showdown": "2.1.0", "text-clipper": "2.2.0", + "tiptap-markdown": "^0.5.0", "transliteration": "2.3.5", "vue": "3.2.37", "vue-gettext": "2.1.12", "vue-plyr": "7.0.0", "vue-router": "4.1.2", - "vue-tsc": "0.38.9", + "vue-tsc": "0.39.0", "vue-upload-component": "3.1.2", "vue-virtual-scroller": "^2.0.0-alpha.1", "vue3-gettext": "2.3.0", @@ -66,7 +70,7 @@ "@typescript-eslint/eslint-plugin": "5.30.7", "@vitejs/plugin-vue": "3.0.1", "@vue/compiler-sfc": "3.2.37", - "@vue/eslint-config-standard": "7.0.0", + "@vue/eslint-config-standard": "8.0.0", "@vue/eslint-config-typescript": "11.0.0", "@vue/test-utils": "2.0.2", "@vue/tsconfig": "0.1.3", @@ -79,14 +83,15 @@ "eslint-plugin-n": "15.2.4", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.0.0", - "eslint-plugin-vue": "9.2.0", + "eslint-plugin-vue": "9.3.0", "jest-cli": "28.1.3", "moxios": "0.4.0", "sinon": "14.0.0", "ts-jest": "28.0.7", "typescript": "4.7.4", - "vite": "3.0.2", + "vite": "3.0.3", "vite-plugin-pwa": "0.12.3", + "vite-plugin-vue-inspector": "1.0.1", "vue-jest": "3.0.7", "workbox-core": "6.5.3", "workbox-precaching": "6.5.3", diff --git a/front/src/components/AboutPod.vue b/front/src/components/AboutPod.vue index 21e29f5aa..644d684a8 100644 --- a/front/src/components/AboutPod.vue +++ b/front/src/components/AboutPod.vue @@ -1,13 +1,11 @@ diff --git a/front/src/components/audio/track/Widget.vue b/front/src/components/audio/track/Widget.vue index 2835eaf08..0397debe3 100644 --- a/front/src/components/audio/track/Widget.vue +++ b/front/src/components/audio/track/Widget.vue @@ -46,7 +46,7 @@ const fetchData = async (url = props.url) => { count.value = response.data.count const newObjects = !props.isActivity - ? response.data.results.map((track: Track) => { track }) + ? response.data.results.map((track: Track) => ({ track })) : response.data.results objects.push(...newObjects) @@ -62,7 +62,7 @@ fetchData() const emit = defineEmits(['count']) watch(count, (to) => emit('count', to)) -if (props.websocketHandlers.includes('Listen')) { +watch(() => props.websocketHandlers.includes('Listen'), (to) => { useWebSocketHandler('Listen', (event) => { // TODO (wvffle): Add reactivity to recently listened / favorited / added (#1316, #1534) // count.value += 1 @@ -70,7 +70,7 @@ if (props.websocketHandlers.includes('Listen')) { // objects.unshift(event as Listening) // objects.pop() }) -} +}) diff --git a/front/src/components/auth/Plugin.vue b/front/src/components/auth/Plugin.vue index 5c1cc1354..6ce13d1d0 100644 --- a/front/src/components/auth/Plugin.vue +++ b/front/src/components/auth/Plugin.vue @@ -1,3 +1,57 @@ + + {{ plugin.label }} @@ -74,8 +128,8 @@ @@ -150,7 +204,6 @@ @@ -161,54 +214,3 @@ - - diff --git a/front/src/components/common/ContentForm.vue b/front/src/components/common/ContentForm.vue index f9fc3f673..10641054f 100644 --- a/front/src/components/common/ContentForm.vue +++ b/front/src/components/common/ContentForm.vue @@ -1,3 +1,82 @@ + + @@ -31,7 +110,7 @@ - + Nothing to preview. @@ -44,13 +123,10 @@ @@ -71,82 +147,3 @@ - - diff --git a/front/src/components/manage/moderation/InstancePolicyCard.vue b/front/src/components/manage/moderation/InstancePolicyCard.vue index 646c622dd..2c427b428 100644 --- a/front/src/components/manage/moderation/InstancePolicyCard.vue +++ b/front/src/components/manage/moderation/InstancePolicyCard.vue @@ -1,3 +1,17 @@ + + @@ -64,10 +78,10 @@ - + Reason - + - - diff --git a/front/src/components/manage/moderation/NoteForm.vue b/front/src/components/manage/moderation/NoteForm.vue index 4a2913ca2..4cc6639fa 100644 --- a/front/src/components/manage/moderation/NoteForm.vue +++ b/front/src/components/manage/moderation/NoteForm.vue @@ -1,3 +1,50 @@ + + Add note @@ -42,48 +89,3 @@ - - diff --git a/front/src/components/manage/moderation/NotesThread.vue b/front/src/components/manage/moderation/NotesThread.vue index 9af569a02..0b6ee7c94 100644 --- a/front/src/components/manage/moderation/NotesThread.vue +++ b/front/src/components/manage/moderation/NotesThread.vue @@ -2,7 +2,7 @@ import type { Note } from '~/types' import axios from 'axios' -import showdown from 'showdown' +import { useMarkdownRaw } from '~/composables/useMarkdown' import { ref } from 'vue' interface Props { @@ -11,8 +11,6 @@ interface Props { defineProps() -const markdown = new showdown.Converter() - const emit = defineEmits(['deleted']) const isLoading = ref(false) const remove = async (note: Note) => { @@ -51,7 +49,7 @@ const remove = async (note: Note) => { - + diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue index f2e1fdabf..cd6996a7e 100644 --- a/front/src/components/manage/moderation/ReportCard.vue +++ b/front/src/components/manage/moderation/ReportCard.vue @@ -1,3 +1,138 @@ + + @@ -48,7 +183,7 @@ @@ -163,11 +298,11 @@ - +
+
Nothing to preview. @@ -44,13 +123,10 @@ @@ -71,82 +147,3 @@ - - diff --git a/front/src/components/manage/moderation/InstancePolicyCard.vue b/front/src/components/manage/moderation/InstancePolicyCard.vue index 646c622dd..2c427b428 100644 --- a/front/src/components/manage/moderation/InstancePolicyCard.vue +++ b/front/src/components/manage/moderation/InstancePolicyCard.vue @@ -1,3 +1,17 @@ + + @@ -64,10 +78,10 @@ - + Reason - + - - diff --git a/front/src/components/manage/moderation/NoteForm.vue b/front/src/components/manage/moderation/NoteForm.vue index 4a2913ca2..4cc6639fa 100644 --- a/front/src/components/manage/moderation/NoteForm.vue +++ b/front/src/components/manage/moderation/NoteForm.vue @@ -1,3 +1,50 @@ + + Add note @@ -42,48 +89,3 @@ - - diff --git a/front/src/components/manage/moderation/NotesThread.vue b/front/src/components/manage/moderation/NotesThread.vue index 9af569a02..0b6ee7c94 100644 --- a/front/src/components/manage/moderation/NotesThread.vue +++ b/front/src/components/manage/moderation/NotesThread.vue @@ -2,7 +2,7 @@ import type { Note } from '~/types' import axios from 'axios' -import showdown from 'showdown' +import { useMarkdownRaw } from '~/composables/useMarkdown' import { ref } from 'vue' interface Props { @@ -11,8 +11,6 @@ interface Props { defineProps() -const markdown = new showdown.Converter() - const emit = defineEmits(['deleted']) const isLoading = ref(false) const remove = async (note: Note) => { @@ -51,7 +49,7 @@ const remove = async (note: Note) => { - + diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue index f2e1fdabf..cd6996a7e 100644 --- a/front/src/components/manage/moderation/ReportCard.vue +++ b/front/src/components/manage/moderation/ReportCard.vue @@ -1,3 +1,138 @@ + + @@ -48,7 +183,7 @@ @@ -163,11 +298,11 @@ - +
Reason