feat(room): add WS events for AI config and repo lifecycle changes
Add RoomAiUpdated, RepoCreated, RepoUpdated, RepoDeleted event types.
Publish RoomAiUpdated after room_ai upsert/delete and repo events
after repo create/update. Always set model_name in AI list response
(fallback to "AI {uuid}" when model lookup fails) so frontend never
displays a raw UUID.
This commit is contained in:
parent
283835eb26
commit
d72019e39f
@ -28,9 +28,10 @@ impl RoomService {
|
||||
.await
|
||||
.ok()
|
||||
.flatten()
|
||||
.map(|m| m.name);
|
||||
.map(|m| m.name)
|
||||
.unwrap_or_else(|| format!("AI {}", model.model));
|
||||
let mut resp = super::RoomAiResponse::from(model);
|
||||
resp.model_name = model_name;
|
||||
resp.model_name = Some(model_name);
|
||||
responses.push(resp);
|
||||
}
|
||||
|
||||
@ -113,9 +114,22 @@ impl RoomService {
|
||||
.await
|
||||
.ok()
|
||||
.flatten()
|
||||
.map(|m| m.name);
|
||||
.map(|m| m.name)
|
||||
.unwrap_or_else(|| format!("AI {}", saved.model));
|
||||
let mut resp = super::RoomAiResponse::from(saved);
|
||||
resp.model_name = model_name;
|
||||
resp.model_name = Some(model_name);
|
||||
|
||||
if let Ok(room) = self.find_room_or_404(room_id).await {
|
||||
self.publish_room_event(
|
||||
room.project,
|
||||
super::RoomEventType::RoomAiUpdated,
|
||||
Some(room_id),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
Ok(resp)
|
||||
}
|
||||
@ -132,6 +146,19 @@ impl RoomService {
|
||||
room_ai::Entity::delete_by_id((room_id, model_id))
|
||||
.exec(&self.db)
|
||||
.await?;
|
||||
|
||||
if let Ok(room) = self.find_room_or_404(room_id).await {
|
||||
self.publish_room_event(
|
||||
room.project,
|
||||
super::RoomEventType::RoomAiUpdated,
|
||||
Some(room_id),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,6 +35,10 @@ pub enum RoomEventType {
|
||||
ReactionRemoved,
|
||||
TypingStart,
|
||||
TypingStop,
|
||||
RoomAiUpdated,
|
||||
RepoCreated,
|
||||
RepoUpdated,
|
||||
RepoDeleted,
|
||||
}
|
||||
|
||||
impl RoomEventType {
|
||||
@ -59,6 +63,10 @@ impl RoomEventType {
|
||||
RoomEventType::ReactionRemoved => "reaction_removed",
|
||||
RoomEventType::TypingStart => "typing_start",
|
||||
RoomEventType::TypingStop => "typing_stop",
|
||||
RoomEventType::RoomAiUpdated => "room_ai_updated",
|
||||
RoomEventType::RepoCreated => "repo_created",
|
||||
RoomEventType::RepoUpdated => "repo_updated",
|
||||
RoomEventType::RepoDeleted => "repo_deleted",
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,6 +91,10 @@ impl RoomEventType {
|
||||
"reaction_removed" => Some(RoomEventType::ReactionRemoved),
|
||||
"typing_start" => Some(RoomEventType::TypingStart),
|
||||
"typing_stop" => Some(RoomEventType::TypingStop),
|
||||
"room_ai_updated" => Some(RoomEventType::RoomAiUpdated),
|
||||
"repo_created" => Some(RoomEventType::RepoCreated),
|
||||
"repo_updated" => Some(RoomEventType::RepoUpdated),
|
||||
"repo_deleted" => Some(RoomEventType::RepoDeleted),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
@ -465,6 +465,16 @@ impl AppService {
|
||||
}
|
||||
active.update(&txn).await?;
|
||||
txn.commit().await?;
|
||||
|
||||
self.room.publish_room_event(
|
||||
repo.project,
|
||||
room::RoomEventType::RepoUpdated,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
).await;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@ -337,6 +337,15 @@ impl AppService {
|
||||
)
|
||||
.await;
|
||||
|
||||
self.room.publish_room_event(
|
||||
project.id,
|
||||
room::RoomEventType::RepoCreated,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
).await;
|
||||
|
||||
Ok(ProjectRepoCreateResponse {
|
||||
uid: repo.id,
|
||||
repo_name: repo.repo_name,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user