+ client: get profile info

This commit is contained in:
Ildar Kamalov 2019-10-23 10:31:54 +03:00 committed by Simon Zolin
parent 0ede2b13c9
commit 2a2647dc3f
4 changed files with 39 additions and 3 deletions

View File

@ -213,6 +213,21 @@ export const getClients = () => async (dispatch) => {
} }
}; };
export const getProfileRequest = createAction('GET_PROFILE_REQUEST');
export const getProfileFailure = createAction('GET_PROFILE_FAILURE');
export const getProfileSuccess = createAction('GET_PROFILE_SUCCESS');
export const getProfile = () => async (dispatch) => {
dispatch(getProfileRequest());
try {
const profile = await apiClient.getProfile();
dispatch(getProfileSuccess(profile));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getProfileFailure());
}
};
export const dnsStatusRequest = createAction('DNS_STATUS_REQUEST'); export const dnsStatusRequest = createAction('DNS_STATUS_REQUEST');
export const dnsStatusFailure = createAction('DNS_STATUS_FAILURE'); export const dnsStatusFailure = createAction('DNS_STATUS_FAILURE');
export const dnsStatusSuccess = createAction('DNS_STATUS_SUCCESS'); export const dnsStatusSuccess = createAction('DNS_STATUS_SUCCESS');
@ -224,6 +239,7 @@ export const getDnsStatus = () => async (dispatch) => {
dispatch(dnsStatusSuccess(dnsStatus)); dispatch(dnsStatusSuccess(dnsStatus));
dispatch(getVersion()); dispatch(getVersion());
dispatch(getTlsStatus()); dispatch(getTlsStatus());
dispatch(getProfile());
} catch (error) { } catch (error) {
dispatch(addErrorToast({ error })); dispatch(addErrorToast({ error }));
dispatch(dnsStatusFailure()); dispatch(dnsStatusFailure());

View File

@ -525,6 +525,14 @@ class Api {
}; };
return this.makeRequest(path, method, config); return this.makeRequest(path, method, config);
} }
// Profile
GET_PROFILE = { path: 'profile', method: 'GET' };
getProfile() {
const { path, method } = this.GET_PROFILE;
return this.makeRequest(path, method);
}
} }
const apiClient = new Api(); const apiClient = new Api();

View File

@ -60,9 +60,11 @@ class Header extends Component {
/> />
<div className="header__column"> <div className="header__column">
<div className="header__right"> <div className="header__right">
<a href="/control/logout" className="btn btn-sm btn-outline-secondary"> {!dashboard.processingProfile && dashboard.name &&
<Trans>sign_out</Trans> <a href="/control/logout" className="btn btn-sm btn-outline-secondary">
</a> <Trans>sign_out</Trans>
</a>
}
</div> </div>
</div> </div>
</div> </div>

View File

@ -189,6 +189,14 @@ const dashboard = handleActions(
processingDnsSettings: false, processingDnsSettings: false,
}; };
}, },
[actions.getProfileRequest]: state => ({ ...state, processingProfile: true }),
[actions.getProfileFailure]: state => ({ ...state, processingProfile: false }),
[actions.getProfileSuccess]: (state, { payload }) => ({
...state,
name: payload.name,
processingProfile: false,
}),
}, },
{ {
processing: true, processing: true,
@ -198,6 +206,7 @@ const dashboard = handleActions(
processingClients: true, processingClients: true,
processingUpdate: false, processingUpdate: false,
processingDnsSettings: true, processingDnsSettings: true,
processingProfile: true,
upstreamDns: '', upstreamDns: '',
bootstrapDns: '', bootstrapDns: '',
allServers: false, allServers: false,
@ -209,6 +218,7 @@ const dashboard = handleActions(
dnsVersion: '', dnsVersion: '',
clients: [], clients: [],
autoClients: [], autoClients: [],
name: '',
}, },
); );