Skip to content

Commit 1e66ac6

Browse files
committed
Clean up enrollments and products. Add username to homepage
1 parent 89acf41 commit 1e66ac6

File tree

5 files changed

+65
-32
lines changed

5 files changed

+65
-32
lines changed

application/frontend-javascript/src/handlebarsHelpers.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,23 @@ export const helpers = {
33
const dollars = (cents / 100).toFixed(2);
44
return `${dollars}`;
55
},
6-
};
6+
7+
equals: function (a, b) {
8+
return a === b;
9+
},
10+
prettyPrintDate: function (isoString) {
11+
const date = new Date(isoString);
12+
13+
const options = {
14+
year: 'numeric',
15+
month: 'long',
16+
day: 'numeric',
17+
hour: 'numeric',
18+
minute: 'numeric',
19+
hour12: false,
20+
timeZoneName: 'short'
21+
};
22+
23+
return date.toLocaleString('en-GB', options);
24+
}
25+
};

application/frontend-javascript/src/main.js

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,6 @@ function authenticatedOrNot(req, res, next) {
6666

6767
function authenticate(req, { token }) {
6868
req.session.token = token;
69-
// req.session.email = email;
70-
// req.session.requestedEmail = requestedEmail;
71-
// req.session.userId = userId;
72-
// req.session.verified = verified;
7369
}
7470

7571
function unauthenticate(req) {
@@ -104,13 +100,13 @@ app.set('views', path.join(__dirname, "views"));
104100
const static_dir = path.join(path.dirname(__dirname), 'assets');
105101
app.use("/assets", Express.static(static_dir))
106102

107-
app.get('/sign-in', unauthenticated, renderSignedOut("sign-in", { title: "Sign in" }))
108-
app.get('/sign-up', unauthenticated, renderSignedOut("sign-up", { title: "Sign-up" }))
109-
app.get('/sign-up-success', unauthenticated, renderSignedOut("sign-up-success", { title: "Sign-up success" }))
103+
app.get('/sign-in', unauthenticated, renderSignedOut("sign-in", { title: "Sign In" }))
104+
app.get('/sign-up', unauthenticated, renderSignedOut("sign-up", { title: "Sign Up" }))
105+
app.get('/sign-up-success', unauthenticated, renderSignedOut("sign-up-success", { title: "Sign Up Success" }))
110106
app.get('/user/details', authenticated, routeUserDetails)
111107
app.post('/user/details', authenticated, routeUserDetailsPost)
112108
app.get('/logout', authenticated, routeLogout)
113-
app.get('/', authenticated, render("home", { title: "Home" }))
109+
app.get('/', authenticated, routeHome)
114110
app.get('/verify-email', authenticatedOrNot, routeVerifyEmail);
115111
app.post('/sign-in', unauthenticated, routeSignIn);
116112
app.post('/sign-up', unauthenticated, routeSignUp);
@@ -119,6 +115,15 @@ app.get('/card/products', authenticated, routeCardProducts);
119115
app.post('/card/enrollment', authenticated, routeRequestedEnrollment);
120116
app.get('/card/enrollments', authenticated, routeCardEnrollments);
121117

118+
// Default metadata for requests.
119+
const metadata = {
120+
environment: "browser",
121+
devicePlatform: "unknown",
122+
deviceModel: "unknown",
123+
deviceOSVersion: "unknown",
124+
deviceOrientation: "unknown"
125+
};
126+
122127
async function fetchUserDetails(token) {
123128
const response = await fetch(endpoints["user-details"], {
124129
method: "POST",
@@ -135,7 +140,7 @@ async function fetchUserDetails(token) {
135140
throw new Error(error);
136141
}
137142

138-
const { userId, primaryEmailStatus } = r;
143+
const { userId, primaryEmailStatus, username } = r;
139144
const { email, requestedEmail, verified } =
140145
("unverifiedEmail" in primaryEmailStatus)
141146
? { email: primaryEmailStatus.unverifiedEmail.email, requestedEmail: null, verified: false }
@@ -145,26 +150,33 @@ async function fetchUserDetails(token) {
145150
? { email: primaryEmailStatus.verifiedButRequestedNewEmail.verifiedEmail, requestedEmail: primaryEmailStatus.verifiedButRequestedNewEmail.requestedEmail, verified: false }
146151
: new Error(`Unknown state of primaryEmailStatus. ${JSON.stringify(primaryEmailStatus)}`);
147152

148-
return { userId, email, requestedEmail, verified };
153+
return { userId, email, requestedEmail, verified, username };
149154
}
150155

156+
async function routeHome(req, res) {
157+
try {
158+
const { username } = await fetchUserDetails(req.session.token);
151159

152-
// Default metadata for requests.
153-
const metadata = {
154-
environment: "browser",
155-
devicePlatform: "unknown",
156-
deviceModel: "unknown",
157-
deviceOSVersion: "unknown",
158-
deviceOrientation: "unknown"
159-
};
160+
res.render("home", {
161+
layout: layouts.main,
162+
locals: {
163+
title: "Home",
164+
username
165+
}
166+
});
167+
} catch (error) {
168+
console.error("Error on homepage:", error);
169+
errorPage(res, "Failed to load homepage");
170+
}
171+
}
160172

161173
async function renderUserDetails(req, res, { successMessage, failureMessage }) {
162174

163175
const { email, userId, verified, requestedEmail } = await fetchUserDetails(req.session.token);
164176
res.render("details", {
165177
layout: layouts.main,
166178
locals: {
167-
title: "User details",
179+
title: "User Details",
168180
email: email,
169181
userId: userId,
170182
requestedEmail: requestedEmail,
@@ -174,6 +186,7 @@ async function renderUserDetails(req, res, { successMessage, failureMessage }) {
174186
}
175187
});
176188
}
189+
177190
async function routeUserDetails(req, res) {
178191
try {
179192
return await renderUserDetails(req, res, {});
@@ -240,14 +253,14 @@ async function routeVerifyEmail(req,res) {
240253
const error = getError(r);
241254
res.render("verify-email", {
242255
layout: layouts.signedOut,
243-
locals: { title: "Verify email", error },
256+
locals: { title: "Verify Email", error },
244257
});
245258
return;
246259
}
247260

248261
res.render(`verify-email`, {
249262
layout: layouts.signedOut,
250-
locals: { title: "Verify email" },
263+
locals: { title: "Verify Email" },
251264
})
252265
} catch (error) {
253266
console.error("Error verifying email:", error);
@@ -281,7 +294,7 @@ async function routeSignIn(req, res) {
281294

282295
res.render("sign-in", {
283296
layout: layouts.signedOut,
284-
locals: { title: "Sign in", error },
297+
locals: { title: "Sign In", error },
285298
});
286299
return;
287300
}
@@ -339,7 +352,7 @@ async function routeSignUp(req, res) {
339352

340353
res.render("sign-up", {
341354
layout: layouts.signedOut,
342-
locals: { title: "Sign-up", error, username, email }
355+
locals: { title: "Sign Up", error, username, email }
343356
});
344357
return;
345358
}
@@ -518,6 +531,7 @@ app.get('/event-bus-yml', (req, res) => {
518531
res.status(500).json({ error: 'Error reading YAML file' });
519532
}
520533
});
534+
521535
app.get('/event-bus.yml', (req, res) => {
522536
try {
523537
const fileContents = readFileSync('/ambar-yml/ambar-config.yaml', 'utf8');

application/frontend-javascript/src/views/card/enrollments.handlebars

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414
<p class="text-md font-large text-gray-900 truncate">
1515
{{this.productName}}
1616
</p>
17-
<p class="text-xs font-medium text-gray-700">
18-
Requested On: {{this.requestedDate}}
17+
<p class="text-xs font-medium {{#if (equals this.status "ACCEPTED")}} text-green-700 {{ else }} text-red-700 {{/if}}">
18+
Status: {{this.status}}
1919
</p>
2020
<p class="text-xs font-medium text-gray-700">
21-
Status: {{this.status}}
21+
Status Reason: {{this.statusReason}}
2222
</p>
2323
<p class="text-xs font-medium text-gray-700">
24-
Code: {{this.statusReason}}
24+
Requested: {{prettyPrintDate this.requestedDate}}
2525
</p>
2626
<p class="text-xs font-medium text-gray-700">
27-
Reviewed On: {{this.reviewedOn}}
27+
Reviewed: {{prettyPrintDate this.reviewedOn}}
2828
</p>
2929
</div>
3030
</div>

application/frontend-javascript/src/views/card/products.handlebars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="w-full px-4">
44
<div class="flex flex-col md:flex-row justify-center items-center">
55
<div class="order-last md:order-first pt-8 pr-0 md:pr-16 md:pt-0 flex justify-center w-full md:w-auto">
6-
<img src="/assets/images/card.png" class="mx-auto" style="width: 200px; height: fit-content; transform: rotate(-11deg)">
6+
<img src="/assets/images/illustration-2.png" class="mx-auto" style="width: 250px; height: fit-content;">
77
</div>
88
<ul class="order-first md:order-last">
99
{{#each locals.products}}

application/frontend-javascript/src/views/home.handlebars

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="mx-auto max-w-7xl px-6 pt-2 flex flex-col lg:flex-row items-center justify-center">
44
<div class="text-center lg:text-left lg:mr-16 lg:pb-16">
55
<h4 class="text-4xl font-bold tracking-tight text-gray-700 flex items-center justify-center lg:justify-start">
6-
Welcome
6+
Welcome, {{ locals.username }}!
77
<svg
88
xmlns="http://www.w3.org/2000/svg"
99
viewBox="0 0 24 24"
@@ -12,7 +12,7 @@
1212
<path fill-rule="evenodd" d="M9 4.5a.75.75 0 01.721.544l.813 2.846a3.75 3.75 0 002.576 2.576l2.846.813a.75.75 0 010 1.442l-2.846.813a3.75 3.75 0 00-2.576 2.576l-.813 2.846a.75.75 0 01-1.442 0l-.813-2.846a3.75 3.75 0 00-2.576-2.576l-2.846-.813a.75.75 0 010-1.442l2.846-.813A3.75 3.75 0 007.466 7.89l.813-2.846A.75.75 0 019 4.5zM18 1.5a.75.75 0 01.728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 010 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 01-1.456 0l-.258-1.036a2.625 2.625 0 00-1.91-1.91l-1.036-.258a.75.75 0 010-1.456l1.036-.258a2.625 2.625 0 001.91-1.91l.258-1.036A.75.75 0 0118 1.5zM16.5 15a.75.75 0 01.712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 010 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 01-1.422 0l-.395-1.183a1.5 1.5 0 00-.948-.948l-1.183-.395a.75.75 0 010-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0116.5 15z" clip-rule="evenodd"></path>
1313
</svg>
1414
</h4>
15-
<p class="mt-3 ml-1 text-xl leading-8 text-gray-500 lg:pb-16">Discover event sourcing!</p>
15+
<p class="mt-3 ml-1 text-xl leading-8 text-gray-500 lg:pb-16">Would you like a credit card?</p>
1616
</div>
1717

1818
<img src="/assets/images/illustration-1.png" class="w-2/5 mt-8 lg:ml-16">

0 commit comments

Comments
 (0)