Commit Graph

2544 Commits

Author SHA1 Message Date
ad2eb52553 Thread safe dumping of the OPDS feed 2021-11-30 18:20:27 +04:00
473d2d2a69 Introduced Library::getBookByIdThreadSafe() 2021-11-30 18:20:27 +04:00
02b9e32d18 Library became almost thread-safe
Library became thread-safe with the exception of `getBookById()`
and `getBookByPath()` methods - thread safety in those accessors is
rendered meaningless by their return type (they return a reference
to a book which can be removed any time later by another thread).
2021-11-30 18:20:27 +04:00
c2927ce6f7 Library got a yet unused mutex
Introducing a mutex in `Library` necessitates manually implementing the
move constructor and assignment operator. It's better to still delegate
that work to the compiler to eliminate any possibility of bugs when new
data members are added to `Library`. The trick is to move the data into
an auxiliary class `LibraryBase` and derive `Library` from it.
2021-11-30 18:20:27 +04:00
b712c732f2 Dropped Library::getBookBy*() non-const functions 2021-11-30 18:20:27 +04:00
298247ca9b Renamed NameMapperProxy -> UpdatableNameMapper 2021-11-30 18:20:27 +04:00
3aeeeeee76 Manager::reload() 2021-11-30 18:20:27 +04:00
226dac2604 LibraryManipulator is now merely a notifier
Originally `LibraryManipulator` was an abstract class completely decoupled
from `Library`. Its `addBookToLibrary()` and `addBookmarkToLibrary()`
methods could be defined in an arbitrary way. Now `LibraryManipulator` has to be
bound to a library object, those methods are no longer virtual, they always
update the library and allow for some additional actions via virtual
functions `bookWasAddedToLibrary()` and `bookmarkWasAddedToLibrary()`.
2021-11-30 18:20:27 +04:00
76a5e3a877 Library::addBook() updates the reader cache 2021-11-30 18:20:27 +04:00
2d6a7fe88d Testing of NameMapperProxy 2021-11-30 18:20:23 +04:00
6199c11505 NameMapperProxy respects the withAlias flag 2021-11-30 18:18:16 +04:00
8fffa59974 Added NameMapperProxy from kiwix/kiwix-desktop#714
The right place for NameMapperProxy introduced by kiwix/kiwix-desktop#714 is in
libkiwix (so that it can be reused in kiwix-serve).
2021-11-30 18:18:16 +04:00
4ccbdcb740 Code deduplication in NameMapperTest 2021-11-30 18:17:43 +04:00
5f3c34ed93 NameMapper's API is now const 2021-11-22 21:06:27 +04:00
d62c4fd521 Testing of HumanReadableNameMapper 2021-11-22 20:54:44 +04:00
339f845fb0 Bugfix in Book::getHumanReadableIdFromPath() 2021-11-22 20:54:44 +04:00
3296a020a1 Testing of Book::getHumanReadableIdFromPath()
New unit test BookTest.getHumanReadableIdFromPath revealed a bug in
`Book::getHumanReadableIdFromPath()`.
2021-11-22 20:54:44 +04:00
571e417d1e Manager is now safe to copy 2021-11-20 20:38:39 +04:00
913a368a12 Made Manager's ctors explicit 2021-11-20 20:34:13 +04:00
0e48baf9f9 Simplified Library::getReaderById()
Reused `Library::getArchiveById()` in `Library::getReaderById()`.
2021-11-19 20:17:12 +04:00
c7b88398bd Merge pull request #630 from kiwix/multi_illustration_books 2021-11-19 14:08:21 +01:00
4a01081e83 Thread-safe Book::Illustration::getData() 2021-11-19 16:44:25 +04:00
eb6a0d6456 Enter Book::getIllustrations() 2021-11-18 14:39:00 +04:00
e2544799a1 Shorter Book::update() 2021-11-18 14:39:00 +04:00
9f42884507 Book's illustrations are now immutable 2021-11-18 14:39:00 +04:00
8a6adddc16 Non-throwing Book::getDefaultIllustration() 2021-11-18 14:39:00 +04:00
c8da5eea2b Dropped Book::getMutableDefaultIllustration()
Now a Book is created without a default illustration.
2021-11-18 14:38:00 +04:00
bd29c4c7ef Book::updateFromOpds() resets Book::m_illustrations 2021-11-18 14:37:12 +04:00
e52a4a646b Book::updateFromXml() resets Book::m_illustrations 2021-11-18 14:36:42 +04:00
537ba7e6b9 Book::update() reads illustrations from ZIM file 2021-11-18 14:35:49 +04:00
f4bc3c8ced Book::Illustration got dimensions 2021-11-18 14:34:51 +04:00
5263f6880c Internally Book supports multiple illustrations 2021-11-18 14:34:51 +04:00
c129952605 Added a couple of notes on data consistency 2021-11-18 14:34:48 +04:00
9f0db6b7fa Book::Illustration::getData() 2021-11-18 14:33:50 +04:00
7d8a83cc97 Encapsulated access to Book::m_illustration 2021-11-18 14:32:52 +04:00
ec5a423924 Enter Book::Illustration
`Book::m_favicon` and its 2 friends are replaced with a single
`Book::m_illustration` data member.
2021-11-18 13:31:08 +04:00
811b73a4f1 Moved 2 small method definitions to cpp 2021-11-18 13:27:27 +04:00
3e5372ef29 RIP Book::{setFavicon(),setFaviconMimeType()} 2021-11-18 13:25:34 +04:00
abfd9d88d8 Book.updateTest creates the source book from XML
... thus eliminating the need for the Book::setFavicon*() methods.
2021-11-18 12:57:21 +04:00
4f65811011 Moved Book.updateTest below Book.updateFromXMLTest
Book.updateTest is going to be modified so that it relies on
functionality tested by Book.updateFromXMLTest. Hence the order of the
tests better reflect that dependency.
2021-11-18 12:57:21 +04:00
59e5c7ff4e Enhanced Book.updateFromXMLTest with favicon 2021-11-18 12:57:21 +04:00
ef1ad4bf47 Merge pull request #628 from kiwix/clickable-kiwix-serve-tile 2021-11-16 14:07:33 +01:00
8d50d5e293 added border-radius to download button 2021-11-16 12:33:05 +00:00
d76e670d5b CSS codefactor fix 2021-11-16 12:10:15 +00:00
8f5ffc5ef5 Duplicated ids are not allowed in a HTML doc 2021-11-16 12:10:15 +00:00
98f9c57e12 Better use double-quote for HTML attributes 2021-11-16 12:10:15 +00:00
db06b6b797 Renave static/home.css to static/index.css 2021-11-16 12:10:15 +00:00
513c547d99 Remove shadow around kiwix-serve home language in tile 2021-11-16 12:10:15 +00:00
c3d2e01157 Move kiwix-serve home download button at top of the tile 2021-11-16 12:10:15 +00:00
4adad9b281 Make kiwix-serve home tiles clickable 2021-11-16 12:10:15 +00:00