Use Me-type

This commit is contained in:
Philipp Czora
2018-07-24 17:05:38 +02:00
parent 181a9e9786
commit b5f64429d4
6 changed files with 23 additions and 15 deletions

View File

@@ -1,8 +1,9 @@
//@flow
import React from "react";
import { Me } from "../types/Me";
type Props = {
me?: string
me?: Me
};
class Footer extends React.Component<Props> {
@@ -14,7 +15,7 @@ class Footer extends React.Component<Props> {
return (
<footer className="footer">
<div className="container is-centered">
<p className="has-text-centered">{me}</p>
<p className="has-text-centered">{me.displayName}</p>
</div>
</footer>
);

View File

@@ -14,11 +14,10 @@ import ErrorPage from "../components/ErrorPage";
import Footer from "../components/Footer";
type Props = {
me: any,
me: Me,
error: Error,
loading: boolean,
authenticated?: boolean,
displayName: string,
t: string => string,
fetchMe: () => void
};
@@ -29,7 +28,7 @@ class App extends Component<Props> {
}
render() {
const { loading, error, authenticated, displayName, t } = this.props;
const { me, loading, error, authenticated, t } = this.props;
let content;
const navigation = authenticated ? <PrimaryNavigation /> : "";
@@ -51,7 +50,7 @@ class App extends Component<Props> {
<div className="App">
<Header>{navigation}</Header>
{content}
<Footer me={displayName} />
<Footer me={me} />
</div>
);
}
@@ -65,16 +64,14 @@ const mapDispatchToProps = (dispatch: any) => {
const mapStateToProps = state => {
let mapped = state.auth.me || {};
let displayName;
if (state.auth.login) {
mapped.authenticated = state.auth.login.authenticated;
}
if (state.auth.me && state.auth.me.entry) {
displayName = state.auth.me.entry.displayName;
}
return {
...mapped,
displayName
me: mapped.entry
};
};

View File

@@ -205,7 +205,9 @@ export const fetchMe = () => {
return response.json();
})
.then(me => {
dispatch(fetchMeSuccess(me));
dispatch(
fetchMeSuccess({ userName: me.name, displayName: me.displayName })
);
})
.catch((error: Error) => {
if (error === UNAUTHORIZED_ERROR) {

View File

@@ -166,13 +166,16 @@ describe("auth actions", () => {
it("should dispatch fetch me success", () => {
fetchMock.getOnce("/scm/api/rest/v2/me", {
body: { username: "sorbot" },
body: { name: "sorbot", displayName: "Sorbot" },
headers: { "content-type": "application/json" }
});
const expectedActions = [
{ type: FETCH_ME_REQUEST },
{ type: FETCH_ME_SUCCESS, payload: { username: "sorbot" } }
{
type: FETCH_ME_SUCCESS,
payload: { userName: "sorbot", displayName: "Sorbot" }
}
];
const store = mockStore({});

6
scm-ui/src/types/Me.js Normal file
View File

@@ -0,0 +1,6 @@
// @flow
export type Me = {
userName: string,
displayName: string
};

View File

@@ -26,7 +26,6 @@ export const DELETE_USER_SUCCESS = "scm/users/DELETE_SUCCESS";
export const DELETE_USER_FAILURE = "scm/users/DELETE_FAILURE";
const USERS_URL = "users";
const USER_URL = "users/";
const CONTENT_TYPE_USER = "application/vnd.scmm-user+json;v=2";