@@ -77,6 +77,7 @@ import useBadgeData, {
77
77
import IconChoice from ' #src/assets/icons/inline/achievements/icon_choice.svg' ;
78
78
import _throttle from ' lodash/throttle' ;
79
79
import EquityBadge from ' #src/assets/icons/inline/achievements/equity-badge.svg' ;
80
+ import basketItemsQuery from ' #src/graphql/query/basketItems.graphql' ;
80
81
81
82
const BASKET_LIMIT_SIZE_FOR_EXP = 3 ;
82
83
const PHOTO_PATH = ' https://www-kiva-org.freetls.fastly.net/img/' ;
@@ -91,6 +92,7 @@ const categoryNames = {
91
92
92
93
const $kvTrackEvent = inject (' $kvTrackEvent' );
93
94
const apollo = inject (' apollo' );
95
+ const cookieStore = inject (' cookieStore' );
94
96
const router = useRouter ();
95
97
96
98
const {
@@ -110,6 +112,7 @@ const { addedLoan } = toRefs(props);
110
112
111
113
const myKivaExperimentEnabled = ref (false );
112
114
const userData = ref ({});
115
+ const basketData = ref ([]);
113
116
const contributingAchievements = ref ([]);
114
117
const showModalContent = ref (false );
115
118
const headerBottomPosition = ref (0 );
@@ -185,6 +188,23 @@ const fetchUserData = async () => {
185
188
});
186
189
};
187
190
191
+ const fetchBasketData = async () => {
192
+ await apollo .query ({
193
+ query: basketItemsQuery,
194
+ variables: {
195
+ basketId: cookieStore .get (' kvbskt' ) || null ,
196
+ },
197
+ }).then (({ data }) => {
198
+ basketData .value = data? .shop ? .basket ? .items ? .values ?? [];
199
+ }).catch (e => {
200
+ logFormatter (e, ' Modal ATB Basket Data' );
201
+ });
202
+ };
203
+
204
+ const loansIdsInBasket = computed (() => {
205
+ return basketData .value .map (item => item .id );
206
+ });
207
+
188
208
const isFirstLoan = computed (() => {
189
209
return isGuest .value || ! userData .value ? .my ? .loans ? .totalCount ;
190
210
});
@@ -242,7 +262,8 @@ const fetchPostCheckoutAchievements = async loanIds => {
242
262
243
263
watch (addedLoan, async () => {
244
264
if (myKivaExperimentEnabled .value && ! isGuest .value ) {
245
- fetchPostCheckoutAchievements ([addedLoan .value ? .id ]);
265
+ await fetchBasketData ();
266
+ fetchPostCheckoutAchievements ([... loansIdsInBasket .value , addedLoan .value ? .id ]);
246
267
} else if (addedLoan .value ? .basketSize < BASKET_LIMIT_SIZE_FOR_EXP ) {
247
268
modalVisible .value = true ;
248
269
}
0 commit comments