mirror of
https://github.com/haiwen/seahub.git
synced 2025-06-29 00:17:18 +00:00
188 lines
4.9 KiB
JavaScript
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;
|