Skip to content

Commit

Permalink
Merge pull request #767 from BIBSYSDEV/master2
Browse files Browse the repository at this point in the history
Update master
  • Loading branch information
elkebab authored Jun 8, 2020
2 parents 006099c + 8470767 commit 1c8644b
Show file tree
Hide file tree
Showing 20 changed files with 684 additions and 251 deletions.
560 changes: 454 additions & 106 deletions package-lock.json

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
"@material-ui/lab": "^4.0.0-alpha.55",
"@material-ui/pickers": "^3.2.10",
"@material-ui/styles": "^4.10.0",
"@uppy/aws-s3-multipart": "^1.6.4",
"@uppy/core": "^1.10.4",
"@uppy/dashboard": "^1.8.5",
"@uppy/react": "^1.6.5",
"@uppy/aws-s3-multipart": "^1.7.0",
"@uppy/core": "^1.10.5",
"@uppy/dashboard": "^1.9.0",
"@uppy/react": "^1.7.0",
"aws-amplify": "^3.0.8",
"axios": "^0.19.2",
"date-fns": "^2.14.0",
"deepmerge": "^4.2.2",
"formik": "^2.0.7",
"formik": "^2.1.4",
"i18next": "^19.4.5",
"i18next-browser-languagedetector": "^4.2.0",
"react": "^16.13.1",
Expand Down Expand Up @@ -79,7 +79,7 @@
"@cypress/instrument-cra": "^1.1.1",
"@istanbuljs/nyc-config-typescript": "^1.0.1",
"@types/jest": "^25.2.1",
"@types/node": "^14.0.10",
"@types/node": "^14.0.11",
"@types/react": "^16.9.35",
"@types/react-dom": "^16.9.8",
"@types/react-redux": "^7.1.9",
Expand All @@ -91,11 +91,11 @@
"cypress": "^4.7.0",
"faker": "^4.1.0",
"husky": "^4.2.5",
"nyc": "^15.0.1",
"nyc": "^15.1.0",
"prettier": "^2.0.5",
"pretty-quick": "^2.0.1",
"start-server-and-test": "^1.11.0",
"ts-node": "^8.10.2",
"typescript": "^3.9.3"
"typescript": "^3.9.5"
}
}
9 changes: 5 additions & 4 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,9 @@ const App: FC = () => {

const dispatch = useDispatch();
const user = useSelector((store: RootStore) => store.user);
// Authority/Orcid modal should always be opened on first login
const [showAuthorityOrcidModal, setShowAuthorityOrcidModal] = useState(!localStorage.getItem('previouslyLoggedIn'));
const [isLoadingUser, setIsLoadingUser] = useState(true);
const [authorities, isLoadingAuthorities, handleNewSearchTerm] = useFetchAuthorities(user.name);
const [authorityDataUpdated, setAuthorityDataUpdated] = useState(false);

useEffect(() => {
if (USE_MOCK_DATA) {
Expand Down Expand Up @@ -125,8 +124,8 @@ const App: FC = () => {
}
} else {
dispatch(setPossibleAuthorities(authorities));
setShowAuthorityOrcidModal(true);
}
setAuthorityDataUpdated(true);
}
};
if (user.name) {
Expand All @@ -149,7 +148,9 @@ const App: FC = () => {
</StyledContent>
<Footer />
</StyledApp>
{!isLoadingAuthorities && showAuthorityOrcidModal && <AuthorityOrcidModal authority={user.authority} />}
{!localStorage.getItem('previouslyLoggedIn') && !isLoadingAuthorities && authorityDataUpdated && (
<AuthorityOrcidModal authority={user.authority} />
)}
</BrowserRouter>
);
};
Expand Down
16 changes: 8 additions & 8 deletions src/layout/Logout.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
import React from 'react';
import React, { FC } from 'react';
import { useTranslation } from 'react-i18next';
import { Link } from 'react-router-dom';
import { Link as MuiLink } from '@material-ui/core';
import styled from 'styled-components';

import Heading from '../components/Heading';
import NormalText from '../components/NormalText';

const StyledLoginComponent = styled.div`
align-items: center;
text-align: center;
`;

const StyledText = styled.div`
const StyledText = styled(NormalText)`
margin-top: 1rem;
display: block;
font-weight: bold;
`;

const Logout: React.FC = () => {
const { t } = useTranslation('common');
const Logout: FC = () => {
const { t } = useTranslation('authorization');

return (
<StyledLoginComponent>
{t('logged_out')}
<Heading>{t('logged_out')}</Heading>
<MuiLink component={Link} to="/">
<StyledText>{t('back_to_home')}</StyledText>
</MuiLink>
Expand Down
6 changes: 3 additions & 3 deletions src/layout/header/Login.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react';
import React, { FC } from 'react';
import { useTranslation } from 'react-i18next';
import { useDispatch, useSelector } from 'react-redux';
import styled from 'styled-components';
Expand All @@ -15,10 +15,10 @@ const StyledLoginComponent = styled.div`
align-items: center;
`;

const Login: React.FC = () => {
const Login: FC = () => {
const user = useSelector((state: RootStore) => state.user);
const dispatch = useDispatch();
const { t } = useTranslation();
const { t } = useTranslation('authorization');

const handleLogin = () => {
dispatch(login());
Expand Down
2 changes: 1 addition & 1 deletion src/layout/header/Menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const Menu: FC<MenuProps> = ({ menuButtonLabel, handleLogout }) => {
{t('profile:my_profile')}
</StyledMenuItem>
<StyledMenuItem onClick={handleLogout} data-testid="menu-logout-button">
{t('logout')}
{t('authorization:logout')}
</StyledMenuItem>
</StyledMuiMenu>
</StyledMenu>
Expand Down
28 changes: 28 additions & 0 deletions src/pages/errorpages/Forbidden.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import React, { FC } from 'react';
import { useTranslation } from 'react-i18next';
import { Link } from 'react-router-dom';
import { Link as MuiLink } from '@material-ui/core';
import styled from 'styled-components';

import Heading from '../../components/Heading';
import NormalText from '../../components/NormalText';

const StyledLinkText = styled(NormalText)`
margin-top: 1rem;
`;

const Forbidden: FC = () => {
const { t } = useTranslation('authorization');

return (
<section>
<Heading>{t('forbidden')}</Heading>
<NormalText>{t('forbidden_description')}</NormalText>
<MuiLink component={Link} to="/">
<StyledLinkText>{t('back_to_home')}</StyledLinkText>
</MuiLink>
</section>
);
};

export default Forbidden;
15 changes: 12 additions & 3 deletions src/pages/publication/PublicationForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import { useTranslation } from 'react-i18next';
import styled from 'styled-components';
import deepmerge from 'deepmerge';
import { CircularProgress, Button } from '@material-ui/core';
import { useHistory } from 'react-router-dom';

import { emptyPublication, FormikPublication, PublicationTab } from '../../types/publication.types';
import { emptyPublication, FormikPublication, PublicationTab, PublicationStatus } from '../../types/publication.types';
import { PublicationFormTabs } from './PublicationFormTabs';
import { updatePublication } from '../../api/publicationApi';
import { useDispatch, useSelector } from 'react-redux';
Expand Down Expand Up @@ -45,14 +46,22 @@ const PublicationForm: FC<PublicationFormProps> = ({ identifier, closeForm }) =>
const [isSaving, setIsSaving] = useState(false);
const dispatch = useDispatch();
const uppy = useUppy();
const [publication, isLoadingPublication, handleSetPublication] = useFetchPublication(identifier, true);
const history = useHistory();
const [publication, isLoadingPublication, handleSetPublication] = useFetchPublication(identifier);

useEffect(() => {
if (!publication && !isLoadingPublication) {
closeForm();
}
}, [closeForm, publication, isLoadingPublication]);

useEffect(() => {
// Redirect to public page if non-curator is opening a published publication
if (publication?.status === PublicationStatus.PUBLISHED && !user.isCurator) {
history.push(`/publication/${identifier}/public`);
}
}, [history, identifier, publication, user.isCurator]);

const handleTabChange = (_: React.ChangeEvent<{}>, newTabNumber: number) => {
setTabNumber(newTabNumber);
};
Expand Down Expand Up @@ -95,7 +104,7 @@ const PublicationForm: FC<PublicationFormProps> = ({ identifier, closeForm }) =>
<StyledPublication>
<Formik
enableReinitialize
initialValues={publication ?? emptyPublication}
initialValues={publication ? deepmerge(emptyPublication, publication) : emptyPublication}
validate={validateForm}
onSubmit={(values: FormikPublication) => savePublication(values)}>
{({ dirty, values, isValid }: FormikProps<FormikPublication>) => (
Expand Down
69 changes: 69 additions & 0 deletions src/pages/user/authority/AuthorityModal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import React, { FC } from 'react';
import { useTranslation } from 'react-i18next';
import { useSelector } from 'react-redux';
import { Button } from '@material-ui/core';
import styled from 'styled-components';

import { Authority } from '../../../types/authority.types';
import { RootStore } from '../../../redux/reducers/rootReducer';
import AuthorityCard from './AuthorityCard';
import { ConnectAuthority } from './ConnectAuthority';
import Modal from '../../../components/Modal';

const StyledButtonContainer = styled.div`
display: flex;
justify-content: flex-end;
margin-top: 2rem;
`;

const StyledNormalText = styled.div`
margin-top: 1rem;
`;

interface AuthorityModalProps {
authority: Authority | null;
closeModal: () => void;
handleNextClick: () => void;
}

const AuthorityModal: FC<AuthorityModalProps> = ({ closeModal, handleNextClick }) => {
const { t } = useTranslation('common');
const { authority } = useSelector((store: RootStore) => store.user);
const noOrcid = !authority || !authority.orcids || authority.orcids.length === 0;

return (
<Modal
dataTestId="connect-author-modal"
ariaLabelledBy="connect-author-modal"
disableEscape={!authority}
openModal={true}
onClose={closeModal}
headingText={t('profile:authority.connect_authority')}
maxWidth="lg">
<>
{authority ? (
<>
<AuthorityCard authority={authority} isConnected />
<StyledNormalText>{t('profile:authority.connected_authority')}</StyledNormalText>
</>
) : (
<ConnectAuthority />
)}
{noOrcid && (
<StyledButtonContainer>
<Button
color="primary"
variant="contained"
data-testid="modal_next"
onClick={handleNextClick}
disabled={!authority}>
{t('next')}
</Button>
</StyledButtonContainer>
)}
</>
</Modal>
);
};

export default AuthorityModal;
Loading

0 comments on commit 1c8644b

Please sign in to comment.