Skip to content

Commit 9e2b659

Browse files
Use async functions, move tests to experimental folder
1 parent ddfac41 commit 9e2b659

File tree

7 files changed

+258
-274
lines changed

7 files changed

+258
-274
lines changed

experimental/javascript-wc-indexeddb/dist/components/todo-app/todo-app.component.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,10 @@ class TodoApp extends HTMLElement {
8484
this.list.moveToNextPage();
8585
}
8686

87-
moveToPreviousPage() {
88-
// Skeleton implementation of previous page navigation
89-
this.list.moveToPreviousPage().then(() => {
90-
this.bottombar.reenablePreviousPageButton();
91-
window.dispatchEvent(new CustomEvent("previous-page-loaded", {}));
92-
});
87+
async moveToPreviousPage() {
88+
await this.list.moveToPreviousPage();
89+
this.bottombar.reenablePreviousPageButton();
90+
window.dispatchEvent(new CustomEvent("previous-page-loaded", {}));
9391
}
9492

9593
update() {

experimental/javascript-wc-indexeddb/dist/components/todo-list/todo-list.component.js

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -139,26 +139,21 @@ class TodoList extends HTMLElement {
139139
this.#firstItemIndexOnScreen = this.listNode.firstChild.itemIndex;
140140
}
141141

142-
moveToPreviousPage() {
143-
return this.storageManager
144-
.getTodos(this.#firstItemIndexOnScreen, MAX_ON_SCREEN_ITEMS)
145-
.then((items) => {
146-
const elements = items.map((item) => {
147-
const { id, title, completed, priority } = item;
148-
const element = new TodoItem();
149-
element.setAttribute("itemid", id);
150-
element.setAttribute("itemtitle", title);
151-
element.setAttribute("itemcompleted", completed);
152-
element.setAttribute("data-priority", priority);
153-
element.itemIndex = item.itemNumber;
154-
return element;
155-
});
156-
this.#firstItemIndexOnScreen = items[0].itemNumber;
157-
this.listNode.replaceChildren(...elements);
158-
})
159-
.catch((error) => {
160-
// Error retrieving previous todos
161-
});
142+
async moveToPreviousPage() {
143+
const items = await this.storageManager
144+
.getTodos(this.#firstItemIndexOnScreen, MAX_ON_SCREEN_ITEMS);
145+
const elements = items.map((item) => {
146+
const { id, title, completed, priority } = item;
147+
const element = new TodoItem();
148+
element.setAttribute("itemid", id);
149+
element.setAttribute("itemtitle", title);
150+
element.setAttribute("itemcompleted", completed);
151+
element.setAttribute("data-priority", priority);
152+
element.itemIndex = item.itemNumber;
153+
return element;
154+
});
155+
this.#firstItemIndexOnScreen = items[0].itemNumber;
156+
this.listNode.replaceChildren(...elements);
162157
}
163158

164159
#addItemToStorage(itemIndex, id, title, priority, completed) {

experimental/javascript-wc-indexeddb/dist/storage/indexedDB-manager.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ class IndexedDBManager {
121121
transaction.onerror = (event) => {
122122
reject(event.target.error);
123123
};
124-
125124
});
126125
}
127126

@@ -182,7 +181,7 @@ class IndexedDBManager {
182181
const store = transaction.objectStore(this.storeName);
183182

184183
// Delete the todo item directly using its primary key (itemNumber)
185-
const deleteRequest = store.delete(itemNumber);
184+
store.delete(itemNumber);
186185
this.pendingDeletions++;
187186

188187
transaction.oncomplete = () => {

experimental/javascript-wc-indexeddb/src/components/todo-app/todo-app.component.js

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class TodoApp extends HTMLElement {
4646
addItem(event) {
4747
const { detail: item } = event;
4848
this.list.addItem(item, this.#numberOfItems++);
49-
this.update("add-item", item.id);
49+
this.update();
5050
}
5151

5252
toggleItem(event) {
@@ -56,20 +56,20 @@ class TodoApp extends HTMLElement {
5656
this.#numberOfCompletedItems--;
5757

5858
this.list.toggleItem(event.detail.itemNumber, event.detail.completed);
59-
this.update("toggle-item", event.detail.id);
59+
this.update();
6060
}
6161

6262
removeItem(event) {
6363
if (event.detail.completed)
6464
this.#numberOfCompletedItems--;
6565

6666
this.#numberOfItems--;
67-
this.update("remove-item", event.detail.id);
67+
this.update();
6868
this.list.removeItem(event.detail.itemNumber);
6969
}
7070

7171
updateItem(event) {
72-
this.update("update-item", event.detail.id);
72+
this.update();
7373
}
7474

7575
toggleItems(event) {
@@ -84,12 +84,10 @@ class TodoApp extends HTMLElement {
8484
this.list.moveToNextPage();
8585
}
8686

87-
moveToPreviousPage() {
88-
// Skeleton implementation of previous page navigation
89-
this.list.moveToPreviousPage().then(() => {
90-
this.bottombar.reenablePreviousPageButton();
91-
window.dispatchEvent(new CustomEvent("previous-page-loaded", {}));
92-
});
87+
async moveToPreviousPage() {
88+
await this.list.moveToPreviousPage();
89+
this.bottombar.reenablePreviousPageButton();
90+
window.dispatchEvent(new CustomEvent("previous-page-loaded", {}));
9391
}
9492

9593
update() {
@@ -140,7 +138,7 @@ class TodoApp extends HTMLElement {
140138
}
141139

142140
connectedCallback() {
143-
this.update("connected");
141+
this.update();
144142
this.addListeners();
145143
this.router.initRouter(this.routeChange);
146144
this.#isReady = true;

experimental/javascript-wc-indexeddb/src/components/todo-list/todo-list.component.js

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -139,26 +139,20 @@ class TodoList extends HTMLElement {
139139
this.#firstItemIndexOnScreen = this.listNode.firstChild.itemIndex;
140140
}
141141

142-
moveToPreviousPage() {
143-
return this.storageManager
144-
.getTodos(this.#firstItemIndexOnScreen, MAX_ON_SCREEN_ITEMS)
145-
.then((items) => {
146-
const elements = items.map((item) => {
147-
const { id, title, completed, priority } = item;
148-
const element = new TodoItem();
149-
element.setAttribute("itemid", id);
150-
element.setAttribute("itemtitle", title);
151-
element.setAttribute("itemcompleted", completed);
152-
element.setAttribute("data-priority", priority);
153-
element.itemIndex = item.itemNumber;
154-
return element;
155-
});
156-
this.#firstItemIndexOnScreen = items[0].itemNumber;
157-
this.listNode.replaceChildren(...elements);
158-
})
159-
.catch((error) => {
160-
// Error retrieving previous todos
161-
});
142+
async moveToPreviousPage() {
143+
const items = await this.storageManager.getTodos(this.#firstItemIndexOnScreen, MAX_ON_SCREEN_ITEMS);
144+
const elements = items.map((item) => {
145+
const { id, title, completed, priority } = item;
146+
const element = new TodoItem();
147+
element.setAttribute("itemid", id);
148+
element.setAttribute("itemtitle", title);
149+
element.setAttribute("itemcompleted", completed);
150+
element.setAttribute("data-priority", priority);
151+
element.itemIndex = item.itemNumber;
152+
return element;
153+
});
154+
this.#firstItemIndexOnScreen = items[0].itemNumber;
155+
this.listNode.replaceChildren(...elements);
162156
}
163157

164158
#addItemToStorage(itemIndex, id, title, priority, completed) {

0 commit comments

Comments
 (0)