From 338db064306393524f06d1711e6cffbec05eb1a6 Mon Sep 17 00:00:00 2001 From: ning Date: Fri, 6 Jul 2018 19:28:37 +0800 Subject: [PATCH 1/2] Add fetch username --- src/sagas/backend.ts | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/sagas/backend.ts b/src/sagas/backend.ts index 0e20584914..ef53da16af 100644 --- a/src/sagas/backend.ts +++ b/src/sagas/backend.ts @@ -11,13 +11,17 @@ function* backendSaga(): SagaIterator { const ivleToken = (action as actionTypes.IAction).payload const resp = yield call(request, 'auth', { method: 'POST', - body: JSON.stringify({ login: { ivle_token: ivleToken } }) + body: JSON.stringify({ login: { ivle_token: ivleToken } }), + headers: new Headers({ + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }) }) const tokens = { - accessToken: resp.refresh_token, - refreshToken: resp.access_token + accessToken: resp.access_token, + refreshToken: resp.refresh_token } - const username = yield call(() => 'IVLE USER') // TODO: fetchUsername + const username = yield getUsername(tokens.accessToken) yield put(actions.setTokens(tokens)) yield put(actions.setUsername(username)) yield delay(2000) @@ -25,15 +29,19 @@ function* backendSaga(): SagaIterator { }) } +function* getUsername(accessToken: string) { + const resp = yield call(request, 'user', { + method: 'GET', + headers: new Headers({ + Authorization: `Bearer ${accessToken}`, + Accept: 'application/json' + }) + }) + return resp.name +} + function request(path: string, opts: {}) { - const defaultOpts = { - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json' - } - } - const requestOpts = { ...defaultOpts, ...opts } - return fetch(`${BACKEND_URL}/v1/${path}`, requestOpts) + return fetch(`${BACKEND_URL}/v1/${path}`, opts) .then(data => data.json()) .catch(err => err) } From d39966e866d8f759c97a7873c1975af6fea1415c Mon Sep 17 00:00:00 2001 From: ning Date: Fri, 6 Jul 2018 19:34:02 +0800 Subject: [PATCH 2/2] Make name TitleCase --- src/components/NavigationBar.tsx | 5 ++++- src/sagas/backend.ts | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/NavigationBar.tsx b/src/components/NavigationBar.tsx index 01c0804bf2..1e1806a72e 100644 --- a/src/components/NavigationBar.tsx +++ b/src/components/NavigationBar.tsx @@ -72,7 +72,7 @@ const NavigationBar: React.SFC = props => ( className="NavigationBar__link pt-button pt-minimal" > -
{props.username}
+
{titleCase(props.username)}
)} @@ -80,4 +80,7 @@ const NavigationBar: React.SFC = props => ( ) +const titleCase = (str: string) => + str.replace(/\w\S*/g, wrd => wrd.charAt(0).toUpperCase() + wrd.substr(1).toLowerCase()) + export default NavigationBar diff --git a/src/sagas/backend.ts b/src/sagas/backend.ts index ef53da16af..a91e9b9f52 100644 --- a/src/sagas/backend.ts +++ b/src/sagas/backend.ts @@ -13,8 +13,8 @@ function* backendSaga(): SagaIterator { method: 'POST', body: JSON.stringify({ login: { ivle_token: ivleToken } }), headers: new Headers({ - 'Accept': 'application/json', - 'Content-Type': 'application/json', + Accept: 'application/json', + 'Content-Type': 'application/json' }) }) const tokens = {