mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-09 19:01:42 +00:00
refactor(metadata): update code structure (#6765)
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import moment from 'moment';
|
||||
import { seafileAPI } from '../../../../utils/seafile-api';
|
||||
import { Utils } from '../../../../utils/utils';
|
||||
|
||||
const getImageFileNameWithTimestamp = () => {
|
||||
var d = Date.now();
|
||||
return 'image-' + d.toString() + '.png';
|
||||
};
|
||||
|
||||
class LongtextAPI {
|
||||
|
||||
constructor({ repoID, repoName, server }) {
|
||||
const { name, username, contactEmail } = window.app.pageOptions;
|
||||
this.repoID = repoID;
|
||||
this.repoName = repoName;
|
||||
this.server = server;
|
||||
this.name = name;
|
||||
this.contact_email = contactEmail;
|
||||
this.userName = username;
|
||||
this.relativePath = 'metadata';
|
||||
}
|
||||
|
||||
_getImageURL(parentPath, fileName) {
|
||||
return `${this.server}/lib/${this.repoID}/file/${parentPath}/${fileName}?raw=1`;
|
||||
}
|
||||
|
||||
uploadLocalImage = (imageFile) => {
|
||||
const month = moment().format('YYYY-MM');
|
||||
const parentPath = `images/${this.relativePath}/${month}`;
|
||||
return (
|
||||
seafileAPI.getFileServerUploadLink(this.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', parentPath);
|
||||
formData.append('file', newFile);
|
||||
return seafileAPI.uploadImage(uploadLink, formData);
|
||||
}).then ((res) => {
|
||||
return this._getImageURL(parentPath, res.data[0].name);
|
||||
})
|
||||
);
|
||||
};
|
||||
|
||||
getFileURL(fileNode) {
|
||||
if (fileNode.type !== 'file') {
|
||||
return this.server + '/library/' + this.repoID + '/' + encodeURIComponent(this.repoName) + Utils.encodePath(fileNode.path());
|
||||
}
|
||||
if (fileNode.isImage()) {
|
||||
return this.server + '/lib/' + this.repoID + '/file' + Utils.encodePath(fileNode.path()) + '?raw=1';
|
||||
}
|
||||
return this.server + '/lib/' + this.repoID + '/file' + Utils.encodePath(fileNode.path());
|
||||
}
|
||||
|
||||
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(this.serviceUrl + '/library/' + '[0-9a-f\-]{36}.*');
|
||||
return re.test(url);
|
||||
}
|
||||
|
||||
markdownLint(slateValue) {
|
||||
return seafileAPI.markdownLint(slateValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default LongtextAPI;
|
Reference in New Issue
Block a user