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
|
.await
|
||||||
.ok()
|
.ok()
|
||||||
.flatten()
|
.flatten()
|
||||||
.map(|m| m.name);
|
.map(|m| m.name)
|
||||||
|
.unwrap_or_else(|| format!("AI {}", model.model));
|
||||||
let mut resp = super::RoomAiResponse::from(model);
|
let mut resp = super::RoomAiResponse::from(model);
|
||||||
resp.model_name = model_name;
|
resp.model_name = Some(model_name);
|
||||||
responses.push(resp);
|
responses.push(resp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,9 +114,22 @@ impl RoomService {
|
|||||||
.await
|
.await
|
||||||
.ok()
|
.ok()
|
||||||
.flatten()
|
.flatten()
|
||||||
.map(|m| m.name);
|
.map(|m| m.name)
|
||||||
|
.unwrap_or_else(|| format!("AI {}", saved.model));
|
||||||
let mut resp = super::RoomAiResponse::from(saved);
|
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)
|
Ok(resp)
|
||||||
}
|
}
|
||||||
@ -132,6 +146,19 @@ impl RoomService {
|
|||||||
room_ai::Entity::delete_by_id((room_id, model_id))
|
room_ai::Entity::delete_by_id((room_id, model_id))
|
||||||
.exec(&self.db)
|
.exec(&self.db)
|
||||||
.await?;
|
.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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,6 +35,10 @@ pub enum RoomEventType {
|
|||||||
ReactionRemoved,
|
ReactionRemoved,
|
||||||
TypingStart,
|
TypingStart,
|
||||||
TypingStop,
|
TypingStop,
|
||||||
|
RoomAiUpdated,
|
||||||
|
RepoCreated,
|
||||||
|
RepoUpdated,
|
||||||
|
RepoDeleted,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RoomEventType {
|
impl RoomEventType {
|
||||||
@ -59,6 +63,10 @@ impl RoomEventType {
|
|||||||
RoomEventType::ReactionRemoved => "reaction_removed",
|
RoomEventType::ReactionRemoved => "reaction_removed",
|
||||||
RoomEventType::TypingStart => "typing_start",
|
RoomEventType::TypingStart => "typing_start",
|
||||||
RoomEventType::TypingStop => "typing_stop",
|
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),
|
"reaction_removed" => Some(RoomEventType::ReactionRemoved),
|
||||||
"typing_start" => Some(RoomEventType::TypingStart),
|
"typing_start" => Some(RoomEventType::TypingStart),
|
||||||
"typing_stop" => Some(RoomEventType::TypingStop),
|
"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,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -465,6 +465,16 @@ impl AppService {
|
|||||||
}
|
}
|
||||||
active.update(&txn).await?;
|
active.update(&txn).await?;
|
||||||
txn.commit().await?;
|
txn.commit().await?;
|
||||||
|
|
||||||
|
self.room.publish_room_event(
|
||||||
|
repo.project,
|
||||||
|
room::RoomEventType::RepoUpdated,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
).await;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -337,6 +337,15 @@ impl AppService {
|
|||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
self.room.publish_room_event(
|
||||||
|
project.id,
|
||||||
|
room::RoomEventType::RepoCreated,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
).await;
|
||||||
|
|
||||||
Ok(ProjectRepoCreateResponse {
|
Ok(ProjectRepoCreateResponse {
|
||||||
uid: repo.id,
|
uid: repo.id,
|
||||||
repo_name: repo.repo_name,
|
repo_name: repo.repo_name,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user