mirror of
https://github.com/kremalicious/portfolio.git
synced 2024-12-22 09:13:19 +01:00
switch tracking
This commit is contained in:
parent
769d2a69e2
commit
f05d8a9f50
@ -1,2 +1,4 @@
|
|||||||
GITHUB_TOKEN=xxx
|
GITHUB_TOKEN=xxx
|
||||||
NEXT_PUBLIC_TYPEKIT_ID=xxx
|
NEXT_PUBLIC_TYPEKIT_ID=xxx
|
||||||
|
NEXT_PUBLIC_UMAMI_SCRIPT_URL=https://umami.example.com/umami.js
|
||||||
|
NEXT_PUBLIC_UMAMI_WEBSITE_ID=1
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -74,6 +74,8 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
NEXT_PUBLIC_TYPEKIT_ID: ${{ secrets.NEXT_PUBLIC_TYPEKIT_ID }}
|
NEXT_PUBLIC_TYPEKIT_ID: ${{ secrets.NEXT_PUBLIC_TYPEKIT_ID }}
|
||||||
|
NEXT_PUBLIC_UMAMI_SCRIPT_URL: ${{ secrets.NEXT_PUBLIC_UMAMI_SCRIPT_URL }}
|
||||||
|
NEXT_PUBLIC_UMAMI_WEBSITE_ID: ${{ secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID }}
|
||||||
|
|
||||||
# - uses: actions/upload-artifact@v1
|
# - uses: actions/upload-artifact@v1
|
||||||
# if: github.ref == 'refs/heads/main'
|
# if: github.ref == 'refs/heads/main'
|
||||||
|
@ -10,8 +10,6 @@
|
|||||||
"gpg": "/gpg.txt",
|
"gpg": "/gpg.txt",
|
||||||
"addressbook": "/matthias-kretschmann.vcf",
|
"addressbook": "/matthias-kretschmann.vcf",
|
||||||
"bugs": "https://github.com/kremalicious/portfolio/issues/new",
|
"bugs": "https://github.com/kremalicious/portfolio/issues/new",
|
||||||
"matomoUrl": "https://analytics.kremalicious.com",
|
|
||||||
"matomoSite": "2",
|
|
||||||
"allowedHosts": [
|
"allowedHosts": [
|
||||||
"matthiaskretschmann.com",
|
"matthiaskretschmann.com",
|
||||||
"beta.matthiaskretschmann.com",
|
"beta.matthiaskretschmann.com",
|
||||||
|
9
package-lock.json
generated
9
package-lock.json
generated
@ -11,7 +11,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@giphy/js-fetch-api": "^4.4.0",
|
"@giphy/js-fetch-api": "^4.4.0",
|
||||||
"@kremalicious/react-feather": "^2.1.0",
|
"@kremalicious/react-feather": "^2.1.0",
|
||||||
"@socialgouv/matomo-next": "^1.4.0",
|
|
||||||
"@yaireo/relative-time": "^1.0.2",
|
"@yaireo/relative-time": "^1.0.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"framer-motion": "^7.6.7",
|
"framer-motion": "^7.6.7",
|
||||||
@ -3067,14 +3066,6 @@
|
|||||||
"@sinonjs/commons": "^1.7.0"
|
"@sinonjs/commons": "^1.7.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@socialgouv/matomo-next": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@socialgouv/matomo-next/-/matomo-next-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-S+kNX7dwo/cL0VE7GWY8Gnf3t7aeXD4CzallRz9IEttjHJDJI2S8xOrcyaGimYpInr3nDNo+WqeYrafKUdsn1g==",
|
|
||||||
"peerDependencies": {
|
|
||||||
"next": ">= 9.5.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@svgr/babel-plugin-add-jsx-attribute": {
|
"node_modules/@svgr/babel-plugin-add-jsx-attribute": {
|
||||||
"version": "6.5.1",
|
"version": "6.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz",
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@giphy/js-fetch-api": "^4.4.0",
|
"@giphy/js-fetch-api": "^4.4.0",
|
||||||
"@kremalicious/react-feather": "^2.1.0",
|
"@kremalicious/react-feather": "^2.1.0",
|
||||||
"@socialgouv/matomo-next": "^1.4.0",
|
|
||||||
"@yaireo/relative-time": "^1.0.2",
|
"@yaireo/relative-time": "^1.0.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"framer-motion": "^7.6.7",
|
"framer-motion": "^7.6.7",
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
import { render, screen, act } from '@testing-library/react'
|
import { render, screen, act } from '@testing-library/react'
|
||||||
import Site from '.'
|
import Site from '.'
|
||||||
import { dataLocation } from '../../../tests/__fixtures__/location'
|
import { dataLocation } from '../../../tests/__fixtures__/location'
|
||||||
|
|
||||||
jest.mock('@socialgouv/matomo-next')
|
|
||||||
;(global.fetch as jest.Mock) = jest.fn(() =>
|
;(global.fetch as jest.Mock) = jest.fn(() =>
|
||||||
Promise.resolve({
|
Promise.resolve({
|
||||||
ok: true,
|
ok: true,
|
||||||
|
@ -1,30 +1,29 @@
|
|||||||
import { useEffect } from 'react'
|
|
||||||
import { useRouter } from 'next/router'
|
import { useRouter } from 'next/router'
|
||||||
import ThemeSwitch from '../../components/ThemeSwitch'
|
import ThemeSwitch from '../../components/ThemeSwitch'
|
||||||
import Header from '../../components/Header'
|
import Header from '../../components/Header'
|
||||||
import Footer from '../../components/Footer'
|
import Footer from '../../components/Footer'
|
||||||
import MetaFavicon from '../../components/Meta/Favicon'
|
import MetaFavicon from '../../components/Meta/Favicon'
|
||||||
import { init } from '@socialgouv/matomo-next'
|
|
||||||
import meta from '../../../_content/meta.json'
|
import meta from '../../../_content/meta.json'
|
||||||
import HostnameCheck from '../../components/HostnameCheck'
|
import HostnameCheck from '../../components/HostnameCheck'
|
||||||
import styles from './index.module.css'
|
import styles from './index.module.css'
|
||||||
|
import Script from 'next/script'
|
||||||
|
import { UMAMI_SCRIPT_URL, UMAMI_WEBSITE_ID } from '../../lib/umami'
|
||||||
|
|
||||||
|
const isProduction = process.env.NODE_ENV === 'production'
|
||||||
|
|
||||||
export default function Site({ children }: { children: React.ReactNode }) {
|
export default function Site({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
// init Matomo tracking
|
|
||||||
useEffect(() => {
|
|
||||||
if (window._paq) return
|
|
||||||
init({ url: meta.matomoUrl, siteId: meta.matomoSite })
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{isProduction && (
|
||||||
|
<Script src={UMAMI_SCRIPT_URL} data-website-id={UMAMI_WEBSITE_ID} />
|
||||||
|
)}
|
||||||
<HostnameCheck allowedHosts={meta.allowedHosts} />
|
<HostnameCheck allowedHosts={meta.allowedHosts} />
|
||||||
<MetaFavicon />
|
<MetaFavicon />
|
||||||
<ThemeSwitch />
|
<ThemeSwitch />
|
||||||
|
|
||||||
<Header small={router.asPath !== '/'} />
|
<Header small={router.pathname !== '/'} />
|
||||||
<main className={styles.screen}>{children}</main>
|
<main className={styles.screen}>{children}</main>
|
||||||
<Footer />
|
<Footer />
|
||||||
</>
|
</>
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
//
|
//
|
||||||
// Get GitHub repos
|
// Get GitHub repos
|
||||||
//
|
//
|
||||||
|
if (!process.env.GITHUB_TOKEN) {
|
||||||
|
throw new Error('Missing GitHub environment variable')
|
||||||
|
}
|
||||||
|
|
||||||
import data from '../../_content/repos.json'
|
import data from '../../_content/repos.json'
|
||||||
import Repo from '../interfaces/repo'
|
import Repo from '../interfaces/repo'
|
||||||
|
8
src/lib/umami.ts
Normal file
8
src/lib/umami.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const UMAMI_SCRIPT_URL = process.env.NEXT_PUBLIC_UMAMI_SCRIPT_URL
|
||||||
|
const UMAMI_WEBSITE_ID = process.env.NEXT_PUBLIC_UMAMI_WEBSITE_ID
|
||||||
|
|
||||||
|
if (!UMAMI_SCRIPT_URL || !UMAMI_WEBSITE_ID) {
|
||||||
|
throw new Error('Missing Umami environment variables')
|
||||||
|
}
|
||||||
|
|
||||||
|
export { UMAMI_SCRIPT_URL, UMAMI_WEBSITE_ID }
|
Loading…
Reference in New Issue
Block a user