95 lines
3.5 KiB
JavaScript
95 lines
3.5 KiB
JavaScript
import md5 from 'js-md5';
|
|
import store from '../store';
|
|
import utils from './utils';
|
|
import localDbSvc from './localDbSvc';
|
|
import smmsHelper from '../services/providers/helpers/smmsHelper';
|
|
import giteaHelper from '../services/providers/helpers/giteaHelper';
|
|
import githubHelper from '../services/providers/helpers/githubHelper';
|
|
import customHelper from '../services/providers/helpers/customHelper';
|
|
|
|
const getImagePath = (confPath, imgType) => {
|
|
const time = new Date();
|
|
const date = time.getDate();
|
|
const month = time.getMonth() + 1;
|
|
const year = time.getFullYear();
|
|
const path = confPath.replace('{YYYY}', year).replace('{MM}', `0${month}`.slice(-2))
|
|
.replace('{DD}', `0${date}`.slice(-2)).replace('{MDNAME}', store.getters['file/current'].name);
|
|
return `${path}${path.endsWith('/') ? '' : '/'}${utils.uid()}.${imgType.split('/')[1]}`;
|
|
};
|
|
|
|
export default {
|
|
// 上传图片 返回图片链接
|
|
// { url: 'http://xxxx', error: 'xxxxxx'}
|
|
async updateImg(imgFile) {
|
|
// 操作图片上传
|
|
const currStorage = store.getters['img/getCheckedStorage'];
|
|
if (!currStorage) {
|
|
return { error: '暂无已选择的图床!' };
|
|
}
|
|
// 判断是否文档空间路径
|
|
if (currStorage.type === 'workspace') {
|
|
// 如果不是git仓库 则提示不支持
|
|
if (!store.getters['workspace/currentWorkspaceIsGit']) {
|
|
return { error: '暂无已选择的图床!' };
|
|
}
|
|
const path = getImagePath(currStorage.sub, imgFile.type);
|
|
// 保存到indexeddb
|
|
const base64 = await utils.encodeFiletoBase64(imgFile);
|
|
const currDirNode = store.getters['explorer/selectedNodeFolder'];
|
|
const absolutePath = utils.getAbsoluteFilePath(currDirNode, path);
|
|
await localDbSvc.saveImg({
|
|
id: md5(absolutePath),
|
|
path: absolutePath,
|
|
content: base64,
|
|
});
|
|
return { url: path.replaceAll(' ', '%20') };
|
|
}
|
|
if (!currStorage.provider) {
|
|
return { error: '暂无已选择的图床!' };
|
|
}
|
|
const token = store.getters[`data/${currStorage.provider}TokensBySub`][currStorage.sub];
|
|
if (!token) {
|
|
return { error: '暂无已选择的图床!' };
|
|
}
|
|
let url = '';
|
|
// token图床类型
|
|
if (currStorage.type === 'token') {
|
|
const helper = currStorage.provider === 'smms' ? smmsHelper : customHelper;
|
|
url = await helper.uploadFile({
|
|
token,
|
|
file: imgFile,
|
|
});
|
|
} else if (currStorage.type === 'tokenRepo') { // git repo图床类型
|
|
const checkStorages = token.imgStorages.filter(it => it.sid === currStorage.sid);
|
|
if (!checkStorages || checkStorages.length === 0) {
|
|
return { error: '暂无已选择的图床!' };
|
|
}
|
|
const checkStorage = checkStorages[0];
|
|
const path = getImagePath(checkStorage.path, imgFile.type);
|
|
if (currStorage.provider === 'gitea') {
|
|
const result = await giteaHelper.uploadFile({
|
|
token,
|
|
projectId: checkStorage.repoUri,
|
|
branch: checkStorage.branch,
|
|
path,
|
|
content: imgFile,
|
|
isImg: true,
|
|
});
|
|
url = result.content.download_url;
|
|
} else if (currStorage.provider === 'github') {
|
|
const result = await githubHelper.uploadFile({
|
|
token,
|
|
owner: checkStorage.owner,
|
|
repo: checkStorage.repo,
|
|
branch: checkStorage.branch,
|
|
path,
|
|
content: imgFile,
|
|
isImg: true,
|
|
});
|
|
url = result.content.download_url;
|
|
}
|
|
}
|
|
return { url };
|
|
},
|
|
};
|