mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-29 01:15:48 +02:00
Add version details to the footer.
This commit is contained in:
parent
a43011e739
commit
a33aed3461
30
frontend/src/component/api/show-api-details-component.jsx
Normal file
30
frontend/src/component/api/show-api-details-component.jsx
Normal file
@ -0,0 +1,30 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { FooterSection, FooterLinkList } from 'react-mdl';
|
||||
|
||||
export default class ShowApiDetailsComponent extends React.Component {
|
||||
static propTypes = {
|
||||
apiDetails: PropTypes.object.isRequired,
|
||||
fetchAll: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
this.props.fetchAll();
|
||||
}
|
||||
|
||||
render() {
|
||||
const version = this.props.apiDetails.version || '';
|
||||
return (
|
||||
<FooterSection type="bottom" logo={`Unleash ${version}`}>
|
||||
<FooterLinkList>
|
||||
<a href="https://github.com/Unleash/unleash/" target="_blank">
|
||||
GitHub
|
||||
</a>
|
||||
<a href="https://www.finn.no" target="_blank">
|
||||
<small>A product by</small> FINN.no
|
||||
</a>
|
||||
</FooterLinkList>
|
||||
</FooterSection>
|
||||
);
|
||||
}
|
||||
}
|
13
frontend/src/component/api/show-api-details-container.jsx
Normal file
13
frontend/src/component/api/show-api-details-container.jsx
Normal file
@ -0,0 +1,13 @@
|
||||
import { connect } from 'react-redux';
|
||||
import ShowApiDetailsComponent from './show-api-details-component';
|
||||
import { fetchAll } from '../../store/api/actions';
|
||||
|
||||
const mapDispatchToProps = {
|
||||
fetchAll,
|
||||
};
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
apiDetails: state.api.toJS(),
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(ShowApiDetailsComponent);
|
@ -20,6 +20,7 @@ import ErrorContainer from './error/error-container';
|
||||
|
||||
import UserContainer from './user/user-container';
|
||||
import ShowUserContainer from './user/show-user-container';
|
||||
import ShowApiDetailsContainer from './api/show-api-details-container';
|
||||
import { ScrollContainer } from 'react-router-scroll';
|
||||
|
||||
function replace(input, params) {
|
||||
@ -193,16 +194,7 @@ export default class App extends Component {
|
||||
</FooterLinkList>
|
||||
</FooterDropDownSection>
|
||||
</FooterSection>
|
||||
<FooterSection type="bottom" logo="Unleash">
|
||||
<FooterLinkList>
|
||||
<a href="https://github.com/Unleash/unleash/" target="_blank">
|
||||
GitHub
|
||||
</a>
|
||||
<a href="https://finn.no" target="_blank">
|
||||
<small>A product by</small> FINN.no
|
||||
</a>
|
||||
</FooterLinkList>
|
||||
</FooterSection>
|
||||
<ShowApiDetailsContainer />
|
||||
</Footer>
|
||||
</Content>
|
||||
</ScrollContainer>
|
||||
|
13
frontend/src/data/api.js
Normal file
13
frontend/src/data/api.js
Normal file
@ -0,0 +1,13 @@
|
||||
import { throwIfNotSuccess, headers } from './helper';
|
||||
|
||||
const URI = 'api';
|
||||
|
||||
function fetchAll() {
|
||||
return fetch(URI, { headers, credentials: 'include' })
|
||||
.then(throwIfNotSuccess)
|
||||
.then(response => response.json());
|
||||
}
|
||||
|
||||
export default {
|
||||
fetchAll,
|
||||
};
|
24
frontend/src/store/api/actions.js
Normal file
24
frontend/src/store/api/actions.js
Normal file
@ -0,0 +1,24 @@
|
||||
import api from '../../data/api';
|
||||
|
||||
export const RECIEVE_API_DETAILS = 'RECIEVE_API_DETAILS';
|
||||
export const ERROR_RECIEVE_API_DETAILS = 'ERROR_RECIEVE_API_DETAILS';
|
||||
|
||||
export const RECEIVE_APPLICATION = 'RECEIVE_APPLICATION';
|
||||
|
||||
const recieveApiDetails = json => ({
|
||||
type: RECIEVE_API_DETAILS,
|
||||
value: json,
|
||||
});
|
||||
|
||||
const errorRecieveApiDetails = (statusCode, type = ERROR_RECIEVE_API_DETAILS) => ({
|
||||
type,
|
||||
statusCode,
|
||||
});
|
||||
|
||||
export function fetchAll() {
|
||||
return dispatch =>
|
||||
api
|
||||
.fetchAll()
|
||||
.then(json => dispatch(recieveApiDetails(json)))
|
||||
.catch(error => dispatch(errorRecieveApiDetails(error)));
|
||||
}
|
14
frontend/src/store/api/index.js
Normal file
14
frontend/src/store/api/index.js
Normal file
@ -0,0 +1,14 @@
|
||||
import { Map } from 'immutable';
|
||||
import { RECIEVE_API_DETAILS } from './actions';
|
||||
|
||||
const store = (state = new Map(), action) => {
|
||||
switch (action.type) {
|
||||
case RECIEVE_API_DETAILS:
|
||||
state = new Map(action.value);
|
||||
return state;
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
||||
|
||||
export default store;
|
@ -9,6 +9,7 @@ import error from './error-store';
|
||||
import clientInstances from './client-instance-store';
|
||||
import settings from './settings';
|
||||
import user from './user';
|
||||
import api from './api';
|
||||
import applications from './application';
|
||||
|
||||
const unleashStore = combineReducers({
|
||||
@ -23,6 +24,7 @@ const unleashStore = combineReducers({
|
||||
settings,
|
||||
user,
|
||||
applications,
|
||||
api,
|
||||
});
|
||||
|
||||
export default unleashStore;
|
||||
|
Loading…
Reference in New Issue
Block a user