Мелкие правки

This commit is contained in:
Халимов Рустам
2026-03-13 00:46:40 +03:00
parent 9daafae9c5
commit 7670a3b787
82 changed files with 725 additions and 114 deletions

View File

@@ -118,33 +118,46 @@ public sealed class StoriesController : ControllerBase
[HttpPost("{id}/view")]
public async Task<IActionResult> ViewStory(Guid id, CancellationToken ct)
{
var story = await _context.Stories
.Include(s => s.Viewers)
.FirstOrDefaultAsync(s => s.Id == id, ct);
if (story == null) return NotFound();
if (story.UserId == _userContext.UserId) return Ok(new { message = "Owner view" });
if (!story.Viewers.Any(v => v.UserId == _userContext.UserId))
try
{
story.AddViewer(_userContext.UserId);
await _context.SaveChangesAsync(ct);
var story = await _context.Stories
.Include(s => s.Viewers)
.FirstOrDefaultAsync(s => s.Id == id, ct);
// Notify owner via SignalR
var viewer = await _userRepository.GetByIdAsync(_userContext.UserId, ct);
await _hubContext.Clients.User(story.UserId.ToString()).SendAsync("story_viewed", new
if (story == null) return NotFound();
if (story.UserId == _userContext.UserId) return Ok(new { message = "Owner view" });
if (!story.Viewers.Any(v => v.UserId == _userContext.UserId))
{
storyId = story.Id,
userId = _userContext.UserId,
username = viewer?.Username,
displayName = viewer?.DisplayName,
avatar = viewer?.Avatar,
viewedAt = DateTime.UtcNow,
viewCount = story.Viewers.Count
}, ct);
}
story.AddViewer(_userContext.UserId);
await _context.SaveChangesAsync(ct);
return Ok(new { message = "Story viewed" });
// Notify owner via SignalR targetedly
var viewer = await _userRepository.GetByIdAsync(_userContext.UserId, ct);
await _hubContext.Clients.User(story.UserId.ToString()).SendAsync("story_viewed", new
{
storyId = story.Id,
userId = _userContext.UserId,
username = viewer?.Username,
displayName = viewer?.DisplayName,
avatar = viewer?.Avatar,
viewedAt = DateTime.UtcNow,
viewCount = story.Viewers.Count,
ownerId = story.UserId
}, ct);
}
return Ok(new { message = "Story viewed" });
}
catch (DbUpdateException)
{
// Likely a unique constraint violation (already viewed)
return Ok(new { message = "Story already viewed" });
}
catch (Exception ex)
{
return StatusCode(500, ex.Message);
}
}
[HttpGet("{id}/viewers")]