Fix Aktivitätenstatus
Dieser Commit ist enthalten in:
@ -85,10 +85,23 @@ class ActivitySyncService:
|
||||
@self.sio.event
|
||||
def activities_update(data):
|
||||
"""Handle activities update from server"""
|
||||
self.activities = data
|
||||
logger.debug(f"Received activities update: {len(data)} activities")
|
||||
logger.debug(f"Received raw activities update: {len(data)} items")
|
||||
|
||||
# Filter out inactive entries and ensure we only keep active ones
|
||||
active_activities = [
|
||||
activity for activity in data
|
||||
if activity.get('isActive', False)
|
||||
]
|
||||
|
||||
# Log details about the activities
|
||||
for activity in active_activities:
|
||||
logger.debug(f"Active: {activity.get('userName')} on {activity.get('projectName')}")
|
||||
|
||||
self.activities = active_activities
|
||||
logger.info(f"Activities update: {len(active_activities)} active (of {len(data)} total)")
|
||||
|
||||
if self.on_activities_update:
|
||||
self.on_activities_update(data)
|
||||
self.on_activities_update(active_activities)
|
||||
|
||||
@self.sio.event
|
||||
def connect_error(data):
|
||||
@ -131,36 +144,57 @@ class ActivitySyncService:
|
||||
|
||||
def start_activity(self, project_name: str, project_path: str, description: str = ""):
|
||||
"""Start a new activity"""
|
||||
logger.debug(f"start_activity called for: {project_name}")
|
||||
|
||||
if not self.connected or not self.sio:
|
||||
logger.warning("Not connected to activity server")
|
||||
return False
|
||||
|
||||
try:
|
||||
# Set current activity immediately
|
||||
self.current_activity = {
|
||||
'projectName': project_name,
|
||||
'projectPath': project_path,
|
||||
'userId': self.user_id,
|
||||
'userName': self.user_name,
|
||||
'isActive': True
|
||||
}
|
||||
logger.debug(f"Set current_activity: {self.current_activity}")
|
||||
|
||||
# Emit to server
|
||||
self.sio.emit('activity-start', {
|
||||
'projectName': project_name,
|
||||
'projectPath': project_path,
|
||||
'description': description
|
||||
})
|
||||
self.current_activity = {
|
||||
'projectName': project_name,
|
||||
'projectPath': project_path
|
||||
}
|
||||
|
||||
logger.info(f"Started activity for project: {project_name}")
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to start activity: {e}")
|
||||
self.current_activity = None
|
||||
return False
|
||||
|
||||
def stop_activity(self):
|
||||
"""Stop the current activity"""
|
||||
logger.debug(f"stop_activity called, current: {self.current_activity}")
|
||||
|
||||
if not self.connected or not self.sio:
|
||||
logger.warning("Not connected to activity server")
|
||||
return False
|
||||
|
||||
try:
|
||||
self.sio.emit('activity-stop')
|
||||
# Store project name for logging
|
||||
project_name = self.current_activity.get('projectName') if self.current_activity else 'None'
|
||||
|
||||
# Clear current activity immediately
|
||||
self.current_activity = None
|
||||
logger.info("Stopped current activity")
|
||||
logger.debug("Cleared current_activity")
|
||||
|
||||
# Emit to server
|
||||
self.sio.emit('activity-stop')
|
||||
|
||||
logger.info(f"Stopped activity for project: {project_name}")
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to stop activity: {e}")
|
||||
@ -179,7 +213,9 @@ class ActivitySyncService:
|
||||
)
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
return data.get('activities', [])
|
||||
all_activities = data.get('activities', [])
|
||||
# Filter to only return active activities
|
||||
return [a for a in all_activities if a.get('isActive', False)]
|
||||
else:
|
||||
logger.error(f"Failed to fetch activities: {response.status_code}")
|
||||
return []
|
||||
@ -204,17 +240,18 @@ class ActivitySyncService:
|
||||
|
||||
def get_current_activity(self) -> Optional[Dict]:
|
||||
"""Get current user's activity"""
|
||||
logger.debug(f"get_current_activity called, returning: {self.current_activity}")
|
||||
return self.current_activity
|
||||
|
||||
def _fetch_initial_activities(self):
|
||||
"""Fetch initial activities after connection"""
|
||||
try:
|
||||
activities = self.get_activities()
|
||||
activities = self.get_activities() # Already filtered to only active
|
||||
if activities:
|
||||
self.activities = activities
|
||||
if self.on_activities_update:
|
||||
self.on_activities_update(activities)
|
||||
logger.info(f"Fetched {len(activities)} initial activities")
|
||||
logger.info(f"Fetched {len(activities)} active activities")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to fetch initial activities: {e}")
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren