diff --git a/Version b/Version index 7560320..bf462cb 100644 --- a/Version +++ b/Version @@ -1 +1 @@ -3.7.9 \ No newline at end of file +3.7.10 \ No newline at end of file diff --git a/directory/src/routes/Error.jsx b/directory/src/routes/Error.jsx index 66f153d..c54a7ff 100644 --- a/directory/src/routes/Error.jsx +++ b/directory/src/routes/Error.jsx @@ -20,7 +20,7 @@ import { useHeader } from '@/state/header'; import VoiceElement from '@/component/voice'; import spine from '!/libs/spine-player' import '!/libs/spine-player.css' -import useUmami from '@parcellab/react-use-umami'; +import useUmami from '@/state/insights'; const voiceOnAtom = atomWithStorage('voiceOn', false) const config = JSON.parse(import.meta.env.VITE_ERROR_FILES) diff --git a/directory/src/routes/path/Changelogs.jsx b/directory/src/routes/path/Changelogs.jsx index bc13a1c..99281dd 100644 --- a/directory/src/routes/path/Changelogs.jsx +++ b/directory/src/routes/path/Changelogs.jsx @@ -6,7 +6,7 @@ import React, { import classes from '@/scss/changelogs/Changelogs.module.scss' import { useHeader } from '@/state/header'; import { useAppbar } from '@/state/appbar'; -import useUmami from '@parcellab/react-use-umami' +import useUmami from '@/state/insights' import Border from '@/component/border'; export default function Changelogs() { diff --git a/directory/src/routes/path/Home.jsx b/directory/src/routes/path/Home.jsx index 1c3c893..70644ed 100644 --- a/directory/src/routes/path/Home.jsx +++ b/directory/src/routes/path/Home.jsx @@ -20,7 +20,7 @@ import { useAtom } from 'jotai' import { atomWithStorage } from 'jotai/utils'; import CharIcon from '@/component/char_icon'; import Border from '@/component/border'; -import useUmami from '@parcellab/react-use-umami'; +import useUmami from '@/state/insights'; import Switch from '@/component/switch'; import SearchBox from '@/component/search_box'; diff --git a/directory/src/routes/path/Operator.jsx b/directory/src/routes/path/Operator.jsx index d1e1fa3..dafb460 100644 --- a/directory/src/routes/path/Operator.jsx +++ b/directory/src/routes/path/Operator.jsx @@ -19,7 +19,7 @@ import { useHeader } from '@/state/header'; import { useAppbar } from '@/state/appbar'; import { useBackgrounds } from '@/state/background'; import VoiceElement from '@/component/voice'; -import useUmami from '@parcellab/react-use-umami' +import useUmami from '@/state/insights' import spine from '!/libs/spine-player' import '!/libs/spine-player.css' import Border from '@/component/border'; diff --git a/directory/src/state/insights.js b/directory/src/state/insights.js new file mode 100644 index 0000000..224a4ae --- /dev/null +++ b/directory/src/state/insights.js @@ -0,0 +1,41 @@ +import React from 'react'; + +export const registerUmamiScript = (url, websiteId, dataDomain) => { + if (url && websiteId && dataDomain) { + const head = document.getElementsByTagName('head')[0] + const script = document.createElement('script') + script.type = 'text/javascript'; + script.src = url; + script.async = 'async' + script.defer = 'defer' + script.setAttribute('data-auto-track', 'false') + script.setAttribute('data-domains', dataDomain) + script.setAttribute('data-website-id', websiteId) + head.appendChild(script); + } +} + +export default (url, referrer, websiteId, skipPageView) => { + skipPageView = skipPageView || false + React.useEffect(() => { + if (!skipPageView && window.umami) { + try { + const umami = window.umami + umami.track(props => ({ ...props, url: url, referrer: referrer, website: websiteId })) + } catch (err) { + console.warn && console.warn(err.message) + } + } + }, [url, referrer, websiteId, skipPageView]) + + const trackEvent = (eventValue) => { + try { + const umami = window.umami + umami.track(eventValue) + } catch (err) { + console.warn && console.warn(err.message) + } + } + + return trackEvent +} \ No newline at end of file diff --git a/src/components/settings.js b/src/components/settings.js index df07788..5290e3c 100644 --- a/src/components/settings.js +++ b/src/components/settings.js @@ -88,13 +88,21 @@ export default class Settings { this.#isInsightsInited = true this.#doNotTrack = doNotTrack if (this.#doNotTrack) return - window.umami?.trackView(`/${import.meta.env.VITE_LINK}${isWallpaperEngine ? "?steam" : ""}`); + try { + window.umami?.track(props => ({ ...props, url: `/${import.meta.env.VITE_LINK}${isWallpaperEngine ? "?steam" : ""}` })); + } catch(e) { + console.warn && console.warn(e.message) + } } functionInsights(functionName, toSkip = false) { if (!this.#isInsightsInited || this.#doNotTrack || import.meta.env.MODE === 'development' || functionName === this.#lastFunctionInsights || toSkip) return this.#lastFunctionInsights = functionName - window.umami?.trackEvent(`${functionName}`); + try { + window.umami?.track(`${functionName}`); + } catch (e) { + console.warn && console.warn(e.message) + } } setFPS(value) {