Skip to content

Commit fc4064f

Browse files
mauricecarrier7vladimirfedorovjonathangreen
authored
Release/1.2.4 (#579)
* [PP-725] Improve epub search (#360) * working implementation * Correct search issues * Update project.pbxproj * Add PalaceUIKit library * Update PalaceAudiobookToolkit module SHA * [PP-553] Clean up corrupted audiobook error presentation (#363) * working implementation * Correct search issues * Update project.pbxproj * Prevent alert from being prematurely dismissed and dismiss loading screen * Update TPPBookButtonsView.m * Update TPPBookButtonsView.m * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj (#364) * Resolve modifier ambiguity by moving font modifiers into PalaceUIKit * Font weight should be font modifier * Add PalaceUIKit * Build PalaceUIKit for distribution * Update PalaceAudiobookToolkit module SHA * Add color catalog * Refactor settings main screen fonts * Code documentation * Apply Palace UIKit to EPUB serach view * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Bump project build number * Fix typo * Update PalaceAudiobookToolkit module SHA * Implement search function for large encrypted documents * Use lower-level search for large encrypted documents Why: we decrypt smaller documents in memory, while larger files use CGPDF functions to decrypt blocks of file on the fly and therefore they can't be searched using PDFKit functions * Move parser code to TPPPDFTextExtractor * Compare lowercase search text * Release resources * [PP-725] Display all available sections in search results (#366) * working implementation * Correct search issues * Update project.pbxproj * update presentation of search options * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update PalaceAudiobookToolkit module SHA * Bump project build number * Set up team and signing certificate in PalaceUIKit (#368) * [PP-694] Use token auth for annotations (#369) * Update project.pbxproj * Use token for annotations calls * In progress token improvements * Update project.pbxproj * Update TPPAnnotations.swift * Update NYPLNetworkExecutorMock.swift * Clean up * [PP-694] Use token auth for annotations (#370) * Update project.pbxproj * Use token for annotations calls * In progress token improvements * Update project.pbxproj * Update TPPAnnotations.swift * Update NYPLNetworkExecutorMock.swift * Clean up * Resolve login failure when attempting to update tokens * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update NYPLNetworkExecutorMock.swift * [PP-746] Make annotation sync client side (#371) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * [PP-755] Update audiobook sampler (#372) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * Update audiobook sampler * Update project.pbxproj * Update TPPBookButtonsView.h * Update TPPBookButtonsView.h * [PP-612] Resolves library switch error (#373) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * Make sure closure is called after token refresh and opt out of token calls when request does not need authentication * Clean up * Remove unused logic * Further clean up * Update TPPBookDetailView.m * Only attempt to update the token once per account switch * Update project.pbxproj (#375) * PP-799 Resolves error loading library error (#376) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * Make sure closure is called after token refresh and opt out of token calls when request does not need authentication * Clean up * Remove unused logic * Further clean up * Update TPPBookDetailView.m * Only attempt to update the token once per account switch * Revert changes * Update Account.swift * Update project.pbxproj * Update Account.swift * Update project.pbxproj * Update NYPLNetworkExecutorMock.swift * Revert "PP-799 Resolves error loading library error (#376)" This reverts commit 78226c43ef3ae1b09c20e40b5dea9ae60f74c4b6. * [PP-612] Resolve outstanding token errors (#378) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * Make sure closure is called after token refresh and opt out of token calls when request does not need authentication * Clean up * Remove unused logic * Further clean up * Update TPPBookDetailView.m * Only attempt to update the token once per account switch * Revert changes * Update Account.swift * Update project.pbxproj * Update Account.swift * Update project.pbxproj * Update NYPLNetworkExecutorMock.swift * Resolve token issues * Clean up * clean up * [PP-811] Set audio player session to enable audiobook sample sound when silenced (#379) * set audio player session to enable sound when silenced * Update AudiobookSamplePlayer.swift * [PP-813] Send more detailed user agent (#380) * Update user agent to be more detailed * Prevent loading loop on sample downloads * Update sample toolbar posiiton on Ipad * Update project.pbxproj * [PP-790] Deletes local bookmarks when deleted remotely (#381) * Modify annotation syncing to delete local annotations when removed from server * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update TPPAnnotations.swift * Fix tests * [PP-845] PDF search broken older versions ios (#383) * Modify annotation syncing to delete local annotations when removed from server * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update TPPAnnotations.swift * Fix tests * Update TPPPDFSearchView.swift * Update project.pbxproj * Update project.pbxproj * Update TPPPDFSearchView.swift * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj (#384) * Update project.pbxproj (#385) * Test updated release notes script (#386) * Update project.pbxproj * Update project.pbxproj * Integrate updated audiobooktoolkit (#387) * [PP-809] Minor clean up (#388) * Integrate updated audiobooktoolkit * Update toolkit with minor slider clean up * Update project.pbxproj * Update project.pbxproj * [PP-809] Audiobook playback issues (#389) * Integrate updated audiobooktoolkit * Update toolkit with minor slider clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Import updated library (#390) * [PP-838][PP-839] Resolves token issues (#391) * Import updated library * Dont pass token on registry syncs and feed pulls * Update project.pbxproj * Update project.pbxproj * Update MyBooksDownloadCenterTests.swift * Update MyBooksDownloadCenterTests.swift * Update MyBooksDownloadCenterTests.swift * Update TPPSignInBusinessLogic.swift * Update TPPSignInBusinessLogicTests.swift * Update audioboook library (#392) * [PP-934] Properly handles TOCs when the last chapter spans multiple files (#393) * Update audioboook library * Update LCPPassphraseAuthenticationService.swift * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update MyBooksDownloadCenterTests.swift * [PP-948] improve large file downloads (#394) * Update audioboook library * Update LCPPassphraseAuthenticationService.swift * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update MyBooksDownloadCenterTests.swift * leverage virtual memory when downloading large files to prevent crashes * Update project.pbxproj * Update LCPPassphraseAuthenticationService.swift * [PP-934] Show return prompt on audiobook completion for LCPAudiobooks (#395) * Update audioboook library * Update LCPPassphraseAuthenticationService.swift * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update MyBooksDownloadCenterTests.swift * Return to beginning of book at end of playback * Integrate updated audibook library (#396) * [PP-969] Pauses audiobook after restarting (#397) * Integrate updated audibook library * Update ios-audiobooktoolkit * Update project.pbxproj * [PP-969] Improve last position syncing (#398) * Integrate updated audibook library * Update ios-audiobooktoolkit * Update project.pbxproj * Improve position syncing * Update project.pbxproj * Update project.pbxproj * [PP-861] Improve accessibility names (#399) * Correct accessibility * Update strings * Update project.pbxproj * Update project.pbxproj * [PP-861] Correct accessibility names (#400) * Correct accessibility * Update strings * Update project.pbxproj * Update project.pbxproj * Update audiobook library * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-994] [PP-995] Resolves audiobook playback issues (#401) * Update dependencies * Update project.pbxproj * [PP-1013] listening position not saved after logout (#402) * Ensure lsat listening position is saved with timestamp and prevent race condition on loading * Update project.pbxproj * [PP-1013] Ensure token is updated when fetching bookmarks (#403) * Ensure lsat listening position is saved with timestamp and prevent race condition on loading * Update project.pbxproj * Ensure token is refreshed when fetching bookmarks * Update project.pbxproj * Update TPPNetworkExecutor.swift * [PP-1013] Resolves listening position not saved after logout (#405) * Ensure lsat listening position is saved with timestamp and prevent race condition on loading * Update project.pbxproj * Ensure token is refreshed when fetching bookmarks * Update project.pbxproj * Update TPPNetworkExecutor.swift * Update bookmark syncing logic * Refresh token on download failure * improve token refresh logic * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update MyBooksDownloadCenter.swift * [PP-1013] Listening position not saved after logout (#406) * Ensure lsat listening position is saved with timestamp and prevent race condition on loading * Update project.pbxproj * Ensure token is refreshed when fetching bookmarks * Update project.pbxproj * Update TPPNetworkExecutor.swift * Update bookmark syncing logic * Refresh token on download failure * improve token refresh logic * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update MyBooksDownloadCenter.swift * Revert clean up change * Update project.pbxproj * Add a no adobe build target * Fix OOM issue appearing on iPhone XR This could potentially be an issue on other devices as well, since we are trying to load a large binary into memory to try to parse it as json. In the case of LCP this isn't what we want to do. * Bump build numbe * [PP-1064] Audiobook infrastructure (#426) * Update Audiobook classes * building open access happy path * Launch audiobook from delegate extension * Merge hotfix into main version 1.0.37 (#414) * Fix OOM issue appearing on iPhone XR This could potentially be an issue on other devices as well, since we are trying to load a large binary into memory to try to parse it as json. In the case of LCP this isn't what we want to do. * Rebase off of main (#411) * Update check-build-number.yml (#410) What's this do? Updates workflows Why are we doing this? (w/ Notion link if applicable) To support pushing TestFlight builds for merges into the hotfix branch * Update upload-on-merge.yml (#409) * Update build # * Update project.pbxproj (#413) Bump marketing version to create build * Update project.pbxproj --------- Co-authored-by: Jonathan Green <[email protected]> * Update project.pbxproj (#415) Revert version and build numbers * Update TPPBookCellDelegate+Extensions.swift * Integrate updated audiobook changes * Update check-build-number.yml * Update upload-on-merge.yml * Clean up * Update .gitmodules * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Delete ios-drm-audioengine * Update scripts * Update ios-audiobooktoolkit * Update AudiobookBookmarkBusinessLogicTests.swift * [PP-1059] Integrates refactor of Audiobook Library (#416) * Update Audiobook classes * building open access happy path * Launch audiobook from delegate extension * Update TPPBookCellDelegate+Extensions.swift * Integrate updated audiobook changes * Clean up * Update .gitmodules * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Delete ios-drm-audioengine * Update scripts * Update ios-audiobooktoolkit * Update AudiobookBookmarkBusinessLogicTests.swift * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit abe6dc13690b2383ea52d027bb2c0378c9c5ab1a. * Update project.pbxproj * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 9aca7790ed506824cd474317c3f079d452d1f179. * Restore Build (#417) * Update Audiobook classes * building open access happy path * Launch audiobook from delegate extension * Update TPPBookCellDelegate+Extensions.swift * Integrate updated audiobook changes * Clean up * Update .gitmodules * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Delete ios-drm-audioengine * Update scripts * Update ios-audiobooktoolkit * Update AudiobookBookmarkBusinessLogicTests.swift * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit abe6dc13690b2383ea52d027bb2c0378c9c5ab1a. * Update project.pbxproj * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 9aca7790ed506824cd474317c3f079d452d1f179. * Update ios-audiobook-overdrive * Reapply "Update project.pbxproj" This reverts commit 7ed72dded4b5fc59496a290aa82f2c32fb0cb2f6. * Revert "Restore Build (#417)" This reverts commit 933de16e4187c028ff64cfc385342de02dadf048. * Update ios-audiobook-overdrive (#419) * Fix build (#420) * Update ios-audiobook-overdrive * Update project.pbxproj * Fix build (#421) * Update ios-audiobook-overdrive * Update project.pbxproj * Update ios-audiobooktoolkit * Fix build (#422) * Update ios-audiobook-overdrive * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj --------- Co-authored-by: Jonathan Green <[email protected]> * Revert "[PP-1064] Audiobook infrastructure (#426)" This reverts commit 4479a3c3cf27ed16617f4551cfd122f515b4a82b. * Update Palace-Info.plist (#432) * Clean up * Update ios-audiobooktoolkit * Update libraries * [PP-1597] Performance enhancements (#459) * Update upload-on-merge.yml * Update check-build-number.yml * PP-1059 Refactor audiobooks (#425) * Update Audiobook classes * building open access happy path * Launch audiobook from delegate extension * Merge hotfix into main version 1.0.37 (#414) * Fix OOM issue appearing on iPhone XR This could potentially be an issue on other devices as well, since we are trying to load a large binary into memory to try to parse it as json. In the case of LCP this isn't what we want to do. * Rebase off of main (#411) * Update check-build-number.yml (#410) What's this do? Updates workflows Why are we doing this? (w/ Notion link if applicable) To support pushing TestFlight builds for merges into the hotfix branch * Update upload-on-merge.yml (#409) * Update build # * Update project.pbxproj (#413) Bump marketing version to create build * Update project.pbxproj --------- Co-authored-by: Jonathan Green <[email protected]> * Update project.pbxproj (#415) Revert version and build numbers * Update TPPBookCellDelegate+Extensions.swift * Integrate updated audiobook changes * Update check-build-number.yml * Update upload-on-merge.yml * Clean up * Update .gitmodules * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Delete ios-drm-audioengine * Update scripts * Update ios-audiobooktoolkit * Update AudiobookBookmarkBusinessLogicTests.swift * [PP-1059] Integrates refactor of Audiobook Library (#416) * Update Audiobook classes * building open access happy path * Launch audiobook from delegate extension * Update TPPBookCellDelegate+Extensions.swift * Integrate updated audiobook changes * Clean up * Update .gitmodules * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Delete ios-drm-audioengine * Update scripts * Update ios-audiobooktoolkit * Update AudiobookBookmarkBusinessLogicTests.swift * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit abe6dc13690b2383ea52d027bb2c0378c9c5ab1a. * Update project.pbxproj * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 9aca7790ed506824cd474317c3f079d452d1f179. * Restore Build (#417) * Update Audiobook classes * building open access happy path * Launch audiobook from delegate extension * Update TPPBookCellDelegate+Extensions.swift * Integrate updated audiobook changes * Clean up * Update .gitmodules * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Delete ios-drm-audioengine * Update scripts * Update ios-audiobooktoolkit * Update AudiobookBookmarkBusinessLogicTests.swift * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit abe6dc13690b2383ea52d027bb2c0378c9c5ab1a. * Update project.pbxproj * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 9aca7790ed506824cd474317c3f079d452d1f179. * Update ios-audiobook-overdrive * Reapply "Update project.pbxproj" This reverts commit 7ed72dded4b5fc59496a290aa82f2c32fb0cb2f6. * Revert "Restore Build (#417)" This reverts commit 933de16e4187c028ff64cfc385342de02dadf048. * Update ios-audiobook-overdrive (#419) * Fix build (#420) * Update ios-audiobook-overdrive * Update project.pbxproj * Fix build (#421) * Update ios-audiobook-overdrive * Update project.pbxproj * Update ios-audiobooktoolkit * Fix build (#422) * Update ios-audiobook-overdrive * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj --------- Co-authored-by: Jonathan Green <[email protected]> * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 5914ae43ae6c2dd2cf3a0b24568ddafd873f65ab. * Merge branch 'develop' into beta * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update Fastfile * Bump version number, update audiobooktoolkit * Integrate updated library, resolve cookie reset bug (#427) * [PP-1281] Threading improvements #2 (#428) * Integrate updated library, resolve cookie reset bug * Bump version integrate updated library * Update project.pbxproj * Update project.pbxproj * [PP-1281] Clean up and performance improvements #3 (#429) * Integrate updated library, resolve cookie reset bug * Bump version integrate updated library * Update project.pbxproj * Update project.pbxproj * Improve image mapping and other performance/threading improvements * Update TPPNetworkExecutor.swift * Update project.pbxproj * Update project.pbxproj * [PP-1068] Refactor track position and annotations (#430) * Integrate updated library, resolve cookie reset bug * Bump version integrate updated library * Update project.pbxproj * Update project.pbxproj * Improve image mapping and other performance/threading improvements * Update TPPNetworkExecutor.swift * Update project.pbxproj * Update project.pbxproj * Working track position loading, restore tests * update track positions and bookmarks * Update ios-audiobooktoolkit * Clean up * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Clean up tests * Resolve outstanding issues * Update AudiobookBookmarkBusinessLogicTests.swift * Clean up tests * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update AudiobookBookmarkBusinessLogicTests.swift * Update Palace.xcscheme * [PP-1068] Refactor track position and annotations (#431) * Integrate updated library, resolve cookie reset bug * Bump version integrate updated library * Update project.pbxproj * Update project.pbxproj * Improve image mapping and other performance/threading improvements * Update TPPNetworkExecutor.swift * Update project.pbxproj * Update project.pbxproj * Working track position loading, restore tests * update track positions and bookmarks * Update ios-audiobooktoolkit * Clean up * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Clean up tests * Resolve outstanding issues * Update AudiobookBookmarkBusinessLogicTests.swift * Clean up tests * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update AudiobookBookmarkBusinessLogicTests.swift * Update Palace.xcscheme * bump build and revert debug code * Update project.pbxproj * Update project.pbxproj * [PP-1068] Resolve issues with annotation back support (#433) * Integrate updated library, resolve cookie reset bug * Bump version integrate updated library * Update project.pbxproj * Update project.pbxproj * Improve image mapping and other performance/threading improvements * Update TPPNetworkExecutor.swift * Update project.pbxproj * Update project.pbxproj * Working track position loading, restore tests * update track positions and bookmarks * Update ios-audiobooktoolkit * Clean up * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Clean up tests * Resolve outstanding issues * Update AudiobookBookmarkBusinessLogicTests.swift * Clean up tests * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * Update AudiobookBookmarkBusinessLogicTests.swift * Update Palace.xcscheme * bump build and revert debug code * Update project.pbxproj * Update project.pbxproj * Update Palace-Info.plist * Support old bookmarks * Revert test changes * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPReadiumBookmark.swift * send emails to palace (#434) * Update dependencies and build number (#435) * [PP-1372][PP-1371] download tracks in correct order, update lock screen copy (#436) * Update dependencies and build number * Resolve outstanding audiobook issues * Update project.pbxproj * Clean up * Update project.pbxproj * Update AudiobookBookmarkBusinessLogicTests.swift * [PP-1373] Progressively decrypt LCPAudiobooks (#437) * Update swift-toolkit * Update ios-audiobooktoolkit * Clean up * Update TPPBookDetailsProblemDocumentViewController.swift (#438) * Improve findaway download task to show progress updates (#439) * [PP-1373] Prevent LCP audiobook lock on open (#440) * Update swift-toolkit * Update ios-audiobooktoolkit * Clean up * Fix LCP downloads and resolve errors on token refresh * Update project.pbxproj * Update project.pbxproj * Update TPPNetworkExecutor.swift * [PP-1405] Resolve crash on MyBooksView's SearchView (#441) * Resolve search view controller crash issue * Update project.pbxproj * Resolve TOC navigation errors * Resolve TOC navigation errors (#442) * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * [PP-1412] Properly map Feedbook audiobook manifests (#443) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * [PP-1373] LCP audiobooks freeze on startup (#444) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * [PP-1408] Show correct title for chapters (#445) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * [PP-1422] Properly display local annotations (#446) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * [PP-1364] Update image loader to avoid race condition (#447) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * Update TrackPosition+Annotations.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-1373] Resolve lcp delays (#448) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * Update TrackPosition+Annotations.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Properly map audiobookmarks to locator * Working implementation * Capture time stamp from outer element of locator * Move location saving to background thread * Resolve syncing issues to prevent over uploading bookmarks * Add additional backward compatability support * Restore tests * Restore audibookmark tests * Improve bookmark syncing logic and code clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update AudioBookmark.swift * Update TokenRequest.swift * Update AudioBookmark.swift * Update AudiobookmarkTests.swift * [PP-1438] Restore cross platform annotations (#449) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * Update TrackPosition+Annotations.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Properly map audiobookmarks to locator * Working implementation * Capture time stamp from outer element of locator * Move location saving to background thread * Resolve syncing issues to prevent over uploading bookmarks * Add additional backward compatability support * Restore tests * Restore audibookmark tests * Improve bookmark syncing logic and code clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update AudioBookmark.swift * Update TokenRequest.swift * Update AudioBookmark.swift * Update AudiobookmarkTests.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-1519] Chapter navigation errors (#450) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * Update TrackPosition+Annotations.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Properly map audiobookmarks to locator * Working implementation * Capture time stamp from outer element of locator * Move location saving to background thread * Resolve syncing issues to prevent over uploading bookmarks * Add additional backward compatability support * Restore tests * Restore audibookmark tests * Improve bookmark syncing logic and code clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update AudioBookmark.swift * Update TokenRequest.swift * Update AudioBookmark.swift * Update AudiobookmarkTests.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-1510] Resolve overdrive duration issues (#451) * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Bump build number * Update project.pbxproj * Update project.pbxproj * [PP-1519] Resolve outstanding chapter issues (#452) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * Update TrackPosition+Annotations.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Properly map audiobookmarks to locator * Working implementation * Capture time stamp from outer element of locator * Move location saving to background thread * Resolve syncing issues to prevent over uploading bookmarks * Add additional backward compatability support * Restore tests * Restore audibookmark tests * Improve bookmark syncing logic and code clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update AudioBookmark.swift * Update TokenRequest.swift * Update AudioBookmark.swift * Update AudiobookmarkTests.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Bump build number * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * [PP-1519] Chapter navigation errors (#453) * Resolve TOC navigation errors * integrate updated audiobook toolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPBookCellDelegate+Extensions.swift * Update ios-audiobooktoolkit * Prevent LCP lock on startup * Update project.pbxproj * Resolve token refresh issue * add pretty printing extension for debugging * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update ios-audiobooktoolkit * Multiple fixes * merge in dev * Update project.pbxproj * Clean up * Ensure image update is not missed by callback * Update project.pbxproj * Update TrackPosition+Annotations.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Properly map audiobookmarks to locator * Working implementation * Capture time stamp from outer element of locator * Move location saving to background thread * Resolve syncing issues to prevent over uploading bookmarks * Add additional backward compatability support * Restore tests * Restore audibookmark tests * Improve bookmark syncing logic and code clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update AudioBookmark.swift * Update TokenRequest.swift * Update AudioBookmark.swift * Update AudiobookmarkTests.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Bump build number * Update project.pbxproj * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Resolve UI lockup on NonLCP books * Update project.pbxproj * Update project.pbxproj * Performance testing updates * Performance Testing Clean up * Update ios-audiobooktoolkit * Update project.pbxproj * Clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj --------- Co-authored-by: Jonathan Green <[email protected]> * [PP-1559] Adjust preview link selection (#461) * Update TPPOPDSEntry.m * Update project.pbxproj * [PP-1635] Resolve crash on sample overload (#462) * Update TPPOPDSEntry.m * Update project.pbxproj * Prevent crash on multiple sample taps * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-1092] Books aren't removed from books view (#463) * Update TPPBookCoverRegistry.swift * Return books when expired * Update project.pbxproj * PP-1678] Restore playback tracker (#464) * Restore playback tracker plus unit tests * Update ios-audiobooktoolkit * Revert "Restore playback tracker plus unit tests" This reverts commit 85468a70a9aa9b1b3158d6510e9a6805cad67595. * Reapply "Restore playback tracker plus unit tests" This reverts commit 4bd9e47d7f97ffe5423c0f3606f4ce3477fd26f4. * Update project.pbxproj * Update project.pbxproj * Clean up * Update AudiobookTrackerTests.swift * Update Palace.xcscheme * [PP-1707] Sets unique cache key on overdrive download task (#465) * Update ios-audiobooktoolkit * Update TPPBookCoverRegistry.swift * Update project.pbxproj * Update TPPBookCoverRegistry.swift * [PP-1645] Performance improvements (#467) * Update TPPBookCoverRegistry.swift * Return books when expired * Update project.pbxproj * fixes in progress * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Clean up * Clean up #2 * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-1697] Add logging tool to time tracker (#468) * Resolve time tracking issues and implement logger * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 550f59afb134f2a2f8e3fe5676538d3206a81377. * Update project.pbxproj * [PP-1722] Don't pause on background (#469) * PP-1705 fetch bookmarks for pdfs * Update project.pbxproj * Update TPPAnnotationMock.swift * Update TPPAnnotationMock.swift * Update TPPAnnotationMock.swift * [PP-1729] fix Xcode 16 build failure (#470) * Enable logging on TestFlight and fix SQLite errors in XCode 16 * Update project.pbxproj * Update TPPNetworkQueue.swift * [PP-1670] Properly parse LCP titles (#471) * Update LCP parsing * Update project.pbxproj * [PP-1672] Enables bluetooth player controls (#472) * Integrate updated audiobook toolkit * Update TPPBookmarkFactory.swift * [PP-1758] Fix bookmark sync (#473) * Resolve disappearing bookmarks * Update Palace-Info.plist * Update project.pbxproj * Update TPPReaderBookmarksBusinessLogic.swift * Restore tests * [PP-1758] Bookmarks missing chapter names (#475) * Pull bookmark titles from toc * Resolve TPPBookRegistry crashes * Revert "Resolve TPPBookRegistry crashes" This reverts commit da3b8846928048e24b8cf2561ad58269e8f01cf3. * Update project.pbxproj * Update TPPBookRegistryMock.swift * [PP-1801] Overdrive audiobook seek (#477) * Update audiobook library, dont attempt token refresh if no token URL is provided * Bump build and update library * [PP-1730] Implement SAML login indicator (#478) * Implement SAML login indicator * Removed updated code * Update project.pbxproj * Clean up and restore tests * [PP-1764] Restore cross platform FindAway audiobook bookmark syncing (#480) * Sync Findaway bookmarks * Update AudioBookmark.swift * [PP-1808] Cancel downloads when exiting audiobooks (#481) * Move PureLayout and Minizip to swift package manager * Integrate audiobook library updates, resolves several background ui update crashes * Update project.pbxproj * [PP-1861] Dismiss detail screen on read (#482) * Move PureLayout and Minizip to swift package manager * Integrate audiobook library updates, resolves several background ui update crashes * Update project.pbxproj * Dismiss detail popup on iPad * Update project.pbxproj * Update project.pbxproj * Bumps version number (#483) * Move PureLayout and Minizip to swift package manager * Integrate audiobook library updates, resolves several background ui update crashes * Update project.pbxproj * Dismiss detail popup on iPad * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * [PP-1841] Restore ebook bookmark syncing (#484) * Sanitize R2 Bookmarks to ensure syncing works on iOS and Android * Update project.pbxproj * Update project.pbxproj * [PP-1336] Upgrade swift toolkit (#487) * use SPM to integrate PureLayout * Conform to migration changes * Testing in progress * Working LCPAudiobooks * In progress #2 * Update LibraryService.swift * Working epub view * Restore Reader settings * In progress changes * working epub decryption * Clean up * Enable R3 bookmark migration * working epub bookmarks * Bump to latest version of swiftoolkit * Update ios-audiobooktoolkit * PR clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Revert "Update project.pbxproj" This reverts commit 5748177695b70c9e136d7890d7b29607afd2741b. * Update UIColor+Extensions.swift * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update xcode-build-nodrm.sh * Update xcode-build-nodrm.sh * Fix build * Update LCPPassphraseAuthenticationService.swift * Properly sync local and remote locations * Clean up * Update TPPBook.swift * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update TPPEPUBViewController.swift * Update unit-testing.yml * Restore build (#493) * Update .gitignore * restore build * Update ios-audiobooktoolkit * Update TPPTextToSpeech.swift * Bump xcode and iOS versions * Update adept-ios * Update adept-ios * Remove PureLayout import from bridging header * run unit tests on rosetta * Update Fastfile * updates * Update unit-testing.yml * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update project.pbxproj * Update project.pbxproj * Update .gitignore * Update project.pbxproj * Push build to testflight (#494) * Update .gitignore * restore build * Update ios-audiobooktoolkit * Update TPPTextToSpeech.swift * Bump xcode and iOS versions * Update adept-ios * Update adept-ios * Remove PureLayout import from bridging header * run unit tests on rosetta * Update Fastfile * updates * Update unit-testing.yml * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update project.pbxproj * Update project.pbxproj * Update .gitignore * Update project.pbxproj * Upload using Xcode 15.4 * Update project.pbxproj * Update check-build-number.yml * Update project.pbxproj (#495) * Merge/fix build2 (#496) * Update .gitignore * restore build * Update ios-audiobooktoolkit * Update TPPTextToSpeech.swift * Bump xcode and iOS versions * Update adept-ios * Update adept-ios * Remove PureLayout import from bridging header * run unit tests on rosetta * Update Fastfile * updates * Update unit-testing.yml * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update project.pbxproj * Update project.pbxproj * Update .gitignore * Update project.pbxproj * Upload using Xcode 15.4 * Update project.pbxproj * Update check-build-number.yml * Update upload-on-merge.yml * Update upload script to use a virtual evironment (#497) * Update .gitignore * restore build * Update ios-audiobooktoolkit * Update TPPTextToSpeech.swift * Bump xcode and iOS versions * Update adept-ios * Update adept-ios * Remove PureLayout import from bridging header * run unit tests on rosetta * Update Fastfile * updates * Update unit-testing.yml * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update project.pbxproj * Update project.pbxproj * Update .gitignore * Update project.pbxproj * Upload using Xcode 15.4 * Update project.pbxproj * Update check-build-number.yml * Update upload-on-merge.yml * Update upload-on-merge.yml * [PP-1806] Adjust search bar for iPad (#498) * Shift search bar below navigation view for iPad * Update project.pbxproj * Update project.pbxproj * Update .gitignore * Create .gitignore * Make epub search view dismissalbe * Restore copy in info footer on epub * Update project.pbxproj * Update MyBooksView.swift * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * [PP-1899] Handle large LCP audiobooks (#499) * Shift search bar below navigation view for iPad * Update project.pbxproj * Update project.pbxproj * Update .gitignore * Create .gitignore * Make epub search view dismissalbe * Restore copy in info footer on epub * Update project.pbxproj * Update MyBooksView.swift * Update project.pbxproj * Update ios-audiobooktoolkit * Update project.pbxproj * Update project.pbxproj * Improve my books loading and detail presentation * Update project.pbxproj * Update TPPBookCellDelegate.m * Update project.pbxproj * Update project.pbxproj * [PP-2028] Persist playback speed (#500) * Update MyBooksViewModel.swift * Update ios-audiobooktoolkit * Update project.pbxproj * Update TPPEPUBViewController.swift * Improve reader layout * Clean up MyBooksView * Update MyBooksView.swift * Update BookCellModel.swift * Block extraneous button taps when loading * Update MyBooksView.swift * Update MyBooksView.swift * Add small script to count the number of lines of code * Update Cartfile.resolved * Update Cartfile * Update AdobeDRMContainer to return a DataResource (#503) * Update logo initialization order for faster loading (#506) * Add some additional logging to network calls (#505) * Update software licenses view to work like android app does (#504) * PP-2077, PP-2105, PP-2082 (#502) * Present user settings as popover on iPhone * remove old R2 references and clean up * Update adept-ios * Update AdobeContentProtectionService.swift * Update AdobeDRMContentProtection.swift * Update adept-ios * Update project.pbxproj * Restore build (#507) * Present user settings as popover on iPhone * remove old R2 references and clean up * Update adept-ios * Update AdobeContentProtectionService.swift * Update AdobeDRMContentProtection.swift * Update adept-ios * Update project.pbxproj * Update upload-on-merge.yml * Update upload-on-merge.yml * Update the adept-ios submodule commit to the latest (#508) * Update Log function to use Palace rather then Simplified * Make sure binaries are deleted when returning a book * Update comment * Update audiobooktoolkit commit * Restore epub pagination functionality (#511) * [PP-1924] Resolves crashlytics crashes (#521) * Resolve concurrency issues in TPPBookRegistry * Resolve MybooksViewmodel data load crash * Prevent annotation sync crash * Clean up various warnings and potential crashes * Update project.pbxproj * Clean up tests * Update Fastfile * [PP-1085] Refactors BookDetailView (#523) * Initial implementation of updated book details view * Initial implementation of BookDetailView refactor * Update project.pbxproj * Clean up UI * Implement buttons view and clean up UI * Resolve book presentation * Resolve button issues * Properly working buttons * Initial implementation of half modal * Update button functionality, improve halfsheet, add more books by author section * Clean up description layout and updating * Clean up how image and background color are managed * Clean up missing decryption logic * Update download functionality clean up UI * Improve preview/sample functionality * Implement compact detail view for iPhone * Improve nav bar color an dlayout * Fully working scroll animation * Scroll improvements and ui fixes * Clean up navigation and sample view * UI improvements * Fix presentation issues with MyBooksView * Code clean up * Clean up * Update navbar when navigating * All book detail and my book related issues resolves * Present account home page in external browser * Update TPPBookRegistry.swift * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update ReaderModule.swift * Update ReaderModule.swift * Test resolution in progress * Restore tests * UI Clean up * Update project.pbxproj * Clean up * Update ButtonStateTests.swift * Update ButtonStateTests.swift * Load image when book is initialized * Clean up book image loading * Clean up buttons view * Update BookDetailView.swift * Update TPPBookRegistry.swift * Update TPPBookCoverRegistry.swift * Update TPPBookCoverRegistry.swift * Fix issue with unsupported OD holds (#524) * [PP-2166] implement loading view (#525) * workgin Loading view, with improved image caching and catalog loading * Publish image loading from book * Resolve navigation bar issues * Clean up navigation functionality and cover downloads * Clean up book detail view * Resolve TPPRootTabBarController SafelyPresentViewController crash * Ensure we initialize the LIbraryService on the main thread to resolve Crashlytics crash Database.init() * Update LCPLibraryService.swift * Resolve TPPAnnotations.uploadLocalBookmarks crash * Remove dead code * Post Audiobookmark updates on the main thread and prevent double continuation resumptions * remove explicit unwraps in context creation flow * Prevent nullification of nil context to avoid Crashlytics crashes * Fix navbar issue on SearchController view * Update project.pbxproj * Update project.pbxproj * Clean up timer logic to prevent background crash * Revert "Clean up timer logic to prevent background crash" This reverts commit c1573ef86321b581eeb5529f1a9d269fe74f4345. * Update ios-audiobooktoolkit * PR clean up * Update MyBooksDownloadCenterTests.swift * Update MyBooksDownloadCenterTests.swift * Update TPPRemoteViewController.m * Clean up hanging tests * Prevent hanging tests * [PP-2214] Improve playback time entries 404 response handling (#526) * update audiobook indicator look * Improve account loading times * improve loading times * Bump git runner to use Xcode 16 * Use latest version on runners, don't set explicit version * Handle 404 errors properly in time tracking module * Update upload-on-merge.yml * Fix Build (#527) * update audiobook indicator look * Improve account loading times * improve loading times * Bump git runner to use Xcode 16 * Use latest version on runners, don't set explicit version * Handle 404 errors properly in time tracking module * Update upload-on-merge.yml * Update TPPBook.swift * [PP-2038] Make authenticated analytics requests (#528) * make authenticated analytics requests * Update project.pbxproj * PP-2117 - enable audio in webview * Force xcode 16 build (#529) * Update upload-on-merge.yml * Update project.pbxproj * Force xcode 16 build (#530) * Update upload-on-merge.yml * Update project.pbxproj * Update upload-on-merge.yml * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Force latest OS on test sim in CI (#531) * Update upload-on-merge.yml * Update project.pbxproj * Update upload-on-merge.yml * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update Fastfile * Update project.pbxproj * Update Fastfile * Increase build time out (#532) * Update upload-on-merge.yml * Update project.pbxproj * Update upload-on-merge.yml * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update Fastfile * Update project.pbxproj * Update Fastfile * Update Fastfile * Bump readium toolkit to 3.1.0 (#533) * Update upload-on-merge.yml * Update project.pbxproj * Update to readium toolkit 3.1.0 * Update project.pbxproj * Update project.pbxproj * Update AdobeDRMContentProtection.swift * [PP-2239] Book details UI improvements (#534) * Update upload-on-merge.yml * Update project.pbxproj * Update to readium toolkit 3.1.0 * Update project.pbxproj * Update project.pbxproj * Improve BookDetailView Layout * Fix expanding description view * Update project.pbxproj * Add missing files * Clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update build script (#535) * Update upload-on-merge.yml * Update project.pbxproj * Update to readium toolkit 3.1.0 * Update project.pbxproj * Update project.pbxproj * Improve BookDetailView Layout * Fix expanding description view * Update project.pbxproj * Add missing files * Clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update upload-on-merge.yml * Update Fastfile * Update Fastfile * Update Fastfile * Revert "Update upload-on-merge.yml" This reverts commit 896d8ba3ee7d13c1eef82728a5e17fb39fda0d45. * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * [PP-2239] Book details UI improvements (#536) * Update upload-on-merge.yml * Update project.pbxproj * Update to readium toolkit 3.1.0 * Update project.pbxproj * Update project.pbxproj * Improve BookDetailView Layout * Fix expanding description view * Update project.pbxproj * Add missing files * Clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update upload-on-merge.yml * Update Fastfile * Update Fastfile * Update Fastfile * Revert "Update upload-on-merge.yml" This reverts commit 896d8ba3ee7d13c1eef82728a5e17fb39fda0d45. * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Bump target OS and update fast file (#537) * Update upload-on-merge.yml * Update project.pbxproj * Update to readium toolkit 3.1.0 * Update project.pbxproj * Update project.pbxproj * Improve BookDetailView Layout * Fix expanding description view * Update project.pbxproj * Add missing files * Clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update upload-on-merge.yml * Update Fastfile * Update Fastfile * Update Fastfile * Revert "Update upload-on-merge.yml" This reverts commit 896d8ba3ee7d13c1eef82728a5e17fb39fda0d45. * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update project.pbxproj * Bump XCode version on CI/CD (#538) * Update upload-on-merge.yml * Update project.pbxproj * Update to readium toolkit 3.1.0 * Update project.pbxproj * Update project.pbxproj * Improve BookDetailView Layout * Fix expanding description view * Update project.pbxproj * Add missing files * Clean up * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update upload-on-merge.yml * Update Fastfile * Update Fastfile * Update Fastfile * Revert "Update upload-on-merge.yml" This reverts commit 896d8ba3ee7d13c1eef82728a5e17fb39fda0d45. * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update Fastfile * Update project.pbxproj * Update upload-on-merge.yml * [PP-2223] Books in same series are missing (#539) * Update TPPBookCoverRegistry.swift * add multiple related books lanes * Show additional lanes and more books functionality * Update project.pbxproj * [PP-2241] Show progress indicator on return + bug fixes (#540) * PP-2241 Show loading indicator when returning title from my books view * Fix pdf search and bookmark issues * Update project.pbxproj * [PP-2265] PDF improvements (#541) * PP-2265 enable pdf swipes * Resolve issues with my books view layout * Update project.pbxproj * [PP-2203] Ensure PDF bookmarks are saved (#542) * PP-2265 enable pdf swipes * Resolve issues with my books view layout * Update project.pbxproj * Update TPPBookRegistry.swift * Update project.pbxproj * Update TPPBookRegistry.swift * [PP-2203] Ensure PDF bookmarks are saved (#543) * PP-2265 enable pdf swipes * Resolve issues with my books view layout * Update project.pbxproj * Update TPPBookRegistry.swift * Update project.pbxproj * Update TPPBookRegistry.swift * Fix infinite loop * Update project.pbxproj * Update project.pbxproj * [PP-2205] Axis 360 page decryption errors (#544) * PP-2265 enable pdf swipes * Resolve issues with my books view layout * Update project.pbxproj * Update TPPBookRegistry.swift * Update project.pbxproj * Update TPPBookRegistry.swift * Fix infinite loop * Update project.pbxproj * Update project.pbxproj * Properly decrypt axis360 image books * Ensure push token is uploaded * Update project.pbxproj * PR Clean up * Update TPPRequestExecuting.swift * Update MyBooksDownloadCenterTests.swift * Update MyBooksDownloadCenterTests.swift * [PP-2277] Remove library startup screen (#545) * Improve app loading, prevent duplicate account loading, cache account logos, remove welcome screen * Update project.pbxproj * PR clean up * Set equal horizontal spacing between BookDetailView information label and value * [PP-2284] Update Swiftoolkit library (#546) * Improve loading times when switching libraries * Update AdobeDRMContentProtection.swift * Update project.pbxproj * Update AdobeDRMContentProtection.swift * PP-2337, PP2338, PP-2346 (#549) * Restore loading on my books view * Update ios-audiobooktoolkit * Update project.pbxproj * [PP-2347] Improve halfsheet layout (#550) * Restore loading on my books view * Update ios-audiobooktoolkit * Update project.pbxproj * Implement UI Improvements, resolve expanded half sheet * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update BookDetailView.swift * Update project.pbxproj * Update project.pbxproj * [PP-2347] Improve halfsheet layout (#551) * Restore loading on my books view * Update ios-audiobooktoolkit * Update project.pbxproj * Implement UI Improvements, resolve expanded half sheet * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update BookDetailView.swift * Update project.pbxproj * Update project.pbxproj * Update BookDetailView.swift * Update project.pbxproj * Update AdaptiveShadowModifier.swift * Update BookDetailView.swift * PP-2328 Infinite loop on 400 errors (#552) * Consider token validity when download with authentication * Update project.pbxproj * Release 1.2.0 (#558) * Ensure release-notes.sh executes in venv (#520) * Update release-notes.sh * Update upload-on-merge.yml * Update release-notes.sh * Re-attempt venv as it is needed to force Python 3.11 in order to enable global variables * Update create-release-notes.sh * Release 1.1.16 (#522) * [PP-725] Improve epub search (#360) * working implementation * Correct search issues * Update project.pbxproj * Add PalaceUIKit library * Update PalaceAudiobookToolkit module SHA * [PP-553] Clean up corrupted audiobook error presentation (#363) * working implementation * Correct search issues * Update project.pbxproj * Prevent alert from being prematurely dismissed and dismiss loading screen * Update TPPBookButtonsView.m * Update TPPBookButtonsView.m * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj (#364) * Resolve modifier ambiguity by moving font modifiers into PalaceUIKit * Font weight should be font modifier * Add PalaceUIKit * Build PalaceUIKit for distribution * Update PalaceAudiobookToolkit module SHA * Add color catalog * Refactor settings main screen fonts * Code documentation * Apply Palace UIKit to EPUB serach view * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Palace UIKit * Bump project build number * Fix typo * Update PalaceAudiobookToolkit module SHA * Implement search function for large encrypted documents * Use lower-level search for large encrypted documents Why: we decrypt smaller documents in memory, while larger files use CGPDF functions to decrypt blocks of file on the fly and therefore they can't be searched using PDFKit functions * Move parser code to TPPPDFTextExtractor * Compare lowercase search text * Release resources * [PP-725] Display all available sections in search results (#366) * working implementation * Correct search issues * Update project.pbxproj * update presentation of search options * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update PalaceAudiobookToolkit module SHA * Bump project build number * Set up team and signing certificate in PalaceUIKit (#368) * [PP-694] Use token auth for annotations (#369) * Update project.pbxproj * Use token for annotations calls * In progress token improvements * Update project.pbxproj * Update TPPAnnotations.swift * Update NYPLNetworkExecutorMock.swift * Clean up * [PP-694] Use token auth for annotations (#370) * Update project.pbxproj * Use token for annotations calls * In progress token improvements * Update project.pbxproj * Update TPPAnnotations.swift * Update NYPLNetworkExecutorMock.swift * Clean up * Resolve login failure when attempting to update tokens * Update project.pbxproj * Update project.pbxproj * Update project.pbxproj * Update NYPLNetworkExecutorMock.swift * [PP-746] Make annotation sync client side (#371) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * [PP-755] Update audiobook sampler (#372) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue * Update project.pbxproj * Update audiobook sampler * Update project.pbxproj * Update TPPBookButtonsView.h * Update TPPBookButtonsView.h * [PP-612] Resolves library switch error (#373) * in progress * Clean up annotation deletion, switch management and resolve infinite refresh call issue…
1 parent af3d762 commit fc4064f

File tree

14 files changed

+167
-98
lines changed

14 files changed

+167
-98
lines changed

Palace.xcodeproj/project.pbxproj

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5696,7 +5696,7 @@
56965696
CODE_SIGN_IDENTITY = "Apple Distribution";
56975697
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
56985698
CODE_SIGN_STYLE = Manual;
5699-
CURRENT_PROJECT_VERSION = 340;
5699+
CURRENT_PROJECT_VERSION = 343;
57005700
DEVELOPMENT_TEAM = 88CBA74T8K;
57015701
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K;
57025702
ENABLE_BITCODE = NO;
@@ -5718,7 +5718,7 @@
57185718
"$(inherited)",
57195719
"@executable_path/Frameworks",
57205720
);
5721-
MARKETING_VERSION = 1.2.3;
5721+
MARKETING_VERSION = 1.2.4;
57225722
PRODUCT_BUNDLE_IDENTIFIER = org.thepalaceproject.palace;
57235723
PRODUCT_MODULE_NAME = Palace;
57245724
PRODUCT_NAME = "Palace-noDRM";
@@ -5755,7 +5755,7 @@
57555755
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR;
57565756
CODE_SIGN_ENTITLEMENTS = Palace/SimplyE.entitlements;
57575757
CODE_SIGN_IDENTITY = "iPhone Distribution";
5758-
CURRENT_PROJECT_VERSION = 340;
5758+
CURRENT_PROJECT_VERSION = 343;
57595759
DEVELOPMENT_TEAM = 88CBA74T8K;
57605760
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K;
57615761
ENABLE_BITCODE = NO;
@@ -5777,7 +5777,7 @@
57775777
"$(inherited)",
57785778
"@executable_path/Frameworks",
57795779
);
5780-
MARKETING_VERSION = 1.2.3;
5780+
MARKETING_VERSION = 1.2.4;
57815781
PRODUCT_BUNDLE_IDENTIFIER = org.thepalaceproject.palace;
57825782
PRODUCT_MODULE_NAME = Palace;
57835783
PRODUCT_NAME = "Palace-noDRM";
@@ -5939,7 +5939,7 @@
59395939
CODE_SIGN_ENTITLEMENTS = Palace/PalaceDebug.entitlements;
59405940
CODE_SIGN_IDENTITY = "Apple Development";
59415941
CODE_SIGN_STYLE = Manual;
5942-
CURRENT_PROJECT_VERSION = 340;
5942+
CURRENT_PROJECT_VERSION = 343;
59435943
DEVELOPMENT_TEAM = "";
59445944
ENABLE_BITCODE = NO;
59455945
FRAMEWORK_SEARCH_PATHS = (
@@ -5965,7 +5965,7 @@
59655965
"$(inherited)",
59665966
"@executable_path/Frameworks",
59675967
);
5968-
MARKETING_VERSION = 1.2.3;
5968+
MARKETING_VERSION = 1.2.4;
59695969
PRODUCT_BUNDLE_IDENTIFIER = org.thepalaceproject.palace;
59705970
PROVISIONING_PROFILE_SPECIFIER = "";
59715971
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Ad Hoc";
@@ -6001,7 +6001,7 @@
60016001
CODE_SIGN_IDENTITY = "Apple Development";
60026002
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
60036003
CODE_SIGN_STYLE = Manual;
6004-
CURRENT_PROJECT_VERSION = 340;
6004+
CURRENT_PROJECT_VERSION = 343;
60056005
DEVELOPMENT_TEAM = "";
60066006
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K;
60076007
ENABLE_BITCODE = NO;
@@ -6028,7 +6028,7 @@
60286028
"$(inherited)",
60296029
"@executable_path/Frameworks",
60306030
);
6031-
MARKETING_VERSION = 1.2.3;
6031+
MARKETING_VERSION = 1.2.4;
60326032
PRODUCT_BUNDLE_IDENTIFIER = org.thepalaceproject.palace;
60336033
PROVISIONING_PROFILE_SPECIFIER = "";
60346034
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "App Store";
@@ -6063,7 +6063,7 @@
60636063
CODE_SIGN_IDENTITY = "Apple Development";
60646064
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
60656065
CODE_SIGN_STYLE = Manual;
6066-
CURRENT_PROJECT_VERSION = 340;
6066+
CURRENT_PROJECT_VERSION = 343;
60676067
DEVELOPMENT_TEAM = "";
60686068
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K;
60696069
ENABLE_BITCODE = NO;
@@ -6089,7 +6089,7 @@
60896089
"$(inherited)",
60906090
"@executable_path/Frameworks",
60916091
);
6092-
MARKETING_VERSION = 1.2.3;
6092+
MARKETING_VERSION = 1.2.4;
60936093
PRODUCT_BUNDLE_IDENTIFIER = org.thepalaceproject.palace;
60946094
PRODUCT_NAME = Palace;
60956095
PROVISIONING_PROFILE_SPECIFIER = "Ad Hoc 2";
@@ -6124,7 +6124,7 @@
61246124
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES_ERROR;
61256125
CODE_SIGN_ENTITLEMENTS = Palace/SimplyE.entitlements;
61266126
CODE_SIGN_IDENTITY = "iPhone Distribution";
6127-
CURRENT_PROJECT_VERSION = 340;
6127+
CURRENT_PROJECT_VERSION = 343;
61286128
DEVELOPMENT_TEAM = 88CBA74T8K;
61296129
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 88CBA74T8K;
61306130
ENABLE_BITCODE = NO;
@@ -6150,7 +6150,7 @@
61506150
"$(inherited)",
61516151
"@executable_path/Frameworks",
61526152
);
6153-
MARKETING_VERSION = 1.2.3;
6153+
MARKETING_VERSION = 1.2.4;
61546154
PRODUCT_BUNDLE_IDENTIFIER = org.thepalaceproject.palace;
61556155
PRODUCT_NAME = Palace;
61566156
PROVISIONING_PROFILE_SPECIFIER = "App Store";

