![JAR search and dependency download from the Maven repository](/logo.png)
net.intelie.live.plugins.messenger.chat.ControlActionsManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plugin-messenger Show documentation
Show all versions of plugin-messenger Show documentation
Intelie Live Messenger Plugin
The newest version!
package net.intelie.live.plugins.messenger.chat;
import net.intelie.live.*;
import net.intelie.live.plugins.feed.api.FeedDef;
import net.intelie.live.plugins.messenger.data.RoomData;
import net.intelie.live.plugins.messenger.data.UserData;
import net.intelie.live.plugins.messenger.data.UserRoomData;
import net.intelie.live.plugins.messenger.data.UserUpdateInfo;
import net.intelie.pipes.util.Escapes;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import static net.intelie.live.plugins.messenger.chat.EventUtils.toEvent;
import static net.intelie.live.plugins.messenger.chat.MessengerConstants.*;
public class ControlActionsManager {
private static final List INDEX_FIELDS = Collections.singletonList(Event.TIMESTAMP);
public static final String CONTROL_ACTION = "__messenger_control";
public static final String ACTION_FIELD = "action";
public static final String BROADCAST_FIELD = "broadcast";
private final EventLobby lobby;
private final LoggedUser user;
public ControlActionsManager(Live live) throws Exception {
this.lobby = live.engine().getEventLobby();
this.user = live.auth().getLoggedUser();
live.index().registerIndex(new IndexDef(CONTROL_ACTION, INDEX_FIELDS));
MainStorageProvider storage = live.engine().getMainStorage();
storage.ensureIndex(new IndexDef(CONTROL_ACTION, "uid"));
storage.ensureIndex(new IndexDef(CONTROL_ACTION, "createdAt", "room.id"));
}
public void roomCreatedAction(RoomData roomData) {
this.lobbyRoomAction(roomData, ROOM_CREATED_ACTION);
}
public void roomRenamedAction(String oldName, RoomData roomData) {
HashMap map = commonEventFields(roomData, ROOM_RENAMED_ACTION);
map.put("oldName", oldName);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
public void roomArchivedAction(RoomData roomData) {
this.lobbyRoomAction(roomData, ROOM_ARCHIVED_ACTION);
}
public void roomDeletedAction(RoomData roomData) {
this.lobbyRoomAction(roomData, ROOM_DELETED_ACTION);
}
public void roomRestoredAction(RoomData roomData) {
this.lobbyRoomAction(roomData, ROOM_RESTORED_ACTION);
}
public void roomMutedAction(UserRoomData userRoomData) {
HashMap map = commonEventFields(userRoomData, ROOM_MUTED_ACTION);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
public void roomFavoriteAction(UserRoomData userRoomData) {
HashMap map = commonEventFields(userRoomData, ROOM_FAVORITE_ACTION);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
public void updateRoomUsersAction(RoomData roomData, List addedOrUpdatedUsers, List removedUsers) {
HashMap map = commonEventFields(roomData, ROOM_USERS_UPDATED_ACTION);
map.put("addedOrUpdatedUsers", addedOrUpdatedUsers);
map.put("removedUsers", removedUsers);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
public void roomUserAddedAction(UserData user, RoomData roomData) {
this.lobbyRoomUserAction(roomData, user, ROOM_USER_ADDED_ACTION);
}
public void roomUserRemovedAction(UserData user, RoomData roomData) {
this.lobbyRoomUserAction(roomData, user, ROOM_USER_REMOVED_ACTION);
}
public void roomUserAdminChangedAction(UserData user, RoomData roomData) {
this.lobbyRoomUserAction(roomData, user, ROOM_USER_ADMIN_CHANGED_ACTION);
}
public void userJoinedMessengerAction(UserData userData) {
this.lobbyBroadCastAction(userData, USER_JOINED_MESSENGER_ACTION);
}
public void userLeftMessengerAction(UserData userData) {
this.lobbyBroadCastAction(userData, USER_LEFT_MESSENGER_ACTION);
}
public FeedDef.FeedItem feedItem() {
FeedDef.FeedItem item = new FeedDef.FeedItem();
item.setType(CONTROL_ACTION);
item.setTimestamp("createdAt");
return item;
}
public FeedDef.FeedItem feedItem(String roomId) {
FeedDef.FeedItem item = feedItem();
item.setFilter("room->id!:" + Escapes.formatString(roomId));
return item;
}
private HashMap commonEventFields(RoomData roomData, String action) {
UserDef user = this.user.getUser();
UserData userData = new UserData(user.getId(), user.getDisplayName());
HashMap map = basicEvent();
map.put("sender", userData);
map.put("room", roomData);
map.put(ACTION_FIELD, action);
return map;
}
private void lobbyRoomAction(RoomData roomData, String action) {
HashMap map = commonEventFields(roomData, action);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
private void lobbyBroadCastAction(UserData user, String action) {
HashMap map = basicEvent();
map.put("user", user);
map.put(BROADCAST_FIELD, true);
map.put(Event.SKIP_STORAGE, true);
map.put(ACTION_FIELD, action);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
private void lobbyRoomUserAction(RoomData roomData, UserData userData, String action) {
HashMap map = commonEventFields(roomData, action);
map.put("user", userData);
lobby.enter(CONTROL_ACTION, MESSENGER_EVENT_SRC, toEvent(map));
}
private static HashMap basicEvent() {
HashMap map = new HashMap<>();
String uid = UUID.randomUUID().toString().replace("-", "");
map.put("uid", uid);
map.put("createdAt", System.currentTimeMillis());
return map;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy