Merged in fix/adjust-datalayer (pull request #62)

Fix/adjust datalayer

Approved-by: Michael Zetterberg
This commit is contained in:
Arvid Norlin
2024-03-08 14:06:25 +00:00
committed by Michael Zetterberg
5 changed files with 40 additions and 5 deletions

View File

@@ -2,6 +2,7 @@ import { notFound } from "next/navigation"
import { request } from "@/lib/request" import { request } from "@/lib/request"
import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql" import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql"
import { GetCurrentBlockPageTrackingData } from "@/lib/graphql/Query/CurrentBlockPageTrackingData.graphql"
import ContentPage from "@/components/Current/ContentPage" import ContentPage from "@/components/Current/ContentPage"
import Header from "@/components/Current/Header" import Header from "@/components/Current/Header"
@@ -9,6 +10,7 @@ import Tracking from "@/components/Current/Tracking"
import type { PageArgs, LangParams, UriParams } from "@/types/params" import type { PageArgs, LangParams, UriParams } from "@/types/params"
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage" import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"
import { TrackingData } from "@/types/requests/trackingData"
export default async function CurrentContentPage({ export default async function CurrentContentPage({
params, params,
@@ -26,7 +28,7 @@ export default async function CurrentContentPage({
url: searchParams.uri, url: searchParams.uri,
}, },
{ {
tags: [`${searchParams.uri}-${params.lang}`] tags: [`${searchParams.uri}-${params.lang}`],
} }
) )
@@ -36,11 +38,24 @@ export default async function CurrentContentPage({
console.log("SearchParams URI: ", searchParams.uri) console.log("SearchParams URI: ", searchParams.uri)
throw new Error("Not found") throw new Error("Not found")
} }
// This is currently to be considered a temporary solution to provide the tracking with a few values in english to align with existing reports
const pageDataForTracking = await request<TrackingData>(
GetCurrentBlockPageTrackingData,
{ uid: response.data.all_current_blocks_page.items[0].system.uid },
{
tags: [`${searchParams.uri}-en`],
}
)
const pageData = response.data.all_current_blocks_page.items[0] const pageData = response.data.all_current_blocks_page.items[0]
const trackingData = { const trackingData = {
lang: params.lang,
publishedDate: pageData.system.updated_at, publishedDate: pageData.system.updated_at,
createdDate: pageData.system.created_at, createdDate: pageData.system.created_at,
pageId: pageData.system.uid, pageId: pageData.system.uid,
englishUrl: pageDataForTracking.data?.current_blocks_page.url,
} }
return ( return (

View File

@@ -9,9 +9,13 @@ import { usePathname, useSearchParams } from "next/navigation"
import { useEffect, useState } from "react" import { useEffect, useState } from "react"
function createPageObject(trackingData: TrackingData) { function createPageObject(trackingData: TrackingData) {
const englishSegments = trackingData.englishUrl
? trackingData.englishUrl.split("/").filter((seg?: string) => seg)
: null
const [lang, ...segments] = trackingData.pathName const [lang, ...segments] = trackingData.pathName
.split("/") .split("/")
.filter((v: string) => v) .filter((seg: string) => seg)
function getSiteSections(segments: string[]): SiteSectionObject { function getSiteSections(segments: string[]): SiteSectionObject {
/* /*
@@ -39,10 +43,12 @@ function createPageObject(trackingData: TrackingData) {
} }
return sitesections return sitesections
} }
const sitesections = getSiteSections(segments) const sitesections = englishSegments
? getSiteSections(englishSegments)
: getSiteSections(segments)
const { host: domain, href: fullurl, origin } = window.location const { host: domain, href: fullurl, origin } = window.location
const page_obj = { const page_obj = {
pagename: segments.join("|"), pagename: englishSegments ? englishSegments.join("|") : segments.join("|"),
pagetype: "contentpage", pagetype: "contentpage",
pageurl: origin + trackingData.pathName, pageurl: origin + trackingData.pathName,
fullurl, fullurl,
@@ -53,7 +59,7 @@ function createPageObject(trackingData: TrackingData) {
querystring: trackingData.queryString || "", querystring: trackingData.queryString || "",
pageid: trackingData.pageId, pageid: trackingData.pageId,
// sessionid: "<unique identifier of session>", // base on what? // sessionid: "<unique identifier of session>", // base on what?
domainlanguage: lang, domainlanguage: trackingData.lang ? trackingData.lang : lang,
hotelbrand: "scandic", hotelbrand: "scandic",
siteversion: "new-web", siteversion: "new-web",
...sitesections, ...sitesections,

View File

@@ -0,0 +1,5 @@
query GetCurrentBlockPageTrackingData($uid: String!) {
current_blocks_page(uid: $uid, locale: "en") {
url
}
}

View File

@@ -1,12 +1,18 @@
import { Lang } from "../lang"
export type TrackingProps = { export type TrackingProps = {
pageData: { pageData: {
pageId: string pageId: string
createdDate: string createdDate: string
publishedDate: string publishedDate: string
englishUrl?: string
lang: Lang
} }
} }
export type TrackingData = { export type TrackingData = {
lang: Lang
englishUrl?: string
pathName: string pathName: string
queryString: string queryString: string
pageId: string pageId: string

View File

@@ -0,0 +1,3 @@
export type TrackingData = {
current_blocks_page: { url: string; title: string }
}