diff --git a/src/NexusReader.Infrastructure/Services/EpubService.cs b/src/NexusReader.Infrastructure/Services/EpubService.cs index b242c30..e7a5dd0 100644 --- a/src/NexusReader.Infrastructure/Services/EpubService.cs +++ b/src/NexusReader.Infrastructure/Services/EpubService.cs @@ -61,7 +61,13 @@ public class EpubService : IEpubService } var chapterRef = readingOrder[chapterIndex]; - var chapterTitle = chapterRef.FilePath ?? $"Chapter {chapterIndex + 1}"; + + // Try to find a better title from navigation (TOC) + var navigation = bookRef.GetNavigation(); + var chapterTitle = FindTitleInNavigation(navigation, chapterRef.FilePath) + ?? Path.GetFileNameWithoutExtension(chapterRef.FilePath) + ?? $"Chapter {chapterIndex + 1}"; + var chapterContent = await chapterRef.ReadContentAsTextAsync(); var blocks = new List(); @@ -157,4 +163,25 @@ public class EpubService : IEpubService new List { "Podsumuj", "Generuj Quiz", "PomiƄ" } ); } + + private string? FindTitleInNavigation(IEnumerable navigation, string? filePath) + { + if (string.IsNullOrEmpty(filePath)) return null; + + var fileName = Path.GetFileName(filePath); + + foreach (var item in navigation) + { + // Match by full path or just filename as fallback + if (item.Link?.ContentFilePath == filePath || item.Link?.ContentFilePath == fileName) + return item.Title; + + if (item.NestedItems != null && item.NestedItems.Any()) + { + var childTitle = FindTitleInNavigation(item.NestedItems, filePath); + if (childTitle != null) return childTitle; + } + } + return null; + } } diff --git a/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor b/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor index cbbb043..4909fe2 100644 --- a/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor +++ b/src/NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor @@ -40,6 +40,12 @@ case "eye-off": break; + case "arrow-left": + + break; + case "arrow-right": + + break; default: diff --git a/src/NexusReader.UI.Shared/Components/Molecules/AiAssistantBubble.razor b/src/NexusReader.UI.Shared/Components/Molecules/AiAssistantBubble.razor index d5eeb1e..48b3e82 100644 --- a/src/NexusReader.UI.Shared/Components/Molecules/AiAssistantBubble.razor +++ b/src/NexusReader.UI.Shared/Components/Molecules/AiAssistantBubble.razor @@ -42,6 +42,7 @@ /// Fallback static dialogue shown when no live AI content is available. [Parameter] public string Dialogue { get; set; } = string.Empty; [Parameter] public List Actions { get; set; } = new(); + [Parameter] public string FullPageContent { get; set; } = string.Empty; [Parameter] public EventCallback OnActionTriggered { get; set; } private string _displayedText = string.Empty; @@ -76,8 +77,11 @@ try { - _packet = await Coordinator.RequestSummaryAndQuizAsync( - $"[ID: {ContextBlockId}]\n{Dialogue}"); + var contentToAnalyze = !string.IsNullOrWhiteSpace(FullPageContent) + ? FullPageContent + : $"[ID: {ContextBlockId}]\n{Dialogue}"; + + _packet = await Coordinator.RequestSummaryAndQuizAsync(contentToAnalyze); var summary = _packet?.Summary; diff --git a/src/NexusReader.UI.Shared/Components/Organisms/ReaderCanvas.razor b/src/NexusReader.UI.Shared/Components/Organisms/ReaderCanvas.razor index 92b461d..b3a8e63 100644 --- a/src/NexusReader.UI.Shared/Components/Organisms/ReaderCanvas.razor +++ b/src/NexusReader.UI.Shared/Components/Organisms/ReaderCanvas.razor @@ -29,6 +29,14 @@ { @((MarkupString)textSegment.Content) } + else if (block is AiActionTriggerBlock trigger) + { + + } } diff --git a/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor b/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor index 9576000..f2ec3dd 100644 --- a/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor +++ b/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor @@ -36,10 +36,9 @@ NavigationService.OnNavigationChanged += HandleNavigationChanged; } - private Task HandleNavigationChanged() + private async Task HandleNavigationChanged() { - StateHasChanged(); - return Task.CompletedTask; + await InvokeAsync(StateHasChanged); } private int CalculateProgress() diff --git a/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor.css b/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor.css index 29c3910..edfa764 100644 --- a/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor.css +++ b/src/NexusReader.UI.Shared/Components/Organisms/ReaderFooter.razor.css @@ -58,6 +58,7 @@ justify-content: center; min-width: 0; overflow: hidden; + color: #333; } .chapter-title {