Skip to content

Commit

Permalink
Get all data from FetchUser
Browse files Browse the repository at this point in the history
  • Loading branch information
ssalinas committed Oct 31, 2016
1 parent f5bc21a commit a570511
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 40 deletions.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ public SingularityUserSettings(
this.starredRequestIds = Objects.firstNonNull(starredRequestIds, Collections.<String>emptySet()); this.starredRequestIds = Objects.firstNonNull(starredRequestIds, Collections.<String>emptySet());
} }


public static SingularityUserSettings empty() {
return new SingularityUserSettings(Collections.<String>emptySet());
}

public Set<String> getStarredRequestIds() { public Set<String> getStarredRequestIds() {
return starredRequestIds; return starredRequestIds;
} }
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ public UserResource(UserManager userManager, Optional<SingularityUser> user, Sin


@GET @GET
@Path("/settings") @Path("/settings")
public Optional<SingularityUserSettings> getUserSettings() { public SingularityUserSettings getUserSettings() {
return userManager.getUserSettings(authorizationHelper.getAuthUserId(user)); return userManager.getUserSettings(authorizationHelper.getAuthUserId(user)).or(SingularityUserSettings.empty());
} }


@POST @POST
Expand Down
17 changes: 0 additions & 17 deletions SingularityUI/app/actions/api/users.es6
Original file line number Original file line Diff line number Diff line change
@@ -1,22 +1,5 @@
import { buildApiAction, buildJsonApiAction } from './base'; import { buildApiAction, buildJsonApiAction } from './base';


export const FetchUserSettings = buildApiAction(
'FETCH_USER_SETTINGS',
{
url: `/users/settings`,
catchStatusCodes: [404] // Remove this once the API doesn't 404 when user has nothing set
}
);

export const UpdateUserSettings = buildJsonApiAction(
'UPDATE_USER_SETTINGS',
'POST',
(settings) => ({
url: `/users/settings`,
body: settings
})
);

export const AddStarredRequests = buildJsonApiAction( export const AddStarredRequests = buildJsonApiAction(
'ADD_STARRED_REQUESTS', 'ADD_STARRED_REQUESTS',
'POST', 'POST',
Expand Down
9 changes: 5 additions & 4 deletions SingularityUI/app/components/requests/RequestStar.jsx
Original file line number Original file line Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { PropTypes } from 'react'; import React, { PropTypes } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { FetchUserSettings, AddStarredRequests, DeleteStarredRequests } from '../../actions/api/users'; import { FetchUser } from 'actions/api/auth';
import { AddStarredRequests, DeleteStarredRequests } from '../../actions/api/users';
import Utils from '../../utils'; import Utils from '../../utils';


const RequestStar = ({requestId, changeStar, starred}) => ( const RequestStar = ({requestId, changeStar, starred}) => (
Expand All @@ -17,17 +18,17 @@ RequestStar.propTypes = {


const mapStateToProps = (state, ownProps) => { const mapStateToProps = (state, ownProps) => {
return { return {
starred: _.contains(Utils.maybe(state.api.userSettings, ['data', 'starredRequestIds'], []), ownProps.requestId) starred: _.contains(Utils.maybe(state.api.user, ['data', 'settings', 'starredRequestIds'], []), ownProps.requestId)
}; };
}; };


const mapDispatchToProps = (dispatch) => { const mapDispatchToProps = (dispatch) => {
return { return {
changeStar: (requestId, starred) => { changeStar: (requestId, starred) => {
if (starred) { if (starred) {
dispatch(DeleteStarredRequests.trigger([requestId])).then(() => dispatch(FetchUserSettings.trigger())); dispatch(DeleteStarredRequests.trigger([requestId])).then(() => dispatch(FetchUser.trigger()));
} else { } else {
dispatch(AddStarredRequests.trigger([requestId])).then(() => dispatch(FetchUserSettings.trigger())); dispatch(AddStarredRequests.trigger([requestId])).then(() => dispatch(FetchUser.trigger()));
} }
} }
}; };
Expand Down
10 changes: 4 additions & 6 deletions SingularityUI/app/initialize.jsx
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import AppRouter from './router';
import configureStore from 'store'; import configureStore from 'store';
import { FetchUser } from 'actions/api/auth'; import { FetchUser } from 'actions/api/auth';
import { FetchGroups } from 'actions/api/requestGroups'; import { FetchGroups } from 'actions/api/requestGroups';
import { FetchUserSettings, AddStarredRequests } from 'actions/api/users'; import { AddStarredRequests } from 'actions/api/users';
import Utils from './utils'; import Utils from './utils';


// Set up third party configurations // Set up third party configurations
Expand Down Expand Up @@ -88,8 +88,8 @@ function renderUserIdForm() {
).show(); ).show();
} }


function maybeImportStarredRequests(store, userSettingsResponse, userId) { function maybeImportStarredRequests(store, userState, userId) {
const apiStarredRequests = Utils.maybe(userSettingsResponse.data, ['starredRequestIds']); const apiStarredRequests = Utils.maybe(userState, ['data', 'settings', 'starredRequestIds']);
const locallyStarredRequests = window.localStorage.hasOwnProperty('starredRequests') const locallyStarredRequests = window.localStorage.hasOwnProperty('starredRequests')
? JSON.parse(window.localStorage.getItem('starredRequests')) ? JSON.parse(window.localStorage.getItem('starredRequests'))
: []; : [];
Expand Down Expand Up @@ -127,9 +127,7 @@ document.addEventListener('DOMContentLoaded', () => {


if (!willRenderUserIdForm) { if (!willRenderUserIdForm) {
// Set up starred requests // Set up starred requests
store.dispatch(FetchUserSettings.trigger(userId)).then((userSettingsResponse) => maybeImportStarredRequests(store, store.getState().api.user, userId);
maybeImportStarredRequests(store, userSettingsResponse, userId)
);


// set up request groups // set up request groups
store.dispatch(FetchGroups.trigger([404, 500])); store.dispatch(FetchGroups.trigger([404, 500]));
Expand Down
6 changes: 0 additions & 6 deletions SingularityUI/app/reducers/api/index.es6
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ import buildKeyedApiActionReducer from './keyed';
import { FetchUser } from '../../actions/api/auth'; import { FetchUser } from '../../actions/api/auth';


import { import {
FetchUserSettings,
UpdateUserSettings,
AddStarredRequests, AddStarredRequests,
DeleteStarredRequests DeleteStarredRequests
} from '../../actions/api/users'; } from '../../actions/api/users';
Expand Down Expand Up @@ -84,8 +82,6 @@ import {
import { FetchGroups } from '../../actions/api/requestGroups'; import { FetchGroups } from '../../actions/api/requestGroups';


const user = buildApiActionReducer(FetchUser); const user = buildApiActionReducer(FetchUser);
const userSettings = buildApiActionReducer(FetchUserSettings);
const updateUserSettings = buildApiActionReducer(UpdateUserSettings, []);
const addStarredRequests = buildApiActionReducer(AddStarredRequests, []); const addStarredRequests = buildApiActionReducer(AddStarredRequests, []);
const deleteStarredRequests = buildApiActionReducer(DeleteStarredRequests, []); const deleteStarredRequests = buildApiActionReducer(DeleteStarredRequests, []);
const webhooks = buildApiActionReducer(FetchWebhooks, []); const webhooks = buildApiActionReducer(FetchWebhooks, []);
Expand Down Expand Up @@ -135,8 +131,6 @@ const requestGroups = buildApiActionReducer(FetchGroups, []);


export default combineReducers({ export default combineReducers({
user, user,
userSettings,
updateUserSettings,
addStarredRequests, addStarredRequests,
deleteStarredRequests, deleteStarredRequests,
webhooks, webhooks,
Expand Down
8 changes: 3 additions & 5 deletions SingularityUI/app/selectors/requests.es6
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@ function findRequestIds(requests) {
}); });
} }


export const getUserSettings = (state) => state.api.userSettings;

export const getStarredRequests = createSelector( export const getStarredRequests = createSelector(
[getUserSettings, getRequestsAPI], [getUserAPI, getRequestsAPI],
(userSettings, requestsAPI) => { (userAPI, requestsAPI) => {
const starredRequests = Utils.maybe(userSettings, ['data', 'starredRequestIds'], []); const starredRequests = Utils.maybe(userAPI, ['data', 'settings', 'starredRequestIds'], []);
const requests = findRequestIds(requestsAPI.data); const requests = findRequestIds(requestsAPI.data);
return requests.filter((requestParent) => _.contains(starredRequests, requestParent.request.id)); return requests.filter((requestParent) => _.contains(starredRequests, requestParent.request.id));
} }
Expand Down

0 comments on commit a570511

Please sign in to comment.