Skip to content

Commit 0928b3c

Browse files
authored
history: reset to default query following delete (#1533)
* history: reset to default query following delete * remove some duplicated logs
1 parent f8898f5 commit 0928b3c

File tree

6 files changed

+41
-15
lines changed

6 files changed

+41
-15
lines changed

special-pages/pages/history/app/global/Providers/HistoryServiceProvider.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable promise/prefer-await-to-then */
12
import { createContext, h } from 'preact';
23
import { paramsToQuery, toRange } from '../../history.service.js';
34
import { useCallback, useContext } from 'preact/hooks';
@@ -89,35 +90,43 @@ export function HistoryServiceProvider({ service, children, initial }) {
8990
if (range) {
9091
service
9192
.deleteRange(range)
92-
// eslint-disable-next-line promise/prefer-await-to-then
9393
.then((resp) => {
9494
if (resp.kind === 'range-deleted') {
9595
queryDispatch({ kind: 'reset' });
9696
}
9797
})
98-
// eslint-disable-next-line promise/prefer-await-to-then
9998
.catch(console.error);
10099
}
101100
break;
102101
}
103102
case 'delete-domain': {
104-
// eslint-disable-next-line promise/prefer-await-to-then
105-
service.deleteDomain(action.domain).catch(console.error);
103+
service
104+
.deleteDomain(action.domain)
105+
.then((resp) => {
106+
if (resp.kind === 'domain-deleted') {
107+
queryDispatch({ kind: 'reset' });
108+
}
109+
})
110+
.catch(console.error);
106111
break;
107112
}
108113
case 'delete-entries-by-index': {
109-
// eslint-disable-next-line promise/prefer-await-to-then
110114
service.entriesDelete(action.value).catch(console.error);
111115
break;
112116
}
113117
case 'delete-all': {
114-
// eslint-disable-next-line promise/prefer-await-to-then
115118
service.deleteRange('all').catch(console.error);
116119
break;
117120
}
118121
case 'delete-term': {
119-
// eslint-disable-next-line promise/prefer-await-to-then
120-
service.deleteTerm(action.term).catch(console.error);
122+
service
123+
.deleteTerm(action.term)
124+
.then((resp) => {
125+
if (resp.kind === 'term-deleted') {
126+
queryDispatch({ kind: 'reset' });
127+
}
128+
})
129+
.catch(console.error);
121130
break;
122131
}
123132
case 'open-url': {
@@ -127,13 +136,11 @@ export function HistoryServiceProvider({ service, children, initial }) {
127136
case 'show-entries-menu': {
128137
service
129138
.entriesMenu(action.indexes)
130-
// eslint-disable-next-line promise/prefer-await-to-then
131139
.then((resp) => {
132140
if (resp.kind === 'domain-search') {
133141
queryDispatch({ kind: 'search-by-domain', value: resp.value });
134142
}
135143
})
136-
// eslint-disable-next-line promise/prefer-await-to-then
137144
.catch(console.error);
138145
break;
139146
}

special-pages/pages/history/app/history.service.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,14 +330,16 @@ export class HistoryService {
330330

331331
/**
332332
* @param {string} term
333+
* @return {Promise<{kind: 'none'} | {kind: "term-deleted"}>}
333334
*/
334335
async deleteTerm(term) {
335336
console.log('📤 [deleteTerm]: ', JSON.stringify({ term }));
336337
const resp = await this.history.messaging.request('deleteTerm', { term });
337338
if (resp.action === 'delete') {
338339
this.reset();
340+
return { kind: 'term-deleted' };
339341
}
340-
return resp;
342+
return { kind: 'none' };
341343
}
342344
}
343345

special-pages/pages/history/app/mocks/mock-transport.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ export function mockTransport() {
7171
return withLatency(queryResponseFrom(memory, msg));
7272
}
7373
case 'entries_delete': {
74-
console.log('📤 [entries_delete]: ', JSON.stringify(msg.params));
74+
// console.log('📤 [entries_delete]: ', JSON.stringify(msg.params));
7575
if (msg.params.ids.length > 1) {
7676
// prettier-ignore
7777
const lines = [
@@ -139,7 +139,7 @@ export function mockTransport() {
139139
return Promise.resolve({ action: 'none' });
140140
}
141141
case 'deleteTerm': {
142-
console.log('📤 [deleteTerm]: ', JSON.stringify(msg.params));
142+
// console.log('📤 [deleteTerm]: ', JSON.stringify(msg.params));
143143
// prettier-ignore
144144
const lines = [
145145
`deleteTerm: ${JSON.stringify(msg.params)}`,

special-pages/pages/history/integration-tests/history-selections.spec.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,17 @@ test.describe('history selections', () => {
155155
test('`deleteAll` during search (no selections)', async ({ page }, workerInfo) => {
156156
const hp = HistoryTestPage.create(page, workerInfo).withEntries(2000);
157157
await hp.openPage({});
158+
await hp.didMakeNthQuery({ nth: 0, query: { term: '' } });
159+
160+
// do the search
158161
await hp.types('example.com');
159-
await hp.deletesAllForTerm('example.com');
162+
await hp.didMakeNthQuery({ nth: 1, query: { term: 'example.com' } });
163+
164+
// delete for the given term
165+
await hp.deletesAllForTerm('example.com', { action: 'delete' });
166+
167+
// should have reset the UI now
168+
await hp.didMakeNthQuery({ nth: 2, query: { term: '' } });
160169
});
161170
test('removes all selections with ESC key', async ({ page }, workerInfo) => {
162171
const hp = HistoryTestPage.create(page, workerInfo).withEntries(2000);

special-pages/pages/history/integration-tests/history.page.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,12 @@ export class HistoryTestPage {
429429
await page.locator('header').getByRole('button', { name: 'Delete All', exact: true }).click();
430430
}
431431

432-
async deletesAllForTerm(term) {
432+
/**
433+
* @param {string} term
434+
* @param {import('../types/history.ts').DeleteRangeResponse} resp
435+
*/
436+
async deletesAllForTerm(term, resp) {
437+
this._withDialogHandling(resp);
433438
await this.deletesAll();
434439
const calls = await this.mocks.waitForCallCount({ method: 'deleteTerm', count: 1 });
435440
expect(calls[0].payload.params).toStrictEqual({ term });

special-pages/pages/history/integration-tests/history.spec.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ test.describe('history', () => {
188188
await hp.didMakeNthQuery({ nth: 1, query: { domain: 'youtube.com' } });
189189
await hp.clicksDeleteAllInHeader({ action: 'delete' });
190190
await hp.didDeleteDomain('youtube.com');
191+
192+
// should have reset the UI now
193+
await hp.didMakeNthQuery({ nth: 2, query: { term: '' } });
191194
});
192195
test('does not concatenate results if the query is not an addition', async ({ page }, workerInfo) => {
193196
const hp = HistoryTestPage.create(page, workerInfo).withEntries(1);

0 commit comments

Comments
 (0)