mirror of
https://github.com/Readarr/Readarr
synced 2025-12-15 21:02:40 +01:00
Fixed: Adding alternative edition of a book via goodreads id
This commit is contained in:
parent
3575ca50da
commit
6a79c2f3a1
3 changed files with 17 additions and 9 deletions
|
|
@ -141,7 +141,7 @@ class AddNewItem extends Component {
|
|||
);
|
||||
} else if (item.book) {
|
||||
const book = item.book;
|
||||
const edition = book.editions[0];
|
||||
const edition = book.editions.find((x) => x.monitored);
|
||||
return (
|
||||
<AddNewBookSearchResultConnector
|
||||
key={item.id}
|
||||
|
|
|
|||
|
|
@ -63,15 +63,13 @@ public BookService(IBookRepository bookRepository,
|
|||
|
||||
public Book AddBook(Book newBook, bool doRefresh = true)
|
||||
{
|
||||
var editions = newBook.Editions.Value;
|
||||
editions.ForEach(x => x.Monitored = newBook.Id > 0);
|
||||
|
||||
_bookRepository.Upsert(newBook);
|
||||
|
||||
var editions = newBook.Editions.Value;
|
||||
editions.ForEach(x => x.BookId = newBook.Id);
|
||||
|
||||
_editionService.InsertMany(editions);
|
||||
_editionService.SetMonitored(editions.First());
|
||||
_editionService.InsertMany(editions.Where(x => x.Id == 0).ToList());
|
||||
_editionService.SetMonitored(editions.FirstOrDefault(x => x.Monitored) ?? editions.First());
|
||||
|
||||
_eventAggregator.PublishEvent(new BookAddedEvent(GetBook(newBook.Id), doRefresh));
|
||||
|
||||
|
|
|
|||
|
|
@ -438,10 +438,20 @@ public List<Book> SearchByGoodreadsId(int id)
|
|||
var book = _bookService.FindById(remote.Item2.ForeignBookId);
|
||||
var result = book ?? remote.Item2;
|
||||
|
||||
var edition = _editionService.GetEditionByForeignEditionId(remote.Item2.Editions.Value.Single(x => x.Monitored).ForeignEditionId);
|
||||
if (edition != null)
|
||||
// at this point, book could have the wrong edition.
|
||||
// Check if we already have the correct edition.
|
||||
var remoteEdition = remote.Item2.Editions.Value.Single(x => x.Monitored);
|
||||
var localEdition = _editionService.GetEditionByForeignEditionId(remoteEdition.ForeignEditionId);
|
||||
if (localEdition != null)
|
||||
{
|
||||
result.Editions = new List<Edition> { edition };
|
||||
result.Editions = new List<Edition> { localEdition };
|
||||
}
|
||||
|
||||
// If we don't have the correct edition in the response, add it in.
|
||||
if (!result.Editions.Value.Any(x => x.ForeignEditionId == remoteEdition.ForeignEditionId))
|
||||
{
|
||||
result.Editions.Value.ForEach(x => x.Monitored = false);
|
||||
result.Editions.Value.Add(remoteEdition);
|
||||
}
|
||||
|
||||
var author = _authorService.FindById(remote.Item1);
|
||||
|
|
|
|||
Loading…
Reference in a new issue