From e769d2fbc392dd5462f209745d3fc0196e10726f Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 28 Nov 2017 15:44:42 -0800 Subject: [PATCH 1/5] Don't refresh Inventory or Recent Activity if data hasn't changed --- .../qml/hifi/commerce/purchases/Purchases.qml | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml index 4c10bdc097..26865a553d 100644 --- a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml +++ b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml @@ -343,6 +343,9 @@ Rectangle { ListModel { id: previousPurchasesModel; } + HifiCommerceCommon.SortableListModel { + id: tempPurchasesModel; + } HifiCommerceCommon.SortableListModel { id: filteredPurchasesModel; } @@ -635,20 +638,41 @@ Rectangle { } function buildFilteredPurchasesModel() { - filteredPurchasesModel.clear(); + var sameItemCount = 0; + + tempPurchasesModel.clear(); for (var i = 0; i < purchasesModel.count; i++) { if (purchasesModel.get(i).title.toLowerCase().indexOf(filterBar.text.toLowerCase()) !== -1) { if (purchasesModel.get(i).status !== "confirmed" && !root.isShowingMyItems) { - filteredPurchasesModel.insert(0, purchasesModel.get(i)); + tempPurchasesModel.insert(0, purchasesModel.get(i)); } else if ((root.isShowingMyItems && purchasesModel.get(i).edition_number === "0") || (!root.isShowingMyItems && purchasesModel.get(i).edition_number !== "0")) { - filteredPurchasesModel.append(purchasesModel.get(i)); + tempPurchasesModel.append(purchasesModel.get(i)); } } } + + for (var i = 0; i < tempPurchasesModel.count; i++) { + if (!filteredPurchasesModel.get(i)) { + break; + } else if (tempPurchasesModel.get(i).itemId === filteredPurchasesModel.get(i).itemId && + tempPurchasesModel.get(i).edition_number === filteredPurchasesModel.get(i).edition_number && + tempPurchasesModel.get(i).status === filteredPurchasesModel.get(i).status) { + sameItemCount++; + } + } - populateDisplayedItemCounts(); - sortByDate(); + if (sameItemCount !== tempPurchasesModel.count) { + filteredPurchasesModel.clear(); + for (var i = 0; i < tempPurchasesModel.count; i++) { + filteredPurchasesModel.append(tempPurchasesModel.get(i)); + } + + populateDisplayedItemCounts(); + sortByDate(); + } else { + console.log("ZRF HERE NOT REFRESHING"); + } } function checkIfAnyItemStatusChanged() { From 3e5a2addd20b0c5982c7147e427cd22a6c3e7ef0 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 28 Nov 2017 15:55:25 -0800 Subject: [PATCH 2/5] Use same logic for Recent Activity --- .../qml/hifi/commerce/purchases/Purchases.qml | 4 +--- .../qml/hifi/commerce/wallet/WalletHome.qml | 24 ++++++++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml index 26865a553d..989b78c820 100644 --- a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml +++ b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml @@ -664,9 +664,7 @@ Rectangle { if (sameItemCount !== tempPurchasesModel.count) { filteredPurchasesModel.clear(); - for (var i = 0; i < tempPurchasesModel.count; i++) { - filteredPurchasesModel.append(tempPurchasesModel.get(i)); - } + filteredPurchasesModel.append(tempPurchasesModel); populateDisplayedItemCounts(); sortByDate(); diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml index fd7ce0fdfd..a3dc091c33 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml @@ -38,10 +38,25 @@ Item { onHistoryResult : { historyReceived = true; if (result.status === 'success') { - transactionHistoryModel.clear(); - transactionHistoryModel.append(result.data.history); + var sameItemCount = 0; + tempTransactionHistoryModel.clear(); + + tempTransactionHistoryModel.append(result.data.history); + + for (var i = 0; i < tempTransactionHistoryModel.count; i++) { + if (!transactionHistoryModel.get(i)) { + break; + } else if (tempTransactionHistoryModel.get(i).transaction_type === transactionHistoryModel.get(i).transaction_type && + tempTransactionHistoryModel.get(i).text === transactionHistoryModel.get(i).text) { + sameItemCount++; + } + } - calculatePendingAndInvalidated(); + if (sameItemCount !== tempTransactionHistoryModel.count) { + transactionHistoryModel.clear(); + transactionHistoryModel.append(tempTransactionHistoryModel); + calculatePendingAndInvalidated(); + } } refreshTimer.start(); } @@ -187,6 +202,9 @@ Item { // Style color: hifi.colors.baseGrayHighlight; } + ListModel { + id: tempTransactionHistoryModel; + } ListModel { id: transactionHistoryModel; } From 489d11d5fd649adc7a616406507011ecbecf43b8 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 28 Nov 2017 16:01:58 -0800 Subject: [PATCH 3/5] Remove logging --- interface/resources/qml/hifi/commerce/purchases/Purchases.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml index 989b78c820..26d1265972 100644 --- a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml +++ b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml @@ -668,8 +668,6 @@ Rectangle { populateDisplayedItemCounts(); sortByDate(); - } else { - console.log("ZRF HERE NOT REFRESHING"); } } From 5dc8715879bd0f77f83e651eea35d78e8f47229c Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 28 Nov 2017 16:09:33 -0800 Subject: [PATCH 4/5] Bugfix --- .../resources/qml/hifi/commerce/purchases/Purchases.qml | 5 ++++- interface/resources/qml/hifi/commerce/wallet/WalletHome.qml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml index 26d1265972..ff9ce16e93 100644 --- a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml +++ b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml @@ -654,6 +654,7 @@ Rectangle { for (var i = 0; i < tempPurchasesModel.count; i++) { if (!filteredPurchasesModel.get(i)) { + sameItemCount = -1; break; } else if (tempPurchasesModel.get(i).itemId === filteredPurchasesModel.get(i).itemId && tempPurchasesModel.get(i).edition_number === filteredPurchasesModel.get(i).edition_number && @@ -664,7 +665,9 @@ Rectangle { if (sameItemCount !== tempPurchasesModel.count) { filteredPurchasesModel.clear(); - filteredPurchasesModel.append(tempPurchasesModel); + for (var i = 0; i < tempPurchasesModel.count; i++) { + filteredPurchasesModel.append(tempPurchasesModel.get(i)); + } populateDisplayedItemCounts(); sortByDate(); diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml index a3dc091c33..747883166e 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml @@ -45,6 +45,7 @@ Item { for (var i = 0; i < tempTransactionHistoryModel.count; i++) { if (!transactionHistoryModel.get(i)) { + sameItemCount = -1; break; } else if (tempTransactionHistoryModel.get(i).transaction_type === transactionHistoryModel.get(i).transaction_type && tempTransactionHistoryModel.get(i).text === transactionHistoryModel.get(i).text) { @@ -54,7 +55,9 @@ Item { if (sameItemCount !== tempTransactionHistoryModel.count) { transactionHistoryModel.clear(); - transactionHistoryModel.append(tempTransactionHistoryModel); + for (var i = 0; i < tempTransactionHistoryModel.count; i++) { + transactionHistoryModel.append(tempTransactionHistoryModel.get(i)); + } calculatePendingAndInvalidated(); } } From 3c892920e3f3dfa8a9b98d943627e945ad13a106 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 28 Nov 2017 17:00:15 -0800 Subject: [PATCH 5/5] Prevent seeding text from flashing --- interface/resources/qml/hifi/commerce/wallet/WalletHome.qml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml index 747883166e..fd1183b226 100644 --- a/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml +++ b/interface/resources/qml/hifi/commerce/wallet/WalletHome.qml @@ -161,10 +161,9 @@ Item { Timer { id: refreshTimer; - interval: 4000; // Remove this after demo? + interval: 4000; onTriggered: { console.log("Refreshing Wallet Home..."); - historyReceived = false; commerce.balance(); commerce.history(); }