1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-06-29 00:17:18 +00:00
seahub/frontend/src/pages/markdown-editor/editor-api.js
杨国璇 ae9e109c46
fix: reg (#7620)
Co-authored-by: 杨国璇 <ygx@Hello-word.local>
2025-03-17 12:50:50 +08:00

188 lines
4.9 KiB
JavaScript

import { seafileAPI } from '../../utils/seafile-api';
import { Utils } from '../../utils/utils';
const { repoID, repoName, filePath, fileName } = window.app.pageOptions;
const { serviceUrl } = window.app.config;
const userInfo = window.app.userInfo;
const userName = userInfo.username;
let dirPath = Utils.getDirName(filePath);
function getImageFileNameWithTimestamp() {
var d = Date.now();
return 'image-' + d.toString() + '.png';
}
class EditorApi {
constructor() {
this.repoID = repoID;
this.filePath = filePath;
this.serviceUrl = serviceUrl;
this.name = userInfo.name;
this.contact_email = userInfo.contact_email;
this.fileName = fileName;
this.userName = userName;
}
saveContent(content) {
return (
seafileAPI.getUpdateLink(repoID, dirPath).then((res) => {
const uploadLink = res.data;
return seafileAPI.updateFile(uploadLink, filePath, fileName, content);
})
);
}
unstarItem() {
return (
seafileAPI.unstarItem(this.repoID, this.filePath)
);
}
starItem() {
return (
seafileAPI.starItem(this.repoID, this.filePath)
);
}
getParentDictionaryUrl() {
let parentPath = this.filePath.substring(0, this.filePath.lastIndexOf('/'));
let libName = encodeURIComponent(repoName);
let path = Utils.encodePath(parentPath);
return this.serviceUrl + '/library/' + this.repoID + '/' + libName + path;
}
_getImageURL(fileName) {
const url = this.serviceUrl + '/lib/' + repoID + '/file/images/auto-upload/' + fileName + '?raw=1';
return url;
}
uploadLocalImage = (imageFile) => {
return (
seafileAPI.getFileServerUploadLink(repoID, '/').then((res) => {
const uploadLink = res.data + '?ret-json=1';
const name = getImageFileNameWithTimestamp();
const newFile = new File([imageFile], name, { type: imageFile.type });
const formData = new FormData();
formData.append('parent_dir', '/');
formData.append('relative_path', 'images/auto-upload');
formData.append('file', newFile);
return seafileAPI.uploadImage(uploadLink, formData);
}).then ((res) => {
return this._getImageURL(res.data[0].name);
})
);
};
getFileURL(fileNode) {
var url;
if (fileNode.type === 'file') {
if (fileNode.isImage()) {
url = serviceUrl + '/lib/' + repoID + '/file' + Utils.encodePath(fileNode.path()) + '?raw=1';
} else {
url = serviceUrl + '/lib/' + repoID + '/file' + Utils.encodePath(fileNode.path());
}
} else {
url = serviceUrl + '/library/' + repoID + '/' + encodeURIComponent(repoName) + Utils.encodePath(fileNode.path());
}
return url;
}
isInternalFileLink(url) {
var re = new RegExp(this.serviceUrl + '/lib/[0-9a-f-]{36}/file.*');
return re.test(url);
}
isInternalDirLink(url) {
// eslint-disable-next-line
var re = new RegExp(serviceUrl + '/library/' + '[0-9a-f-]{36}.*');
return re.test(url);
}
getFiles() {
const rootPath = '/';
return seafileAPI.listDir(repoID, rootPath, { recursive: true }).then((response) => {
var files = response.data.dirent_list.map((item) => {
return {
name: item.name,
type: item.type === 'dir' ? 'dir' : 'file',
parent_path: item.parent_dir
};
});
return files;
});
}
getFileHistory() {
return seafileAPI.getFileHistory(repoID, filePath);
}
getFileInfo() {
return seafileAPI.getFileInfo(repoID, filePath);
}
getRepoInfo(newRepoID) {
return seafileAPI.getRepoInfo(newRepoID);
}
getInternalLink() {
return seafileAPI.getInternalLink(repoID, filePath);
}
createShareLink(repoID, filePath, userPassword, userValidDays, permissions) {
return seafileAPI.createShareLink(repoID, filePath, userPassword, userValidDays, permissions);
}
deleteShareLink(token) {
return seafileAPI.deleteShareLink(token);
}
getFileContent(url) {
return seafileAPI.getFileContent(url);
}
listFileHistoryRecords(page, perPage) {
return seafileAPI.listFileHistoryRecords(repoID, filePath, page, perPage);
}
getFileHistoryVersion(commitID, filePath) {
return seafileAPI.getFileRevision(repoID, commitID, filePath);
}
getUserAvatar(size) {
return seafileAPI.getUserAvatar(userName, size);
}
fileMetaData() {
return seafileAPI.fileMetaData(repoID, filePath);
}
listFileTags = () => {
return seafileAPI.listFileTags(repoID, filePath);
};
listRepoTags = () => {
return seafileAPI.listRepoTags(repoID);
};
markdownLint(slateValue) {
return seafileAPI.markdownLint(slateValue);
}
listFileParticipant() {
return seafileAPI.listFileParticipants(repoID, filePath);
}
addFileParticipants(emails) {
return seafileAPI.addFileParticipants(repoID, filePath, emails);
}
listRepoRelatedUsers() {
return seafileAPI.listRepoRelatedUsers(repoID);
}
}
const editorApi = new EditorApi();
export default editorApi;