Skip to content

Commit 23f6344

Browse files
Merge branch 'mentionDisplay' of https://github.com/RishiChaubey31/discord-slash-commands into mentionDisplay
2 parents 15ddfad + 74ab8c5 commit 23f6344

File tree

3 files changed

+70
-26
lines changed

3 files changed

+70
-26
lines changed

src/utils/formatUserDetails.ts

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { UserResponseType } from "../typeDefinitions/rdsUser";
22

3-
export function convertTimeStamp(userDetails: UserResponseType) {
3+
export function convertTimeStamp(userDetails: UserResponseType, flag: boolean) {
44
const timestamp = userDetails.user?.discordJoinedAt;
55

66
if (timestamp) {
@@ -9,27 +9,55 @@ export function convertTimeStamp(userDetails: UserResponseType) {
99
const day = String(date.getDate()).padStart(2, "0");
1010
const month = String(date.getMonth() + 1).padStart(2, "0");
1111
const year = date.getFullYear();
12+
if (flag) {
13+
const monthName = date.toLocaleString("default", { month: "short" });
14+
const formattedDate = `${day} ${monthName}, ${year}`;
15+
return formattedDate;
16+
}
1217
const formattedDate = `${day}/${month}/${year}`;
1318
return formattedDate;
1419
}
1520

1621
return "N/A";
1722
}
23+
export function convertEpochToDate(timestamp: number | undefined) {
24+
if (timestamp) {
25+
const date = new Date(timestamp);
26+
27+
const day = String(date.getDate()).padStart(2, "0");
28+
const month = date.toLocaleString("default", { month: "short" });
29+
const year = date.getFullYear();
30+
const formattedDate = `${day} ${month}, ${year}`;
31+
32+
return formattedDate;
33+
}
34+
35+
return "N/A";
36+
}
1837

1938
export function formatUserDetails(
2039
userDetails: UserResponseType,
2140
flag: boolean
2241
) {
23-
const convertedTimestamp = convertTimeStamp(userDetails);
24-
25-
const userId = `**User Id :** ${userDetails.user?.id}`;
26-
const userName = `**User Name :** ${userDetails.user?.username}`;
27-
const userFullName = `**Full Name :** ${userDetails.user?.first_name} ${userDetails.user?.last_name}`;
28-
const userState = `**State :** ${userDetails.user?.state}`;
29-
const discordJoinedAt = `**Joined Server on :** ${convertedTimestamp}`;
42+
const convertedTimestamp = convertTimeStamp(userDetails, flag);
43+
const accountCreationDate = convertEpochToDate(userDetails.user?.created_at);
44+
45+
const userId = " ".repeat(30) + `**Id:** ${userDetails.user?.id}`;
46+
const userName =
47+
" ".repeat(13) + `**Username:** ${userDetails.user?.username}`;
48+
const userFullName = `${
49+
flag ? " ".repeat(13) + "**Full Name:**" : "**Full Name :**"
50+
} ${userDetails.user?.first_name} ${userDetails.user?.last_name}`;
51+
const userState = `${flag ? " ".repeat(23) + "**State:**" : "**State :**"} ${
52+
userDetails.user?.state
53+
}`;
54+
const discordJoinedAt = `${
55+
flag ? " ".repeat(4) + "**Joined Discord:**" : "**Joined Server on :**"
56+
} ${convertedTimestamp}`;
57+
const accountCreated = `**Account Created:** ${accountCreationDate}`;
3058

3159
if (!flag)
3260
return `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;
3361

34-
return `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`;
62+
return `## User Details\n${userName}\n${userState}\n\n${userFullName}\n${userId}\n\n${accountCreated}\n${discordJoinedAt}`;
3563
}

tests/fixtures/user.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export const user = {
22
id: "iODXB6ns8jaZB9p0XlBw",
33
incompleteUserDetails: false,
44
discordJoinedAt: "2023-08-08T11:40:42.522000+00:00",
5+
created_at: 1692748800000,
56
discordId: "858838385330487336",
67
github_display_name: "John Doe",
78
updated_at: 1694888822719,
@@ -178,6 +179,7 @@ export const userWithoutDiscordJoinedAt = {
178179
id: "DWcTUhbC5lRXfDjZRp06",
179180
incompleteUserDetails: false,
180181
discordJoinedAt: "",
182+
created_at: 1692748800000,
181183
discordId: "504855562094247953",
182184
github_display_name: "John Doe",
183185
updated_at: 1694888822719,

tests/unit/utils/formatUserDetails.test.ts

Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import {
44
userResponse,
55
userWithoutDiscordJoinedAtResponse,
66
} from "../../fixtures/user";
7-
import { convertTimeStamp } from "../../../src/utils/formatUserDetails";
7+
import {
8+
convertTimeStamp,
9+
convertEpochToDate,
10+
} from "../../../src/utils/formatUserDetails";
811

912
describe("formatUserDetails function", () => {
1013
it("Should return a string", () => {
@@ -16,15 +19,18 @@ describe("formatUserDetails function", () => {
1619
it("should format user details correctly in dev mode", () => {
1720
const formattedDetails = formatUserDetails(userResponse, true).trim();
1821

19-
const userId = `**User Id :** iODXB6ns8jaZB9p0XlBw`;
20-
const userName = `**User Name :** johndoe`;
21-
const userFullName = `**Full Name :** John Doe`;
22-
const userState = `**State :** ACTIVE`;
23-
const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp(
24-
userResponse
22+
const userId = " ".repeat(30) + `**Id:** iODXB6ns8jaZB9p0XlBw`;
23+
const userName = " ".repeat(13) + `**Username:** johndoe`;
24+
const userFullName = " ".repeat(13) + `**Full Name:** John Doe`;
25+
const userState = " ".repeat(23) + `**State:** ACTIVE`;
26+
const discordJoinedAt =
27+
" ".repeat(4) +
28+
`**Joined Discord:** ${convertTimeStamp(userResponse, true)}`;
29+
const accountCreated = `**Account Created:** ${convertEpochToDate(
30+
userResponse.user.created_at
2531
)}`;
2632

27-
const expectedFormattedDetails = `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`;
33+
const expectedFormattedDetails = `## User Details\n${userName}\n${userState}\n\n${userFullName}\n${userId}\n\n${accountCreated}\n${discordJoinedAt}`;
2834
expect(formattedDetails).toEqual(expectedFormattedDetails);
2935
});
3036

@@ -34,7 +40,8 @@ describe("formatUserDetails function", () => {
3440
const userFullName = `**Full Name :** John Doe`;
3541
const userState = `**State :** ACTIVE`;
3642
const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp(
37-
userResponse
43+
userResponse,
44+
false
3845
)}`;
3946

4047
const expectedFormattedDetails = `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;
@@ -47,15 +54,21 @@ describe("formatUserDetails function", () => {
4754
true
4855
).trim();
4956

50-
const userId = `**User Id :** DWcTUhbC5lRXfDjZRp06`;
51-
const userName = `**User Name :** johndoe`;
52-
const userFullName = `**Full Name :** John Doe`;
53-
const userState = `**State :** IDLE`;
54-
const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp(
55-
userWithoutDiscordJoinedAtResponse
57+
const userId = " ".repeat(30) + `**Id:** DWcTUhbC5lRXfDjZRp06`;
58+
const userName = " ".repeat(13) + `**Username:** johndoe`;
59+
const userFullName = " ".repeat(13) + `**Full Name:** John Doe`;
60+
const userState = " ".repeat(23) + `**State:** IDLE`;
61+
const discordJoinedAt =
62+
" ".repeat(4) +
63+
`**Joined Discord:** ${convertTimeStamp(
64+
userWithoutDiscordJoinedAtResponse,
65+
true
66+
)}`;
67+
const accountCreated = `**Account Created:** ${convertEpochToDate(
68+
userResponse.user.created_at
5669
)}`;
5770

58-
const expectedFormattedDetails = `## User Details\n${userId}\n${userName}\n${userFullName}\n${userState}\n${discordJoinedAt}`;
71+
const expectedFormattedDetails = `## User Details\n${userName}\n${userState}\n\n${userFullName}\n${userId}\n\n${accountCreated}\n${discordJoinedAt}`;
5972
expect(formattedDetails).toEqual(expectedFormattedDetails);
6073
});
6174

@@ -68,7 +81,8 @@ describe("formatUserDetails function", () => {
6881
const userFullName = `**Full Name :** John Doe`;
6982
const userState = `**State :** IDLE`;
7083
const discordJoinedAt = `**Joined Server on :** ${convertTimeStamp(
71-
userWithoutDiscordJoinedAtResponse
84+
userWithoutDiscordJoinedAtResponse,
85+
false
7286
)}`;
7387

7488
const expectedFormattedDetails = `## User Details\n${userFullName}\n${userState}\n${discordJoinedAt}`;

0 commit comments

Comments
 (0)