diff --git a/src/main/services/hydra-api.ts b/src/main/services/hydra-api.ts index 15d866cb..0e6de36b 100644 --- a/src/main/services/hydra-api.ts +++ b/src/main/services/hydra-api.ts @@ -1,4 +1,4 @@ -import axios, { AxiosError, AxiosHeaders, AxiosInstance } from "axios"; +import axios, { AxiosError, AxiosInstance } from "axios"; import { WindowManager } from "./window-manager"; import url from "url"; import { uploadGamesBatch } from "./library-sync"; diff --git a/src/renderer/achievements.html b/src/renderer/achievements.html new file mode 100644 index 00000000..a5289fc9 --- /dev/null +++ b/src/renderer/achievements.html @@ -0,0 +1,16 @@ + + + + + + Hydra + + + +
+ + + diff --git a/src/renderer/src/achievements.tsx b/src/renderer/src/achievements.tsx new file mode 100644 index 00000000..81804f83 --- /dev/null +++ b/src/renderer/src/achievements.tsx @@ -0,0 +1,72 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import i18n from "i18next"; +import { initReactI18next } from "react-i18next"; +import { Provider } from "react-redux"; +import LanguageDetector from "i18next-browser-languagedetector"; +import { HashRouter, Route, Routes } from "react-router-dom"; + +import "@fontsource/noto-sans/400.css"; +import "@fontsource/noto-sans/500.css"; +import "@fontsource/noto-sans/700.css"; + +import "react-loading-skeleton/dist/skeleton.css"; +import "react-tooltip/dist/react-tooltip.css"; + +import { store } from "./store"; + +import resources from "@locales"; + +import { logger } from "./logger"; +import { addCookieInterceptor } from "./cookies"; +import * as Sentry from "@sentry/react"; +import { AchievementNotification } from "./pages/achievements/notification/achievement-notification"; + +Sentry.init({ + dsn: import.meta.env.RENDERER_VITE_SENTRY_DSN, + integrations: [ + Sentry.browserTracingIntegration(), + Sentry.replayIntegration(), + ], + tracesSampleRate: 1.0, + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, + release: await window.electron.getVersion(), +}); + +console.log = logger.log; + +const isStaging = await window.electron.isStaging(); +addCookieInterceptor(isStaging); + +i18n + .use(LanguageDetector) + .use(initReactI18next) + .init({ + resources, + fallbackLng: "en", + interpolation: { + escapeValue: false, + }, + }) + .then(async () => { + const userPreferences = await window.electron.getUserPreferences(); + + if (userPreferences?.language) { + i18n.changeLanguage(userPreferences.language); + } else { + window.electron.updateUserPreferences({ language: i18n.language }); + } + }); + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + + + } /> + + + + +);