fix(workspace): streamline write lock release, sync, and active editor badge
MindSift CI & Docker Release / Build, Test in Container & Push (push) Successful in 1m4s

This commit is contained in:
sandrodach committed 2026-10-25 11:21:46 +01:00
1 parent 51244c736c
commit 920716be25
3 files changed
+132 -73

No files matched your search

+4 -4
View File
@@ -185,7 +185,7 @@ func (h *Hub) HeartbeatDocLock(docID, userID string, ttl time.Duration) bool {
return true
}
func (h *Hub) ReleaseDocLock(docID, userID string) bool {
func (h *Hub) ReleaseDocLock(docID, userID string, isAdmin bool) bool {
h.mu.Lock()
defer h.mu.Unlock()
@@ -193,7 +193,7 @@ func (h *Hub) ReleaseDocLock(docID, userID string) bool {
if !ok {
return false
}
if item.userID == userID || userID == "admin" {
if item.userID == userID || isAdmin || userID == "admin" {
delete(h.locks, docID)
return true
}
@@ -217,7 +217,7 @@ func (h *Hub) GetDocLock(docID string) *domain.DocLockInfo {
}
func (h *Hub) cleanupLocksLoop() {
ticker := time.NewTicker(4 * time.Second)
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
for range ticker.C {
@@ -387,7 +387,7 @@ func (c *Client) readPump() {
case "HEARTBEAT_DOC":
c.hub.HeartbeatDocLock(docID, c.userID, 30*time.Second)
case "UNLOCK_DOC":
if c.hub.ReleaseDocLock(docID, c.userID) {
if c.hub.ReleaseDocLock(docID, c.userID, false) {
c.hub.BroadcastDocEvent(docID, "DOC_UNLOCKED", map[string]string{"docId": docID, "doc_id": docID})
}
}