parent
05b0c985b4
commit
d6a64f45fd
@ -0,0 +1,8 @@ |
|||||||
|
export const NOTIFICATION_DISMISS = 'NOTIFICATION_DISMISS'; |
||||||
|
|
||||||
|
export function dismissNotification(notification) { |
||||||
|
return { |
||||||
|
type: NOTIFICATION_DISMISS, |
||||||
|
notification: notification |
||||||
|
}; |
||||||
|
}; |
@ -0,0 +1,25 @@ |
|||||||
|
import { connect } from 'react-redux'; |
||||||
|
import { NotificationStack } from 'react-notification'; |
||||||
|
import { dismissNotification } from '../actions/notifications'; |
||||||
|
|
||||||
|
const mapStateToProps = (state, props) => { |
||||||
|
return { |
||||||
|
notifications: state.get('notifications').map((item, i) => ({ |
||||||
|
message: item.get('message'), |
||||||
|
title: item.get('title'), |
||||||
|
key: i, |
||||||
|
action: 'Dismiss', |
||||||
|
dismissAfter: 5000 |
||||||
|
})).toJS() |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
const mapDispatchToProps = (dispatch) => { |
||||||
|
return { |
||||||
|
onDismiss: notifiction => { |
||||||
|
dispatch(dismissNotification(notifiction)); |
||||||
|
} |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
export default connect(mapStateToProps, mapDispatchToProps)(NotificationStack); |
@ -0,0 +1,27 @@ |
|||||||
|
import { COMPOSE_SUBMIT_FAIL, COMPOSE_UPLOAD_FAIL } from '../actions/compose'; |
||||||
|
import { FOLLOW_SUBMIT_FAIL } from '../actions/follow'; |
||||||
|
import { REBLOG_FAIL, FAVOURITE_FAIL } from '../actions/interactions'; |
||||||
|
import { TIMELINE_REFRESH_FAIL } from '../actions/timelines'; |
||||||
|
import { NOTIFICATION_DISMISS } from '../actions/notifications'; |
||||||
|
import Immutable from 'immutable'; |
||||||
|
|
||||||
|
const initialState = Immutable.List(); |
||||||
|
|
||||||
|
export default function meta(state = initialState, action) { |
||||||
|
switch(action.type) { |
||||||
|
case COMPOSE_SUBMIT_FAIL: |
||||||
|
case COMPOSE_UPLOAD_FAIL: |
||||||
|
case FOLLOW_SUBMIT_FAIL: |
||||||
|
case REBLOG_FAIL: |
||||||
|
case FAVOURITE_FAIL: |
||||||
|
case TIMELINE_REFRESH_FAIL: |
||||||
|
return state.push(Immutable.fromJS({ |
||||||
|
message: action.error.response.statusText, |
||||||
|
title: `${action.error.response.status}` |
||||||
|
})); |
||||||
|
case NOTIFICATION_DISMISS: |
||||||
|
return state.clear(); |
||||||
|
default: |
||||||
|
return state; |
||||||
|
} |
||||||
|
}; |
Loading…
Reference in new issue