feat: export history

This commit is contained in:
lencx
2022-12-10 03:23:29 +08:00
parent b4d764abbe
commit 7f480b4943
12 changed files with 265 additions and 104 deletions

View File

@@ -1,41 +1,45 @@
// *** Core Script - IPC ***
document.addEventListener('DOMContentLoaded', async () => {
const uid = () => window.crypto.getRandomValues(new Uint32Array(1))[0];
function transformCallback(callback = () => {}, once = false) {
const identifier = uid();
const prop = `_${identifier}`;
Object.defineProperty(window, prop, {
value: (result) => {
if (once) {
Reflect.deleteProperty(window, prop);
}
return callback(result)
},
writable: false,
configurable: true,
})
return identifier;
}
async function invoke(cmd, args) {
return new Promise((resolve, reject) => {
if (!window.__TAURI_POST_MESSAGE__) reject('__TAURI_POST_MESSAGE__ does not exist!');
const callback = transformCallback((e) => {
resolve(e);
Reflect.deleteProperty(window, `_${error}`);
}, true)
const error = transformCallback((e) => {
reject(e);
Reflect.deleteProperty(window, `_${callback}`);
}, true)
window.__TAURI_POST_MESSAGE__({
cmd,
callback,
error,
...args
});
const uid = () => window.crypto.getRandomValues(new Uint32Array(1))[0];
function transformCallback(callback = () => {}, once = false) {
const identifier = uid();
const prop = `_${identifier}`;
Object.defineProperty(window, prop, {
value: (result) => {
if (once) {
Reflect.deleteProperty(window, prop);
}
return callback(result)
},
writable: false,
configurable: true,
})
return identifier;
}
async function invoke(cmd, args) {
return new Promise((resolve, reject) => {
if (!window.__TAURI_POST_MESSAGE__) reject('__TAURI_POST_MESSAGE__ does not exist!');
const callback = transformCallback((e) => {
resolve(e);
Reflect.deleteProperty(window, `_${error}`);
}, true)
const error = transformCallback((e) => {
reject(e);
Reflect.deleteProperty(window, `_${callback}`);
}, true)
window.__TAURI_POST_MESSAGE__({
cmd,
callback,
error,
...args
});
}
});
}
window.uid = uid;
window.invoke = invoke;
window.transformCallback = transformCallback;
async function init() {
async function platform() {
return invoke('platform', {
__tauriModule: 'Os',
@@ -74,4 +78,13 @@ document.addEventListener('DOMContentLoaded', async () => {
}
}
});
})
}
if (
document.readyState === "complete" ||
document.readyState === "interactive"
) {
init();
} else {
document.addEventListener("DOMContentLoaded", init);
}

View File

@@ -109,15 +109,7 @@ function handleImg(imgData) {
for (let i = 0; i < binaryData.length; i++) {
data.push(binaryData.charCodeAt(i));
}
const blob = new Blob([new Uint8Array(data)], { type: "image/png" });
const url = URL.createObjectURL(blob);
// window.open(url, "_blank");
// const a = document.createElement("a");
// a.href = url;
// a.download = "chat-gpt-image.png";
// a.click();
invoke('download', { name: `chatgpt-${Date.now()}.png`, blob: Array.from(new Uint8Array(data)) });
}
function handlePdf(imgData, canvas, pixelRatio) {
@@ -130,7 +122,9 @@ function handlePdf(imgData, canvas, pixelRatio) {
var pdfWidth = pdf.internal.pageSize.getWidth();
var pdfHeight = pdf.internal.pageSize.getHeight();
pdf.addImage(imgData, "PNG", 0, 0, pdfWidth, pdfHeight);
pdf.save("chat-gpt.pdf");
const data = pdf.__private__.getArrayBuffer(pdf.__private__.buildDocument());
invoke('download', { name: `chatgpt-${Date.now()}.pdf`, blob: Array.from(new Uint8Array(data)) });
}
class Elements {
@@ -206,7 +200,7 @@ async function sendRequest() {
})
.then((response) => response.json())
.then((data) => {
window.open(data.url, "_blank");
invoke('open_link', { url: data.url });
});
}

File diff suppressed because one or more lines are too long