added rememberId for task locking

main
alex 2023-06-03 22:58:53 +02:00
parent 69de96b3aa
commit ecc1f94942
4 changed files with 16 additions and 13 deletions

View File

@ -304,15 +304,17 @@ func StartUnlockLockedGroupTaskStepsTicker() {
log.Debug().Msgf("Unlocked task step %v", index) log.Debug().Msgf("Unlocked task step %v", index)
cache.RemoveLockedGroupTaskStep(index) cache.RemoveLockedGroupTaskStep(index)
socketclients.BroadcastMessageExceptUserSessionId(taskStep.LockedByUserSession, socketclients.BroadcastMessage(
structs.SendSocketMessage{ structs.SendSocketMessage{
Cmd: utils.SentCmdTaskUnlocked, Cmd: utils.SentCmdTaskUnlocked,
Body: struct { Body: struct {
GroupTaskId string GroupTaskId string
Step uint8 Step uint8
RememberId string
}{ }{
GroupTaskId: taskStep.GroupTaskId, GroupTaskId: taskStep.GroupTaskId,
Step: taskStep.Step, Step: taskStep.Step,
RememberId: taskStep.RememberId,
}, },
}) })
} }

View File

@ -20,6 +20,7 @@ func AddLockedGroupTaskStep(lockedGroupTaskStep structs.LockedGroupTaskSteps) (I
step.LockedByUserId == lockedGroupTaskStep.LockedByUserId { step.LockedByUserId == lockedGroupTaskStep.LockedByUserId {
isAlreadyInList = true isAlreadyInList = true
lockedGroupTaskSteps[i].LockedAt = time.Now() lockedGroupTaskSteps[i].LockedAt = time.Now()
lockedGroupTaskSteps[i].RememberId = lockedGroupTaskStep.RememberId
break break
} }
} }

View File

@ -75,10 +75,10 @@ type TaskParameter struct {
// used for ui when a user is writing into input field to lock the task step for other users // used for ui when a user is writing into input field to lock the task step for other users
type LockedGroupTaskSteps struct { type LockedGroupTaskSteps struct {
LockedByUserId string LockedByUserId string
LockedByUserSession string // user session is needed to prevent sending the unlocking message to the user who are writing
GroupTaskId string GroupTaskId string
Step uint8 Step uint8
LockedAt time.Time LockedAt time.Time
RememberId string
} }
// used for ui when a user types into input fields to sync to other users and show them this when opening the group task view // used for ui when a user types into input fields to sync to other users and show them this when opening the group task view

View File

@ -159,14 +159,14 @@ func RunHub() {
isAlreadyInList := cache.AddLockedGroupTaskStep(structs.LockedGroupTaskSteps{ isAlreadyInList := cache.AddLockedGroupTaskStep(structs.LockedGroupTaskSteps{
LockedByUserId: receivedMessage.Body["lockedByUserId"].(string), LockedByUserId: receivedMessage.Body["lockedByUserId"].(string),
LockedByUserSession: data.Conn.Locals("sessionId").(string),
GroupTaskId: receivedMessage.Body["groupTaskId"].(string), GroupTaskId: receivedMessage.Body["groupTaskId"].(string),
Step: uint8(receivedMessage.Body["step"].(float64)), Step: uint8(receivedMessage.Body["step"].(float64)),
LockedAt: time.Now(), LockedAt: time.Now(),
RememberId: receivedMessage.Body["rememberId"].(string),
}) })
if !isAlreadyInList { if !isAlreadyInList {
socketclients.BroadcastMessageExceptUserSessionId(data.Conn.Locals("sessionId").(string), structs.SendSocketMessage{ socketclients.BroadcastMessage(structs.SendSocketMessage{
Cmd: utils.SentCmdTaskLocked, Cmd: utils.SentCmdTaskLocked,
Body: receivedMessage.Body, Body: receivedMessage.Body,
}) })
@ -174,7 +174,7 @@ func RunHub() {
break break
case utils.ReceivedCmdUpdateGroupTaskStepUserInputValue: case utils.ReceivedCmdUpdateGroupTaskStepUserInputValue:
socketclients.BroadcastMessageExceptUserSessionId(data.Conn.Locals("sessionId").(string), structs.SendSocketMessage{ socketclients.BroadcastMessage(structs.SendSocketMessage{
Cmd: utils.SentCmdUpdateGroupTaskStepUserInputValue, Cmd: utils.SentCmdUpdateGroupTaskStepUserInputValue,
Body: receivedMessage.Body, Body: receivedMessage.Body,
}) })