123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import { queryNotices } from '@/services/user'
- const GlobalModel = {
- namespace: 'global',
- state: {
- collapsed: false,
- notices: []
- },
- effects: {
- *fetchNotices(_, { call, put, select }) {
- const data = yield call(queryNotices)
- yield put({
- type: 'saveNotices',
- payload: data
- })
- const unreadCount = yield select(
- state => state.global.notices.filter(item => !item.read).length
- )
- yield put({
- type: 'user/changeNotifyCount',
- payload: {
- totalCount: data.length,
- unreadCount
- }
- })
- },
- *clearNotices({ payload }, { put, select }) {
- yield put({
- type: 'saveClearedNotices',
- payload
- })
- const count = yield select(state => state.global.notices.length)
- const unreadCount = yield select(
- state => state.global.notices.filter(item => !item.read).length
- )
- yield put({
- type: 'user/changeNotifyCount',
- payload: {
- totalCount: count,
- unreadCount
- }
- })
- },
- *changeNoticeReadState({ payload }, { put, select }) {
- const notices = yield select(state =>
- state.global.notices.map(item => {
- const notice = { ...item }
- if (notice.id === payload) {
- notice.read = true
- }
- return notice
- })
- )
- yield put({
- type: 'saveNotices',
- payload: notices
- })
- yield put({
- type: 'user/changeNotifyCount',
- payload: {
- totalCount: notices.length,
- unreadCount: notices.filter(item => !item.read).length
- }
- })
- }
- },
- reducers: {
- changeLayoutCollapsed(
- state = {
- notices: [],
- collapsed: true
- },
- { payload }
- ) {
- return { ...state, collapsed: payload }
- },
- saveNotices(state, { payload }) {
- return {
- collapsed: false,
- ...state,
- notices: payload
- }
- },
- saveClearedNotices(
- state = {
- notices: [],
- collapsed: true
- },
- { payload }
- ) {
- return {
- ...state,
- collapsed: false,
- notices: state.notices.filter(item => item.type !== payload)
- }
- }
- }
- }
- export default GlobalModel
|