diff --git a/src/components/MyKiva/BadgesSection.vue b/src/components/MyKiva/BadgesSection.vue new file mode 100644 index 0000000000..6ce6401ebf --- /dev/null +++ b/src/components/MyKiva/BadgesSection.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/graphql/query/contentfulEntries.graphql b/src/graphql/query/contentfulEntries.graphql index e8870e5f54..d3016e5197 100644 --- a/src/graphql/query/contentfulEntries.graphql +++ b/src/graphql/query/contentfulEntries.graphql @@ -4,12 +4,14 @@ query contentfulEntries( $contentType: String! $contentKey: String $preview: Boolean + $limit: Int ) { contentful { entries( contentType: $contentType contentKey: $contentKey preview: $preview + limit: $limit ) } } diff --git a/src/graphql/query/userAchievementProgress.graphql b/src/graphql/query/userAchievementProgress.graphql new file mode 100644 index 0000000000..82feb9edc6 --- /dev/null +++ b/src/graphql/query/userAchievementProgress.graphql @@ -0,0 +1,16 @@ +query UserAchievementProgress { + userAchievementProgress { + id + tieredLendingAchievements { + id + status + totalProgressToAchievement + tiers { + target + tierStatement + completedDate + learnMoreURL + } + } + } +} \ No newline at end of file diff --git a/src/pages/Portfolio/MyKiva/MyKivaPage.vue b/src/pages/Portfolio/MyKiva/MyKivaPage.vue index 25047cddf0..95815b4cb9 100644 --- a/src/pages/Portfolio/MyKiva/MyKivaPage.vue +++ b/src/pages/Portfolio/MyKiva/MyKivaPage.vue @@ -57,12 +57,16 @@ BADGES AND ACHIEVEMENTS -
- + My impact journeys + + !lender.value); @@ -133,6 +142,30 @@ const handleSelectedLoan = loan => { fetchLoanUpdates(activeLoan.value.id); }; +const fetchUserAchievements = () => { + apollo.query({ query: userAchievementProgressQuery }) + .then(result => { + userAchievements.value = result.data?.userAchievementProgress?.tieredLendingAchievements ?? []; + }).catch(e => { + logReadQueryError(e, 'MyKivaPage userAchievementProgressQuery'); + }); +}; + +const fetchBadgesData = () => { + apollo.query({ + query: contentfulEntriesQuery, + variables: { + contentType: 'challenge', + limit: 200, + } + }) + .then(result => { + badgesData.value = result.data?.contentful?.entries?.items ?? []; + }).catch(e => { + logReadQueryError(e, 'MyKivaPage contentfulEntriesQuery'); + }); +}; + apollo.query({ query: myKivaQuery }) .then(result => { userInfo.value = result.data?.my ?? {}; @@ -157,5 +190,8 @@ onMounted(() => { ); $kvTrackEvent('portfolio', 'view', 'new-my-kiva'); + + fetchBadgesData(); + fetchUserAchievements(); });