public static void messageReceived(Holder holder, ChannelHandlerContext ctx, MobileStateHolder state, StringMessage message) { String[] splitted = message.body.split(StringUtils.BODY_SEPARATOR_STRING); int dashId = Integer.parseInt(splitted[0]); DashBoard dash = state.user.profile.getDashByIdOrThrow(dashId); switch (splitted[1]) { case "on" : dash.isShared = true; break; default : dash.isShared = false; break; } Session session = holder.sessionDao.get(state.userKey); session.sendToSharedApps(ctx.channel(), dash.sharedToken, message.command, message.id, message.body); ctx.writeAndFlush(ok(message.id), ctx.voidPromise()); } }
public static void messageReceived(Holder holder, ChannelHandlerContext ctx, MobileStateHolder state, StringMessage message) { var user = state.user; String sharedToken; if (message.body.length() > 0) { log.debug("DeActivating dash {} for user {}", message.body, user.email); int dashId = Integer.parseInt(message.body); DashBoard dashBoard = user.profile.getDashByIdOrThrow(dashId); dashBoard.deactivate(); sharedToken = dashBoard.sharedToken; } else { for (DashBoard dashBoard : user.profile.dashBoards) { dashBoard.deactivate(); } sharedToken = SharedTokenManager.ALL; } user.lastModifiedTs = System.currentTimeMillis(); SessionDao sessionDao = holder.sessionDao; var session = sessionDao.get(state.userKey); session.sendToSharedApps(ctx.channel(), sharedToken, message.command, message.id, message.body); ctx.writeAndFlush(ok(message.id), ctx.voidPromise()); }
public static void processDeviceSelectorCommand(ChannelHandlerContext ctx, Session session, Profile profile, DashBoard dash, StringMessage message, String[] splitBody) { //in format "vu 200000 1" long widgetId = Long.parseLong(splitBody[1]); Widget deviceSelector = dash.getWidgetByIdOrThrow(widgetId); if (deviceSelector instanceof DeviceSelector) { int selectedDeviceId = Integer.parseInt(splitBody[2]); ((DeviceSelector) deviceSelector).value = selectedDeviceId; ctx.write(ok(message.id), ctx.voidPromise()); //sending to shared dashes and master-master apps session.sendToSharedApps(ctx.channel(), dash.sharedToken, APP_SYNC, message.id, message.body); //we need to send syncs not only to main app, but all to all shared apps for (Channel channel : session.appChannels) { MobileStateHolder mobileStateHolder = getAppState(channel); if (mobileStateHolder != null && mobileStateHolder.contains(dash.sharedToken)) { boolean isNewSyncFormat = mobileStateHolder.isNewSyncFormat(); profile.sendAppSyncs(dash, channel, selectedDeviceId, isNewSyncFormat); } channel.flush(); } } }
session.sendToSharedApps(ctx.channel(), dash.sharedToken, APP_SYNC, message.id, message.body);