110 lines
1.9 KiB
TypeScript
110 lines
1.9 KiB
TypeScript
import { Action } from 'redux';
|
|
|
|
import { ERoomType } from '../definitions/ERoomType';
|
|
import { ROOM } from './actionsTypes';
|
|
|
|
// TYPE RETURN RELATED
|
|
type ISelected = string[];
|
|
|
|
export interface ITransferData {
|
|
roomId: string;
|
|
userId?: string;
|
|
departmentId?: string;
|
|
}
|
|
|
|
// ACTION RETURN RELATED
|
|
interface IBaseReturn extends Action {
|
|
rid: string;
|
|
}
|
|
|
|
type TSubscribeRoom = IBaseReturn;
|
|
type TUnsubscribeRoom = IBaseReturn;
|
|
type TCloseRoom = IBaseReturn;
|
|
|
|
type TRoom = Record<string, any>;
|
|
|
|
interface ILeaveRoom extends Action {
|
|
roomType: ERoomType;
|
|
room: TRoom;
|
|
selected?: ISelected;
|
|
}
|
|
|
|
interface IDeleteRoom extends Action {
|
|
roomType: ERoomType;
|
|
room: TRoom;
|
|
selected?: ISelected;
|
|
}
|
|
|
|
interface IForwardRoom extends Action {
|
|
transferData: ITransferData;
|
|
rid: string;
|
|
}
|
|
|
|
interface IUserTyping extends Action {
|
|
rid: string;
|
|
status: boolean;
|
|
}
|
|
|
|
export type TActionsRoom = TSubscribeRoom & TUnsubscribeRoom & TCloseRoom & ILeaveRoom & IDeleteRoom & IForwardRoom & IUserTyping;
|
|
|
|
export function subscribeRoom(rid: string): TSubscribeRoom {
|
|
return {
|
|
type: ROOM.SUBSCRIBE,
|
|
rid
|
|
};
|
|
}
|
|
|
|
export function unsubscribeRoom(rid: string): TUnsubscribeRoom {
|
|
return {
|
|
type: ROOM.UNSUBSCRIBE,
|
|
rid
|
|
};
|
|
}
|
|
|
|
export function leaveRoom(roomType: ERoomType, room: TRoom, selected?: ISelected): ILeaveRoom {
|
|
return {
|
|
type: ROOM.LEAVE,
|
|
room,
|
|
roomType,
|
|
selected
|
|
};
|
|
}
|
|
|
|
export function deleteRoom(roomType: ERoomType, room: TRoom, selected?: ISelected): IDeleteRoom {
|
|
return {
|
|
type: ROOM.DELETE,
|
|
room,
|
|
roomType,
|
|
selected
|
|
};
|
|
}
|
|
|
|
export function closeRoom(rid: string): TCloseRoom {
|
|
return {
|
|
type: ROOM.CLOSE,
|
|
rid
|
|
};
|
|
}
|
|
|
|
export function forwardRoom(rid: string, transferData: ITransferData): IForwardRoom {
|
|
return {
|
|
type: ROOM.FORWARD,
|
|
transferData,
|
|
rid
|
|
};
|
|
}
|
|
|
|
export function removedRoom(): Action {
|
|
return {
|
|
type: ROOM.REMOVED
|
|
};
|
|
}
|
|
|
|
export function userTyping(rid: string, status = true): IUserTyping {
|
|
return {
|
|
type: ROOM.USER_TYPING,
|
|
rid,
|
|
status
|
|
};
|
|
}
|