Files
cinny/src/index.tsx
T

84 lines
2.4 KiB
TypeScript
Raw Normal View History

2023-06-12 21:15:23 +10:00
/* eslint-disable import/first */
import * as Sentry from '@sentry/react';
2021-07-28 18:45:52 +05:30
import React from 'react';
2024-01-21 23:50:56 +11:00
import { createRoot } from 'react-dom/client';
2023-06-12 21:15:23 +10:00
import { enableMapSet } from 'immer';
import '@fontsource-variable/inter/index.css';
2023-06-12 21:15:23 +10:00
import 'folds/dist/style.css';
import { configClass, varsClass } from 'folds';
const sentryDsn = import.meta.env.VITE_SENTRY_DSN;
if (sentryDsn) {
Sentry.init({
dsn: sentryDsn,
environment: import.meta.env.MODE,
release: import.meta.env.VITE_APP_VERSION,
// browserTracingIntegration omitted — it injects sentry-trace/baggage headers
// into outgoing fetch calls, which breaks Synapse CORS on matrix.lotusguild.org
// No propagation targets — we don't control the Matrix server's CORS allow-list
tracePropagationTargets: [],
tracesSampleRate: 0,
// Don't send PII (IPs, usernames) — this is a private chat app
sendDefaultPii: false,
// Forward Sentry logs to the dashboard
enableLogs: true,
beforeSend(event) {
// Drop any event that may have leaked an access token into breadcrumbs/data
if (JSON.stringify(event).includes('access_token')) return null;
return event;
},
});
}
2023-06-12 21:15:23 +10:00
enableMapSet();
2025-08-29 15:04:52 +05:30
import './index.css';
2021-07-28 18:45:52 +05:30
2024-09-07 21:45:55 +08:00
import { trimTrailingSlash } from './app/utils/common';
2021-07-28 18:45:52 +05:30
import App from './app/pages/App';
// import i18n (needs to be bundled ;))
import './app/i18n';
import { pushSessionToSW } from './sw-session';
import { getFallbackSession } from './app/state/sessions';
2023-06-12 21:15:23 +10:00
document.body.classList.add(configClass, varsClass);
2021-07-28 18:45:52 +05:30
2024-09-07 21:45:55 +08:00
// Register Service Worker
if ('serviceWorker' in navigator) {
2024-09-09 18:45:20 +10:00
const swUrl =
import.meta.env.MODE === 'production'
? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js`
: `/dev-sw.js?dev-sw`;
const sendSessionToSW = () => {
const session = getFallbackSession();
pushSessionToSW(session?.baseUrl, session?.accessToken);
};
navigator.serviceWorker.register(swUrl).then(sendSessionToSW);
navigator.serviceWorker.ready.then(sendSessionToSW);
navigator.serviceWorker.addEventListener('message', (ev) => {
const { type } = ev.data ?? {};
if (type === 'requestSession') {
sendSessionToSW();
}
2024-09-09 18:45:20 +10:00
});
2024-09-07 21:45:55 +08:00
}
2024-01-21 23:50:56 +11:00
const mountApp = () => {
const rootContainer = document.getElementById('root');
if (rootContainer === null) {
console.error('Root container element not found!');
return;
}
const root = createRoot(rootContainer);
root.render(<App />);
};
mountApp();