19
19
</div >
20
20
</template >
21
21
22
- <script setup>
23
- import {
24
- ref , computed , inject , onMounted
25
- } from ' vue' ;
22
+ <script >
26
23
import hasEverLoggedInQuery from ' #src/graphql/query/shared/hasEverLoggedIn.graphql' ;
27
24
import { userHasEverLoggedInBefore } from ' #src/util/optimizelyUserMetrics' ;
28
25
import logReadQueryError from ' #src/util/logReadQueryError' ;
29
- import experimentAssignmentQuery from ' #src/graphql/query/experimentAssignment.graphql' ;
30
-
31
26
import CookieBanner from ' #src/components/WwwFrame/CookieBanner' ;
27
+ import experimentAssignmentQuery from ' #src/graphql/query/experimentAssignment.graphql' ;
28
+ import { trackExperimentVersion } from ' #src/util/experiment/experimentUtils' ;
32
29
import GlobalPromoContentful from ' ./PromotionalBanner/GlobalPromotionalBannerContentful' ;
33
30
import TheNewHeader from ' ./TheNewHeader' ;
34
31
import TheHeader from ' ./TheHeader' ;
@@ -37,42 +34,78 @@ import TheBasketBar from './TheBasketBar';
37
34
38
35
const NAV_UPDATE_EXP_KEY = ' kiva_nav_update' ;
39
36
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' ;
45
73
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 }
65
77
});
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
+ });
71
94
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
+ };
76
109
< / script>
77
110
78
111
< style lang= " scss" >
0 commit comments