tripeur 4 gadi atpakaļ
vecāks
revīzija
31df6379bb

+ 2 - 1
src/main/java/fr/jaquin/bdlg/planner/websockets/DisconnectListener.java

@@ -9,6 +9,7 @@ import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.messaging.SessionDisconnectEvent;
 import fr.jaquin.bdlg.planner.websockets.messages.PlanningUpdateMessage;
+import fr.jaquin.bdlg.planner.websockets.messages.PlanningUpdateMessage.PlanningUpdateMethod;
 
 
 @Component
@@ -31,7 +32,7 @@ public class DisconnectListener extends SubscriptionMap
         } else {
           // Emit new list and lock owner
           PlanningUpdateMessage msg = new PlanningUpdateMessage();
-          msg.setMethod("toast");
+          msg.setMethod(PlanningUpdateMethod.leave);
           msg.setUser(username);
           msg.setUuid(uuid);
           msg.setPayload("Deconnection de " + username);

+ 11 - 0
src/main/java/fr/jaquin/bdlg/planner/websockets/SubscriptionListener.java

@@ -9,7 +9,9 @@ import org.springframework.context.ApplicationListener;
 import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.messaging.SessionSubscribeEvent;
+import fr.jaquin.bdlg.planner.websockets.messages.PlanningUpdateMessage;
 import fr.jaquin.bdlg.planner.websockets.messages.StompResponseMessage;
+import fr.jaquin.bdlg.planner.websockets.messages.PlanningUpdateMessage.PlanningUpdateMethod;
 import fr.jaquin.bdlg.planner.websockets.messages.StompResponseMessage.StompQuery;
 
 @Component
@@ -37,6 +39,15 @@ public class SubscriptionListener extends SubscriptionMap
         msg.setPayload("");
         String leader = map.get(uuid).get(0);
         simpMessagingTemplate.convertAndSendToUser(leader, "/queue/query", msg);
+
+        // Notify new joiner of other editor of this planning
+        msg.setType(StompQuery.planningCoeditor);
+        msg.setPayload("[" + String.join(",", map.get(uuid)) + "]");
+        simpMessagingTemplate.convertAndSendToUser(username, "/queue/query", msg);
+
+        // Notify other user that username join
+        simpMessagingTemplate.convertAndSend("/planning/" + uuid,
+            new PlanningUpdateMessage(uuid, username, PlanningUpdateMethod.join, ""));
       }
       map.get(uuid).add(username);
     }

+ 2 - 1
src/main/java/fr/jaquin/bdlg/planner/websockets/UnsubscriptionListener.java

@@ -8,6 +8,7 @@ import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.messaging.SessionUnsubscribeEvent;
 import fr.jaquin.bdlg.planner.websockets.messages.PlanningUpdateMessage;
+import fr.jaquin.bdlg.planner.websockets.messages.PlanningUpdateMessage.PlanningUpdateMethod;
 
 
 @Component
@@ -32,7 +33,7 @@ public class UnsubscriptionListener extends SubscriptionMap
         } else {
           // Emit new list and lock owner
           PlanningUpdateMessage msg = new PlanningUpdateMessage();
-          msg.setMethod("toast");
+          msg.setMethod(PlanningUpdateMethod.leave);
           msg.setUser(username);
           msg.setUuid(uuid);
           msg.setPayload("Deconnection de " + username);

+ 6 - 5
src/main/java/fr/jaquin/bdlg/planner/websockets/messages/PlanningUpdateMessage.java

@@ -2,17 +2,18 @@ package fr.jaquin.bdlg.planner.websockets.messages;
 
 public class PlanningUpdateMessage {
   public enum PlanningUpdateMethod {
-    toast, addCreneau, removeCreneau, editCreneau, addBenevole2Creneau, removeBenevole2Creneau, clearBenevole2Creneau, addCreneauGroup, addCreneauGroupAt, removeCreneauGroup, editCreneauGroup, reorderCreneauGroup, addBenevole, removeBenevole, editBenevole, addConstraint, removeConstraint, editConstraint, newVersion
+    join, leave, toast, addCreneau, removeCreneau, editCreneau, addBenevole2Creneau, removeBenevole2Creneau, clearBenevole2Creneau, addCreneauGroup, addCreneauGroupAt, removeCreneauGroup, editCreneauGroup, reorderCreneauGroup, addBenevole, removeBenevole, editBenevole, addConstraint, removeConstraint, editConstraint, newVersion
   }
 
   private String uuid;
   private String user;
-  private String method;
+  private PlanningUpdateMethod method;
   private String payload;
 
   public PlanningUpdateMessage() {}
 
-  public PlanningUpdateMessage(String uuid, String user, String method, String payload) {
+  public PlanningUpdateMessage(String uuid, String user, PlanningUpdateMethod method,
+      String payload) {
     this.uuid = uuid;
     this.user = user;
     this.method = method;
@@ -35,11 +36,11 @@ public class PlanningUpdateMessage {
     this.user = user;
   }
 
-  public String getMethod() {
+  public PlanningUpdateMethod getMethod() {
     return this.method;
   }
 
-  public void setMethod(String method) {
+  public void setMethod(PlanningUpdateMethod method) {
     this.method = method;
   }
 

+ 1 - 1
src/main/java/fr/jaquin/bdlg/planner/websockets/messages/StompResponseMessage.java

@@ -2,7 +2,7 @@ package fr.jaquin.bdlg.planner.websockets.messages;
 
 public class StompResponseMessage {
   public enum StompQuery {
-    planningRequest, planningData
+    planningRequest, planningData, planningCoeditor
   }
 
   private StompQuery type;