Files
portal-zinn/src/App.tsx
2025-08-31 18:09:07 -04:00

45 lines
1.6 KiB
TypeScript

import {useAppSelector, useAppDispatch} from 'hooks/store';
import AuthenticationService from './services/authentication.service';
import {useEffect, useState} from 'react';
import {authenticationActions, selectError, selectIsAuthenticated, selectCredentials} from 'store/slices/Authentication.slice';
import hostService from 'services/url.service';
import LoggerFactory from './services/logger/LoggerFactory';
import Router from 'routers/router';
import PCastApiService from './services/pcast-api.service';
import { ApplicationCredentials } from '@techniker-me/pcast-api';
export default function App() {
const dispatch = useAppDispatch();
const [isInitialized, setIsInitialized] = useState(false);
const error = useAppSelector(selectError);
const credentials = useAppSelector(selectCredentials);
const isAuthenticated = useAppSelector(selectIsAuthenticated);
useEffect(() => {
LoggerFactory.applyLoggerConfig();
if (!isInitialized) {
AuthenticationService.setWebSocketUri(hostService.getWebSocketUrl());
setIsInitialized(true);
AuthenticationService.status?.subscribe(status => dispatch(authenticationActions.setStatus(status)));
}
}, [dispatch, isInitialized]);
useEffect(() => {
if (credentials.applicationId && credentials.secret && isAuthenticated) {
const appCredentials: ApplicationCredentials = {
id: credentials.applicationId,
secret: credentials.secret
};
PCastApiService.initialize(hostService.getPcastBaseUrlOrigin(), appCredentials);
}
}, [credentials, isAuthenticated]);
return (
<>
{error && <div>{error}</div>}
<Router />
</>
);
}