added pagination logic to ambassador page

This commit is contained in:
Philip Ellis
2023-09-28 10:50:26 -05:00
parent 33661c3bfb
commit 2a4d89b71d
3 changed files with 34 additions and 15 deletions

View File

@@ -79,6 +79,13 @@ const config = {
darkTheme: darkCodeTheme,
additionalLanguages: ['http', 'java', 'ruby', 'php', 'csharp'],
},
mermaid: {
options: {
er: {
layoutDirection: 'RL'
}
},
}
}),
plugins: plugins,

View File

@@ -12,23 +12,35 @@ export default function AmbassadorCards({
const [loadingCards, setLoadingCards] = React.useState(true);
const getPosts = async () => {
const data = await getAmbassadors(expert);
let data = await getAmbassadors(expert, 1, 0);
const resultset = []
if (data.members) {
const memberDetails = await getAmbassadorDetails(data.members.map(item => item.id))
for (const member of data.members) {
const memberDetail = memberDetails.users.filter(item => item.id === member.id)[0]
if (member.avatar_template.includes("developer.sailpoint.com") && memberDetail.bio_excerpt && memberDetail.bio_excerpt.length > 150) {
resultset.push(await getMemberList(member, memberDetail))
}
}
resultset.sort((a, b) => a.date - b.date)
setCardData(resultset);
if (data.meta) {
let count = 0
while (count < data.meta.total) {
data = await getAmbassadors(expert, 50, count);
count += 50
if (data.members) {
const memberDetails = await getAmbassadorDetails(data.members.map(item => item.id))
for (const member of data.members) {
const memberDetail = memberDetails.users.filter(item => item.id === member.id)[0]
if (member.avatar_template.includes("developer.sailpoint.com") && memberDetail.bio_excerpt && memberDetail.bio_excerpt.length > 150) {
resultset.push(await getMemberList(member, memberDetail))
}
}
}
}
} else {
setCardData(undefined);
setLoadingCards(false);
return
}
resultset.sort((a, b) => a.date - b.date)
setCardData(resultset);
setLoadingCards(false);
};

View File

@@ -10,16 +10,16 @@ export async function getTopPosts() {
return [];
}
}
export async function getAmbassadors(expert) {
export async function getAmbassadors(expert, limit, offset) {
try {
if (expert) {
const response = await fetch(
discourseBaseURL() + 'groups/ambassador_expert/members.json',
discourseBaseURL() + 'groups/ambassador_expert/members.json?limit=' + limit + '&offset=' + offset,
);
return await response.json();
} else {
const response = await fetch(
discourseBaseURL() + 'groups/ambassador/members.json',
discourseBaseURL() + 'groups/ambassador/members.json?limit=' + limit + '&offset=' + offset,
);
return await response.json();
}