All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.intelie.live.plugins.messenger.Main Maven / Gradle / Ivy

The newest version!
package net.intelie.live.plugins.messenger;

import net.intelie.live.EntityContext;
import net.intelie.live.Live;
import net.intelie.live.LivePlugin;
import net.intelie.live.PermissionDetails;
import net.intelie.live.model.Language;
import net.intelie.live.plugins.messenger.api.MessengerEventFilters;
import net.intelie.live.plugins.messenger.api.MessengerResource;
import net.intelie.live.plugins.messenger.api.MessengerService;
import net.intelie.live.plugins.messenger.api.MessengerServiceImpl;
import net.intelie.live.plugins.messenger.chat.ChatManager;
import net.intelie.live.plugins.messenger.chat.ControlActionsManager;
import net.intelie.live.plugins.messenger.chat.MessagesManager;
import net.intelie.live.plugins.messenger.chat.UserRoomSettingsManager;
import net.intelie.live.plugins.messenger.connections.MessengerConnectionsRegistry;
import net.intelie.live.plugins.messenger.data.RoomDataResolver;
import net.intelie.live.plugins.messenger.data.UserDataResolver;
import net.intelie.live.plugins.messenger.search.SearchService;
import net.intelie.live.plugins.messenger.search.SearchServiceImpl;
import net.intelie.live.plugins.messenger.search.SearchableMessageHandler;
import net.intelie.live.util.PluginUtils;

public class Main implements LivePlugin {

    @Override
    public void start(Live live) throws Exception {
        PluginUtils.defaultWebSetup(live);
        EntityContext context = live.data().getContext();

        UserDataResolver userDataResolver = new UserDataResolver(context);
        RoomDataResolver roomResolver = new RoomDataResolver(userDataResolver);
        ChatManager chatManager = new ChatManager(live.settings().home(), roomResolver);
        MessagesManager messagesManager = new MessagesManager(live);
        UserRoomSettingsManager userRoomSettingsManager = new UserRoomSettingsManager(live.settings());
        ControlActionsManager controlActionsManager = new ControlActionsManager(live);
        MessengerConnectionsRegistry messengerConnectionsRegistry = new MessengerConnectionsRegistry(controlActionsManager);

        MessengerEventFilters messengerEventFilters = new MessengerEventFilters(chatManager, userRoomSettingsManager);

        MessengerServiceImpl messengerService = new MessengerServiceImpl(live, chatManager, messagesManager, controlActionsManager, messengerEventFilters, messengerConnectionsRegistry, userRoomSettingsManager, userDataResolver);
        SearchService searchService = new SearchServiceImpl(live);

        live.system().registerPluginService(MessengerService.class, messengerService);
        live.system().registerPluginService(SearchService.class, searchService);
        live.exportPackage("net.intelie.live.plugins.messenger.api");
        live.exportPackage("net.intelie.live.plugins.messenger.search");

        SearchableMessageHandler searchableMessageHandler = new SearchableMessageHandler(live, chatManager);
        live.describeAction("Registering message type event searchable handler", searchService.registerSearchableEventHandler(searchableMessageHandler));
        live.web().addService("/", new MessengerResource(messengerService, searchService));

        PermissionDetails p1 = new PermissionDetails(MessengerPermission.USE_MESSENGER, "View messenger chat rooms");
        p1.addDescription(Language.PT_BR, "Visualizar salas de mensagens");

        PermissionDetails p2 = new PermissionDetails(MessengerPermission.CREATE_ROOMS, "Create messenger chat rooms");
        p2.addDescription(Language.PT_BR, "Criar salas de mensagens");

        live.auth().addPermission(p1);
        live.auth().addPermission(p2);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy