Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions action-creators/team-action-creators.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ export const saveTeam = (team: Object): ThunkType => {
function thunk(dispatch: Dispatch<ActionType>) {
firebaseDataLayer.saveTeam(team)
.then((savedTeam: TeamType) => {
dispatch({ type: types.SAVE_TEAM_SUCCESS, savedTeam });
dispatch({ type: types.SAVE_TEAM_SUCCESS, data: team });
})
.catch((error: Error) => {
dispatch({ type: types.SAVE_TEAM_FAIL, error });
Expand All @@ -158,7 +158,11 @@ export const saveTeam = (team: Object): ThunkType => {

export const createTeam = (team: Object, user: UserType): ThunkType => {
function thunk(dispatch: Dispatch<ActionType>) {
firebaseDataLayer.createTeam(Team.create(team), TeamMember.create(user), dispatch);
const newTeam = Team.create(team);
firebaseDataLayer.createTeam(newTeam, TeamMember.create(user), dispatch)
.then((teamId: string) => {
dispatch({ type: types.CREATE_TEAM_SUCCESS, data: { ...newTeam, id: teamId } });
});
}

thunk.interceptOnOffline = true;
Expand All @@ -170,7 +174,7 @@ export const deleteTeam = (teamId: string): ThunkType => {
function thunk(dispatch: Dispatch<ActionType>) {
firebaseDataLayer.deleteTeam(teamId)
.then((data: any) => {
dispatch({ type: types.DELETE_TEAM_SUCCESS, data });
dispatch({ type: types.DELETE_TEAM_SUCCESS, data: teamId });
})
.catch((error: Error) => {
dispatch({ type: types.DELETE_TEAM_FAIL, error });
Expand Down
2 changes: 1 addition & 1 deletion components/team-details-editor/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ const mapStateToProps = (state: Object): Object => {
const otherCleanAreas = R.compose(
R.flatten,
R.map((entry: [string, TeamType]): Array<Object> => mapToPinData(entry[1].locations, entry[1].name)),
R.filter((entry: [string, TeamType]): boolean => (entry[0] !== selectedTeam.id)),
R.filter((entry: [string, TeamType]): boolean => (entry[0] !== (selectedTeam || {}).id)),
Object.entries
)(state.teams.teams);

Expand Down
1 change: 1 addition & 0 deletions constants/action-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
export const ADD_TEAM_MEMBER_FAIL = "ADD_TEAM_MEMBER_FAIL";
export const ADD_TEAM_MEMBER_SUCCESS = "ADD_TEAM_MEMBER_SUCCESS";
export const CREATING_USER = "CREATING_USER";
export const CREATE_TEAM_SUCCESS = "CREATE_TEAM_SUCCESS";
export const CREATE_USER_FAIL = "CREATE_USER_FAIL";
export const DELETE_MESSAGE_FAIL = "DELETE_MESSAGE_FAIL";
export const DELETE_MESSAGE_SUCCESS = "DELETE_MESSAGE_SUCCESS";
Expand Down
12 changes: 10 additions & 2 deletions data-sources/firebase-data-layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -946,7 +946,7 @@ export async function createTeam(team: Object = {}, user: ?Object = {}, dispatch

// setupTeamMemberListener([docRef.id], dispatch);
// setupTeamMessageListener([docRef.id], dispatch);

return docRef.id;
}

export function saveTeam(team: TeamType): Promise<any> {
Expand Down Expand Up @@ -984,7 +984,15 @@ export function deleteTeam(teamId: string): Promise<any> {
// return new Promise(function(r) {
// setTimeout(() => { r('blah'); }, 2000);
// });
return deleteDoc(doc(firestore, "teams", teamId));
return deleteDoc(doc(firestore, "teams", teamId)).then(() => {
// Clean up all listeners for this team
removeListener(`team_${teamId}_messages`);
removeListener(`team_${teamId}_members`);
removeListener(`team_${teamId}_requests`);
removeListener(`teamMembers_${teamId}_invitations`);
}).catch((error) => {
console.log("error: " + error);
});
// return db.collection("teams").doc(teamId).delete();
}

Expand Down
15 changes: 15 additions & 0 deletions reducers/profile-reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,21 @@ export function profileReducers(state: Object = initialState.profile, action: Ac
...state,
teams
};
case types.CREATE_TEAM_SUCCESS: {
const createdTeam = action.data;
return {
...state,
teams: { ...state.teams, [createdTeam.id]: { ...createdTeam, isMember: true } }
};
}
case types.DELETE_TEAM_SUCCESS: {
const remainingTeams = { ...state.teams };
delete remainingTeams[action.data];
return {
...state,
teams: remainingTeams
};
}
case types.LEAVE_TEAM_FAIL:
return {
...state,
Expand Down
30 changes: 29 additions & 1 deletion reducers/teams-reducers.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,35 @@ export const teamsReducers = (state: Object = initialState.teams, action: Action
...state,
teams: action.data
};

case types.CREATE_TEAM_SUCCESS : {
const newTeam = action.data;
return {
...state,
teams: { ...state.teams, [newTeam.id]: newTeam }
};
}
case types.SAVE_TEAM_SUCCESS : {
const savedTeam = action.data;
return {
...state,
teams: { ...state.teams, [savedTeam.id]: { ...state.teams[savedTeam.id], ...savedTeam } },
selectedTeam: state.selectedTeam && state.selectedTeam.id === savedTeam.id
? { ...state.selectedTeam, ...savedTeam }
: state.selectedTeam
};
}
case types.DELETE_TEAM_SUCCESS : {
const deletedTeamId = action.data;
const remainingTeams = { ...state.teams };
delete remainingTeams[deletedTeamId];
return {
...state,
teams: remainingTeams,
selectedTeam: state.selectedTeam && state.selectedTeam.id === deletedTeamId
? null
: state.selectedTeam
};
}
case types.SET_SELECTED_TEAM_VALUE: {
const newSelectedTeam = Object.assign({}, state.selectedTeam);
newSelectedTeam[(action.data || {}).key] = (action.data || {}).value;
Expand Down