mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-02-06 23:21:16 +08:00
@@ -2,6 +2,7 @@ import Vditor from 'vditor'
|
||||
import { getToken, authState } from './auth'
|
||||
import { searchUsers, fetchFollowings, fetchAdmins } from './user'
|
||||
import { tiebaEmoji } from './tiebaEmoji'
|
||||
import vditorPostCitation from './vditorPostCitation.js'
|
||||
|
||||
export function getEditorTheme() {
|
||||
return document.documentElement.dataset.theme === 'dark' ? 'dark' : 'classic'
|
||||
@@ -79,6 +80,7 @@ export function createVditor(editorId, options = {}) {
|
||||
}))
|
||||
},
|
||||
},
|
||||
vditorPostCitation(API_BASE_URL),
|
||||
],
|
||||
},
|
||||
cdn: 'https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/vditor',
|
||||
|
||||
52
frontend_nuxt/utils/vditorPostCitation.js
Normal file
52
frontend_nuxt/utils/vditorPostCitation.js
Normal file
@@ -0,0 +1,52 @@
|
||||
import { authState, getToken } from '~/utils/auth'
|
||||
|
||||
async function getPost(apiBaseUrl, id) {
|
||||
return await fetch(`${apiBaseUrl}/api/posts/${id}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${getToken()}`,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
async function searchPost(apiBaseUrl, keyword) {
|
||||
return await fetch(`${apiBaseUrl}/api/search/global?keyword=${keyword}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Bearer ${getToken()}`,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export default (apiBaseUrl) => {
|
||||
return {
|
||||
key: '#',
|
||||
hint: async (keyword) => {
|
||||
if (!keyword.trim()) return []
|
||||
try {
|
||||
const response = await searchPost(apiBaseUrl, keyword)
|
||||
if (response.ok) {
|
||||
const body = await response.json()
|
||||
let value = ''
|
||||
return (
|
||||
body
|
||||
?.filter((item) => item.type === 'comment' || item.type === 'post')
|
||||
.map((item) => ({
|
||||
value:
|
||||
item.type === 'comment'
|
||||
? `[${item.text}](posts/${item.postId}#comment-${item.id})`
|
||||
: `[${item.text}](posts/${item.id})`,
|
||||
html: `<div>${item.text}</div>`,
|
||||
})) ?? []
|
||||
)
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
} catch {
|
||||
return []
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user