You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.4 KiB
67 lines
1.4 KiB
import { queryNotices } from '../services/api';
|
|
|
|
export default {
|
|
namespace: 'global',
|
|
|
|
state: {
|
|
collapsed: false,
|
|
notices: [],
|
|
},
|
|
|
|
effects: {
|
|
*fetchNotices(_, { call, put }) {
|
|
const data = yield call(queryNotices);
|
|
yield put({
|
|
type: 'saveNotices',
|
|
payload: data,
|
|
});
|
|
yield put({
|
|
type: 'user/changeNotifyCount',
|
|
payload: data.length,
|
|
});
|
|
},
|
|
*clearNotices({ payload }, { put, select }) {
|
|
yield put({
|
|
type: 'saveClearedNotices',
|
|
payload,
|
|
});
|
|
const count = yield select(state => state.global.notices.length);
|
|
yield put({
|
|
type: 'user/changeNotifyCount',
|
|
payload: count,
|
|
});
|
|
},
|
|
},
|
|
|
|
reducers: {
|
|
changeLayoutCollapsed(state, { payload }) {
|
|
return {
|
|
...state,
|
|
collapsed: payload,
|
|
};
|
|
},
|
|
saveNotices(state, { payload }) {
|
|
return {
|
|
...state,
|
|
notices: payload,
|
|
};
|
|
},
|
|
saveClearedNotices(state, { payload }) {
|
|
return {
|
|
...state,
|
|
notices: state.notices.filter(item => item.type !== payload),
|
|
};
|
|
},
|
|
},
|
|
|
|
subscriptions: {
|
|
setup({ history }) {
|
|
// Subscribe history(url) change, trigger `load` action if pathname is `/`
|
|
return history.listen(({ pathname, search }) => {
|
|
if (typeof window.ga !== 'undefined') {
|
|
window.ga('send', 'pageview', pathname + search);
|
|
}
|
|
});
|
|
},
|
|
},
|
|
};
|
|
|