Palace/Book/Models/TPPBook.swift

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -397,19 +397,7 @@ public class TPPBook: NSObject, ObservableObject {
397397
return date
398398
}
399399

400-
struct ReservationDetails {
401-
var holdPosition: Int = 0
402-
var remainingTime: Int = 0
403-
var timeUnit: String = ""
404-
var copiesAvailable: Int = 0
405-
}
406-
407-
struct AvailabilityDetails {
408-
var availableSince: String?
409-
var availableUntil: String?
410-
}
411-
412-
func getReservationDetails() -> ReservationDetails {
400+
@objc func getReservationDetails() -> ReservationDetails {
413401
var untilDate: Date?
414402
var reservationDetails = ReservationDetails()
415403

@@ -442,16 +430,8 @@ public class TPPBook: NSObject, ObservableObject {
442430
let components = calendar.dateComponents([.day], from: now, to: untilDate)
443431

444432
if let days = components.day {
445-
if days < 7 {
446-
reservationDetails.remainingTime = days
447-
reservationDetails.timeUnit = "day\(days == 1 ? "" : "s")"
448-
} else if days < 30 {
449-
reservationDetails.remainingTime = days / 7
450-
reservationDetails.timeUnit = "week\(days == 1 ? "" : "s")"
451-
} else {
452-
reservationDetails.remainingTime = days / 30
453-
reservationDetails.timeUnit = "month\(days == 1 ? "" : "s")"
454-
}
433+
reservationDetails.remainingTime = days
434+
reservationDetails.timeUnit = "day\(days == 1 ? "" : "s")"
455435
}
456436
}
457437

@@ -596,4 +576,21 @@ extension TPPBook {
596576
var wrappedCoverImage: UIImage? {
597577
coverImage
598578
}
579+
580+
@objc public class func ordinalString(for n: Int) -> String {
581+
return n.ordinal()
582+
}
583+
}
584+
585+
@objcMembers
586+
public class ReservationDetails: NSObject {
587+
public var holdPosition: Int = 0
588+
public var remainingTime: Int = 0
589+
public var timeUnit: String = ""
590+
public var copiesAvailable: Int = 0
591+
}
592+
593+
struct AvailabilityDetails {
594+
var availableSince: String?
595+
var availableUntil: String?
599596
}

Palace/Book/UI/BookDetail/BookDetailView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ struct BookDetailView: View {
509509
switch buttonType {
510510
case .sample, .audiobookSample:
511511
viewModel.handleAction(for: buttonType)
512-
case .download, .get:
512+
case .download, .get, .reserve:
513513
showHalfSheet.toggle()
514514
DispatchQueue.main.asyncAfter(deadline: .now() + 0.75) {
515515
viewModel.handleAction(for: buttonType)

Palace/Book/UI/BookDetail/BookDetailViewModel.swift

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class BookDetailViewModel: ObservableObject {
5959
self.state = registry.state(for: book.identifier)
6060

6161
bindRegistryState()
62-
determineButtonState()
62+
buttonState = BookButtonState.stateForAvailability(self.book.defaultAcquisition?.availability) ?? .unsupported
6363
setupObservers()
6464
self.downloadProgress = downloadCenter.downloadProgress(for: book.identifier)
6565
}
@@ -215,7 +215,7 @@ class BookDetailViewModel: ObservableObject {
215215

216216
switch state {
217217
case .unregistered:
218-
newState = .canBorrow
218+
newState = BookButtonState.stateForAvailability(book.defaultAcquisition?.availability) ?? .canBorrow
219219
case .downloadNeeded:
220220
newState = .downloadNeeded
221221
case .downloading:
@@ -248,22 +248,16 @@ class BookDetailViewModel: ObservableObject {
248248

249249
switch button {
250250
case .reserve:
251-
registry.setState(.holding, for: book.identifier)
252-
removeProcessingButton(button)
251+
didSelectDownload(for: book)
253252

254-
case .remove:
255-
registry.setState(.unregistered, for: book.identifier)
253+
registry.setState(.holding, for: book.identifier)
256254
removeProcessingButton(button)
257-
258-
case .return:
255+
case .return, .remove:
259256
didSelectReturn(for: book) {
260257
self.removeProcessingButton(button)
261258
}
262259

263260
case .download, .get, .retry:
264-
if buttonState == .canHold {
265-
TPPUserNotifications.requestAuthorization()
266-
}
267261
didSelectDownload(for: book)
268262
removeProcessingButton(button)
269263

Palace/Book/UI/BookDetail/HTMLTextView.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ struct HTMLTextView: View {
2828
let mutable = NSMutableAttributedString(attributedString: nsAttr)
2929

3030
mutable.enumerateAttribute(.font, in: NSRange(location: 0, length: mutable.length)) { value, range, _ in
31-
if value == nil {
32-
mutable.addAttribute(.font, value: UIFont.palaceFont(ofSize: 15), range: range)
33-
}
31+
mutable.addAttribute(.font, value: UIFont.palaceFont(ofSize: 17), range: range)
3432
}
3533

3634
mutable.addAttribute(.foregroundColor, value: UIColor.label, range: NSRange(location: 0, length: mutable.length))

Palace/Book/UI/BookDetail/HalfSheetview.swift

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import SwiftUI
22

33
struct HalfSheetView: View {
4+
typealias DisplayStrings = Strings.BookDetailView
45
@Environment(\.colorScheme) var colorScheme
56

67
@ObservedObject var viewModel: BookDetailViewModel
@@ -80,7 +81,7 @@ private extension HalfSheetView {
8081
case .downloading, .downloadNeeded:
8182
borrowingInfoView
8283
default:
83-
if viewModel.buttonState == .canHold {
84+
if viewModel.buttonState == .holding {
8485
holdingInfoView
8586
} else {
8687
borrowedInfoView
@@ -91,20 +92,22 @@ private extension HalfSheetView {
9192
@ViewBuilder
9293
var holdingInfoView: some View {
9394
let details = viewModel.book.getReservationDetails()
94-
VStack {
95-
Text("Approximately \(details.remainingTime) \(details.timeUnit) wait.")
96-
.font(.subheadline)
97-
.fontWeight(.semibold)
98-
Text("You are \(details.holdPosition.ordinal()) in line. \(details.copiesAvailable) \(details.copiesAvailable == 1 ? "copy" : "copies") in use.")
99-
.font(.footnote)
100-
}
95+
Text(
96+
String(
97+
format: DisplayStrings.holdStatus,
98+
details.holdPosition.ordinal(),
99+
details.copiesAvailable,
100+
details.copiesAvailable == 1 ? DisplayStrings.copy : DisplayStrings.copies
101+
)
102+
)
103+
.font(.footnote)
101104
}
102105

103106
@ViewBuilder
104107
var borrowingInfoView: some View {
105108
if let timeUntil = viewModel.book.getExpirationDate()?.timeUntil() {
106109
HStack {
107-
Text("Borrowing for")
110+
Text(DisplayStrings.borrowingFor)
108111
.font(.subheadline)
109112
.foregroundColor(.secondary)
110113
Spacer()
@@ -118,7 +121,7 @@ private extension HalfSheetView {
118121
var borrowedInfoView: some View {
119122
if let availableUntil = viewModel.book.getExpirationDate()?.timeUntil() {
120123
HStack {
121-
Text("Borrowed until")
124+
Text(DisplayStrings.borrowedFor)
122125
.font(.subheadline)
123126
.foregroundColor(.secondary)
124127
Spacer()

Palace/Book/UI/TPPBookNormalCell.m

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ @interface TPPBookNormalCell ()
1515
@property (nonatomic) UILabel *title;
1616
@property (nonatomic) UIImageView *unreadImageView;
1717
@property (nonatomic) UIImageView *contentBadge;
18+
@property (nonatomic) UILabel *holdingInfoLabel;
1819

1920
@end
2021

@@ -97,10 +98,39 @@ - (void)setBook:(TPPBook *const)book
9798
[self.contentView addSubview:self.buttonsView];
9899
self.buttonsView.translatesAutoresizingMaskIntoConstraints = NO;
99100
[self.buttonsView autoPinEdge:ALEdgeLeft toEdge:ALEdgeLeft ofView:self.title];
100-
[self.buttonsView autoPinEdge:ALEdgeBottom toEdge:ALEdgeBottom ofView:self.cover];
101101
}
102102
self.buttonsView.book = book;
103-
103+
104+
if (!self.holdingInfoLabel) {
105+
self.holdingInfoLabel = [[UILabel alloc] init];
106+
self.holdingInfoLabel.font = [UIFont palaceFontOfSize:12];
107+
self.holdingInfoLabel.textColor = [UIColor secondaryLabelColor];
108+
self.holdingInfoLabel.numberOfLines = 0;
109+
self.holdingInfoLabel.translatesAutoresizingMaskIntoConstraints = NO;
110+
[self.contentView addSubview:self.holdingInfoLabel];
111+
[self.holdingInfoLabel autoPinEdge:ALEdgeTop
112+
toEdge:ALEdgeBottom
113+
ofView:self.buttonsView
114+
withOffset:4];
115+
[self.holdingInfoLabel autoPinEdge:ALEdgeLeft
116+
toEdge:ALEdgeLeft
117+
ofView:self.title];
118+
[self.holdingInfoLabel autoMatchDimension:ALDimensionWidth
119+
toDimension:ALDimensionWidth
120+
ofView:self.title];
121+
[self.holdingInfoLabel autoPinEdge:ALEdgeBottom toEdge:ALEdgeBottom ofView:self.cover];
122+
}
123+
124+
ReservationDetails *details = [book getReservationDetails];
125+
NSString *ordinal = [TPPBook ordinalStringFor:details.holdPosition];
126+
NSString *copies = details.copiesAvailable == 1 ? @"copy" : @"copies";
127+
self.holdingInfoLabel.text = [NSString stringWithFormat:
128+
NSLocalizedString(@"You are %@ in line. %ld %@ in use.", nil),
129+
ordinal,
130+
(long)details.copiesAvailable,
131+
copies
132+
];
133+
104134
if(!self.unreadImageView) {
105135
self.unreadImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Unread"]];
106136
self.unreadImageView.image = [self.unreadImageView.image
@@ -157,6 +187,9 @@ - (void)setState:(TPPBookButtonsState const)state
157187
_state = state;
158188
self.buttonsView.state = state;
159189
self.unreadImageView.hidden = (state != TPPBookButtonsStateDownloadSuccessful);
190+
BOOL isHolding = (state == TPPBookButtonsStateHolding);
191+
self.holdingInfoLabel.hidden = !isHolding;
192+
160193
[self setNeedsLayout];
161194
}
162195

Palace/Catalog/TPPCatalogSearchViewController.m

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ - (void)viewWillLayoutSubviews
135135
}
136136
}
137137

138+
- (void)viewDidAppear:(BOOL)animated
139+
{
140+
[super viewDidAppear:animated];
141+
[self.searchBar becomeFirstResponder];
142+
}
143+
138144
- (void)createAndConfigureFacetBarView
139145
{
140146
if (self.facetBarView) {
@@ -297,8 +303,13 @@ - (void)searchBarSearchButtonClicked:(__attribute__((unused)) UISearchBar *)sear
297303

298304
- (void)updateUIAfterSearchSuccess:(BOOL)success
299305
{
300-
[self createAndConfigureFacetBarView];
301306

307+
if (self.facetBarView == nil) {
308+
[self createAndConfigureFacetBarView];
309+
} else {
310+
[self.facetBarView.entryPointView reloadData];
311+
}
312+
302313
self.collectionView.alpha = 0.0;
303314
self.searchActivityIndicatorView.hidden = YES;
304315
[self.searchActivityIndicatorView stopAnimating];
@@ -320,6 +331,9 @@ - (void)updateUIAfterSearchSuccess:(BOOL)success
320331
self.reloadView.hidden = NO;
321332
}
322333

334+
[self.view setNeedsLayout];
335+
[self.view layoutIfNeeded];
336+
323337
[UIView animateWithDuration:0.3 animations:^{
324338
self.searchBar.alpha = 1.0;
325339
self.facetBarView.alpha = 1.0;

Palace/ErrorHandling/ProblemReportEmail.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ import UIKit
6969
// @unknown default: // for Xcode < 15
7070
// idiom = "unspecified"
7171
}
72-
let bodyWithoutBook = "\n\n---\nIdiom: \(idiom)\nHeight: \(nativeHeight)\nOS: \(systemVersion)"
72+
73+
let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0"
74+
let bodyWithoutBook = "\n\n---\nIdiom: \(idiom)\nPlatform: iOS\nOS: \(systemVersion)\nHeight: \(nativeHeight)\nPalace Version: \(appVersion)\nLibrary: \(AccountsManager.shared.currentAccount?.name ?? "")"
7375
let body: String
7476
if let book = book {
7577
body = bodyWithoutBook + "\nTitle: \(book.title)\nID: \(book.identifier)"

0 commit comments

Comments
 (0)