fix: try aborting writables when failed

This commit is contained in:
2026-08-11 22:52:39 +08:00
parent 8d85f85b7f
commit 5b06da3122
+2 -1
View File
@@ -425,7 +425,7 @@ while (await new Promise(o => setTimeout(o, 1000, true))) {
case 'CLOSING': case 'CLOSING':
if (save) try { if (save) try {
$.all('#actions > button').forEach(e => e.disabled = true); $.all('#actions > button').forEach(e => e.disabled = true);
let writable = await filehandle.createWritable({ mode: 'exclusive' }); var writable = await filehandle.createWritable({ mode: 'exclusive' });
let buffer = await filehandle.getFile().then(f => f.arrayBuffer()); let buffer = await filehandle.getFile().then(f => f.arrayBuffer());
let data = await Rpc2.invoke('merge', { params: [new Uint8Array(buffer).toBase64()] }); let data = await Rpc2.invoke('merge', { params: [new Uint8Array(buffer).toBase64()] });
await writable.write(Uint8Array.fromBase64(data)); await writable.write(Uint8Array.fromBase64(data));
@@ -433,6 +433,7 @@ while (await new Promise(o => setTimeout(o, 1000, true))) {
await Rpc2.notify('close'); await Rpc2.notify('close');
} catch (e) { } catch (e) {
if (Error.isError(e) && e.name === 'NoModificationAllowedError') continue; if (Error.isError(e) && e.name === 'NoModificationAllowedError') continue;
await new Promise(fn => fn(writable.abort())).catch(() => null);
alert('(ERROR) ' + new String(e ?? 'File operation failed')); alert('(ERROR) ' + new String(e ?? 'File operation failed'));
} }
save = false; save = false;