From d68c890e8f51ec7905e28f182667a5b9f587476b Mon Sep 17 00:00:00 2001 From: MohitMali Date: Mon, 4 Sep 2023 19:27:01 +0530 Subject: [PATCH] Save bookmark when it does not exist in the file since bookmarks is now written in a file with libkiwix --- .../kiwixmobile/core/dao/LibkiwixBookmarks.kt | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/dao/LibkiwixBookmarks.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/dao/LibkiwixBookmarks.kt index c083982c1..a62822c51 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/dao/LibkiwixBookmarks.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/dao/LibkiwixBookmarks.kt @@ -56,15 +56,11 @@ class LibkiwixBookmarks @Inject constructor( manager.readBookmarkFile(bookmarkFile.canonicalPath) } - fun bookmarks(): Flowable> { - val bookMarksArray: Array? = library.getBookmarks(true) - val bookmarkList = bookMarksArray?.toList() ?: emptyList() - - return Flowable.fromIterable(bookmarkList) + fun bookmarks(): Flowable> = + Flowable.fromIterable(getBookmarksList()) .map(::LibkiwixBookmarkItem) .toList() .toFlowable() as Flowable> - } override fun pages(): Flowable> = bookmarks() @@ -86,12 +82,7 @@ class LibkiwixBookmarks @Inject constructor( update(zimFileReader.jniKiwixReader) } addBookToLibrary(book) - - // Retrieve bookmarks from the library - val bookmarks = library.getBookmarks(true) - - // Extract URLs from bookmarks - val urls = bookmarks.map { it.url } + val urls = getBookmarksList().map { it.url } // Emit the list of URLs emitter.onNext(urls) @@ -101,15 +92,17 @@ class LibkiwixBookmarks @Inject constructor( } fun saveBookmark(libkiwixBookmarkItem: LibkiwixBookmarkItem) { - addBookToLibrary(libkiwixBookmarkItem.libKiwixBook) - val bookmark = Bookmark().apply { - bookId = libkiwixBookmarkItem.zimId - title = libkiwixBookmarkItem.title - url = libkiwixBookmarkItem.url - bookTitle = libkiwixBookmarkItem.libKiwixBook?.title ?: libkiwixBookmarkItem.zimId - } - library.addBookmark(bookmark).also { - writeBookMarksToFile() + if (!isBookMarkExist(libkiwixBookmarkItem)) { + addBookToLibrary(libkiwixBookmarkItem.libKiwixBook) + val bookmark = Bookmark().apply { + bookId = libkiwixBookmarkItem.zimId + title = libkiwixBookmarkItem.title + url = libkiwixBookmarkItem.url + bookTitle = libkiwixBookmarkItem.libKiwixBook?.title ?: libkiwixBookmarkItem.zimId + } + library.addBookmark(bookmark).also { + writeBookMarksToFile() + } } } @@ -130,4 +123,11 @@ class LibkiwixBookmarks @Inject constructor( private fun writeBookMarksToFile() { library.writeBookmarksToFile(bookmarkFile.canonicalPath) } + + private fun getBookmarksList() = + library.getBookmarks(true)?.toList() ?: emptyList() + + private fun isBookMarkExist(libkiwixBookmarkItem: LibkiwixBookmarkItem): Boolean = + getBookmarksList() + .any { it.url == libkiwixBookmarkItem.bookmarkUrl && it.bookId == libkiwixBookmarkItem.zimId } }