make some overall QoL improvements
This commit is contained in:
@@ -97,3 +97,32 @@ test("discarding a chat draft aborts upload, deletes temporary files, and serial
|
||||
composer.clear();
|
||||
assert.deepEqual(deletes, [`/attachments/${temporaryId}`], "Sent attachments are retained");
|
||||
});
|
||||
|
||||
test("attachments stay with their chat while uploads finish after switching", async t => {
|
||||
const originalDocument = globalThis.document, originalFetch = globalThis.fetch;
|
||||
t.after(() => { globalThis.document = originalDocument; globalThis.fetch = originalFetch; });
|
||||
const elements = Object.fromEntries(["attachImage", "imagePicker", "uploadPreviews", "composer"].map(id => [id, new Element()]));
|
||||
globalThis.document = {getElementById: id => elements[id], querySelector: () => elements.composer, createElement: () => new Element()};
|
||||
let completeUpload;
|
||||
const deletes = [];
|
||||
globalThis.fetch = (url) => {
|
||||
if (url === "/uploads/config") return Promise.resolve(Response.json({maxFiles: 5, maxSizeMb: 10}));
|
||||
if (url === "/uploads") return new Promise(resolve => { completeUpload = resolve; });
|
||||
deletes.push(url);
|
||||
return Promise.resolve(Response.json({success: true}));
|
||||
};
|
||||
const composer = createAttachmentComposer({onChange() {}, onError: message => assert.fail(message)});
|
||||
elements.imagePicker.files = [new File(["fixture"], "draft.png", {type: "image/png"})];
|
||||
elements.imagePicker.onchange();
|
||||
composer.saveDraft(1);
|
||||
composer.restoreDraft(2);
|
||||
assert.equal(composer.attachments.length, 0);
|
||||
const metadata = {id: "12345678-1234-1234-1234-123456789abc"};
|
||||
completeUpload(Response.json(metadata));
|
||||
await new Promise(resolve => setTimeout(resolve, 0));
|
||||
assert.deepEqual(deletes, []);
|
||||
composer.saveDraft(2);
|
||||
composer.restoreDraft(1);
|
||||
assert.deepEqual(composer.attachments, [metadata]);
|
||||
composer.discard();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user