mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Merge pull request #57594 from nextcloud/refactor/ocp-comments
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
refactor(core): migrate `OCP.Comments` away from jQuery
This commit is contained in:
commit
6a67456574
5 changed files with 33 additions and 23 deletions
|
|
@ -4,7 +4,7 @@
|
|||
*/
|
||||
|
||||
import { expect, it } from 'vitest'
|
||||
import * as Comments from '../../OCP/comments.js'
|
||||
import { plainToRich } from './comments.ts'
|
||||
|
||||
it.for([
|
||||
{ input: 'nextcloud.com', expected: 'nextcloud.com' },
|
||||
|
|
@ -28,6 +28,6 @@ it.for([
|
|||
{ input: 'FirebaseInstanceId.getInstance().deleteInstanceId()', expected: 'FirebaseInstanceId.getInstance().deleteInstanceId()' },
|
||||
{ input: 'I mean...it', expected: 'I mean...it' },
|
||||
])('OCP.Comments should parse URLs only', ({ input, expected }) => {
|
||||
const result = Comments.plainToRich(input)
|
||||
const result = plainToRich(input)
|
||||
expect(result).toEqual(expected)
|
||||
})
|
||||
|
|
@ -3,8 +3,6 @@
|
|||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
import $ from 'jquery'
|
||||
|
||||
/*
|
||||
* Detects links:
|
||||
* Either the http(s) protocol is given or two strings, basically limited to ascii with the last
|
||||
|
|
@ -19,23 +17,29 @@ import $ from 'jquery'
|
|||
const urlRegex = /(\s|^)(https?:\/\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig
|
||||
|
||||
/**
|
||||
* @param {any} content -
|
||||
* Converts plain text to rich text
|
||||
*
|
||||
* @param content - The plain text content
|
||||
*/
|
||||
export function plainToRich(content) {
|
||||
return this.formatLinksRich(content)
|
||||
export function plainToRich(content: string) {
|
||||
return formatLinksRich(content)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {any} content -
|
||||
* Converts rich text to plain text
|
||||
*
|
||||
* @param content - The rich text content
|
||||
*/
|
||||
export function richToPlain(content) {
|
||||
return this.formatLinksPlain(content)
|
||||
export function richToPlain(content: string) {
|
||||
return formatLinksPlain(content)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {any} content -
|
||||
* Format links in the given content to rich text links
|
||||
*
|
||||
* @param content - The content containing plain text URLs
|
||||
*/
|
||||
export function formatLinksRich(content) {
|
||||
export function formatLinksRich(content: string) {
|
||||
return content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {
|
||||
let linkText = url
|
||||
if (!protocol) {
|
||||
|
|
@ -49,13 +53,16 @@ export function formatLinksRich(content) {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param {any} content -
|
||||
* Format links in the given content to plain text links
|
||||
*
|
||||
* @param content - The content containing rich text URLs
|
||||
*/
|
||||
export function formatLinksPlain(content) {
|
||||
const $content = $('<div></div>').html(content)
|
||||
$content.find('a').each(function() {
|
||||
const $this = $(this)
|
||||
$this.html($this.attr('href'))
|
||||
export function formatLinksPlain(content: string) {
|
||||
const el = document.createElement('div')
|
||||
el.innerHTML = content
|
||||
el.querySelectorAll('a').forEach((anchor) => {
|
||||
anchor.replaceWith(document.createTextNode(anchor.getAttribute('href') || ''))
|
||||
})
|
||||
return $content.html()
|
||||
|
||||
return el.innerHTML
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ import { loadState } from '@nextcloud/initial-state'
|
|||
import Accessibility from './accessibility.js'
|
||||
import * as AppConfig from './appconfig.ts'
|
||||
import Collaboration from './collaboration.js'
|
||||
import * as Comments from './comments.js'
|
||||
import * as Comments from './comments.ts'
|
||||
import Loader from './loader.js'
|
||||
import Toast from './toast.js'
|
||||
import * as WhatsNew from './whatsnew.js'
|
||||
|
|
@ -17,6 +17,9 @@ export default {
|
|||
Accessibility,
|
||||
AppConfig,
|
||||
Collaboration,
|
||||
/**
|
||||
* @deprecated 33.0.0
|
||||
*/
|
||||
Comments,
|
||||
InitialState: {
|
||||
/**
|
||||
|
|
|
|||
4
dist/core-main.js
vendored
4
dist/core-main.js
vendored
File diff suppressed because one or more lines are too long
2
dist/core-main.js.map
vendored
2
dist/core-main.js.map
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue