Skip to content

Commit 82996e7

Browse files
Merge pull request finos#1145 from aidanm3341/refactoring
(fixes finos#1018) formatting and slight refactors
2 parents e02122a + e473dff commit 82996e7

File tree

16 files changed

+220
-221
lines changed

16 files changed

+220
-221
lines changed

calm-hub-ui/src/ProtectedRoute.tsx

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
1-
import React, { ReactNode, useEffect, useState } from "react";
2-
import { User } from "oidc-client";
3-
import { authService } from "./authService";
1+
import React, { ReactNode, useEffect, useState } from 'react';
2+
import { User } from 'oidc-client';
3+
import { authService } from './authService.js';
44

55
interface ProtectedRouteProps {
6-
children: ReactNode;
6+
children: ReactNode;
77
}
88

99
const ProtectedRoute: React.FC<ProtectedRouteProps> = ({ children }) => {
10-
const [user, setUser] = useState<User | null>(null);
11-
const [loading, setLoading] = useState(true);
10+
const [user, setUser] = useState<User | null>(null);
11+
const [loading, setLoading] = useState(true);
1212

13-
useEffect(() => {
14-
const authenticate = async () => {
15-
const currentUser = await authService.getUser();
16-
if (currentUser && !currentUser.expired) {
17-
setUser(currentUser);
18-
} else if (window.location.search.includes("code=")) {
19-
const loggedInUser = await authService.processRedirect();
20-
setUser(loggedInUser);
21-
} else {
22-
await authService.login();
23-
}
24-
setLoading(false);
25-
};
13+
useEffect(() => {
14+
const authenticate = async () => {
15+
const currentUser = await authService.getUser();
16+
if (currentUser && !currentUser.expired) {
17+
setUser(currentUser);
18+
} else if (window.location.search.includes('code=')) {
19+
const loggedInUser = await authService.processRedirect();
20+
setUser(loggedInUser);
21+
} else {
22+
await authService.login();
23+
}
24+
setLoading(false);
25+
};
2626

27-
authenticate();
28-
}, []);
27+
authenticate();
28+
}, []);
2929

30-
if (loading) {
31-
return <div>Loading...</div>;
32-
}
30+
if (loading) {
31+
return <div>Loading...</div>;
32+
}
3333

34-
if (!user) {
35-
return <div>Redirecting to login...</div>;
36-
}
37-
return <>{children}</>;
34+
if (!user) {
35+
return <div>Redirecting to login...</div>;
36+
}
37+
return <>{children}</>;
3838
};
39-
export default ProtectedRoute;
39+
export default ProtectedRoute;

calm-hub-ui/src/authService.tsx

Lines changed: 71 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,96 @@
1-
import { UserManager, Log, User } from "oidc-client";
1+
import { UserManager, Log, User } from 'oidc-client';
22

33
const config = {
4-
authority: 'https://localhost:9443/realms/calm-hub-realm',
5-
client_id: 'calm-hub-authz-code',
6-
redirect_uri: window.location.origin,
7-
response_type: 'code',
8-
scope: 'openid profile architectures:read adrs:all',
9-
post_logout_redirect_uri: window.location.origin,
10-
automaticSilentRenew: true,
11-
filterProtocolClaims: true,
12-
loadUserInfo: true,
4+
authority: 'https://localhost:9443/realms/calm-hub-realm',
5+
client_id: 'calm-hub-authz-code',
6+
redirect_uri: window.location.origin,
7+
response_type: 'code',
8+
scope: 'openid profile architectures:read adrs:all',
9+
post_logout_redirect_uri: window.location.origin,
10+
automaticSilentRenew: true,
11+
filterProtocolClaims: true,
12+
loadUserInfo: true,
1313
};
1414

15-
let userManager = null;
15+
let userManager: UserManager | null = null;
1616
const isHttps = window.location.protocol === 'https:';
1717
if (isHttps) {
18-
userManager = new UserManager(config);
19-
Log.logger = console;
20-
Log.level = Log.INFO;
18+
userManager = new UserManager(config);
19+
Log.logger = console;
20+
Log.level = Log.INFO;
2121
}
2222

23-
export const getUser = async (): Promise<User | null> => {
24-
return await userManager.getUser();
25-
};
23+
export async function getUser(): Promise<User | null> {
24+
return (await userManager?.getUser()) || null;
25+
}
2626

27-
export const login = async (): Promise<void> => {
28-
await userManager.signinRedirect();
29-
};
27+
export async function login(): Promise<void> {
28+
await userManager?.signinRedirect();
29+
}
3030

31-
export const processRedirect = async (): Promise<User | null> => {
32-
try {
33-
await userManager.signinRedirectCallback();
34-
return await getUser();
35-
} catch (error) {
36-
console.error("Redirect Processing Error:", error);
37-
return null;
38-
}
39-
};
31+
export async function processRedirect(): Promise<User | null> {
32+
try {
33+
await userManager?.signinRedirectCallback();
34+
return await getUser();
35+
} catch (error) {
36+
console.error('Redirect Processing Error:', error);
37+
return null;
38+
}
39+
}
4040

41-
export const logout = async (): Promise<void> => {
42-
try {
43-
await userManager.signoutRedirect();
44-
} catch (error) {
45-
console.error("Logout Error:", error);
46-
}
47-
};
41+
export async function logout(): Promise<void> {
42+
try {
43+
await userManager?.signoutRedirect();
44+
} catch (error) {
45+
console.error('Logout Error:', error);
46+
}
47+
}
4848

49-
export const clearSession = async (): Promise<void> => {
50-
try {
51-
await userManager.removeUser();
52-
console.log("Session cleared successfully.");
53-
} catch (error) {
54-
console.error("Error clearing session:", error);
55-
}
56-
};
49+
export async function clearSession(): Promise<void> {
50+
try {
51+
await userManager?.removeUser();
52+
console.log('Session cleared successfully.');
53+
} catch (error) {
54+
console.error('Error clearing session:', error);
55+
}
56+
}
5757

58-
export const getToken = async (): Promise<string> => {
58+
export async function getToken(): Promise<string> {
5959
if (!isHttps) {
60-
return "";
60+
return '';
6161
}
62-
const user = await userManager.getUser();
62+
const user = await userManager?.getUser();
6363
if (user && !user.expired) {
6464
return user.access_token;
6565
}
6666

6767
if (user && user.expired) {
68-
try {
69-
const refreshedUser = await userManager.signinSilent();
70-
return refreshedUser.access_token;
71-
} catch (error) {
72-
console.error('Error refreshing token:', error);
73-
return "";
74-
}
68+
try {
69+
const refreshedUser = await userManager?.signinSilent();
70+
return refreshedUser?.access_token || '';
71+
} catch (error) {
72+
console.error('Error refreshing token:', error);
73+
return '';
74+
}
7575
}
76-
return "";
77-
};
76+
return '';
77+
}
7878

79-
export const checkAuthorityService = async (): Promise<boolean> => {
80-
try {
81-
const response = await fetch(config.authority, { method: 'HEAD' });
82-
return response.ok;
83-
} catch (error) {
84-
console.error("Authority Service Check Error:", error);
85-
return false;
86-
}
87-
};
79+
export async function checkAuthorityService(): Promise<boolean> {
80+
try {
81+
const response = await fetch(config.authority, { method: 'HEAD' });
82+
return response.ok;
83+
} catch (error) {
84+
console.error('Authority Service Check Error:', error);
85+
return false;
86+
}
87+
}
8888

8989
export const authService = {
90-
getUser,
91-
login,
92-
processRedirect,
93-
logout,
94-
clearSession,
95-
getToken,
90+
getUser,
91+
login,
92+
processRedirect,
93+
logout,
94+
clearSession,
95+
getToken,
9696
};

calm-hub-ui/src/components/navbar/Navbar.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import './Navbar.css';
22
import { NavLink } from 'react-router-dom';
33

4-
function Navbar() {
4+
export function Navbar() {
55
return (
66
<div className="navbar bg-base-100 border-b-2 border-base-200 text-primary-content">
77
<div className="navbar-start flex items-center">
@@ -55,4 +55,3 @@ function Navbar() {
5555
</div>
5656
);
5757
}
58-
export default Navbar;

calm-hub-ui/src/hub/Hub.tsx

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
import { useEffect, useState } from 'react';
22
import { ValueTable } from './components/value-table.js';
33
import { JsonRenderer } from './components/json-view.js';
4-
import {
5-
Namespace,
6-
PatternID,
7-
FlowID,
8-
ArchitectureID,
9-
Version,
10-
Data,
11-
} from '../model/calm.js';
4+
import { Namespace, PatternID, FlowID, ArchitectureID, Version, Data } from '../model/calm.js';
125
import {
136
fetchNamespaces,
147
fetchPatternIDs,
@@ -21,7 +14,7 @@ import {
2114
fetchFlow,
2215
fetchArchitecture,
2316
} from '../service/calm-service.js';
24-
import Navbar from '../components/navbar/Navbar.js';
17+
import { Navbar } from '../components/navbar/Navbar.js';
2518

2619
function Hub() {
2720
const [namespaces, setNamespaces] = useState<Namespace[]>([]);
@@ -150,7 +143,7 @@ function Hub() {
150143
/>
151144
)}
152145
</div>
153-
<JsonRenderer jsonString={ data } />
146+
<JsonRenderer jsonString={data} />
154147
</div>
155148
</>
156149
);

calm-hub-ui/src/hub/components/json-view.tsx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,24 @@ export function JsonRenderer({ jsonString }: JsonRendererProps) {
1212
const navigate = useNavigate();
1313
const jsonView = (
1414
<div>
15-
<button className="bg-primary hover:bg-blue-500 text-white font-bold py-2 px-4 rounded float-right" onClick={handleClick}>
15+
<button
16+
className="bg-primary hover:bg-blue-500 text-white font-bold py-2 px-4 rounded float-right"
17+
onClick={handleClick}
18+
>
1619
Visualize
1720
</button>
18-
<JsonView data={jsonString || ''} shouldExpandNode={allExpanded} style={defaultStyles} />
21+
<JsonView
22+
data={jsonString || ''}
23+
shouldExpandNode={allExpanded}
24+
style={defaultStyles}
25+
/>
1926
</div>
20-
2127
);
2228
function handleClick() {
2329
navigate('/visualizer', { state: jsonString });
24-
}
30+
}
2531

2632
const content = jsonString ? jsonView : defaultMessage;
2733

28-
return (
29-
<div className="p-5 flex-1 overflow-auto bg-[#eee]">{content}</div>
30-
);
34+
return <div className="p-5 flex-1 overflow-auto bg-[#eee]">{content}</div>;
3135
}

calm-hub-ui/src/index.tsx

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,36 @@
1-
import React from "react";
2-
import ReactDOM from "react-dom/client";
3-
import ProtectedRoute from "./ProtectedRoute";
1+
import React from 'react';
2+
import ReactDOM from 'react-dom/client';
3+
import ProtectedRoute from './ProtectedRoute.js';
44
import './index.css';
55
import '@patternfly/patternfly/patternfly.css';
6-
import { authService } from "./authService";
7-
import App from "./App";
6+
import { authService } from './authService.js';
7+
import App from './App.js';
88

9-
const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement);
9+
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
1010

1111
const LogoutButton: React.FC = () => {
12-
const handleLogout = async () => {
13-
await authService.logout();
14-
};
12+
const handleLogout = async () => {
13+
await authService.logout();
14+
};
1515

16-
return <button onClick={handleLogout} style={{ position: 'absolute', top: 10, right: 10 }}>Logout</button>;
16+
return (
17+
<button onClick={handleLogout} style={{ position: 'absolute', top: 10, right: 10 }}>
18+
Logout
19+
</button>
20+
);
1721
};
1822

1923
const isHttps = window.location.protocol === 'https:';
2024

2125
root.render(
22-
<React.StrictMode>
23-
{isHttps ? (
24-
<ProtectedRoute>
25-
<App />
26-
<LogoutButton />
27-
</ProtectedRoute>
28-
) : (
29-
<App />
30-
)}
31-
</React.StrictMode>
32-
);
26+
<React.StrictMode>
27+
{isHttps ? (
28+
<ProtectedRoute>
29+
<App />
30+
<LogoutButton />
31+
</ProtectedRoute>
32+
) : (
33+
<App />
34+
)}
35+
</React.StrictMode>
36+
);

calm-hub-ui/src/model/calm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ export type FlowID = string;
77
export type Flow = string;
88
export type Version = string;
99
export type Data = {
10-
name: Namespace,
11-
data: Pattern | Architecture | Flow | undefined
10+
name: Namespace;
11+
data: Pattern | Architecture | Flow | undefined;
1212
};

0 commit comments

Comments
 (0)