123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- "use strict";
- exports.id = 4461;
- exports.ids = [4461];
- exports.modules = {
- /***/ 24213:
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__),
- /* harmony export */ "b2": () => (/* binding */ toggleVerseBookmark),
- /* harmony export */ "it": () => (/* binding */ selectBookmarks)
- /* harmony export */ });
- /* unused harmony exports bookmarksSlice, selectOrderedBookmarkedVerses */
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184);
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__);
- const initialState = {
- bookmarkedVerses: {}
- };
- const bookmarksSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({
- name: "bookmarks",
- initialState,
- reducers: {
- toggleVerseBookmark: (state, action)=>{
- const verseKey = action.payload;
- // if the verseKey exists, we should remove it.
- if (state.bookmarkedVerses[verseKey]) {
- const newBookmarkedVerses = {
- ...state.bookmarkedVerses
- };
- delete newBookmarkedVerses[verseKey];
- return {
- ...state,
- bookmarkedVerses: newBookmarkedVerses
- };
- }
- return {
- ...state,
- // inserting the new pair at beginning of the object will make it sorted by the date verses were bookmarked
- // +new Date() gets the timestamp that we bookmarked the verse at.
- bookmarkedVerses: {
- [verseKey]: +new Date(),
- ...state.bookmarkedVerses
- }
- };
- }
- }
- });
- const { toggleVerseBookmark } = bookmarksSlice.actions;
- const selectBookmarks = (state)=>state.bookmarks.bookmarkedVerses;
- const selectOrderedBookmarkedVerses = (state)=>// sort the bookmarked verses by the order they appear in the Mushaf.
- Object.fromEntries(Object.entries(state.bookmarks.bookmarkedVerses).sort());
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (bookmarksSlice.reducer);
- /***/ }),
- /***/ 16143:
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
- /* harmony export */ "E9": () => (/* binding */ selectedLastReadPage),
- /* harmony export */ "GF": () => (/* binding */ selectRecentReadingSessions),
- /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__),
- /* harmony export */ "eQ": () => (/* binding */ selectLastReadVerseKey),
- /* harmony export */ "ge": () => (/* binding */ setLastReadVerse),
- /* harmony export */ "jM": () => (/* binding */ selectIsVerseKeySelected)
- /* harmony export */ });
- /* unused harmony export readingTrackerSlice */
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75184);
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__);
- /* harmony import */ var _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61243);
- /* harmony import */ var _utils_verse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44519);
- /* eslint-disable react-func/max-lines-per-function */
- const initialState = {
- lastReadVerse: {
- verseKey: null,
- chapterId: null,
- page: null,
- hizb: null
- },
- recentReadingSessions: {}
- };
- const NEW_SESSION_BOUNDARY = 20;
- const MAXIMUM_NUMBER_OF_SESSIONS = 10;
- const readingTrackerSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({
- name: _redux_types_SliceName__WEBPACK_IMPORTED_MODULE_1__/* ["default"].READING_TRACKER */ .Z.READING_TRACKER,
- initialState,
- reducers: {
- setLastReadVerse: (state, action)=>{
- const { lastReadVerse , chaptersData } = action.payload;
- let newRecentReadingSessions = {
- ...state.recentReadingSessions
- };
- // if the verse key already exists, and he re-visited it again, we need to mark it as the latest session.
- if (newRecentReadingSessions[lastReadVerse.verseKey]) {
- // delete the old entry
- delete newRecentReadingSessions[lastReadVerse.verseKey];
- // insert the same entry again but at the beginning
- newRecentReadingSessions = {
- [lastReadVerse.verseKey]: +new Date(),
- ...newRecentReadingSessions
- };
- return generateNewState(state, lastReadVerse, newRecentReadingSessions);
- }
- const sessionsVerseKeys = Object.keys(newRecentReadingSessions);
- const numberOfSessions = sessionsVerseKeys.length;
- const [lastReadingSessionVerseKey] = sessionsVerseKeys;
- // if there are some last read sessions already and the new verse key is not far enough to be considered a new session
- if (numberOfSessions && (0,_utils_verse__WEBPACK_IMPORTED_MODULE_2__/* .getDistanceBetweenVerses */ .Bo)(chaptersData, lastReadingSessionVerseKey, lastReadVerse.verseKey) <= NEW_SESSION_BOUNDARY) {
- delete newRecentReadingSessions[lastReadingSessionVerseKey];
- newRecentReadingSessions = {
- [lastReadVerse.verseKey]: +new Date(),
- ...newRecentReadingSessions
- };
- return generateNewState(state, lastReadVerse, newRecentReadingSessions);
- }
- const earliestSession = sessionsVerseKeys[numberOfSessions - 1];
- // insert a new entry at the beginning
- newRecentReadingSessions = {
- [lastReadVerse.verseKey]: +new Date(),
- ...newRecentReadingSessions
- };
- // if the number of sessions already exceeded the maximum, delete the latest session
- if (numberOfSessions + 1 > MAXIMUM_NUMBER_OF_SESSIONS) {
- delete newRecentReadingSessions[earliestSession];
- }
- return generateNewState(state, lastReadVerse, newRecentReadingSessions);
- }
- }
- });
- /**
- * Generate the new state.
- *
- * @param {ReadingTracker} state
- * @param {LastReadVerse} lastReadVerse
- * @param {Record<string, boolean>} newRecentReadingSessions
- * @returns {ReadingTracker}
- */ const generateNewState = (state, lastReadVerse, newRecentReadingSessions)=>{
- return {
- ...state,
- lastReadVerse,
- recentReadingSessions: newRecentReadingSessions
- };
- };
- const { setLastReadVerse } = readingTrackerSlice.actions;
- const selectLastReadVerseKey = (state)=>state.readingTracker.lastReadVerse;
- const selectRecentReadingSessions = (state)=>state.readingTracker.recentReadingSessions;
- const selectedLastReadPage = (state)=>state.readingTracker.lastReadVerse.page;
- const selectIsVerseKeySelected = (verseKey)=>(state)=>{
- const lastReadVerseKey = selectLastReadVerseKey(state);
- return verseKey === lastReadVerseKey.verseKey;
- };
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (readingTrackerSlice.reducer);
- /***/ })
- };
- ;
- //# sourceMappingURL=4461.js.map
|