161 lines
3.8 KiB
JavaScript
161 lines
3.8 KiB
JavaScript
import axios from "axios";
|
|
import { getStoreKey } from "@/api/lock";
|
|
import storage from "@/libs/storage";
|
|
import { md5, wrap } from "@/libs/secret";
|
|
import NoteConstant from "@/libs/constants";
|
|
|
|
axios.interceptors.response.use(undefined, (err) => {
|
|
const { config: originalRequest } = err;
|
|
if (
|
|
(err?.code === 'ECONNABORTED' ||
|
|
err?.message === 'Network Error' ||
|
|
err?.message?.includes?.('timeout')) &&
|
|
!originalRequest._retry
|
|
) {
|
|
originalRequest._retry = true;
|
|
return axios.request(originalRequest);
|
|
}
|
|
});
|
|
|
|
export async function saveNote(noteForm, secret) {
|
|
let storeKey = secret.storeKey;
|
|
|
|
const storeInfo = await storage.local.getText(storeKey);
|
|
let starray = storeInfo.split("|");
|
|
|
|
if (starray[2] == "1") {
|
|
return new Promise(function (onCompleted) {
|
|
let res = { data: {} };
|
|
res.data.code = "100013";
|
|
onCompleted(res);
|
|
});
|
|
}
|
|
|
|
let note = {
|
|
lock: starray[0],
|
|
cipher: starray[1],
|
|
initTime: starray[3],
|
|
text: starray[4],
|
|
key: noteForm.key,
|
|
};
|
|
|
|
let viewStoreText = wrap(noteForm.text, secret.secretKey);
|
|
if (viewStoreText != note.text) {
|
|
return new Promise(function (onCompleted) {
|
|
let res = { data: {} };
|
|
res.data.code = "100014";
|
|
onCompleted(res);
|
|
});
|
|
}
|
|
|
|
let bufferArrary = eval("[100,111,32,110,111,116,32," + note.text + ",100,111,32,101,118,105,108]");
|
|
let array = Uint8Array.from(bufferArrary);
|
|
let blob = new Blob([array], { type: "application/octet-stream" });
|
|
let form = new FormData();
|
|
form.append("file", blob, noteForm.key);
|
|
form.append("cipher", note.cipher);
|
|
form.append("lock", note.lock);
|
|
form.append("key", note.key);
|
|
form.append("md5", md5(note.text));
|
|
form.append("initTime", note.initTime)
|
|
|
|
let config = {
|
|
headers: { "Content-Type": "multipart/form-data" },
|
|
};
|
|
|
|
return axios({
|
|
url: NoteConstant.servicePath + "/note/" + noteForm.key,
|
|
method: "post",
|
|
data: form,
|
|
config: config,
|
|
});
|
|
}
|
|
|
|
export async function deleteNote(key) {
|
|
let storeKey = getStoreKey(key);
|
|
const storeInfo = await storage.local.getText(storeKey);
|
|
let note = {
|
|
cipher: storeInfo.substring(2, 34),
|
|
key: key,
|
|
};
|
|
return axios({
|
|
url: NoteConstant.servicePath + "/note/" + key + "/delete",
|
|
method: "post",
|
|
data: note,
|
|
});
|
|
}
|
|
|
|
export function getNoteBlob(key) {
|
|
return axios({
|
|
url: NoteConstant.servicePath + "/note/" + key,
|
|
method: "get",
|
|
responseType: "blob",
|
|
ignoreError: 1,
|
|
original: true,
|
|
source: true,
|
|
});
|
|
}
|
|
|
|
export function getNoteMetaNew(key) {
|
|
let url = NoteConstant.servicePath + "/note/" + key + "/noteMeta";
|
|
return axios({
|
|
url: url,
|
|
method: "get",
|
|
ignoreError: 1,
|
|
original: true,
|
|
source: true,
|
|
});
|
|
}
|
|
|
|
export function getKeyMetaNew() {
|
|
let url = NoteConstant.servicePath + "/note/keyMeta";
|
|
return axios({
|
|
url: url,
|
|
method: "get",
|
|
ignoreError: 1,
|
|
original: true,
|
|
source: true,
|
|
});
|
|
}
|
|
|
|
export function getNoteMeta(key) {
|
|
let url = NoteConstant.servicePath + "/note/" + key + "/noteMeta";
|
|
let noteMeta = null;
|
|
try {
|
|
noteMeta = ajaxGet(url);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
return noteMeta;
|
|
}
|
|
|
|
export function getKeyMeta() {
|
|
let url = NoteConstant.servicePath + "/note/keyMeta";
|
|
let keyMeta = null;
|
|
try {
|
|
keyMeta = ajaxGet(url);
|
|
} catch (error) {
|
|
console.log(error);
|
|
}
|
|
return keyMeta;
|
|
}
|
|
|
|
export function ajaxGet(url) {
|
|
let data = null;
|
|
let xmlhttp = new XMLHttpRequest();
|
|
xmlhttp.open("GET", url, false);
|
|
xmlhttp.onreadystatechange = () => {
|
|
if (xmlhttp.readyState == 4) {
|
|
if (xmlhttp.status == 200 || xmlhttp.status == 304) {
|
|
if (xmlhttp.responseText) {
|
|
let rs = JSON.parse(xmlhttp.responseText);
|
|
if (rs && rs.code == "000000") {
|
|
data = rs.data;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
xmlhttp.send();
|
|
return data;
|
|
} |