Fix Aktivitätenstatus

Dieser Commit ist enthalten in:
Claude Project Manager
2025-07-08 10:33:20 +02:00
Ursprung 995682b6da
Commit d1667f9e0d
5 geänderte Dateien mit 196 neuen und 48 gelöschten Zeilen

Datei anzeigen

@ -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}")