Skip to content
This repository was archived by the owner on Apr 19, 2023. It is now read-only.

Commit 98e268c

Browse files
✨ Use Gravatar for pictures
1 parent 5a17595 commit 98e268c

File tree

4 files changed

+43
-7
lines changed

4 files changed

+43
-7
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"@types/jest": "^24.0.12",
2727
"@types/jsonwebtoken": "^8.3.2",
2828
"@types/marked": "^0.6.5",
29+
"@types/md5": "^2.1.33",
2930
"@types/mustache": "^0.8.32",
3031
"@types/mysql": "^2.15.6",
3132
"@types/node": "^12.0.0",
@@ -56,6 +57,7 @@
5657
"jsonwebtoken": "^8.5.1",
5758
"marked": "^0.6.2",
5859
"maxmind": "^3.0.3",
60+
"md5": "^2.2.1",
5961
"mustache": "^3.0.1",
6062
"mysql": "^2.17.1",
6163
"node-cache": "^4.2.0",

src/crud/user.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ import {
1919
NotificationEmails,
2020
CacheCategories
2121
} from "../interfaces/enum";
22-
import { getEmailObject } from "./email";
22+
import { getEmailObject, getEmail } from "./email";
2323
import { cachedQuery, deleteItemFromCache } from "../helpers/cache";
24+
import md5 from "md5";
2425

2526
/**
2627
* Get a list of all users
@@ -90,6 +91,17 @@ export const getUserByEmail = async (email: string, secureOrigin = false) => {
9091
export const updateUser = async (id: number, user: KeyValue) => {
9192
user.updatedAt = dateToDateTime(new Date());
9293
user = removeReadOnlyValues(user);
94+
if (user.primaryEmail) {
95+
const originalUser = await getUser(id);
96+
if ((originalUser.profilePicture || "").includes("ui-avatars.com")) {
97+
const emailDetails = await getEmail(user.primaryEmail);
98+
user.profilePicture = `https://www.gravatar.com/avatar/${md5(
99+
emailDetails.email
100+
)}?d=${encodeURIComponent(
101+
`https://ui-avatars.com/api/?bold=true&name=${user.name}`
102+
)}`;
103+
}
104+
}
93105
deleteItemFromCache(CacheCategories.USER, id);
94106
deleteItemFromCache(CacheCategories.USER_EMAILS, id);
95107
return await query(`UPDATE users SET ${setValues(user)} WHERE id = ?`, [

src/helpers/cache.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,9 @@ export const cachedQuery = async (
5555
values?: (string | number | boolean | Date | undefined)[]
5656
) => {
5757
const cachedItem = getItemFromCache(category, item);
58-
if (cachedItem) {
59-
console.log("Returned from cache");
60-
return cachedItem;
61-
}
58+
if (cachedItem) return cachedItem;
6259
const databaseItem = await query(queryString, values);
6360
if (databaseItem) {
64-
console.log("Returned from database");
6561
storeItemInCache(category, item, databaseItem);
6662
return databaseItem;
6763
}

yarn.lock

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,13 @@
564564
resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.6.5.tgz#3cf2a56ef615dad24aaf99784ef90a9eba4e29d8"
565565
integrity sha512-6kBKf64aVfx93UJrcyEZ+OBM5nGv4RLsI6sR1Ar34bpgvGVRoyTgpxn4ZmtxOM5aDTAaaznYuYUH8bUX3Nk3YA==
566566

567+
"@types/md5@^2.1.33":
568+
version "2.1.33"
569+
resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.1.33.tgz#8c8dba30df4ad0e92296424f08c4898dd808e8df"
570+
integrity sha512-8+X960EtKLoSblhauxLKy3zzotagjoj3Jt1Tx9oaxUdZEPIBl+mkrUz6PNKpzJgkrKSN9YgkWTA29c0KnLshmA==
571+
dependencies:
572+
"@types/node" "*"
573+
567574
"@types/mime@*":
568575
version "2.0.1"
569576
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
@@ -1180,6 +1187,11 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2:
11801187
escape-string-regexp "^1.0.5"
11811188
supports-color "^5.3.0"
11821189

1190+
charenc@~0.0.1:
1191+
version "0.0.2"
1192+
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
1193+
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
1194+
11831195
charm@~0.1.1:
11841196
version "0.1.2"
11851197
resolved "https://registry.yarnpkg.com/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296"
@@ -1448,6 +1460,11 @@ cross-spawn@^6.0.0:
14481460
shebang-command "^1.2.0"
14491461
which "^1.2.9"
14501462

1463+
crypt@~0.0.1:
1464+
version "0.0.2"
1465+
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
1466+
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
1467+
14511468
crypto-random-string@^1.0.0:
14521469
version "1.0.0"
14531470
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
@@ -2684,7 +2701,7 @@ is-binary-path@^1.0.0:
26842701
dependencies:
26852702
binary-extensions "^1.0.0"
26862703

2687-
is-buffer@^1.1.5:
2704+
is-buffer@^1.1.5, is-buffer@~1.1.1:
26882705
version "1.1.6"
26892706
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
26902707
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
@@ -3713,6 +3730,15 @@ maxmind@^3.0.3:
37133730
dependencies:
37143731
tiny-lru "6.0.1"
37153732

3733+
md5@^2.2.1:
3734+
version "2.2.1"
3735+
resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
3736+
integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
3737+
dependencies:
3738+
charenc "~0.0.1"
3739+
crypt "~0.0.1"
3740+
is-buffer "~1.1.1"
3741+
37163742
media-typer@0.3.0:
37173743
version "0.3.0"
37183744
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"

0 commit comments

Comments
 (0)