import { useDispatch } from 'react-redux' ; import convertMessage from '@fiora/utils/convertMessage' ; import { User , Linkman , Message } from '../state/reducer' ; import { ActionTypes } from '../state/action' ; /**
 * 获取 redux action
 */ export default function useAction ( ) { const dispatch = useDispatch ( ) ; return { setUser ( user ) { dispatch ( { type : ActionTypes . SetUser , payload : user , } ) ; } , logout ( ) { dispatch ( { type : ActionTypes . Logout , } ) ; } , setAvatar ( avatar ) { dispatch ( { type : ActionTypes . SetAvatar , payload : avatar , } ) ; } , setFocus ( linkmanId ) { dispatch ( { type : ActionTypes . SetFocus , payload : linkmanId , } ) ; } , addLinkman ( linkman , focus = false ) { dispatch ( { type : ActionTypes . AddLinkman , payload : { linkman , focus , } , } ) ; } , removeLinkman ( linkmanId ) { dispatch ( { type : ActionTypes . RemoveLinkman , payload : linkmanId , } ) ; } , addLinkmanHistoryMessages ( linkmanId , messages ) { messages . forEach ( ( message ) => convertMessage ( message ) ) ; dispatch ( { type : ActionTypes . AddLinkmanHistoryMessages , payload : { linkmanId , messages , } , } ) ; } , addLinkmanMessage ( linkmanId , message ) { convertMessage ( message ) ; dispatch ( { type : ActionTypes . AddLinkmanMessage , payload : { linkmanId , message , } , } ) ; } , setLinkmanProperty ( linkmanId , key , value ) { dispatch ( { type : ActionTypes . SetLinkmanProperty , payload : { linkmanId , key , value , } , } ) ; } , updateMessage ( linkmanId , messageId , value ) { convertMessage ( value ) ; dispatch ( { type : ActionTypes . UpdateMessage , payload : { linkmanId , messageId , value , } , } ) ; } , deleteMessage ( linkmanId , messageId , shouldDelete = false ) { dispatch ( { type : ActionTypes . DeleteMessage , payload : { linkmanId , messageId , shouldDelete , } , } ) ; } , setStatus ( key , value ) { dispatch ( { type : ActionTypes . SetStatus , payload : { key , value , } , } ) ; window . localStorage . setItem ( key , value ) ; } , toggleLoginRegisterDialog ( visible ) { dispatch ( { type : ActionTypes . SetStatus , payload : { key : 'loginRegisterDialogVisible' , value : visible , } , } ) ; } , } ; }