Begin using async/await.

This commit is contained in:
kialam 2018-11-12 13:24:17 -05:00
parent 06470a0e65
commit f520be71d6
No known key found for this signature in database
GPG Key ID: 2D0E60E4B8C7EA0F
5 changed files with 28 additions and 44 deletions

View File

@ -22,6 +22,7 @@ import {
import { global_breakpoint_md as breakpointMd } from '@patternfly/react-tokens';
import api from './api';
import { API_LOGOUT } from './endpoints';
// import About from './components/About';
import LogoutButton from './components/LogoutButton';
@ -79,11 +80,9 @@ class App extends React.Component {
this.setState({ activeGroup: 'views_group', activeItem: 'views_group_dashboard' });
}
onDevLogout = () => {
api.logout()
.then(() => {
this.setState({ activeGroup: 'views_group', activeItem: 'views_group_dashboard' });
});
onDevLogout = async () => {
await api.BaseGet(API_LOGOUT);
this.setState({ activeGroup: 'views_group', activeItem: 'views_group_dashboard' });
}
render () {

View File

@ -1,12 +1,6 @@
import axios from 'axios';
const API_ROOT = '/api/';
const API_LOGIN = `${API_ROOT}login/`;
const API_LOGOUT = `${API_ROOT}logout/`;
const API_V2 = `${API_ROOT}v2/`;
const API_CONFIG = `${API_V2}config/`;
const API_PROJECTS = `${API_V2}projects/`;
const API_ORGANIZATIONS = `${API_V2}organizations/`;
import * as constant from './endpoints';
const CSRF_COOKIE_NAME = 'csrftoken';
const CSRF_HEADER_NAME = 'X-CSRFToken';
@ -38,7 +32,7 @@ class APIClient {
return authenticated;
}
login (username, password, redirect = API_CONFIG) {
async login (username, password, redirect = constant.API_CONFIG) {
const un = encodeURIComponent(username);
const pw = encodeURIComponent(password);
const next = encodeURIComponent(redirect);
@ -46,29 +40,15 @@ class APIClient {
const data = `username=${un}&password=${pw}&next=${next}`;
const headers = { 'Content-Type': LOGIN_CONTENT_TYPE };
return this.http.get(API_LOGIN, { headers })
.then(() => this.http.post(API_LOGIN, data, { headers }));
try {
await this.http.get(constant.API_LOGIN, { headers });
await this.http.post(constant.API_LOGIN, data, { headers });
} catch (err) {
alert(`There was a problem logging in: ${err}`);
}
}
logout () {
return this.http.get(API_LOGOUT);
}
getConfig () {
return this.http.get(API_CONFIG);
}
getProjects () {
return this.http.get(API_PROJECTS);
}
getOrganizations () {
return this.http.get(API_ORGANIZATIONS);
}
getRoot () {
return this.http.get(API_ROOT);
}
BaseGet = (endpoint) => this.http.get(endpoint);
}
export default new APIClient();

7
src/endpoints.jsx Normal file
View File

@ -0,0 +1,7 @@
export const API_ROOT = '/api/';
export const API_LOGIN = `${API_ROOT}login/`;
export const API_LOGOUT = `${API_ROOT}logout/`;
export const API_V2 = `${API_ROOT}v2/`;
export const API_CONFIG = `${API_V2}config/`;
export const API_PROJECTS = `${API_V2}projects/`;
export const API_ORGANIZATIONS = `${API_V2}organizations/`;

View File

@ -3,6 +3,7 @@ import { render } from 'react-dom';
import App from './App';
import api from './api';
import { API_ROOT } from './endpoints';
import '@patternfly/react-core/dist/styles/base.css';
import '@patternfly/patternfly-next/patternfly.css';
@ -11,13 +12,9 @@ import './app.scss';
const el = document.getElementById('app');
const main = () => {
api.getRoot()
.then(({ data }) => {
const { custom_logo, custom_login_info } = data;
render(<App logo={custom_logo} loginInfo={custom_login_info} />, el);
});
const main = async () => {
const { custom_logo, custom_login_info } = await api.BaseGet(API_ROOT);
render(<App logo={custom_logo} loginInfo={custom_login_info} />, el);
};
main();

View File

@ -9,6 +9,7 @@ import {
import OrganizationCard from '../components/OrganizationCard';
import api from '../api';
import { API_ORGANIZATIONS } from '../endpoints';
class Organizations extends Component {
constructor (props) {
@ -17,9 +18,9 @@ class Organizations extends Component {
this.state = { organizations: [] };
}
componentDidMount () {
api.getOrganizations()
.then(({ data }) => this.setState({ organizations: data.results }));
async componentDidMount () {
const { data } = await api.BaseGet(API_ORGANIZATIONS);
this.setState({ organizations: data.results });
}
render () {