Browse Source

slightly optimize requests

pull/46/head
coomdev 2 years ago
parent
commit
b1c2f64041
  1. 26
      src/main.ts
  2. 10
      src/platform.ts

26
src/main.ts

@ -105,16 +105,15 @@ const processImage = async (src: string, fn: string, hex: string, prevurl: strin
let found: boolean | undefined; let found: boolean | undefined;
let chunk: ReadableStreamDefaultReadResult<Buffer> = { done: true }; let chunk: ReadableStreamDefaultReadResult<Buffer> = { done: true };
do { do {
const { value, done } = await iter.next(found === false); const { value, done } = await iter.next(typeof found === "boolean");
if (done) { if (done) {
chunk = { done: true } as ReadableStreamDefaultReadDoneResult; chunk = { done: true } as ReadableStreamDefaultReadDoneResult;
} else { } else {
chunk = { done: false, value } as ReadableStreamDefaultReadValueResult<Buffer>; chunk = { done: false, value } as ReadableStreamDefaultReadValueResult<Buffer>;
}
if (!done)
cumul = Buffer.concat([cumul, value!]); cumul = Buffer.concat([cumul, value!]);
found = await proc.has_embed(cumul); found = await proc.has_embed(cumul);
} while (found !== false && !chunk.done); }
} while (found !== false && !chunk.done /* Because we only embed links now, it's safe to assume we get everything we need in the first chunk */);
await iter.next(true); await iter.next(true);
if (found === false) { if (found === false) {
//console.log(`Gave up on ${src} after downloading ${cumul.byteLength} bytes...`); //console.log(`Gave up on ${src} after downloading ${cumul.byteLength} bytes...`);
@ -258,15 +257,14 @@ const scrapeBoard = async (self: HTMLButtonElement) => {
let found: boolean | undefined; let found: boolean | undefined;
let chunk: ReadableStreamDefaultReadResult<Buffer> = { done: true }; let chunk: ReadableStreamDefaultReadResult<Buffer> = { done: true };
do { do {
const { value, done } = await iter.next(found === false); const { value, done } = await iter.next(typeof found === "boolean");
if (done) { if (done) {
chunk = { done: true } as ReadableStreamDefaultReadDoneResult; chunk = { done: true } as ReadableStreamDefaultReadDoneResult;
} else { } else {
chunk = { done: false, value } as ReadableStreamDefaultReadValueResult<Buffer>; chunk = { done: false, value } as ReadableStreamDefaultReadValueResult<Buffer>;
}
if (!done)
cumul = Buffer.concat([cumul, value!]); cumul = Buffer.concat([cumul, value!]);
found = await proc.has_embed(cumul); found = await proc.has_embed(cumul);
}
} while (found !== false && !chunk.done); } while (found !== false && !chunk.done);
await iter.next(true); await iter.next(true);
return found === true; return found === true;
@ -415,11 +413,11 @@ const startup = async (is4chanX = true) => {
}); });
scts?.appendChild(button); scts?.appendChild(button);
const appHost = textToElement(`<div class="pee-settings"></div>`); const appHost = textToElement(`<div class="peee-settings"></div>`);
const appInstance = new App({ target: appHost }); const appInstance = new App({ target: appHost });
document.body.append(appHost); document.body.append(appHost);
const scrollHost = textToElement(`<div class="pee-scroll"></div>`); const scrollHost = textToElement(`<div></div>`);
new ScrollHighlighter({ target: scrollHost }); new ScrollHighlighter({ target: scrollHost });
document.body.append(scrollHost); document.body.append(scrollHost);
@ -546,8 +544,8 @@ function processAttachments(post: HTMLDivElement, ress: [EmbeddedFile, boolean][
const quot = qp.getTextBox(post); const quot = qp.getTextBox(post);
const textInsertCursor = document.createElement('div'); const textInsertCursor = document.createElement('div');
quot?.appendChild(textInsertCursor); quot?.appendChild(textInsertCursor);
const filehost: HTMLElement | null = ft.querySelector('.filehost'); const filehost: HTMLElement | null = ft.querySelector('.fiilehost');
const eyehost: HTMLElement | null = info.querySelector('.eyehost'); const eyehost: HTMLElement | null = info.querySelector('.eyeehost');
const imgcont = filehost || document.createElement('div'); const imgcont = filehost || document.createElement('div');
const eyecont = eyehost || document.createElement('span'); const eyecont = eyehost || document.createElement('span');
@ -560,7 +558,7 @@ function processAttachments(post: HTMLDivElement, ress: [EmbeddedFile, boolean][
} }
if (!eyehost) { if (!eyehost) {
info.append(eyecont); info.append(eyecont);
eyecont.classList.add("eyehost"); eyecont.classList.add("eyeehost");
} else { } else {
eyecont.innerHTML = ''; eyecont.innerHTML = '';
} }

10
src/platform.ts

@ -104,8 +104,8 @@ export async function* streamRemote(url: string, chunkSize = 72 * 1024, fetchRes
stream?.releaseLock(); stream?.releaseLock();
return; return;
} }
const headers = await getHeaders(url); //const headers = await getHeaders(url);
const size = +headers['content-length']; let size = Number.POSITIVE_INFINITY;
let ptr = 0; let ptr = 0;
let fetchSize = chunkSize; let fetchSize = chunkSize;
while (ptr != size) { while (ptr != size) {
@ -115,7 +115,11 @@ export async function* streamRemote(url: string, chunkSize = 72 * 1024, fetchRes
if (!('content-length' in obj)) { if (!('content-length' in obj)) {
console.warn("no content lenght???", url); console.warn("no content lenght???", url);
break; break;
} const len = +obj['content-length']; }
if ('content-range' in obj) {
size = +obj['content-range'].split('/')[1];
}
const len = +obj['content-length'];
ptr += len; ptr += len;
if (fetchRestOnNonCanceled) if (fetchRestOnNonCanceled)
fetchSize = size; fetchSize = size;

Loading…
Cancel
Save