Skip to content

Commit

Permalink
Initial support for different build variants
Browse files Browse the repository at this point in the history
  • Loading branch information
user890104 committed Sep 8, 2023
1 parent b0f8caf commit 58fbb5a
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 23 deletions.
1 change: 1 addition & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ jobs:
cmd: build --base=/fauna-frontend/
env:
OAUTH_CLIENT_ID: ERBrlPWjf98L_nI8Moxr7Aqjy4no1eRU-zSOROc2RbU
VARIANT: initlab

- name: Upload production-ready build files
uses: actions/upload-artifact@v3
Expand Down
File renamed without changes
3 changes: 3 additions & 0 deletions src/hooks/useVariant.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export function useVariant() {
return import.meta.env.VARIANT;
}
53 changes: 30 additions & 23 deletions src/layout/NavBar.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Container, Image, Nav, Navbar, NavDropdown } from 'react-bootstrap';
import './NavBar.css';
import logo from '../assets/logo.svg';
import logo from '../assets/initlab/logo.svg';
import { useTranslation } from 'react-i18next';
import { NavLink } from 'react-router-dom';
import { useSelector } from 'react-redux';
Expand All @@ -16,6 +16,7 @@ import DoorOpenIcon from '../widgets/icons/DoorOpenIcon.jsx';
import { useGetCurrentUserQuery } from '../features/apiSlice.js';
import { useEffect } from 'react';
import i18n from '../i18n.js';
import { useVariant } from '../hooks/useVariant.js';

const NavBar = () => {
const {t} = useTranslation();
Expand All @@ -29,6 +30,8 @@ const NavBar = () => {
} = useGetCurrentUserQuery(undefined, {
skip: !isLoggedIn,
});
const variant = useVariant();
const isInitLab = variant === 'initlab';
const isBoardMember = isSuccess && data.roles.includes('board_member');

useEffect(function() {
Expand Down Expand Up @@ -67,35 +70,39 @@ const NavBar = () => {
<WarningIcon /> {t('views.doors.unknown')}
</>}
</Nav.Link>
<Nav.Link as={NavLink} to="/users/present">
<i className="fas fa-street-view" />{' '}
{t('views.navigation.presence')}
</Nav.Link>
<Nav.Link as={NavLink} to="/sensors">
<i className="fas fa-chart-line" />{' '}
{t('views.navigation.sensors')}
</Nav.Link>
{isBoardMember && <Nav.Link href={backendUrl + 'fauna/users'}>
<i className="fas fa-users" />{' '}
{t('views.navigation.labbers')}
</Nav.Link>}
{isInitLab && <>
<Nav.Link as={NavLink} to="/users/present">
<i className="fas fa-street-view" />{' '}
{t('views.navigation.presence')}
</Nav.Link>
<Nav.Link as={NavLink} to="/sensors">
<i className="fas fa-chart-line" />{' '}
{t('views.navigation.sensors')}
</Nav.Link>
{isBoardMember && <Nav.Link href={backendUrl + 'fauna/users'}>
<i className="fas fa-users" />{' '}
{t('views.navigation.labbers')}
</Nav.Link>}
</>}
{isLoggedIn ? <NavDropdown title={<>
<i className="fas fa-user" />{' '}
{t('views.navigation.account')}
</>} className="ms-0 ms-lg-auto">
<NavDropdown.Item href={backendUrl + 'users/edit'}>
{t('views.navigation.view_edit')}
</NavDropdown.Item>
<NavDropdown.Item href={backendUrl + 'user/network_devices'}>
{t('views.navigation.network_devices')}
</NavDropdown.Item>
<NavDropdown.Item href={backendUrl + 'oauth/applications'}>
{t('views.navigation.oauth_application_management')}
</NavDropdown.Item>
<NavDropdown.Item href={backendUrl + 'oauth/authorized_applications'}>
{t('views.navigation.oauth_token_management')}
</NavDropdown.Item>
<NavDropdown.Divider />
{isInitLab && <>
<NavDropdown.Item href={backendUrl + 'user/network_devices'}>
{t('views.navigation.network_devices')}
</NavDropdown.Item>
<NavDropdown.Item href={backendUrl + 'oauth/applications'}>
{t('views.navigation.oauth_application_management')}
</NavDropdown.Item>
<NavDropdown.Item href={backendUrl + 'oauth/authorized_applications'}>
{t('views.navigation.oauth_token_management')}
</NavDropdown.Item>
<NavDropdown.Divider />
</>}
<NavDropdown.Item as={NavLink} to="/logout">
{t('views.navigation.sign_out')}
</NavDropdown.Item>
Expand Down
8 changes: 8 additions & 0 deletions src/pages/Dashboard.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
import PresentUsersWrapper from '../widgets/PresentUsersWrapper/PresentUsersWrapper';
import SensorReadingsWrapper from '../widgets/SensorReadingsWrapper/SensorReadingsWrapper';
import { useVariant } from '../hooks/useVariant.js';
import { Navigate } from 'react-router-dom';

const Dashboard = () => {
const variant = useVariant();

if (variant === 'colibri') {
return (<Navigate to="/doors" />);
}

return (<>
<PresentUsersWrapper />
<SensorReadingsWrapper />
Expand Down
8 changes: 8 additions & 0 deletions src/pages/Sensors.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@ import { Fragment } from 'react';
import { Col, Row } from 'react-bootstrap';
import { useTranslation } from 'react-i18next';
import { grafana } from '../config';
import { useVariant } from '../hooks/useVariant.js';
import { Navigate } from 'react-router-dom';

const Sensors = () => {
const { t } = useTranslation();

const variant = useVariant();

if (variant === 'colibri') {
return (<Navigate to="/doors" />);
}

return (<>
<Row>
<h2>{t('views.sensors.title')}</h2>
Expand Down
1 change: 1 addition & 0 deletions vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export default defineConfig({
'DOOR_BACKEND_URL',
'MQTT_URL',
'OAUTH_CLIENT_ID',
'VARIANT',
],
plugins: [
react(),
Expand Down

0 comments on commit 58fbb5a

Please sign in to comment.