Skip to content

Commit 977a5aa

Browse files
author
jaime infante
committed
feat: add nav update experiment
1 parent f2f66d3 commit 977a5aa

File tree

1 file changed

+72
-39
lines changed

1 file changed

+72
-39
lines changed

src/components/WwwFrame/WwwPage.vue

Lines changed: 72 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,13 @@
1919
</div>
2020
</template>
2121

22-
<script setup>
23-
import {
24-
ref, computed, inject, onMounted
25-
} from 'vue';
22+
<script>
2623
import hasEverLoggedInQuery from '#src/graphql/query/shared/hasEverLoggedIn.graphql';
2724
import { userHasEverLoggedInBefore } from '#src/util/optimizelyUserMetrics';
2825
import logReadQueryError from '#src/util/logReadQueryError';
29-
import experimentAssignmentQuery from '#src/graphql/query/experimentAssignment.graphql';
30-
3126
import CookieBanner from '#src/components/WwwFrame/CookieBanner';
27+
import experimentAssignmentQuery from '#src/graphql/query/experimentAssignment.graphql';
28+
import { trackExperimentVersion } from '#src/util/experiment/experimentUtils';
3229
import GlobalPromoContentful from './PromotionalBanner/GlobalPromotionalBannerContentful';
3330
import TheNewHeader from './TheNewHeader';
3431
import TheHeader from './TheHeader';
@@ -37,42 +34,78 @@ import TheBasketBar from './TheBasketBar';
3734
3835
const NAV_UPDATE_EXP_KEY = 'kiva_nav_update';
3936
40-
const apollo = inject('apollo');
41-
const route = inject('route'); // If using vue-router's provide/inject, otherwise use useRoute()
42-
const grayBackground = ref(false);
43-
const hideSearchInHeader = ref(false);
44-
const mainClass = ref('');
37+
export default {
38+
name: 'WwwPage',
39+
inject: [
40+
'apollo',
41+
'cookieStore',
42+
],
43+
components: {
44+
CookieBanner,
45+
GlobalPromoContentful,
46+
TheBasketBar,
47+
TheFooter,
48+
TheHeader,
49+
TheNewHeader,
50+
},
51+
props: {
52+
grayBackground: {
53+
type: Boolean,
54+
default: false,
55+
},
56+
hideSearchInHeader: {
57+
type: Boolean,
58+
default: false,
59+
},
60+
mainClass: {
61+
type: [Object, String],
62+
default: '',
63+
},
64+
},
65+
data() {
66+
return {
67+
isKivaAppReferral: false,
68+
isNavUpdateExp: false,
69+
};
70+
},
71+
created() {
72+
this.isKivaAppReferral = this.$route?.query?.kivaAppReferral === 'true';
4573
46-
const isKivaAppReferral = ref(route?.query?.kivaAppReferral === 'true');
47-
const isNavUpdateExp = ref(false);
48-
49-
try {
50-
const experimentData = apollo.readQuery({
51-
query: experimentAssignmentQuery,
52-
variables: { id: NAV_UPDATE_EXP_KEY }
53-
});
54-
if (experimentData?.experiment) {
55-
isNavUpdateExp.value = experimentData.experiment.version === 'b';
56-
}
57-
} catch (e) {
58-
// fallback: stick with default
59-
}
60-
61-
onMounted(() => {
62-
try {
63-
const data = apollo.readQuery({
64-
query: hasEverLoggedInQuery,
74+
const cachedData = this.apollo.readQuery({
75+
query: experimentAssignmentQuery,
76+
variables: { id: NAV_UPDATE_EXP_KEY }
6577
});
66-
userHasEverLoggedInBefore(data?.hasEverLoggedIn);
67-
} catch (e) {
68-
logReadQueryError(e, 'User has ever logged in');
69-
}
70-
});
78+
if (cachedData?.experiment) {
79+
this.isNavUpdateExp = cachedData.experiment.version === 'b';
80+
trackExperimentVersion(
81+
this.apollo,
82+
this.$kvTrackEvent,
83+
'event-tracking',
84+
NAV_UPDATE_EXP_KEY,
85+
'EXP-MP-1696-Aug2025'
86+
);
87+
}
88+
},
89+
mounted() {
90+
try {
91+
const data = this.apollo.readQuery({
92+
query: hasEverLoggedInQuery,
93+
});
7194
72-
const mainClasses = computed(() => [
73-
mainClass.value,
74-
{ 'tw-bg-secondary': grayBackground.value },
75-
]);
95+
userHasEverLoggedInBefore(data?.hasEverLoggedIn);
96+
} catch (e) {
97+
logReadQueryError(e, 'User has ever logged in');
98+
}
99+
},
100+
computed: {
101+
mainClasses() {
102+
return [
103+
this.mainClass,
104+
{ 'tw-bg-secondary': this.grayBackground },
105+
];
106+
},
107+
}
108+
};
76109
</script>
77110
78111
<style lang="scss">

0 commit comments

Comments
 (0)