From 21535662ce823f73f0141639fd52feb4223a691a Mon Sep 17 00:00:00 2001 From: Jonas Date: Tue, 23 Jan 2024 14:34:47 +0100 Subject: [PATCH] chore(LinkBubble): Remove code to customize link click handling We no longer allow custom link click handlers in Text. Instead, the reference widgets for link previews have to implement their own click handlers. Signed-off-by: Jonas --- src/components/Editor.provider.js | 9 ---- .../Editor/MarkdownContentEditor.vue | 10 +---- src/editor.js | 4 +- src/extensions/RichText.js | 2 - src/helpers/links.js | 43 ------------------- 5 files changed, 2 insertions(+), 66 deletions(-) diff --git a/src/components/Editor.provider.js b/src/components/Editor.provider.js index 47722b77df7..41984183666 100644 --- a/src/components/Editor.provider.js +++ b/src/components/Editor.provider.js @@ -31,7 +31,6 @@ export const IS_RICH_EDITOR = Symbol('editor:is-rich-editor') export const IS_RICH_WORKSPACE = Symbol('editor:is-rich-woskapace') export const SYNC_SERVICE = Symbol('sync:service') export const EDITOR_UPLOAD = Symbol('editor:upload') -export const HOOK_LINK_CLICK = Symbol('hook:link-click') export const HOOK_MENTION_SEARCH = Symbol('hook:mention-search') export const HOOK_MENTION_INSERT = Symbol('hook:mention-insert') @@ -117,11 +116,3 @@ export const useMentionHook = { }, }, } -export const useLinkClickHook = { - inject: { - $linkHookClick: { - from: HOOK_LINK_CLICK, - default: null, - }, - }, -} diff --git a/src/components/Editor/MarkdownContentEditor.vue b/src/components/Editor/MarkdownContentEditor.vue index 65933e7789c..cfeb7982248 100644 --- a/src/components/Editor/MarkdownContentEditor.vue +++ b/src/components/Editor/MarkdownContentEditor.vue @@ -41,7 +41,7 @@ import { Editor } from '@tiptap/core' /* eslint-disable import/no-named-as-default */ import History from '@tiptap/extension-history' import { getCurrentUser } from '@nextcloud/auth' -import { ATTACHMENT_RESOLVER, EDITOR, IS_RICH_EDITOR, useLinkClickHook } from '../Editor.provider.js' +import { ATTACHMENT_RESOLVER, EDITOR, IS_RICH_EDITOR } from '../Editor.provider.js' import { createMarkdownSerializer } from '../../extensions/Markdown.js' import AttachmentResolver from '../../services/AttachmentResolver.js' import markdownit from '../../markdownit/index.js' @@ -52,7 +52,6 @@ import ContentContainer from './ContentContainer.vue' export default { name: 'MarkdownContentEditor', components: { ContentContainer, ReadonlyBar, MenuBar, MainContainer, Wrapper }, - mixins: [useLinkClickHook], provide() { const val = {} @@ -136,13 +135,6 @@ export default { return [ RichText.configure({ component: this, - link: this?.$linkHookClick - ? { - onClick: (event, attrs) => { - return this?.$linkHookClick?.(event, attrs) - }, - } - : undefined, extensions: [ History, ], diff --git a/src/editor.js b/src/editor.js index d60f7c9ce7e..debfc24cceb 100644 --- a/src/editor.js +++ b/src/editor.js @@ -21,7 +21,7 @@ import Vue from 'vue' import store from './store/index.js' -import { EDITOR_UPLOAD, HOOK_MENTION_SEARCH, HOOK_MENTION_INSERT, HOOK_LINK_CLICK, ATTACHMENT_RESOLVER } from './components/Editor.provider.js' +import { EDITOR_UPLOAD, HOOK_MENTION_SEARCH, HOOK_MENTION_INSERT, ATTACHMENT_RESOLVER } from './components/Editor.provider.js' import { ACTION_ATTACHMENT_PROMPT } from './components/Editor/MediaHandler.provider.js' __webpack_nonce__ = btoa(OC.requestToken) // eslint-disable-line @@ -152,7 +152,6 @@ window.OCA.Text.createEditor = async function({ onLoaded = () => {}, onUpdate = ({ markdown }) => {}, onOutlineToggle = (visible) => {}, - onLinkClick = undefined, onFileInsert = undefined, onMentionSearch = undefined, onMentionInsert = undefined, @@ -171,7 +170,6 @@ window.OCA.Text.createEditor = async function({ const vm = new Vue({ provide() { return { - [HOOK_LINK_CLICK]: onLinkClick, [ACTION_ATTACHMENT_PROMPT]: onFileInsert, [EDITOR_UPLOAD]: !!sessionEditor, [HOOK_MENTION_SEARCH]: sessionEditor ? true : onMentionSearch, diff --git a/src/extensions/RichText.js b/src/extensions/RichText.js index d3bb572a6af..7ae707f3f1e 100644 --- a/src/extensions/RichText.js +++ b/src/extensions/RichText.js @@ -69,7 +69,6 @@ export default Extension.create({ addOptions() { return { editing: true, - link: {}, extensions: [], component: null, relativePath: null, @@ -115,7 +114,6 @@ export default Extension.create({ }), LinkPicker, Link.configure({ - ...this.options.link, openOnClick: true, validate: href => /^https?:\/\//.test(href), relativePath: this.options.relativePath, diff --git a/src/helpers/links.js b/src/helpers/links.js index 61093e4a6f7..7ec077b0089 100644 --- a/src/helpers/links.js +++ b/src/helpers/links.js @@ -22,9 +22,6 @@ import { generateUrl } from '@nextcloud/router' -import { logger } from '../helpers/logger.js' -import markdownit from './../markdownit/index.js' - const absolutePath = function(base, rel) { if (!rel) { return base @@ -93,47 +90,7 @@ const parseHref = function(dom) { return ref } -const openLink = function(event, target = '_self') { - const linkElement = event.target.closest('a') - const htmlHref = linkElement.href - const query = OC.parseQueryString(htmlHref) - const fragment = htmlHref.split('#').pop() - const fragmentQuery = OC.parseQueryString(fragment) - if (query?.dir && fragmentQuery?.relPath) { - const filename = fragmentQuery.relPath.split('/').pop() - const path = `${query.dir}/${filename}` - document.title = `${filename} - ${OC.theme.title}` - if (window.location.pathname.match(/apps\/files\/$/)) { - // The files app still lacks a popState handler - // to allow for using the back button - // OC.Util.History.pushState('', htmlHref) - } - OCA.Viewer.open({ path }) - return - } - if (htmlHref.match(/apps\/files\//) && query?.fileId) { - // open the direct file link - window.open(generateUrl(`/f/${query.fileId}`), '_self') - return - } - if (!markdownit.validateLink(htmlHref)) { - logger.error('Invalid link', { htmlHref }) - return false - } - if (fragment) { - const el = document.getElementById(fragment) - if (el) { - el.scrollIntoView() - window.location.hash = fragment - return - } - } - window.open(htmlHref, target) - return true -} - export { domHref, parseHref, - openLink, }