修复草稿存储失败提醒被恢复状态遮挡
This commit is contained in:
+2
-1
@@ -13,7 +13,8 @@ function flushDraft(){
|
||||
if(draftTimer !== null){ clearTimeout(draftTimer); draftTimer = null; }
|
||||
const saved = drafts.write(currentConvId, inputDom.value);
|
||||
drafts.active(currentConvId);
|
||||
if(!saved && inputDom.value && !composerStatus.textContent) setComposerStatus(t('draftSaveFailed'), true);
|
||||
if(!saved && inputDom.value && !composerStatus.classList.contains('is-error')) setComposerStatus(t('draftSaveFailed'), true);
|
||||
else if(saved && composerStatus.textContent === t('draftSaveFailed')) setComposerStatus('');
|
||||
}
|
||||
function restoreDraft(){
|
||||
inputDom.value = drafts.read(currentConvId);
|
||||
|
||||
@@ -926,6 +926,21 @@ test('a new conversation draft restores after refresh and moves to the created c
|
||||
assert.equal(store.read(null),'');assert.equal(store.read(1),'');assert.equal(store.active(),'1');
|
||||
});
|
||||
|
||||
test('quota failure replaces a restored-draft notice and clears after storage recovers', async () => {
|
||||
const history=[{id:9,title:'A',ctime:'now'}],app=await customerPage({human:false,history});
|
||||
await app.click(app.element('historyWrap').children[0]);
|
||||
app.element('input-text').value='已保存草稿';app.element('input-text').listeners.input();await app.pageHide();
|
||||
const restored=await customerPage({human:false,history,storage:app.storage,tabStorage:app.tabStorage});
|
||||
assert.match(restored.element('composer-status').textContent,/已恢复/);
|
||||
const setItem=restored.context.localStorage.setItem;
|
||||
restored.context.localStorage.setItem=()=>{throw Error('quota');};
|
||||
restored.element('input-text').value='新的未保存输入';restored.element('input-text').listeners.input();await restored.runTimers(250);
|
||||
assert.match(restored.element('composer-status').textContent,/无法保存/);
|
||||
assert.equal(restored.element('input-text').value,'新的未保存输入');
|
||||
restored.context.localStorage.setItem=setItem;await restored.pageHide();
|
||||
assert.equal(restored.element('composer-status').textContent,'');
|
||||
});
|
||||
|
||||
test('restoring an old conversation cannot replace a newer user-selected draft', async () => {
|
||||
const app=await customerPage({human:false,history:[{id:9,title:'A',ctime:'now'}]});
|
||||
await app.click(app.element('historyWrap').children[0]);
|
||||
|
||||
Reference in New Issue
Block a user