mirror of
https://github.com/scratchfoundation/scratch-www.git
synced 2024-11-27 17:45:52 -05:00
Add classroomId to studio reducer
This commit is contained in:
parent
fd6215d581
commit
134cd927ec
2 changed files with 16 additions and 2 deletions
|
@ -127,6 +127,7 @@ module.exports.selectUsername = state => get(state, ['session', 'session', 'user
|
||||||
module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null);
|
module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null);
|
||||||
module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false);
|
module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false);
|
||||||
module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false);
|
module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false);
|
||||||
|
module.exports.selectIsEducator = state => get(state, ['session', 'session', 'permissions', 'educator'], false);
|
||||||
|
|
||||||
// NB logged out user id as NaN so that it can never be used in equality testing since NaN !== NaN
|
// NB logged out user id as NaN so that it can never be used in equality testing since NaN !== NaN
|
||||||
module.exports.selectUserId = state => get(state, ['session', 'session', 'user', 'id'], NaN);
|
module.exports.selectUserId = state => get(state, ['session', 'session', 'user', 'id'], NaN);
|
||||||
|
|
|
@ -3,7 +3,7 @@ const keyMirror = require('keymirror');
|
||||||
const api = require('../lib/api');
|
const api = require('../lib/api');
|
||||||
const log = require('../lib/log');
|
const log = require('../lib/log');
|
||||||
|
|
||||||
const {selectUsername, selectToken} = require('./session');
|
const {selectUsername, selectToken, selectIsEducator} = require('./session');
|
||||||
|
|
||||||
const Status = keyMirror({
|
const Status = keyMirror({
|
||||||
FETCHED: null,
|
FETCHED: null,
|
||||||
|
@ -22,6 +22,9 @@ const getInitialState = () => ({
|
||||||
followers: 0,
|
followers: 0,
|
||||||
owner: null,
|
owner: null,
|
||||||
|
|
||||||
|
// BEWARE: classroomId is only loaded if the user is an educator
|
||||||
|
classroomId: null,
|
||||||
|
|
||||||
rolesStatus: Status.NOT_FETCHED,
|
rolesStatus: Status.NOT_FETCHED,
|
||||||
manager: false,
|
manager: false,
|
||||||
curator: false,
|
curator: false,
|
||||||
|
@ -95,6 +98,7 @@ const selectStudioLoadFailed = state => state.studio.infoStatus === Status.ERROR
|
||||||
const selectIsFetchingInfo = state => state.studio.infoStatus === Status.FETCHING;
|
const selectIsFetchingInfo = state => state.studio.infoStatus === Status.FETCHING;
|
||||||
const selectIsFollowing = state => state.studio.following;
|
const selectIsFollowing = state => state.studio.following;
|
||||||
const selectIsFetchingRoles = state => state.studio.rolesStatus === Status.FETCHING;
|
const selectIsFetchingRoles = state => state.studio.rolesStatus === Status.FETCHING;
|
||||||
|
const selectClassroomId = state => state.studio.classroomId;
|
||||||
|
|
||||||
// Thunks
|
// Thunks
|
||||||
const getInfo = () => ((dispatch, getState) => {
|
const getInfo = () => ((dispatch, getState) => {
|
||||||
|
@ -138,6 +142,14 @@ const getRoles = () => ((dispatch, getState) => {
|
||||||
invited: body.invited
|
invited: body.invited
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Since the user is now loaded, it's a good time to check if the studio is part of a classroom
|
||||||
|
if (selectIsEducator(state)) {
|
||||||
|
api({uri: `/studios/${studioId}/classroom`}, (err, body, res) => {
|
||||||
|
// No error states for inability/problems loading classroom, just swallow them
|
||||||
|
if (!err && res.statusCode === 200 && body) dispatch(setInfo({classroomId: body.id}));
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -161,5 +173,6 @@ module.exports = {
|
||||||
selectStudioLoadFailed,
|
selectStudioLoadFailed,
|
||||||
selectIsFetchingInfo,
|
selectIsFetchingInfo,
|
||||||
selectIsFetchingRoles,
|
selectIsFetchingRoles,
|
||||||
selectIsFollowing
|
selectIsFollowing,
|
||||||
|
selectClassroomId
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue