Skip to content

Commit 361fee6

Browse files
committed
receipts toggling in demo with sent notifs firing
1 parent 4fdeac9 commit 361fee6

File tree

2 files changed

+53
-22
lines changed

2 files changed

+53
-22
lines changed

demo/index.html

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
<div id="options">
4040
<button id="toggle-receipts">Toggle receipts</button>
4141
<button id="clear-updates">Clear updates</button>
42+
43+
<p id="interaction-status-area" style="min-height: 20px;margin: 10px;"></p>
4244
</div>
4345
</div>
4446

@@ -95,10 +97,17 @@
9597
mgcComponent.receipts = receiptsData;
9698

9799
// event handlers
98-
mgcComponent.addEventListener('EmailReceiptRequest', async (e) => {
100+
mgcComponent.addEventListener('EmailReceiptRequest', (e) => {
101+
debugger;
102+
const uxMessageInfoArea = document.getElementById('interaction-status-area');
103+
99104
const { donation } = e.detail;
100105
const randomizer = Math.floor(Math.random() + 0.5);
101106
const successOrFail = randomizer === 1 ? 'success' : 'fail';
107+
const returnTiming = randomizer === 1 ? 3000 : 8000;
108+
109+
uxMessageInfoArea.innerText = `Email receipt request for donation ${donation.id} will return ${successOrFail} in ${returnTiming} ms.`;
110+
102111
const message = successOrFail === 'success' ? 'Email receipt sent' : 'Email receipt failed';
103112

104113
const update = {
@@ -109,8 +118,11 @@
109118

110119
updateNotices = [update, ...updateNotices];
111120

112-
mgcComponent.updateReceived(update);
113-
await mgcComponent.updateComplete;
121+
setTimeout(() => {
122+
mgcComponent.updateReceived(update);
123+
console.log('EmailReceiptRequest index.html ----', update);
124+
uxMessageInfoArea.innerText = '';
125+
}, returnTiming);
114126
});
115127

116128
// options hooks

src/receipts.ts

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* eslint-disable no-console */
12
import { LitElement, html, css, PropertyValues, nothing } from 'lit';
23
import { customElement, property } from 'lit/decorators.js';
34
import { classMap } from 'lit/directives/class-map.js';
@@ -27,17 +28,16 @@ export class IauxMgcReceipts extends LitElement {
2728
@property({ type: Object })
2829
donationEmailStatusMap: donationEmailStatusMapType | null = null;
2930

30-
shouldUpdate(changed: PropertyValues) {
31-
if (changed.has('donationEmailStatusMap')) {
32-
return true;
33-
}
34-
return true;
35-
}
36-
3731
updated(changed: PropertyValues) {
3832
if (changed.has('receipts')) {
3933
this.updateReceiptSentMap();
4034
}
35+
if (changed.has('donationEmailStatusMap')) {
36+
console.log(
37+
'donationEmailStatusMap UPDATED ---- ',
38+
this.donationEmailStatusMap
39+
);
40+
}
4141
}
4242

4343
updateReceiptSentMap() {
@@ -94,22 +94,30 @@ export class IauxMgcReceipts extends LitElement {
9494
);
9595
}
9696

97-
public emailSent(receiptEmailed: donationEmailStatus) {
97+
async emailSent(receiptEmailed: donationEmailStatus) {
98+
const currStatusMap = this.donationEmailStatusMap;
99+
this.donationEmailStatusMap = null;
100+
await this.updateComplete;
98101
const statusMap = {
99-
...this.donationEmailStatusMap,
102+
...currStatusMap,
100103
} as donationEmailStatusMapType;
101104
const { id } = receiptEmailed;
102105
statusMap[id] = receiptEmailed;
103-
this.donationEmailStatusMap = statusMap;
104-
// this.requestUpdate();
106+
107+
this.donationEmailStatusMap = { ...statusMap };
108+
console.log(
109+
'RECEIPTS -- emailSent',
110+
this.donationEmailStatusMap,
111+
receiptEmailed
112+
);
105113
}
106114

107115
emailStatusMessageToDisplay(donationSentStatus: donationEmailStatus): string {
108116
switch (donationSentStatus.emailStatus) {
109117
case 'success':
110-
return 'Email sent';
118+
return 'Email receipt sent';
111119
case 'fail':
112-
return 'Email did not send';
120+
return 'Email receipt failed';
113121
default:
114122
return '';
115123
}
@@ -185,10 +193,6 @@ export class IauxMgcReceipts extends LitElement {
185193
} as donationEmailStatusMapType;
186194
statusMap[donation.id].emailStatus = 'pending';
187195
this.donationEmailStatusMap = statusMap;
188-
console.log(
189-
'this.donationEmailStatusMap',
190-
this.donationEmailStatusMap
191-
);
192196
}
193197
}}
194198
?disabled=${emailUnavailable}
@@ -237,11 +241,26 @@ export class IauxMgcReceipts extends LitElement {
237241
}
238242
iaux-button-style {
239243
display: inline-block;
240-
padding-right: 5px;
244+
}
245+
246+
.request-receipt {
247+
display: flex;
248+
flex-wrap: nowrap;
249+
align-content: center;
250+
justify-content: flex-start;
251+
align-items: center;
252+
gap: 20px;
253+
}
254+
255+
.sent-status.success,
256+
.sent-status.fail {
257+
padding: 5px;
258+
background: rgb(238, 253, 238);
259+
width: 135px;
260+
min-height: 20px;
241261
}
242262
.sent-status.success {
243263
color: rgb(33, 149, 24);
244-
cursor: pointer;
245264
border-left: 5px solid rgb(33, 149, 24);
246265
}
247266
.sent-status.fail {

0 commit comments

Comments
 (0)