{"version":3,"sources":["features/Bible/Chapters/actions/bibleChaptersFromApiActions.js","features/Bible/Chapters/actions/getBookChaptersFromStorageActions.js","features/Bible/Chapters/actions/getBookChaptersFromApiActions.js","features/Bible/Chapters/actions/viewFiltersBookChapterFromStorageActions.js","features/Bible/Chapters/actions/index.js","constants/services.js","common/entities/actions/entityListStorageActions.js","common/entities/actions/lastUpdatedEntityListSettingStorageActions.js","common/entities/actions/lastUploadedEntityListSettingStorageActions.js","common/entities/actions/entityListApiActions.js","common/entities/actions/getEntityActions.js","common/entities/actions/index.js","utils/routesHelper.js","common/entities/actions/addEntityActions.js","features/Bible/Versions/selectors/getBibleVersionsSelector.js","features/Bible/Versions/selectors/getBibleVersionBySelectedVersionIdSelector.js","services/api.js","common/entities/constants.js","reducers/viewFilters.js","features/Bible/Verses/actions/chapterVersesActions.js","features/Bible/Verses/actions/getChapterVersesFromStorageActions.js","features/Bible/Verses/actions/getChapterVersesFromApiActions.js","features/Bible/Verses/actions/bookVersesFromApiActions.js","features/Bible/Verses/actions/bibleVersesFromApiActions.js","features/Bible/Verses/actions/index.js","features/Bible/Books/actions/getBooksFromStorageActions.js","features/Bible/Books/actions/getBooksFromApiActions.js","features/Bible/Books/actions/viewFiltersBibleBookFromStorageActions.js","features/Bible/Books/actions/index.js","common/Root.js","features/Bible/Versions/actions/getBibleVersionsFromStorageActions.js","features/Bible/Versions/actions/getBibleVersionsFromApiActions.js","features/Bible/Versions/actions/getViewFiltersBibleVersionFromStorageActions.js","features/Bible/Versions/actions/index.js","assets/img/river.jpg","store/configureStore.js","features/auth/Login/actions/loginActions.js","features/auth/Login/actions/autoSignInActions.js","features/auth/Login/actions/signedInUsersStorageActions.js","features/auth/Login/actions/index.js","features/VerseOfTheDay/actions/verseOfTheDayActions.js","features/VerseOfTheDay/actions/verseOfTheDayListActions.js","features/VerseOfTheDay/actions/verseOfTheDayListStorageActions.js","features/VerseOfTheDay/actions/verseOfTheDayListFromApiActions.js","features/VerseOfTheDay/actions/verseOfTheDayFullVersesFromApiActions.js","features/VerseOfTheDay/actions/index.js","utils/dateHelper.js","features/Version/reducer.js","features/Home/reducer.js","features/auth/reducer.js","features/Bible/Versions/constants.js","features/Bible/Versions/reducer.js","features/Bible/Books/reducer.js","features/Bible/Chapters/reducer.js","features/Bible/Verses/reducer.js","features/VerseOfTheDay/reducer.js","features/BibleHistory/reducer.js","reducers/index.js","features/Settings/System/reducer.js","features/Settings/System/api.js","sagas/sagaHelper.js","services/apiHelper.js","services/apiResources.js","features/Version/sagas/getAppVersionFromApiSaga.js","features/Version/api.js","services/indexedDb.js","features/constants.js","features/Version/indexedDbStorage/saveAppVersionToLocalStoreDb.js","features/Version/indexedDbStorage/fetchAppVersionFromStorageService.js","features/Version/indexedDbStorage/deleteAppVersionFromStorageService.js","features/Version/indexedDbStorage/index.js","features/Version/sagas/getAppVersionFromStorageSaga.js","features/Version/sagas/updateAppVersionLocalStorageSaga.js","features/Version/sagas/index.js","features/Bible/Versions/sagas/getBibleVersionsSaga.js","features/Bible/Versions/schema.js","features/Bible/Versions/indexedDbStorage/saveViewFiltersBibleVersionToLocalStoreDb.js","features/Bible/constants.js","features/Bible/Versions/indexedDbStorage/fetchViewFiltersBibleVersionFromStorageService.js","features/Bible/Versions/indexedDbStorage/index.js","features/Bible/Versions/sagas/getBibleVersionsFromStorageSaga.js","features/Bible/Versions/indexedDbStorage/service.js","features/Bible/Versions/sagas/getBibleVersionsFromApiSaga.js","features/Bible/Versions/api.js","features/Bible/Versions/sagas/setBibleVersionSaga.js","features/Bible/Versions/sagas/updateBibleVersionsLocalStorageSaga.js","features/Bible/Versions/sagas/updateViewFiltersBibleVersionLocalStoreSaga.js","features/Bible/Versions/sagas/getViewFiltersBibleVersionFromStorageSaga.js","features/Bible/Versions/sagas/index.js","features/Bible/Books/sagas/getBooksSaga.js","features/Bible/Books/schema.js","features/Bible/Books/indexedDbStorage/saveViewFiltersBibleBookToLocalStoreDb.js","features/Bible/Books/indexedDbStorage/fetchViewFiltersBibleBookFromStorageService.js","features/Bible/Books/indexedDbStorage/index.js","features/Bible/Books/sagas/getBooksFromStorageSaga.js","features/Bible/Books/indexedDbStorage/service.js","features/Bible/Books/api.js","features/Bible/Books/sagas/getBooksFromApiSaga.js","features/Bible/Books/sagas/updateBooksLocalStorageSaga.js","features/Bible/Books/sagas/setBibleBookSaga.js","features/Bible/Books/sagas/updateViewFiltersBibleBookLocalStoreSaga.js","features/Bible/Books/sagas/getViewFiltersBibleBookFromStorageSaga.js","features/Bible/Chapters/schema.js","features/Bible/Chapters/bookChaptersApi.js","features/Bible/Chapters/bibleChaptersApi.js","features/Bible/Chapters/sagas/getBibleChaptersFromApiSaga.js","features/Bible/Chapters/sagas/getChaptersSaga.js","features/Bible/Chapters/indexedDbStorage/addChaptersToLocalStoreDb.js","features/Bible/Chapters/indexedDbStorage/loadChaptersByBookIdAndLangIdFromLocalStoreDb.js","features/Bible/Chapters/indexedDbStorage/fetchChaptersByBookIdAndLangIdFromStorageService.js","features/Bible/Chapters/indexedDbStorage/saveViewFiltersBookChapterToLocalStoreDb.js","features/Bible/Chapters/indexedDbStorage/fetchViewFiltersBookChapterFromStorageService.js","features/Bible/Chapters/indexedDbStorage/index.js","features/Bible/Chapters/sagas/getChaptersFromStorageSaga.js","features/Bible/Chapters/sagas/getChaptersFromApiSaga.js","features/Bible/Chapters/sagas/updateChaptersLocalStorageSaga.js","features/Bible/Chapters/sagas/setChapterSaga.js","features/Bible/Chapters/sagas/requestNextChapterSaga.js","features/Bible/Chapters/sagas/requestPrevChapterSaga.js","features/Bible/Chapters/sagas/updateViewFiltersBookChapterLocalStoreSaga.js","features/Bible/Chapters/sagas/getViewFiltersBookChapterFromStorageSaga.js","features/Bible/Chapters/sagas/index.js","features/VerseOfTheDay/schema.js","features/VerseOfTheDay/entity/getVerseOfTheDayListFromApi.js","features/VerseOfTheDay/api/verseOfTheDayListApi.js","features/VerseOfTheDay/metadata.js","features/HighlightedVerses/metadata.js","features/BibleHistory/metadata.js","common/entities/metadata.js","common/entities/indexedDbStorage/fetchAddEntityToStorageService.js","common/entities/indexedDbStorage/fetchEntityListFromStorageService.js","common/entities/indexedDbStorage/fetchLastUpdatedEntityListSettingFromStorageService.js","common/entities/indexedDbStorage/fetchLastAddedEntityFromStorageService.js","common/entities/indexedDbStorage/entityHelper.js","common/entities/indexedDbStorage/fetchEntitySettingFromStorageService.js","common/entities/indexedDbStorage/saveEntityListToStorageService.js","common/entities/indexedDbStorage/index.js","features/Bible/Verses/sagas/getVersesSaga.js","features/Bible/Verses/indexedDbStorage/addVersesToLocalStoreDb.js","features/Bible/Verses/indexedDbStorage/loadVersesByChapterIdAndVersionIdFromLocalStoreDb.js","features/Bible/Verses/schema.js","features/Bible/Verses/indexedDbStorage/fetchVersesByChapterIdAndVersionIdFromStorageService.js","features/Bible/Verses/indexedDbStorage/index.js","features/Bible/Verses/sagas/getVersesFromStorageSaga.js","features/Bible/Verses/chapterVersesApi.js","features/Bible/Verses/sagas/getVersesFromApiSaga.js","features/Bible/Verses/sagas/updateVersesLocalStorageSaga.js","features/Bible/Verses/bookVersesApi.js","features/Bible/Verses/sagas/getBookVersesFromApiSaga.js","features/Bible/Verses/bibleVersesApi.js","features/Bible/Verses/sagas/getBibleVersesFromApiSaga.js","features/Bible/Verses/sagas/index.js","features/Bible/Books/sagas/index.js","features/VerseOfTheDay/indexedDbStorage/saveVerseOfTheDayListToStorageService.js","features/VerseOfTheDay/indexedDbStorage/fetchVerseOfTheDayListFromStorageService.js","features/VerseOfTheDay/indexedDbStorage/fetchPersonalVerseOfTheDayByDateFromStorageService.js","features/VerseOfTheDay/indexedDbStorage/savePersonalVerseOfTheDayToStorageService.js","features/VerseOfTheDay/indexedDbStorage/fetchLastUpdatedVerseOfTheDayListSettingFromStorageService.js","features/VerseOfTheDay/indexedDbStorage/index.js","features/VerseOfTheDay/sagas/getPersonalVerseOfTheDayFromStorageSaga.js","features/VerseOfTheDay/sagas/getVerseOfTheDaySaga.js","features/VerseOfTheDay/sagas/saveVerseOfTheDayListToStorageSaga.js","features/VerseOfTheDay/sagas/generateVerseOfTheDaySaga.js","features/VerseOfTheDay/sagas/savePersonalVerseOfTheDayToStorageSaga.js","features/VerseOfTheDay/sagas/setVerseOfTheDayVersionSaga.js","features/VerseOfTheDay/sagas/index.js","features/auth/Login/sagas/loginSaga.js","features/auth/Login/api/loginApi.js","features/auth/SignOut/indexedDbStorage/deleteUserFromStorageService.js","features/auth/SignOut/indexedDbStorage/index.js","features/auth/Login/sagas/autoSignInSaga.js","features/auth/Login/api/autoSignInApi.js","features/auth/Login/indexedDbStorage/saveUserToStorageService.js","features/auth/Login/indexedDbStorage/fetchSignedInUsersFromStorageService.js","features/auth/Login/indexedDbStorage/index.js","features/auth/Login/sagas/getSignedInUsersFromStorageSaga.js","features/auth/Login/sagas/saveUserToStorageSaga.js","features/auth/Register/sagas/registerSaga.js","features/auth/Register/api/registerApi.js","features/auth/UpdateUserInfo/sagas/updateUserInfoSaga.js","features/auth/UpdateUserInfo/api/updateUserInfoApi.js","features/auth/SignOut/sagas/signOutSaga.js","features/auth/ChangePassword/sagas/changePasswordSaga.js","features/auth/ChangePassword/api/changePasswordApi.js","features/auth/ForgotPassword/sagas/forgotPasswordSaga.js","features/auth/ForgotPassword/api/forgotPasswordApi.js","features/auth/sagas/index.js","common/entities/api/entitiesApi.js","common/entities/sagas/addEntitySaga.js","common/entities/sagas/getEntityListSaga.js","common/entities/sagas/getEntityListFromStorageSaga.js","common/entities/sagas/getLastUpdatedEntityListSettingFromStorageSaga.js","common/entities/sagas/getEntityListFromApiSaga.js","common/entities/sagas/saveEntityListToStorageSaga.js","common/entities/sagas/syncEntityListToTheCloudSaga.js","services/storage/saveSettingsItemToStorageService.js","common/entities/sagas/syncEntityListFromTheCloudSaga.js","common/entities/sagas/index.js","features/BibleHistory/sagas/getBibleHistoryListTriggerSaga.js","features/BibleHistory/sagas/index.js","features/Settings/System/saga.js","sagas/index.js","store/configureStore.prod.js","assets/jss/CTBWebApp.js","assets/jss/components/drawerStyle.js","features/Home/DrawerListItem.js","features/Home/DrawerList.js","features/Home/Drawer.js","features/auth/Login/Header.js","features/auth/Register/Header.js","features/auth/UpdateUserInfo/Header.js","features/auth/ChangePassword/Header.js","features/auth/ForgotPassword/Header.js","features/Bible/Versions/ListButton.js","features/Bible/Versions/index.js","features/VerseOfTheDay/Header/Panel.js","features/VerseOfTheDay/Header/index.js","features/Bible/Books/ListButton.js","features/Bible/Books/selectors/getBookByBibleVersionAndBookIdSelector.js","features/Bible/Books/index.js","features/Bible/Chapters/ListButton.js","features/Bible/Chapters/selectors/getChaptersByBookIdAndBibleVersionSelector.js","features/Bible/Chapters/selectors/getChaptersByBibleVersionSelector.js","features/Bible/Chapters/selectors/getChapterByBibleVersionAndChapterIdSelector.js","features/Bible/Chapters/index.js","features/Bible/Header/Panel.js","features/Bible/Header/index.js","features/Bible/components/FavoriteVersesHeader.js","features/Home/components/TopicsHeader.js","features/Home/components/SettingsHeader.js","features/Home/components/CopyrightsHeader.js","features/Home/components/ReleaseNotesHeader.js","features/auth/SignInAccountMenu.js","features/auth/SignOutAccountMenu/Menu.js","features/auth/SignOutAccountMenu/index.js","features/BibleHistory/Header/Panel.js","features/BibleHistory/Header/index.js","features/Home/AppBar.js","common/components/SnackbarContentWrapper.js","common/components/MessageBox.js","common/components/MessageBanner.js","features/Home/Main/Panel.js","features/Home/Main/index.js","features/auth/Login/Panel.js","features/auth/Login/index.js","features/auth/Register/Panel.js","features/auth/Register/index.js","features/auth/UpdateUserInfo/Panel.js","utils/dataHelper.js","features/auth/UpdateUserInfo/index.js","features/auth/ChangePassword/Panel.js","features/auth/ChangePassword/index.js","features/auth/ForgotPassword/Panel.js","features/auth/ForgotPassword/index.js","features/VerseOfTheDay/Panel.js","features/VerseOfTheDay/selectors/getVerseOfTheDayListSelector.js","features/VerseOfTheDay/selectors/getVerseOfTheDaySelector.js","features/VerseOfTheDay/index.js","features/Bible/Verses/FavoriteWords.js","features/Bible/Verses/SearchWords.js","features/Bible/Verses/VerseOfTheDayWords.js","features/Bible/Verses/HighlightedWords.js","features/Bible/Verses/StyledVerse.js","features/Bible/Verses/VerseBox.js","features/Bible/Verses/VerseMenu.js","features/Bible/Verses/Verse.js","features/Bible/Verses/Panel.js","features/Bible/Verses/selector.js","features/Bible/Verses/index.js","features/BibleHistory/Item/Panel.js","features/BibleHistory/Item/index.js","features/BibleHistory/Panel.js","features/BibleHistory/index.js","features/Bible/components/FavoriteVerses.js","features/Home/components/Topics.js","features/Home/components/Settings.js","features/Home/components/Copyrights.js","features/Home/components/ReleaseNotes.js","features/Home/Analytics.js","features/Home/BaseMain.js","assets/jss/views/mainPageStyle.js","features/Home/HomePage.js","features/Home/index.js","common/containers/App.js","common/components/NotFound.js","common/Root.prod.js","serviceWorker.js","index.js","actions/index.js","features/Version/actions/appVersionFromApiActions.js","features/Version/actions/index.js","common/entities/actions/entityListActions.js","features/auth/Register/actions/registerActions.js","features/auth/Register/actions/index.js","features/auth/UpdateUserInfo/actions/updateUserInfoActions.js","features/auth/UpdateUserInfo/actions/index.js","features/Settings/System/actions.js","features/Bible/Chapters/selectors/getChaptersByBookIdSelector.js","utils/analytics.js","constants.js","features/auth/ChangePassword/actions/changePasswordActions.js","features/auth/ChangePassword/actions/index.js","features/auth/ForgotPassword/actions/forgotPasswordActions.js","features/auth/ForgotPassword/actions/index.js","features/Bible/Books/selectors/getBooksByBibleVersionSelector.js","features/Bible/Books/selectors/getBibleBooksSelector.js","actions/actionRequestTypes.js","features/Version/actions/appVersionFromStorageActions.js","features/auth/SignOut/actions/signOutActions.js","features/auth/SignOut/actions/index.js","features/Home/components/ChristTheSheperd.jpg","features/Settings/System/helper.js"],"names":["createRequestTypes","action","actions","LOAD_BIBLE_CHAPTERS_FROM_API","loadBibleChaptersFromApi","bibleVersionId","GET_BIBLE_CHAPTERS_FROM_API","getBibleChaptersFromApi","request","REQUEST","success","id","response","SUCCESS","failure","error","FAILURE","LOAD_BOOK_CHAPTERS_FROM_STORAGE","loadBookChaptersFromStorage","bookId","GET_BOOK_CHAPTERS_FROM_STORAGE","getBookChaptersFromStorage","LOAD_BOOK_CHAPTERS_FROM_API","loadBookChaptersFromApi","GET_BOOK_CHAPTERS_FROM_API","getBookChaptersFromApi","LOAD_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE","loadViewFiltersBookChapterFromStorage","GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE","getViewFiltersBookChapterFromStorage","UPDATE_VIEWFILTERS_BOOKCHAPTER_STORAGE","updateViewFiltersBookChapterStorage","chapterId","bibleChaptersFromApiActions","_bibleChaptersFromApiActions","getBookChaptersFromStorageActions","_getBookChaptersFromStorageActions","getBookChaptersFromApiActions","_getBookChaptersFromApiActions","viewFiltersBookChapterFromStorageActions","_viewFiltersBookChapterFromStorageActions","LOAD_BOOK_CHAPTERS","loadBookChapters","SET_BOOK_CHAPTER","setBookChapter","REQUEST_NEXT_CHAPTER","requestNextChapter","REQUEST_PREV_CHAPTER","requestPrevChapter","UPDATE_CHAPTERS_STORAGE","updateChaptersStorage","chapters","LOAD_ENTITY_LIST_FROM_STORAGE","entityName","loadEntityListFromStorage","filter","GET_ENTITY_LIST_FROM_STORAGE","GET_ENTITY_LIST_ACTION_TYPE","getEntityListFromStorage","SAVE_ENTITY_LIST_TO_STORAGE","saveEntityListToStorage","entityList","currentUtcTime","LOAD_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE","loadEntityListLastUpdatedSettingFromStorage","GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE","getLastUpdatedEntityListSettingFromStorage","LOAD_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE","loadEntityListLastUploadedSettingFromStorage","GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE","getLastUploadedEntityListSettingFromStorage","LOAD_ENTITY_LIST_FROM_API","loadEntityListFromApi","GET_ENTITY_LIST_FROM_API","getEntityListFromApi","GET_LASTADDED_ENTITY_ACTION_TYPE","getLastAddedEntity","GET_LASTADDED_ENTITY_FROM_STORAGE","getLastAddedEntityFromStorage","addEntityActions","_addEntityActions","entityListActions","_entityListActions","entityListStorageActions","_entityListStorageActions","lastUpdatedEntityListSettingStorageActions","_lastUpdatedEntityListSettingStorageActions","lastUploadedEntityListSettingStorageActions","_lastUploadedEntityListSettingStorageActions","entityListApiActions","_entityListApiActions","getEntityActions","_getEntityActions","SYNC_ENTITY_LIST_TO_THECLOUD","syncEntityListToTheCloud","SYNC_ENTITY_LIST_FROM_THECLOUD","syncEntityListFromTheCloud","activeRoute","routeName","window","location","href","indexOf","ADD_ENTITY_ACTION_TYPE","addEntity","payload","arguments","length","undefined","obj","ADD_ENTITY_STORAGE","addEntityStorage","ADD_ENTITY_API","addEntityApi","getBibleVersions","createSelector","state","_","values","entities","bibleVersions","getBibleVersionBySelectedVersionId","bibleVersion","selectedBibleVersion","versionId","getNextPageUrl","link","headers","get","nextLink","split","find","s","slice","API_POST","API_PUT","currentAuthToken","setToken","token","fetchHeaderOption","fetchHeader","Object","assign","fetchHeaderAutorizationOption","fetchHeaderAuthorization","fetchOptions","fetchMethod","fetchBody","options","method","bodyOption","body","callApiNormalizedResponse","endpoint","schema","fetch","then","json","_ref","ok","Promise","reject","camelizedJson","camelizeKeys","nextPageUrl","normalize","message","callApi","_ref2","Error","statusText","catch","console","log","VERSEOFTHEDAY","FAVORITEVERSES","HIGHLIGHTEDVERSES","BIBLEHISTORY","LOGIN","LoginActionTypes","AUTOSIGNIN","viewFilters","userLoggingIn","type","GET_CHAPTER_VERSES","getChapterVerses","LOAD_CHAPTER_VERSES_FROM_STORAGE","loadChapterVersesFromStorage","GET_CHAPTER_VERSES_FROM_STORAGE","getChapterVersesFromStorage","LOAD_CHAPTER_VERSES_FROM_API","loadChapterVersesFromApi","GET_CHAPTER_VERSES_FROM_API","getChapterVersesFromApi","LOAD_BOOK_VERSES_FROM_API","loadBookVersesFromApi","GET_BOOK_VERSES_FROM_API","getBookVersesFromApi","LOAD_BIBLE_VERSES_FROM_API","loadBibleVersesFromApi","GET_BIBLE_VERSES_FROM_API","getBibleVersesFromApi","chapterVersesActions","_chapterVersesActions","getChapterVersesFromStorageActions","_getChapterVersesFromStorageActions","getChapterVersesFromApiActions","_getChapterVersesFromApiActions","bookVersesFromApiActions","_bookVersesFromApiActions","bibleVersesFromApiActions","_bibleVersesFromApiActions","LOAD_CHAPTER_VERSES","loadChapterVerses","UPDATE_VERSES_STORAGE","updateVersesStorage","verses","DISPLAY_DOWNLOAD_BIBLE_OPTIONS","displayDownloadBibleOptions","LOAD_BIBLE_BOOKS_FROM_STORAGE","loadBibleBooksFromStorage","GET_BIBLE_BOOKS_FROM_STORAGE","getBibleBooksFromStorage","LOAD_BIBLE_BOOKS_FROM_API","loadBibleBooksFromApi","GET_BIBLE_BOOKS_FROM_API","getBibleBooksFromApi","LOAD_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE","loadViewFiltersBibleBookFromStorage","GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE","getViewFiltersBibleBookFromStorage","UPDATE_VIEWFILTERS_BIBLEBOOK_STORAGE","updateViewFiltersBibleBookStorage","getBooksFromStorageActions","_getBooksFromStorageActions","getBooksFromApiActions","_getBooksFromApiActions","viewFiltersBibleBookFromStorageActions","_viewFiltersBibleBookFromStorageActions","LOAD_BIBLE_BOOKS","loadBibleBooks","SET_BIBLE_BOOK","setBibleBook","skipSettingFirstChapter","UPDATE_BOOKS_STORAGE","updateBooksStorage","books","module","exports","require","LOAD_BIBLE_VERSIONS_FROM_STORAGE","loadBibleVersionsFromStorage","GET_BIBLE_VERSIONS_FROM_STORAGE","getBibleVersionsFromStorage","LOAD_BIBLE_VERSIONS_FROM_API","loadBibleVersionsFromApi","GET_BIBLE_VERSIONS_FROM_API","getBibleVersionsFromApi","LOAD_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE","loadViewFiltersBibleVersionFromStorage","GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE","getViewFiltersBibleVersionFromStorage","getBibleVersionsFromStorageActions","_getBibleVersionsFromStorageActions","getBibleVersionsFromApiActions","_getBibleVersionsFromApiActions","getViewFiltersBibleVersionFromStorageActions","_getViewFiltersBibleVersionFromStorageActions","LOAD_BIBLE_VERSIONS","loadBibleVersions","SET_BIBLE_VERSION","setBibleVersion","langId","UPDATE_BIBLE_VERSIONS_STORAGE","updateBibleVersionsStorage","UPDATE_VIEWFILTERS_BIBLEVERSION_STORAGE","updateViewFiltersBibleVersionStorage","SUBMIT_LOGIN_REQUEST","submitLoginRequest","encodedCredentials","shouldRememberUser","login","SUBMIT_AUTOSIGNIN_REQUEST","submitAutoSignInRequest","autoSignIn","LOAD_SIGNEDIN_USERS_FROM_STORAGE","loadSignedInUsersFromStorage","GET_SIGNEDIN_USERS_FROM_STORAGE","getSignedInUsersFromStorage","SAVE_USER_TO_STORAGE","saveUserToStorage","loggedInUser","loginActions","_loginActions","autoSignInActions","_autoSignInActions","signedInUsersStorageActions","_signedInUsersStorageActions","LOAD_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE","loadPersonalVerseOfTheDayFromStorage","date","GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE","getPersonalVerseOfTheDayFromStorage","SAVE_PERSONAL_VERSEOFTHEDAY_TO_STORAGE","savePersonalVerseOfTheDayToStorage","verseId","GET_VERSEOFTHEDAY","getVerseOfTheDay","GENERATE_VERSEOFTHEDAY","generateVerseOfTheDay","LOAD_VERSEOFTHEDAY_LIST_FROM_STORAGE","loadVerseOfTheDayListFromStorage","GET_VERSEOFTHEDAY_LIST_FROM_STORAGE","getVerseOfTheDayListFromStorage","SAVE_VERSEOFTHEDAY_LIST_TO_STORAGE","saveVerseOfTheDayListToStorage","GET_LASTUPDATED_VERSEOFTHEDAY_LIST_SETTING_FROM_STORAGE","getLastUpdatedVerseOfTheDayListSettingFromStorage","LOAD_VERSEOFTHEDAY_LIST_FROM_API","loadVerseOfTheDayListFromApi","LOAD_UPDATED_VERSEOFTHEDAY_LIST_FROM_API","loadUpdatedVerseOfTheDayListFromApi","modifiedSinceDateTimeUtc","GET_VERSEOFTHEDAY_LIST_FROM_API","getVerseOfTheDayListFromApi","verseOfTheDayActions","_verseOfTheDayActions","verseOfTheDayListStorageActions","_verseOfTheDayListStorageActions","verseOfTheDayListFromApiActions","_verseOfTheDayListFromApiActions","getCurrentDateTimeLtISO","currentDateTime","Date","dd","String","getDate","padStart","mm","getMonth","getFullYear","getHours","getMinutes","getSeconds","Math","round","getMilliseconds","getCurrentDateTimeLt","yyyy","hh","minutes","ss","ms","getCurrentDate","currentDate","getFormattedDate","prototype","addDays","days","this","valueOf","setDate","getDateCaptionFromDateTime","dateTime","formattedCurrentDate","yesterday","formattedYesterday","formattedDate","toLocaleDateString","weekday","day","month","year","getTimeCaptionFromDateTime","toLocaleTimeString","hour","minute","GET_APP_VERSION_FROM_API","ActionTypes","GET_APP_VERSION_FROM_STORAGE","FORCE_APP_RELOAD","CHANGE_PASSWORD","changePasswordActions","FORGOT_PASSWORD","forgotPasswordActions","REGISTER","registerActions","UPDATE_USER_INFO","updateUserInfoActions","initialState","isProcessing","RegisterActionTypes","UpdateUserInfoActionTypes","SIGNOUT_USER","SignOutActionTypes","isLoading","isLoadingSuccessful","canDisplayDownloadBibleOptions","items","GET_ENTITY_LIST","rootReducer","combineReducers","systemSettings","merge","settings","latestAppVersion","shouldDisplayNewVersionAvailable","shouldForceReload","webAppVersion","verseOfTheDay","vodVerses","map","vodVrs","verse","isVerseOfTheDay","verseText","verseOfTheDayText","vodVerseSchemaArray","Entity","idAttribute","normalizedvod","isHighlighted","highlightedText","normalizedVerse","result","highlightedVerses","highlightedVrs","highlightedVerseSchemaArray","normalized","appStatus","loggedinUser","encodedToken","bibleBook","bookChapter","chapterVerses","verseVersionId","bibleHistory","alertMessage","alertType","alertText","ALERT_TYPE_SUCCESS","errorMessage","ALERT_TYPE_ERROR","logMessages","msg","loadSystemSettings","APIURL","BASEURL","LOGLEVEL","fetchEntity","entity","apiFn","param1","param2","param3","put","call","settle","fn","_len","args","Array","_key","status","value","err","reason","endpointUrl","apiUrl","setApiUrl","apiServiceUrl","tokenResourceUrl","usersResourceUrl","entitiesResourceFilter","keys","key","join","getUrlFilter","entitiesResourceUrl","allVersesResourceUrl","fetchAppVersion","bind","appVersionFromApiActions","getAppVersionFromApi","appVersionResourceUrl","getApiUrl","loadAppVersionFromApi","select","validateAppVersion","process","appVersionFromStorageActions","loadAppVersionFromStorage","watchLoadAppVersionFromApi","take","VALIDATE_APP_VERSION","fork","indexedDb","Dexie","version","stores","verseOfTheDayMasterList","personalVerseOfTheDay","verseOfTheDayList","userSettings","SETTINGS_LASTUPDATED_ENTITYLIST_NAME","SETTINGS_LASTUPLOADED_ENTITYLIST_NAME","saveAppVersionToLocalStore","appVersion","settingName","settingValue","fetchAppVersionFromStorage","deleteAppVersionFromStorage","delete","saveAppVersionToLocalStoreDb","_saveAppVersionToLocalStoreDb","fetchAppVersionFromStorageService","_fetchAppVersionFromStorageService","getAppVersionFromStorage","loadAppVersion","watchLoadAppVersionFromStorage","LOAD_APP_VERSION_FROM_STORAGE","updateLocalStorage","watchUpdateAppVersionLocalStorage","UPDATE_APP_VERSION_STORAGE","watchAppVersionRequests","all","isEmpty","watchLoadBibleVersions","bibleVersionSchema","bibleVersionApiSchemaArray","bibleVersionStorageSchemaArray","saveViewFiltersBibleVersionToLocalStore","filterName","fetchViewFiltersBibleVersionFromStorage","saveViewFiltersBibleVersionToLocalStoreDb","_saveViewFiltersBibleVersionToLocalStoreDb","fetchViewFiltersBibleVersionFromStorageService","_fetchViewFiltersBibleVersionFromStorageService","addBibleVersionsToLocalStore","bibleVersionsList","bulkPut","lastKey","fetchBibleVersionsFromStorage","fetchBibleVersionsFromStorageService","toArray","watchLoadBibleVersionsFromStorage","fetchBibleVersions","bibleVersionsResourceUrl","watchLoadBibleVersionsFromApi","getBibleVersion","getBibleBook","getBookChapter","watchSetBibleVersion","bibleVersionsActions","bibleBooksActions","chaptersActions","watchUpdateBibleVersionsLocalStorage","watchUpdateViewFiltersBibleVersionLocalStorage","loadViewFiltersBibleVersion","watchLoadViewFiltersBibleVersionFromStorage","watchBibleVersionsRequests","getBibleBooksList","getBooksByBibleVersion","setFirstBook","bibleBooksList","firstBookId","watchLoadBibleBooks","appVersionActions","bibleBookSchema","bibleBookApiSchemaArray","bibleBookStorageSchemaArray","saveViewFiltersBibleBookToLocalStore","fetchViewFiltersBibleBookFromStorage","saveViewFiltersBibleBookToLocalStoreDb","_saveViewFiltersBibleBookToLocalStoreDb","fetchViewFiltersBibleBookFromStorageService","_fetchViewFiltersBibleBookFromStorageService","addBooksToLocalStore","booksList","fetchBooksFromStorage","where","equals","loadBooksFromLocalStore","watchLoadBibleBooksFromStorage","bibleBooksResourceUrl","fetchBibleBooks","fetchBibleBooksApi","resourceUrl","watchLoadBibleBooksFromApi","watchUpdateBibleBooksLocalStorage","getChaptersForCurrentBookId","getChaptersByBookId","setFirstChapter","chaptersForCurrentBookId","firstChapterId","watchSetBibleBook","watchUpdateViewFiltersBibleBookLocalStorage","loadViewFiltersBibleBook","watchLoadViewFiltersBibleBookFromStorage","chapterSchema","chapterApiSchemaArray","chapterStorageSchemaArray","chaptersResourceUrl","fetchBibleChapters","fetchBibleChaptersApi","loadChapters","watchLoadBibleChaptersFromApi","watchLoadChapters","addChaptersToLocalStore","chaptersList","loadChaptersByBookIdAndLangIdFromLocalStore","and","chapter","fetchChaptersByBookIdAndLangIdFromStorage","saveViewFiltersBookChapterToLocalStore","fetchViewFiltersBookChapterFromStorage","addChaptersToLocalStoreDb","_addChaptersToLocalStoreDb","fetchChaptersByBookIdAndLangIdFromStorageService","_fetchChaptersByBookIdAndLangIdFromStorageService","saveViewFiltersBookChapterToLocalStoreDb","_saveViewFiltersBookChapterToLocalStoreDb","fetchViewFiltersBookChapterFromStorageService","_fetchViewFiltersBookChapterFromStorageService","fetchBookChaptersFromStorage","watchLoadChaptersFromStorage","fetchBookChapters","fetchChaptersApi","watchLoadChaptersFromApi","watchUpdateChaptersLocalStorage","watchSetChapter","getBooks","getBibleBooks","watchRequestNextChapter","bibleBooks","lastChapterForCurrentBookId","nextChapterId","booksActions","watchRequestPrevChapter","firstChapterForCurrentBookId","prevChapterId","prevBibleBookId","watchUpdateViewFiltersBookChapterLocalStorage","loadViewFiltersBookChapter","watchLoadViewFiltersBookChapterFromStorage","watchChaptersRequests","verseOfTheDaySchema","verseOfTheDayApiSchemaArray","verseOfTheDayStorageSchemaArray","fetchVerseOfTheDayList","fetchUpdatedVerseOfTheDayList","fetchUpdatedVerseOfTheDayListApi","updatedVersesResourceUrl","modifiedDateTimeUtc","entitiesNames","storageTableName","apiTableName","filterByVersionId","shouldNormalizeApiResponse","apiSchemaArray","addApiData","getApiDataToAdd","addToStoragePayload","getLoadedEntities","getEntityListFilterForApi","userId","lastUpdatedDateTimeUtc","getEntityListFromApiResponse","apiResponse","data","newFields","selectedText","uncVerseText","sortByField","sortDirection","isGetEntitiesUserAuthenticationRequired","getUnsynchedEntitiesFilter","lastUploadedDateTimeLtISO","readDateTimeLt","operand","historyData","entityByName","apiEntityResourceName","apiResourceName","fetchAddEntityToStorage","table","fetchEntityListFromStorage","loadEntityListFromLocalStore","above","reverse","fetchLastUpdatedEntityListSettingFromStorage","loadLastUpdatedEntityListSettingFromLocalStore","lastUpdatedSetting","loadLastAddedEntityFromLocalStore","lastAddedEntity","getTableForEntityName","orderBy","last","fetchLastAddedEntityFromStorage","entityItem","fetchEntitySettingFromStorage","loadEntitySettingFromLocalStore","entitySetting","lastUpdatedUtcTime","fetchEntityListFromStorageService","_fetchEntityListFromStorageService","fetchLastUpdatedEntityListSettingFromStorageService","_fetchLastUpdatedEntityListSettingFromStorageService","fetchLastAddedEntityFromStorageService","_fetchLastAddedEntityFromStorageService","fetchEntitySettingFromStorageService","_fetchEntitySettingFromStorageService","saveEntityListToStorageService","_saveEntityListToStorageService","getLoggedinUser","loadVerses","shouldAddChapterToBibleHistory","addToBibleHistory","watchLoadChapterVerses","getEntityList","Routes","addVersesToLocalStore","versesList","loadVersesByChapterIdAndVersionIdFromLocalStore","verseSchema","verseApiSchemaArray","verseStorageSchemaArray","fetchVersesByChapterIdAndVersionIdFromStorage","addVersesToLocalStoreDb","_addVersesToLocalStoreDb","fetchVersesByChapterIdAndVersionIdFromStorageService","_fetchVersesByChapterIdAndVersionIdFromStorageService","fetchChapterVersesFromStorage","watchLoadChapterVersesFromStorage","chapterVersesResourceUrl","fetchChapterVerses","fetchChapterVersesApi","watchLoadChapterVersesFromApi","watchUpdateVersesLocalStorage","bookVersesResourceUrl","fetchBookVerses","fetchBookVersesApi","watchLoadBookVersesFromApi","versesResourceUrl","fetchBibleVerses","fetchBibleVersesApi","watchLoadBibleVersesFromApi","watchVersesRequests","watchBibleBooksRequests","fetchVerseOfTheDayListFromStorage","loadVerseOfTheDayListFromLocalStore","fetchPersonalVerseOfTheDayByDateFromStorage","loadPersonalVerseOfTheDayFromLocalStore","loadVerseOfTheDay","fetchLastUpdatedVerseOfTheDayListSettingFromStorage","saveVerseOfTheDayListToStorageService","_saveVerseOfTheDayListToStorageService","fetchPersonalVerseOfTheDayByDateFromStorageService","_fetchPersonalVerseOfTheDayByDateFromStorageService","savePersonalVerseOfTheDayToStorageService","_savePersonalVerseOfTheDayToStorageService","fetchPersonalVerseOfTheDayFromStorage","loadPersonalVerseOfTheDay","watchLoadPersonalVerseOfTheDayFromStorage","watchGetVerseOfTheDay","updateStorage","watchSaveVerseOfTheDayListToStorage","getVerseOfTheDayList","min","max","ceil","floor","random","watchGenerateVerseOfTheDay","watchSavePersonalVerseOfTheDayToStorage","watchSetVerseOfTheDayVersion","pathname","ROUTES_VERSEOFTHEDAY_PATHNAME","watchVerseOfTheDayRequests","fetchSubmitLoginRequest","watchSubmitLoginRequest","history","back","deleteUserFromStorage","deleteUserFromStorageService","_deleteUserFromStorageService","fetchSubmitAutoSignInRequest","loginDateTimeLt","JSON","stringify","currentDateTimeLt","watchSubmitAutoSignInRequest","signedInUsers","signedInUser","displayName","fetchSignedInUsersFromStorage","saveUserToStorageService","_saveUserToStorageService","fetchSignedInUsersFromStorageService","_fetchSignedInUsersFromStorageService","watchLoadSignedInUsersFromStorage","watchSaveUserToStorage","fetchSubmitRegisterRequest","register","newUser","submitRegisterRequest","watchSubmitRegisterRequest","SUBMIT_REGISTER_REQUEST","fetchSubmitUpdateUserInfoRequest","updateUserInfo","fetchSubmitUpdateUserInfoRequestApi","modifiedUser","updateUserInfoUrl","submitUpdateUserInfoRequest","watchSubmitUpdateUserInfoRequest","SUBMIT_UPDATE_USER_INFO_REQUEST","watchSignOutRequest","signOutActions","fetchSubmitChangePasswordRequest","changePassword","submitChangePassword","watchSubmitChangePasswordRequest","SUBMIT_CHANGE_PASSWORD_REQUEST","setAlertMessage","fetchSubmitForgotPasswordRequest","forgotPassword","submitForgotPassword","watchSubmitForgotPasswordRequest","SUBMIT_FORGOT_PASSWORD_REQUEST","watchAuthRequests","fetchSubmitAddEntityRequestApi","fetchSubmitAddEntityToStorageRequest","submitAddEntityStorageRequest","watchAddEntity","entityData","watchGetEntityList","loadEntities","watchLoadEntityListFromStorage","getVersionId","loadLastUpdatedEntityListSetting","watchLoadLastUpdatedEntityListSettingFromStorage","substr","loadUpdatedEntityListFromApi","fetchEntityList","fetchEntityListApi","fetchNormalizedEntityList","fetchNormalizedEntityListApi","entitySchemaArray","saveEntitiesToStorage","watchLoadEntityListFromApi","watchSaveEntityListToStorage","fetchLastUploadedEntityListSettingFromStorage","fetchSubmitAddEntityApiRequest","loadLastUploadedEntityListSetting","submitAddEntityApiRequest","watchSyncEntityListToTheCloud","lastUploadedDateTimeLt","getEntityListAction","addEntityToApiRequests","saveSettingsItemToStorage","watchSyncEntityListFromTheCloud","watchEntitiesRequests","loadChaptersByBookId","watchBibleHistoryListTrigger","historyList","requestedBooks","loadChaptersRequests","historyItem","includes","push","watchBibleHistoryRequests","bookChaptersActions","fetchSystemSettings","settingsSystemActions","fetchSystemSettingsRequest","watchLoadSystemSettingsRequest","root","configureStore","preloadedState","sagaMiddleware","createSagaMiddleware","store","createStore","applyMiddleware","runSaga","run","rootSaga","close","dispatch","END","primaryColor","warningColor","dangerColor","successColor","infoColor","grayColor","transition","hexToRgb","input","replace","test","first","second","toUpperCase","parseInt","boxShadow","primaryBoxShadow","defaultFont","fontFamily","fontWeight","lineHeight","drawerStyle","theme","drawerPaper","width","border","position","top","bottom","left","zIndex","breakpoints","up","height","down","display","visibility","overflowY","borderTop","textAlign","paddingRight","paddingLeft","transform","toolbar","mixins","drawerContainer","overflow","overflowScrolling","brand","padding","content","right","backgroundColor","brandLink","textTransform","fontSize","textDecoration","color","brandImage","maxHeight","marginLeft","marginRight","img","verticalAlign","background","backgroundSize","backgroundPosition","opacity","list","marginTop","paddingTop","paddingBottom","marginBottom","listStyle","item","itemLink","margin","borderRadius","itemIcon","float","itemText","whiteFont","purple","blue","green","orange","red","versionInfoItem","useStyles","makeStyles","styles","DrawerListItem","props","classes","routePathname","itemCaption","ItemIcon","React","createElement","NavLink","to","className","activeClassName","ListItem","button","classNames","Icon","ListItemText","primary","disableTypography","VerseOfTheDayIcon","SvgIcon","d","ReadingHistoryIcon","DrawerList","selectedRoute","setSelectedRoute","useState","List","MenuBookIcon","CopyrightIcon","DescriptionIcon","HomePageDrawer","useTheme","isMobileDrawerOpen","onHandleDrawerToggle","target","drawerBackground","style","backgroundImage","drawerImage","drawer","Hidden","smUp","implementation","Drawer","container","variant","anchor","direction","open","onClose","paper","ModalProps","keepMounted","onClick","xsDown","LoginHeader","Typography","RegisterHeader","UpdateUserInfoHeader","ChangePasswordHeader","BibleVersionsListButton","Component","render","selectedBibleVersionName","anchorBibleVersionEl","onHandleBibleVersionClick","onHandleBibleVersionClose","onHandleBibleVersionMenuItemClick","wrapper","Button","aria-owns","aria-haspopup","disabled","CircularProgress","size","buttonProgress","Menu","anchorEl","Boolean","MenuItem","event","langName","versionName","withStyles","alignItems","withTheme","BibleVersions","constructor","handleBibleVersionClick","setState","currentTarget","handleBibleVersionClose","handleBibleVersionMenuItemClick","componentDidMount","bibleVersionName","propTpes","PropTypes","array","isRequired","object","func","bool","withRouter","connect","mapStateToProps","ownProps","VerseOfTheDayPanelHeader","grow","number","flexGrow","VerseOfTheDayHeader","BibleBooksListButton","selectedBibleBookName","anchorBibleBookEl","onHandleBibleBookClick","onHandleBibleBookClose","onHandleBibleBookMenuItemClick","book","bookLangId","bookName","getBookByBibleVersionAndSelectedBookId","booksByBibleVersion","selectedBibleBook","getBookByBibleVersionAndBookId","getBookId","BibleBooks","handleBibleBookClick","handleBibleBookClose","handleBibleBookMenuItemClick","bibleBookName","ChaptersListButton","selectedChapterNumber","anchorChapterEl","onHandleChapterClick","onHandleChapterClose","onHandleChapterMenuItemClick","chapterLangId","chapterNumber","getChaptersByBookIdAndBibleVersion","chaptersByBookId","getChaptersByBibleVersion","bibleChapters","bibleVersionBySelectedVersionId","selectedLangId","getChapterByBibleVersionAndSelectedChapterId","chaptersByBookIdAndBibleVersion","selectedChapter","getChapterByBibleVersionAndChapterId","getChapterId","chaptersByBibleVersion","BookChapters","handleChapterClick","handleChapterClose","handleChapterMenuItemClick","BiblePanelHeader","BibleHeader","noWrap","SignInAccountMenu","signInAccountAnchorEl","onAccountMenuClose","isSignInAccountMenuOpen","getContentAnchorEl","anchorOrigin","vertical","horizontal","transformOrigin","component","Link","SignOutMenu","signOutAccountAnchorEl","onSignOutMenuClick","isSignOutAccountMenuOpen","signOutUser","signedInUserId","handleSignOutMenuClick","BibleHistoryPanelHeader","BibleHistoryHeader","appBar","menuButton","sectionDesktop","sectionMobile","loggedOut","fill","loggedIn","loggingIn","animation","from","AccountIcon","HomePageAppBar","isLoggedIn","userDisplayName","setSignInAccountAnchorEl","setSignOutAccountAnchorEl","handleAccountMenuClose","AppBar","Toolbar","IconButton","aria-label","MenuIcon","Route","path","ForgotPasswordHeader","FavoriteVersesHeader","TopicsHeader","SettingsHeader","CopyrightsHeader","ReleaseNotesHeader","edge","aria-controls","paragraph","LinearProgress","SignOutAccountMenu","variantIcon","CheckCircleIcon","warning","WarningIcon","ErrorIcon","info","InfoIcon","palette","dark","main","amber","icon","iconVariant","spacing","SnackbarContentWrapper","other","SnackbarContent","clsx","aria-describedby","CloseIcon","MessageBox","canDisplayMessageBox","onHandleClose","Snackbar","autoHideDuration","MessageBanner","bannerMessage","buttonCaption","Fragment","Paper","Grid","wrap","justify","Divider","CssBaseline","flexDirection","MainPanel","src","ChristTheSheperd","alt","align","Main","reload","Copyright","common","white","avatar","secondary","form","submit","ForgotPasswordLink","forwardRef","ref","RouterLink","innerRef","RegisterLink","LoginPanel","usernameFocused","setUsernameFocused","username","password","rememberMe","onUsernameChange","onPasswordChange","onRememberMeChange","onSubmitLoginClick","usernameInput","useEffect","focus","Container","maxWidth","Avatar","LockOutlinedIcon","onSubmit","noValidate","TextField","required","fullWidth","label","name","autoComplete","autoFocus","inputRef","onChange","FormControlLabel","control","Checkbox","checked","xs","ROUTES_FORGOTPASSWORD_PATHNAME","ROUTES_REGISTER_PATHNAME","Box","mt","setUsername","setPassword","setRememberMe","ROUTES_HOME_PATHNAME","preventDefault","btoa","EncodedCredentials","RegisterPanel","confirmPassword","firstname","lastname","email","isValidPassword","onConfirmPasswordChange","onFirstnameChange","onLastnameChange","onDisplayNameChange","onEmailChange","onSubmitRegisterClick","helperText","setConfirmPassword","setFirstname","setLastname","setDisplayName","setEmail","passwordErrorMessage","setPasswordErrorMessage","isFieldPopulated","isFilledPassword","value1","validatePassword","value2","isMatchingPasswords","isValidRequiredFields","errorMsg","match","CurrentDateTimeLt","Firstname","Lastname","DisplayName","Email","UpdateUserInfoPanel","firstnameFocused","setFirstnameFocused","onSubmitUpdateUserInfoClick","firstnameInput","compareChangedData","changedData","fieldName","currentValue","newValue","pageLoaded","setPageLoaded","getChangedData","getData","ChangePasswordPanel","passwordFocused","setPasswordFocused","onSubmitChangePasswordClick","passwordInput","submitChangePasswordRequest","initializeLoadingPage","queryParams","queryString","parse","search","dateTimeLt","ForgotPasswordPanel","onSubmitClick","submitForgotPasswordRequest","VerseOfTheDayPanel","verseNumber","fontStyle","m","verseReference","getVerseOfTheDayListState","getSelectedVerseOfTheDay","selectedVerseOfTheDay","VerseOfTheDay","handleSwipingLeft","handleSwipingRight","Swipeable","onSwipedLeft","onSwipedRight","string","FavoriteWords","text","highlight","favorite","SearchWords","VerseOfTheDayWords","styledTagsList","shouldProcessHighlightedText","trim","shouldProcessFavoriteText","shouldProcessSearchText","ProcessStylingVerse","tag","textToStyle","styleRegex","RegExp","escapeRegExp","part","i","elementStart","element","count","HighlightedWords","shouldProcessVerseOfTheDayText","StyledVerse","tagsList","AddStyledElementToTagsList","elementEnd","start","end","sort","a","b","comparison","PopulateStyledTagsList","lastStyledTagEnd","forEach","substring","j","internalElementEnd","styledTagStart","VerseBox","shouldStyleVerseOfTheDay","onHandleMenuOpenClick","onHandleMenuPointerDown","onPointerDown","AddToVerseOfTheDayListIcon","HighlightIcon","VerseMenu","menuAnchorEl","shouldDisplayAddToVerseOfTheDayListIcon","onAddEntity","onHandleMenuClose","menuOpen","menuId","menuCaption","handleAddToVerseOfTheDayList","whiteSpace","handleAddToHighlightedVerses","setAnchorEl","setSelectedText","getSelectedText","getSelection","toString","document","selection","createRange","handleMenuClose","VersesPanel","shouldDisplayDownloadBibleOptions","onHandleDownloadBookClick","downloadBookButtonCaption","Verse","getVersesByChapterId","getVersesByChapterIdAndBibleVersion","versesByChapterId","Verses","handleDownloadBookClick","handleDownloadBibleClick","onHandleDownloadBibleClick","profileName","minWidth","title","pos","cardContentArea","cardContentDescriptionArea","cardActionArea","btn","borderColor","BibleHistoryItemPanel","time","onHandleReadChapterClick","Card","CardContent","gutterBottom","handleReadChapterClick","BibleHistoryPanel","BibleHistoryItem","historyItems","FavoriteVerses","Topics","Settings","Copyrights","ReleaseNotes","Analytics","logPageView","componentDidUpdate","prevProps","pageTitle","getPageTitle","logEvent","page_path","page_title","ROUTES_LOGIN_PATHNAME","ROUTES_UPDATE_USER_INFO_PATHNAME","ROUTES_CHANGE_PASSWORD_PATHNAME","ROUTES_BIBLE_PATHNAME","ROUTES_READINGHISTORY_PATHNAME","ROUTES_FAVORITEVERSES_PATHNAME","ROUTES_TOPICS_PATHNAME","ROUTES_SETTINGS_PATHNAME","ROUTES_COPYRIGHTS_PATHNAME","ROUTES_RELEASENOTES_PATHNAME","HomePageMain","handlePwaInstall","event_category","event_label","handleOnlineEvent","indexedDB","onsuccess","transaction","objectStore","getAll","eventName","params","clear","addEventListener","matchMedia","matches","navigator","standalone","componentWillUnmount","removeEventListener","shouldDisplayAlertMessage","alertMessageText","onHandleMessageBoxClose","onHandleAppVersionUpdateClick","exact","Login","Register","UpdateUserInfo","ChangePassword","ForgotPassword","BibleHistory","mainPageStyle","mainPanel","HomePage","mobileDrawerOpen","setMobileDrawerOpen","handleDrawerToggle","Home","mobileMoreAnchorEl","handleMobileMenuClose","handleMobileMenuOpen","handleAppVersionUpdateClick","updateAppVersionStorage","forceAppReload","serviceWorker","forceSWupdate","handleMessageBoxClose","resetAlertMessage","loadSettingsRequest","App","listen","swUpdateReady","stop","NotFound","Root","Provider","Switch","isLocalhost","hostname","registerValidSW","swUrl","config","skipWaiting","getRegistration","swReg","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","initGA","Router","basename","getElementById","Cypress","URL","origin","contentType","ready","unregister","checkValidServiceWorker","RESET_ALERT_MESSAGE","SET_ALERT_MESSAGE","ADD_LOG_MESSAGE","RESET_LOG_MESSAGES","_appVersionFromStorageActions","_appVersionFromApiActions","_registerActions","_updateUserInfoActions","LOAD_SETTINGS_REQUEST","GET_SETTINGS","getSettings","filteredChapters","c","measurementId","gtag","dataLayer","saveEventToIndexedDB","onupgradeneeded","db","objectStoreNames","contains","createObjectStore","keyPath","autoIncrement","add","timestamp","now","onLine","warn","_changePasswordActions","_forgotPasswordActions","base","reduce","acc","_signOutActions","baseUrl","logLevel"],"mappings":"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","file":"static/js/main.bd21a911.chunk.js","sourcesContent":["import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BIBLE_CHAPTERS_FROM_API = 'LOAD_BIBLE_CHAPTERS_FROM_API';\r\nexport const loadBibleChaptersFromApi = (bibleVersionId) => action(LOAD_BIBLE_CHAPTERS_FROM_API, {bibleVersionId});\r\n\r\nexport const GET_BIBLE_CHAPTERS_FROM_API = createRequestTypes('GET_BIBLE_CHAPTERS_FROM_API');\r\n\r\nexport const getBibleChaptersFromApi = {\r\n request: () => action(GET_BIBLE_CHAPTERS_FROM_API.REQUEST),\r\n success: (id, response) => action(GET_BIBLE_CHAPTERS_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BIBLE_CHAPTERS_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BOOK_CHAPTERS_FROM_STORAGE = 'LOAD_BOOK_CHAPTERS_FROM_STORAGE';\r\nexport const loadBookChaptersFromStorage = (bibleVersionId, bookId) => action(LOAD_BOOK_CHAPTERS_FROM_STORAGE, {bibleVersionId, bookId});\r\n\r\nexport const GET_BOOK_CHAPTERS_FROM_STORAGE = createRequestTypes('GET_BOOK_CHAPTERS_FROM_STORAGE');\r\nexport const getBookChaptersFromStorage = {\r\n request: () => action(GET_BOOK_CHAPTERS_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_BOOK_CHAPTERS_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BOOK_CHAPTERS_FROM_STORAGE.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BOOK_CHAPTERS_FROM_API = 'LOAD_BOOK_CHAPTERS_FROM_API';\r\nexport const loadBookChaptersFromApi = (bibleVersionId, bookId) => action(LOAD_BOOK_CHAPTERS_FROM_API, {bibleVersionId, bookId});\r\n\r\nexport const GET_BOOK_CHAPTERS_FROM_API = createRequestTypes('GET_BOOK_CHAPTERS_FROM_API');\r\nexport const getBookChaptersFromApi = {\r\n request: () => action(GET_BOOK_CHAPTERS_FROM_API.REQUEST),\r\n success: (id, response) => action(GET_BOOK_CHAPTERS_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BOOK_CHAPTERS_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE = 'LOAD_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE';\r\nexport const loadViewFiltersBookChapterFromStorage = () => action(LOAD_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE);\r\n\r\nexport const GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE = createRequestTypes('GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE');\r\nexport const getViewFiltersBookChapterFromStorage = {\r\n request: () => action(GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE.FAILURE, {error})\r\n}\r\n\r\nexport const UPDATE_VIEWFILTERS_BOOKCHAPTER_STORAGE = 'UPDATE_VIEWFILTERS_BOOKCHAPTER_STORAGE';\r\nexport const updateViewFiltersBookChapterStorage = (chapterId) => action(UPDATE_VIEWFILTERS_BOOKCHAPTER_STORAGE, {chapterId});","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nimport * as _bibleChaptersFromApiActions from './bibleChaptersFromApiActions';\r\nimport * as _getBookChaptersFromStorageActions from './getBookChaptersFromStorageActions';\r\nimport * as _getBookChaptersFromApiActions from './getBookChaptersFromApiActions';\r\nimport * as _viewFiltersBookChapterFromStorageActions from './viewFiltersBookChapterFromStorageActions';\r\n\r\nexport const bibleChaptersFromApiActions = _bibleChaptersFromApiActions;\r\nexport const getBookChaptersFromStorageActions = _getBookChaptersFromStorageActions;\r\nexport const getBookChaptersFromApiActions = _getBookChaptersFromApiActions;\r\nexport const viewFiltersBookChapterFromStorageActions = _viewFiltersBookChapterFromStorageActions;\r\n\r\nconst { action } = actions;\r\n\r\nexport const LOAD_BOOK_CHAPTERS = 'LOAD_BOOK_CHAPTERS';\r\nexport const loadBookChapters = (bibleVersionId, bookId) => action(LOAD_BOOK_CHAPTERS, {bibleVersionId, bookId});\r\n\r\nexport const SET_BOOK_CHAPTER = 'SET_BOOK_CHAPTER';\r\nexport const setBookChapter = chapterId => action(SET_BOOK_CHAPTER, {chapterId});\r\n\r\nexport const REQUEST_NEXT_CHAPTER = 'REQUEST_NEXT_CHAPTER';\r\nexport const requestNextChapter = () => action(REQUEST_NEXT_CHAPTER);\r\n\r\nexport const REQUEST_PREV_CHAPTER = 'REQUEST_PREV_CHAPTER';\r\nexport const requestPrevChapter = () => action(REQUEST_PREV_CHAPTER);\r\n\r\nexport const UPDATE_CHAPTERS_STORAGE = 'UPDATE_CHAPTERS_STORAGE';\r\nexport const updateChaptersStorage = (chapters) => action(UPDATE_CHAPTERS_STORAGE, {chapters});","export const SERVICE_ENDPOINT_TYPE_STORAGE = 'STORAGE';\r\nexport const SERVICE_ENDPOINT_TYPE_API = 'API';","import * as actions from '../../../actions/actionRequestTypes';\r\nimport * as services from '../../../constants/services';\r\nimport { GET_ENTITY_LIST_ACTION_TYPE } from './entityListActions';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_ENTITY_LIST_FROM_STORAGE = entityName => `LOAD_${entityName}_LIST_FROM_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`;\r\nexport const loadEntityListFromStorage = (entityName, filter) => action(LOAD_ENTITY_LIST_FROM_STORAGE(entityName), filter);\r\n\r\nexport const GET_ENTITY_LIST_FROM_STORAGE = entityName => createRequestTypes(`${GET_ENTITY_LIST_ACTION_TYPE(entityName)}_FROM_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`);\r\nexport const getEntityListFromStorage = {\r\n request: (entityName, filter) => action(GET_ENTITY_LIST_FROM_STORAGE(entityName).REQUEST, filter),\r\n success: (entityName, response) => action(GET_ENTITY_LIST_FROM_STORAGE(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(GET_ENTITY_LIST_FROM_STORAGE(entityName).FAILURE, {error})\r\n}\r\n\r\nexport const SAVE_ENTITY_LIST_TO_STORAGE = entityName => `SAVE_${entityName}_LIST_TO_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`;\r\nexport const saveEntityListToStorage = (entityName, entityList, currentUtcTime) => action(SAVE_ENTITY_LIST_TO_STORAGE(entityName), {entityList, currentUtcTime});","import * as actions from '../../../actions/actionRequestTypes';\r\nimport * as services from '../../../constants/services';\r\nimport { GET_ENTITY_LIST_ACTION_TYPE } from './entityListActions';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE = entityName => `LOAD_${entityName}_LIST_LASTUPDATED_SETTING_FROM_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`;\r\nexport const loadEntityListLastUpdatedSettingFromStorage = (entityName, filter) => action(LOAD_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName), filter);\r\n\r\nexport const GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE = entityName => createRequestTypes(`${GET_ENTITY_LIST_ACTION_TYPE(entityName)}_LASTUPDATED_SETTING_FROM_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`);\r\nexport const getLastUpdatedEntityListSettingFromStorage = {\r\n request: (entityName, filter) => action(GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).REQUEST, filter),\r\n success: (entityName, response) => action(GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\nimport * as services from '../../../constants/services';\r\nimport { GET_ENTITY_LIST_ACTION_TYPE } from './entityListActions';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE = entityName => `LOAD_${entityName}_LIST_LASTUPLOADED_SETTING_FROM_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`;\r\nexport const loadEntityListLastUploadedSettingFromStorage = (entityName, filter) => action(LOAD_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE(entityName), filter);\r\n\r\nexport const GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE = entityName => createRequestTypes(`${GET_ENTITY_LIST_ACTION_TYPE(entityName)}_LASTUPLOADED_SETTING_FROM_${services.SERVICE_ENDPOINT_TYPE_STORAGE}`);\r\nexport const getLastUploadedEntityListSettingFromStorage = {\r\n request: (entityName, filter) => action(GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE(entityName).REQUEST, filter),\r\n success: (entityName, response) => action(GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE(entityName).FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\nimport * as services from '../../../constants/services';\r\nimport { GET_ENTITY_LIST_ACTION_TYPE } from './entityListActions';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_ENTITY_LIST_FROM_API = entityName => `LOAD_${entityName}_LIST_FROM_${services.SERVICE_ENDPOINT_TYPE_API}`;\r\nexport const loadEntityListFromApi = (entityName, filter) => action(LOAD_ENTITY_LIST_FROM_API(entityName), filter);\r\n\r\nexport const GET_ENTITY_LIST_FROM_API = entityName => createRequestTypes(`${GET_ENTITY_LIST_ACTION_TYPE(entityName)}_FROM_${services.SERVICE_ENDPOINT_TYPE_API}`);\r\nexport const getEntityListFromApi = {\r\n request: (entityName, filter) => action(GET_ENTITY_LIST_FROM_API(entityName).REQUEST, filter),\r\n success: (entityName, response) => action(GET_ENTITY_LIST_FROM_API(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(GET_ENTITY_LIST_FROM_API(entityName).FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const GET_LASTADDED_ENTITY_ACTION_TYPE = entityName => `GET_LASTADDED_${entityName}`;\r\nexport const getLastAddedEntity = (entityName) => {\r\n return action(GET_LASTADDED_ENTITY_ACTION_TYPE(entityName))\r\n};\r\n\r\nexport const GET_LASTADDED_ENTITY_FROM_STORAGE = entityName => createRequestTypes(`${GET_LASTADDED_ENTITY_ACTION_TYPE(entityName)}_FROM_STORAGE`);\r\nexport const getLastAddedEntityFromStorage = {\r\n request: (entityName) => action(GET_LASTADDED_ENTITY_FROM_STORAGE(entityName).REQUEST),\r\n success: (entityName, response) => action(GET_LASTADDED_ENTITY_FROM_STORAGE(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(GET_LASTADDED_ENTITY_FROM_STORAGE(entityName).FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\n\r\nimport * as _addEntityActions from './addEntityActions';\r\nimport * as _entityListActions from './entityListActions';\r\nimport * as _entityListStorageActions from './entityListStorageActions';\r\nimport * as _lastUpdatedEntityListSettingStorageActions from './lastUpdatedEntityListSettingStorageActions';\r\nimport * as _lastUploadedEntityListSettingStorageActions from './lastUploadedEntityListSettingStorageActions';\r\nimport * as _entityListApiActions from './entityListApiActions';\r\nimport * as _getEntityActions from './getEntityActions';\r\n\r\nexport const addEntityActions = _addEntityActions;\r\nexport const entityListActions = _entityListActions;\r\nexport const entityListStorageActions = _entityListStorageActions;\r\nexport const lastUpdatedEntityListSettingStorageActions = _lastUpdatedEntityListSettingStorageActions;\r\nexport const lastUploadedEntityListSettingStorageActions = _lastUploadedEntityListSettingStorageActions;\r\nexport const entityListApiActions = _entityListApiActions;\r\nexport const getEntityActions = _getEntityActions;\r\n\r\nconst { action } = actions;\r\n\r\nexport const SYNC_ENTITY_LIST_TO_THECLOUD = entityName => `SYNC_${entityName}_LIST_TO_THECLOUD`;\r\nexport const syncEntityListToTheCloud = entityName => action(SYNC_ENTITY_LIST_TO_THECLOUD(entityName));\r\n\r\nexport const SYNC_ENTITY_LIST_FROM_THECLOUD = entityName => `SYNC_${entityName}_LIST_FROM_THECLOUD`;\r\nexport const syncEntityListFromTheCloud = (entityName, filter) => action(SYNC_ENTITY_LIST_FROM_THECLOUD(entityName), filter);","export const activeRoute = routeName => {\r\n return window.location.href.indexOf(routeName) > -1 ? true : false;\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const ADD_ENTITY_ACTION_TYPE = entityName => `ADD_${entityName}`;\r\nexport const addEntity = (entityName, payload = {}) => {\r\n const obj = {}\r\n return action(ADD_ENTITY_ACTION_TYPE(entityName), {...obj, payload})\r\n};\r\n\r\nexport const ADD_ENTITY_STORAGE = entityName => createRequestTypes(`${ADD_ENTITY_ACTION_TYPE(entityName)}_STORAGE`);\r\nexport const addEntityStorage = {\r\n request: (entityName, payload) => action(ADD_ENTITY_STORAGE(entityName).REQUEST, payload),\r\n success: (entityName, response) => action(ADD_ENTITY_STORAGE(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(ADD_ENTITY_STORAGE(entityName).FAILURE, {error})\r\n}\r\n\r\nexport const ADD_ENTITY_API = entityName => createRequestTypes(`${ADD_ENTITY_ACTION_TYPE(entityName)}_API`);\r\nexport const addEntityApi = {\r\n request: (entityName, payload) => action(ADD_ENTITY_API(entityName).REQUEST, payload),\r\n success: (entityName, response) => action(ADD_ENTITY_API(entityName).SUCCESS, {response}),\r\n failure: (entityName, error) => action(ADD_ENTITY_API(entityName).FAILURE, {error})\r\n}","import { createSelector } from 'reselect';\r\nimport _ from 'lodash';\r\n\r\nconst getVersions = state => _.values(state.entities.bibleVersions);\r\n\r\nexport const getBibleVersions = createSelector(\r\n [getVersions],\r\n (bibleVersions) => {\r\n return bibleVersions;\r\n }\r\n)","import { createSelector } from 'reselect';\r\nimport { getBibleVersions } from './getBibleVersionsSelector';\r\n\r\nconst getSelectedBibleVersion = state => state.bibleVersion;\r\n\r\nexport const getBibleVersionBySelectedVersionId = createSelector(\r\n [getBibleVersions, getSelectedBibleVersion],\r\n (bibleVersions, selectedBibleVersion) => {\r\n const filteredBibleVersions = bibleVersions.filter(bibleVersion => bibleVersion.versionId === selectedBibleVersion.id);\r\n return filteredBibleVersions[0];\r\n }\r\n)","import { normalize } from 'normalizr';\r\nimport { camelizeKeys } from 'humps';\r\nimport 'isomorphic-fetch';\r\n//import configSettings from '../configSettings.json';\r\n\r\n// Extracts the next page URL from Github API response.\r\nfunction getNextPageUrl(response) {\r\n const link = response.headers.get('link')\r\n if (!link) {\r\n return null\r\n }\r\n\r\n const nextLink = link.split(',').find(s => s.indexOf('rel=\"next\"') > -1)\r\n if (!nextLink) {\r\n return null\r\n }\r\n\r\n return nextLink.split(';')[0].slice(1, -1)\r\n}\r\n\r\nexport const API_GET = 'GET'\r\nexport const API_POST = 'POST'\r\nexport const API_PUT = 'PUT'\r\nexport const API_DELETE = 'DELETE'\r\n\r\nlet currentAuthToken = null;\r\n\r\nexport const setToken = token => { currentAuthToken = token; }\r\n\r\nconst fetchHeaderAutorizationOption = () => {\r\n let fetchHeaderAuthorization = {}\r\n\r\n if (currentAuthToken) {\r\n fetchHeaderAuthorization = { 'Authorization': `bearer ${currentAuthToken}` }\r\n }\r\n\r\n return fetchHeaderAuthorization\r\n}\r\n\r\nconst fetchHeaderOption = () => {\r\n let fetchHeader = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n\r\n fetchHeader = Object.assign(fetchHeader, fetchHeaderAutorizationOption())\r\n\r\n let headerOption = {\r\n headers: fetchHeader\r\n }\r\n\r\n return headerOption\r\n}\r\n\r\nconst fetchOptions = (fetchMethod, fetchBody) => {\r\n let options = {\r\n method: fetchMethod\r\n }\r\n\r\n options = Object.assign(options, fetchHeaderOption())\r\n\r\n if ((fetchMethod !== API_GET) && (fetchMethod !== API_DELETE)) {\r\n let bodyOption = {body: fetchBody}\r\n options = Object.assign(options, bodyOption)\r\n }\r\n\r\n return options\r\n}\r\n\r\nexport const callDeleteApi = (endpoint, fetchBody = '') => {\r\n const fetchMethod = API_DELETE;\r\n\r\n return fetch(endpoint, fetchOptions(fetchMethod, fetchBody))\r\n .then(response => {\r\n if (response.ok) {\r\n return {}\r\n } else {\r\n }\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n )\r\n .catch(error => console.log(`Error on fetch Delete - error= ${error}`))\r\n} \r\n\r\n// Fetches an API response and normalizes the result JSON according to schema.\r\n// This makes every API response have the same shape, regardless of how nested it was.\r\nexport const callApiNormalizedResponse = (endpoint, schema, fetchMethod = API_GET, fetchBody = '') => {\r\n return fetch(endpoint, fetchOptions(fetchMethod, fetchBody))\r\n .then(response => \r\n response.json().then(json => ({ json, response }))\r\n ).then(({ json, response }) => {\r\n if (!response.ok) {\r\n return Promise.reject(json)\r\n }\r\n\r\n const camelizedJson = camelizeKeys(json);\r\n const nextPageUrl = getNextPageUrl(response); \r\n\r\n const normalized = normalize(camelizedJson, schema);\r\n return {...normalized, nextPageUrl} \r\n })\r\n .then(\r\n response => ({response}),\r\n error => ({error: error.message})\r\n )\r\n}\r\n\r\nconst checkStatus = (response) => {\r\n if (response.ok) {\r\n return response;\r\n } else {\r\n const error = new Error(response.statusText);\r\n error.response = response;\r\n throw error;\r\n }\r\n}\r\n\r\nconst parseJSON = (response) => {\r\n return response.json();\r\n}\r\n\r\nexport const callApi = (endpoint, fetchMethod = API_GET, fetchBody = '') => {\r\n return fetch(endpoint, fetchOptions(fetchMethod, fetchBody))\r\n // .then(checkStatus)\r\n // .then(parseJSON)\r\n // .then(json => ({ json, response }))\r\n .then(response => \r\n response.json().then(json => ({ json, response }))\r\n )\r\n .then(({ json, response }) => {\r\n if (!response.ok) {\r\n const error = new Error(response.statusText);\r\n error.message = json;\r\n return Promise.reject(error)\r\n //return Promise.reject(json)\r\n }\r\n\r\n const camelizedJson = camelizeKeys(json); \r\n return {...camelizedJson} \r\n }) \r\n .then(\r\n response => ({response}),\r\n error => ({error: error.message})\r\n ) \r\n .catch(error => console.log(`Error on fetch - error= ${error}`))\r\n}\r\n\r\nexport const callDuplicateApi = (endpoint, fetchMethod = API_GET, fetchBody = '') => {\r\n return fetch(endpoint, fetchOptions(fetchMethod, fetchBody))\r\n .then(checkStatus)\r\n .then(parseJSON)\r\n .then(response => \r\n response.json().then(json => ({ json, response }))\r\n ).then(({ json, response }) => {\r\n if (!response.ok) {\r\n return Promise.reject(json)\r\n }\r\n\r\n const camelizedJson = camelizeKeys(json); \r\n return {...camelizedJson} \r\n })\r\n .catch(error => {\r\n console.log(`request failed ${error}`);\r\n }) \r\n .then(\r\n response => ({response}),\r\n error => ({error: error.message})\r\n ) \r\n}","export const VERSEOFTHEDAY = 'VerseOfTheDay';\r\nexport const FAVORITEVERSES = 'FavoriteVerses';\r\nexport const HIGHLIGHTEDVERSES = 'HighlightedVerses';\r\nexport const BIBLEHISTORY = 'BibleHistory';","import * as LoginActionTypes from '../features/auth/Login/actions';\r\n\r\nconst { LOGIN } = LoginActionTypes.loginActions;\r\nconst { AUTOSIGNIN } = LoginActionTypes.autoSignInActions;\r\n\r\nexport const viewFilters = (state = {userLoggingIn: false }, action) => {\r\n const { type } = action\r\n\r\n switch (type) {\r\n case LOGIN.REQUEST:\r\n case AUTOSIGNIN.REQUEST:\r\n return {\r\n ...state,\r\n userLoggingIn: true\r\n }\r\n case LOGIN.SUCCESS:\r\n case LOGIN.FAILURE:\r\n case AUTOSIGNIN.SUCCESS:\r\n case AUTOSIGNIN.FAILURE:\r\n return {\r\n ...state,\r\n userLoggingIn: false\r\n } \r\n default:\r\n return state;\r\n }\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const GET_CHAPTER_VERSES = createRequestTypes('GET_CHAPTER_VERSES');\r\n\r\nexport const getChapterVerses = {\r\n request: (bibleVersionId, bookId, chapterId) => action(GET_CHAPTER_VERSES.REQUEST, {bibleVersionId, bookId, chapterId}),\r\n success: (id, response) => action(GET_CHAPTER_VERSES.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_CHAPTER_VERSES.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_CHAPTER_VERSES_FROM_STORAGE = 'LOAD_CHAPTER_VERSES_FROM_STORAGE';\r\nexport const loadChapterVersesFromStorage = (bibleVersionId, bookId, chapterId) => action(LOAD_CHAPTER_VERSES_FROM_STORAGE, {bibleVersionId, bookId, chapterId});\r\n\r\nexport const GET_CHAPTER_VERSES_FROM_STORAGE = createRequestTypes('GET_CHAPTER_VERSES_FROM_STORAGE');\r\n\r\nexport const getChapterVersesFromStorage = {\r\n request: () => action(GET_CHAPTER_VERSES_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_CHAPTER_VERSES_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_CHAPTER_VERSES_FROM_STORAGE.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_CHAPTER_VERSES_FROM_API = 'LOAD_CHAPTER_VERSES_FROM_API';\r\nexport const loadChapterVersesFromApi = (bibleVersionId, bookId, chapterId) => action(LOAD_CHAPTER_VERSES_FROM_API, {bibleVersionId, bookId, chapterId});\r\n\r\nexport const GET_CHAPTER_VERSES_FROM_API = createRequestTypes('GET_CHAPTER_VERSES_FROM_API');\r\n\r\nexport const getChapterVersesFromApi = {\r\n request: () => action(GET_CHAPTER_VERSES_FROM_API.REQUEST),\r\n success: (id, response) => action(GET_CHAPTER_VERSES_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_CHAPTER_VERSES_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BOOK_VERSES_FROM_API = 'LOAD_BOOK_VERSES_FROM_API';\r\nexport const loadBookVersesFromApi = (bibleVersionId, bookId) => action(LOAD_BOOK_VERSES_FROM_API, {bibleVersionId, bookId});\r\n\r\nexport const GET_BOOK_VERSES_FROM_API = createRequestTypes('GET_BOOK_VERSES_FROM_API');\r\n\r\nexport const getBookVersesFromApi = {\r\n request: (bibleVersionId, bookId) => action(GET_BOOK_VERSES_FROM_API.REQUEST, {bibleVersionId, bookId}),\r\n success: (id, response) => action(GET_BOOK_VERSES_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BOOK_VERSES_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BIBLE_VERSES_FROM_API = 'LOAD_BIBLE_VERSES_FROM_API';\r\nexport const loadBibleVersesFromApi = (bibleVersionId) => action(LOAD_BIBLE_VERSES_FROM_API, {bibleVersionId});\r\n\r\nexport const GET_BIBLE_VERSES_FROM_API = createRequestTypes('GET_BIBLE_VERSES_FROM_API');\r\n\r\nexport const getBibleVersesFromApi = {\r\n request: (bibleVersionId) => action(GET_BIBLE_VERSES_FROM_API.REQUEST, {bibleVersionId}),\r\n success: (id, response) => action(GET_BIBLE_VERSES_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BIBLE_VERSES_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nimport * as _chapterVersesActions from './chapterVersesActions';\r\nimport * as _getChapterVersesFromStorageActions from './getChapterVersesFromStorageActions';\r\nimport * as _getChapterVersesFromApiActions from './getChapterVersesFromApiActions';\r\nimport * as _bookVersesFromApiActions from './bookVersesFromApiActions';\r\nimport * as _bibleVersesFromApiActions from './bibleVersesFromApiActions';\r\n\r\nexport const chapterVersesActions = _chapterVersesActions;\r\nexport const getChapterVersesFromStorageActions = _getChapterVersesFromStorageActions;\r\nexport const getChapterVersesFromApiActions = _getChapterVersesFromApiActions;\r\nexport const bookVersesFromApiActions = _bookVersesFromApiActions;\r\nexport const bibleVersesFromApiActions = _bibleVersesFromApiActions;\r\n\r\nconst { action } = actions;\r\n\r\nexport const LOAD_CHAPTER_VERSES = 'LOAD_CHAPTER_VERSES';\r\nexport const loadChapterVerses = (bibleVersionId, bookId, chapterId) => action(LOAD_CHAPTER_VERSES, {bibleVersionId, bookId, chapterId});\r\n\r\nexport const UPDATE_VERSES_STORAGE = 'UPDATE_VERSES_STORAGE';\r\nexport const updateVersesStorage = (verses) => action(UPDATE_VERSES_STORAGE, {verses});\r\n\r\nexport const DISPLAY_DOWNLOAD_BIBLE_OPTIONS = 'DISPLAY_DOWNLOAD_BIBLE_OPTIONS';\r\nexport const displayDownloadBibleOptions = (bibleVersionId, bookId) => action(DISPLAY_DOWNLOAD_BIBLE_OPTIONS, {bibleVersionId, bookId});","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BIBLE_BOOKS_FROM_STORAGE = 'LOAD_BIBLE_BOOKS_FROM_STORAGE';\r\nexport const loadBibleBooksFromStorage = (bibleVersionId) => action(LOAD_BIBLE_BOOKS_FROM_STORAGE, {bibleVersionId});\r\n\r\nexport const GET_BIBLE_BOOKS_FROM_STORAGE = createRequestTypes('GET_BIBLE_BOOKS_FROM_STORAGE');\r\nexport const getBibleBooksFromStorage = {\r\n request: () => action(GET_BIBLE_BOOKS_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_BIBLE_BOOKS_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BIBLE_BOOKS_FROM_STORAGE.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BIBLE_BOOKS_FROM_API = 'LOAD_BIBLE_BOOKS_FROM_API';\r\nexport const loadBibleBooksFromApi = (bibleVersionId) => action(LOAD_BIBLE_BOOKS_FROM_API, {bibleVersionId});\r\n\r\nexport const GET_BIBLE_BOOKS_FROM_API = createRequestTypes('GET_BIBLE_BOOKS_FROM_API');\r\nexport const getBibleBooksFromApi = {\r\n request: () => action(GET_BIBLE_BOOKS_FROM_API.REQUEST),\r\n success: (id, response) => action(GET_BIBLE_BOOKS_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BIBLE_BOOKS_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE = 'LOAD_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE';\r\nexport const loadViewFiltersBibleBookFromStorage = () => action(LOAD_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE);\r\n\r\nexport const GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE = createRequestTypes('GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE');\r\nexport const getViewFiltersBibleBookFromStorage = {\r\n request: () => action(GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE.FAILURE, {error})\r\n}\r\n\r\nexport const UPDATE_VIEWFILTERS_BIBLEBOOK_STORAGE = 'UPDATE_VIEWFILTERS_BIBLEBOOK_STORAGE';\r\nexport const updateViewFiltersBibleBookStorage = (bookId) => action(UPDATE_VIEWFILTERS_BIBLEBOOK_STORAGE, {bookId});","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nimport * as _getBooksFromStorageActions from './getBooksFromStorageActions';\r\nimport * as _getBooksFromApiActions from './getBooksFromApiActions';\r\nimport * as _viewFiltersBibleBookFromStorageActions from './viewFiltersBibleBookFromStorageActions';\r\n\r\nexport const getBooksFromStorageActions = _getBooksFromStorageActions;\r\nexport const getBooksFromApiActions = _getBooksFromApiActions;\r\nexport const viewFiltersBibleBookFromStorageActions = _viewFiltersBibleBookFromStorageActions;\r\n\r\nconst { action } = actions;\r\n\r\nexport const LOAD_BIBLE_BOOKS = 'LOAD_BIBLE_BOOKS';\r\nexport const loadBibleBooks = (bibleVersionId) => action(LOAD_BIBLE_BOOKS, {bibleVersionId});\r\n\r\nexport const SET_BIBLE_BOOK = 'SET_BIBLE_BOOK';\r\nexport const setBibleBook = (bookId, skipSettingFirstChapter) => action(SET_BIBLE_BOOK, {bookId, skipSettingFirstChapter});\r\n\r\nexport const UPDATE_BOOKS_STORAGE = 'UPDATE_BOOKS_STORAGE';\r\nexport const updateBooksStorage = (books) => action(UPDATE_BOOKS_STORAGE, {books});","if (process.env.NODE_ENV === 'production') { \n module.exports = require('./Root.prod')\n} else { \n module.exports = require('./Root.dev')\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BIBLE_VERSIONS_FROM_STORAGE = 'LOAD_BIBLE_VERSIONS_FROM_STORAGE';\r\nexport const loadBibleVersionsFromStorage = () => action(LOAD_BIBLE_VERSIONS_FROM_STORAGE);\r\n\r\nexport const GET_BIBLE_VERSIONS_FROM_STORAGE = createRequestTypes('GET_BIBLE_VERSIONS_FROM_STORAGE');\r\nexport const getBibleVersionsFromStorage = {\r\n request: () => action(GET_BIBLE_VERSIONS_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_BIBLE_VERSIONS_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BIBLE_VERSIONS_FROM_STORAGE.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_BIBLE_VERSIONS_FROM_API = 'LOAD_BIBLE_VERSIONS_FROM_API';\r\nexport const loadBibleVersionsFromApi = () => action(LOAD_BIBLE_VERSIONS_FROM_API);\r\n\r\nexport const GET_BIBLE_VERSIONS_FROM_API = createRequestTypes('GET_BIBLE_VERSIONS_FROM_API');\r\nexport const getBibleVersionsFromApi = {\r\n request: () => action(GET_BIBLE_VERSIONS_FROM_API.REQUEST),\r\n success: (id, response) => action(GET_BIBLE_VERSIONS_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_BIBLE_VERSIONS_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE = 'LOAD_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE';\r\nexport const loadViewFiltersBibleVersionFromStorage = () => action(LOAD_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE);\r\n\r\nexport const GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE = createRequestTypes('GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE');\r\nexport const getViewFiltersBibleVersionFromStorage = {\r\n request: () => action(GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nimport * as _getBibleVersionsFromStorageActions from './getBibleVersionsFromStorageActions';\r\nimport * as _getBibleVersionsFromApiActions from './getBibleVersionsFromApiActions';\r\nimport * as _getViewFiltersBibleVersionFromStorageActions from './getViewFiltersBibleVersionFromStorageActions';\r\n\r\nexport const getBibleVersionsFromStorageActions = _getBibleVersionsFromStorageActions;\r\nexport const getBibleVersionsFromApiActions = _getBibleVersionsFromApiActions;\r\nexport const getViewFiltersBibleVersionFromStorageActions = _getViewFiltersBibleVersionFromStorageActions;\r\n\r\nconst { action } = actions;\r\n\r\nexport const LOAD_BIBLE_VERSIONS = 'LOAD_BIBLE_VERSIONS';\r\nexport const loadBibleVersions = () => action(LOAD_BIBLE_VERSIONS);\r\n\r\nexport const SET_BIBLE_VERSION = 'SET_BIBLE_VERSION';\r\nexport const setBibleVersion = (versionId, langId) => action(SET_BIBLE_VERSION, {versionId, langId});\r\n\r\nexport const UPDATE_BIBLE_VERSIONS_STORAGE = 'UPDATE_BIBLE_VERSIONS_STORAGE';\r\nexport const updateBibleVersionsStorage = (bibleVersions) => action(UPDATE_BIBLE_VERSIONS_STORAGE, {bibleVersions});\r\n\r\nexport const UPDATE_VIEWFILTERS_BIBLEVERSION_STORAGE = 'UPDATE_VIEWFILTERS_BIBLEVERSION_STORAGE';\r\nexport const updateViewFiltersBibleVersionStorage = (bibleVersionId, langId) => action(UPDATE_VIEWFILTERS_BIBLEVERSION_STORAGE, {bibleVersionId, langId});","module.exports = __webpack_public_path__ + \"static/media/river.1f72f782.jpg\";","if (process.env.NODE_ENV === 'production') {\n module.exports = require('./configureStore.prod')\n} else {\n module.exports = require('./configureStore.dev')\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const SUBMIT_LOGIN_REQUEST = 'SUBMIT_LOGIN_REQUEST';\r\nexport const submitLoginRequest = (encodedCredentials, shouldRememberUser) => action(SUBMIT_LOGIN_REQUEST, {encodedCredentials, shouldRememberUser});\r\n\r\nexport const LOGIN = createRequestTypes('LOGIN');\r\nexport const login = {\r\n request: () => action(LOGIN.REQUEST),\r\n success: (id, response) => action(LOGIN.SUCCESS, {response}),\r\n failure: (id, error) => action(LOGIN.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const SUBMIT_AUTOSIGNIN_REQUEST = 'SUBMIT_AUTOSIGNIN_REQUEST';\r\nexport const submitAutoSignInRequest = () => action(SUBMIT_AUTOSIGNIN_REQUEST);\r\n\r\nexport const AUTOSIGNIN = createRequestTypes('AUTOSIGNIN');\r\nexport const autoSignIn = {\r\n request: () => action(AUTOSIGNIN.REQUEST),\r\n success: (id, response) => action(AUTOSIGNIN.SUCCESS, {response}),\r\n failure: (id, error) => action(AUTOSIGNIN.FAILURE, {error})\r\n}","import * as actions from '../../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_SIGNEDIN_USERS_FROM_STORAGE = 'LOAD_SIGNEDIN_USERS_FROM_STORAGE';\r\nexport const loadSignedInUsersFromStorage = () => action(LOAD_SIGNEDIN_USERS_FROM_STORAGE);\r\n\r\nexport const GET_SIGNEDIN_USERS_FROM_STORAGE = createRequestTypes('GET_SIGNEDIN_USERS_FROM_STORAGE');\r\nexport const getSignedInUsersFromStorage = {\r\n request: () => action(GET_SIGNEDIN_USERS_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_SIGNEDIN_USERS_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_SIGNEDIN_USERS_FROM_STORAGE.FAILURE, {error})\r\n}\r\n\r\nexport const SAVE_USER_TO_STORAGE = 'SAVE_USER_TO_STORAGE';\r\nexport const saveUserToStorage = (loggedInUser) => action(SAVE_USER_TO_STORAGE, {loggedInUser});","import * as _loginActions from './loginActions';\r\nimport * as _autoSignInActions from './autoSignInActions';\r\nimport * as _signedInUsersStorageActions from './signedInUsersStorageActions';\r\n\r\nexport const loginActions = _loginActions;\r\nexport const autoSignInActions = _autoSignInActions;\r\nexport const signedInUsersStorageActions = _signedInUsersStorageActions;","import * as actions from '../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE = 'LOAD_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE';\r\nexport const loadPersonalVerseOfTheDayFromStorage = (bibleVersionId, date) => action(LOAD_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE, {bibleVersionId, date});\r\n\r\nexport const GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE = createRequestTypes('GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE');\r\n\r\nexport const getPersonalVerseOfTheDayFromStorage = {\r\n request: () => action(GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE, {error})\r\n}\r\n\r\nexport const SAVE_PERSONAL_VERSEOFTHEDAY_TO_STORAGE = 'SAVE_PERSONAL_VERSEOFTHEDAY_TO_STORAGE';\r\nexport const savePersonalVerseOfTheDayToStorage = (date, verseId) => action(SAVE_PERSONAL_VERSEOFTHEDAY_TO_STORAGE, {date, verseId});\r\n\r\nexport const GET_VERSEOFTHEDAY = 'GET_VERSEOFTHEDAY';\r\nexport const getVerseOfTheDay = (bibleVersionId) => action(GET_VERSEOFTHEDAY, {bibleVersionId});\r\n\r\nexport const GENERATE_VERSEOFTHEDAY = createRequestTypes('GENERATE_VERSEOFTHEDAY');\r\nexport const generateVerseOfTheDay = {\r\n request: (date) => action(GENERATE_VERSEOFTHEDAY.REQUEST, {date}),\r\n success: (id, response) => action(GENERATE_VERSEOFTHEDAY.SUCCESS, {response}),\r\n failure: (id, error) => action(GENERATE_VERSEOFTHEDAY.FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\nimport { VERSEOFTHEDAY } from '../../../common/entities/constants';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const GET_VERSEOFTHEDAY_LIST = createRequestTypes(`GET_${VERSEOFTHEDAY}_LIST`);\r\n\r\nexport const getVerseOfTheDayList = {\r\n request: (bibleVersionId) => action(GET_VERSEOFTHEDAY_LIST.REQUEST, {bibleVersionId}),\r\n success: (id, response) => action(GET_VERSEOFTHEDAY_LIST.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VERSEOFTHEDAY_LIST.FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\nimport { VERSEOFTHEDAY } from '../../../common/entities/constants';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_VERSEOFTHEDAY_LIST_FROM_STORAGE = `LOAD_${VERSEOFTHEDAY}_LIST_FROM_STORAGE`;\r\nexport const loadVerseOfTheDayListFromStorage = (bibleVersionId) => action(LOAD_VERSEOFTHEDAY_LIST_FROM_STORAGE, {bibleVersionId});\r\n\r\nexport const GET_VERSEOFTHEDAY_LIST_FROM_STORAGE = createRequestTypes(`GET_${VERSEOFTHEDAY}_LIST_FROM_STORAGE`);\r\nexport const getVerseOfTheDayListFromStorage = {\r\n request: () => action(GET_VERSEOFTHEDAY_LIST_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_VERSEOFTHEDAY_LIST_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VERSEOFTHEDAY_LIST_FROM_STORAGE.FAILURE, {error})\r\n}\r\n\r\nexport const SAVE_VERSEOFTHEDAY_LIST_TO_STORAGE = `SAVE_${VERSEOFTHEDAY}_LIST_TO_STORAGE`;\r\nexport const saveVerseOfTheDayListToStorage = (verses, currentUtcTime) => action(SAVE_VERSEOFTHEDAY_LIST_TO_STORAGE, {verses, currentUtcTime});\r\n\r\nexport const GET_LASTUPDATED_VERSEOFTHEDAY_LIST_SETTING_FROM_STORAGE = createRequestTypes(`GET_LASTUPDATED_${VERSEOFTHEDAY}_LIST_SETTING_FROM_STORAGE`);\r\n\r\nexport const getLastUpdatedVerseOfTheDayListSettingFromStorage = {\r\n request: () => action(GET_LASTUPDATED_VERSEOFTHEDAY_LIST_SETTING_FROM_STORAGE.REQUEST),\r\n success: (id, response) => action(GET_LASTUPDATED_VERSEOFTHEDAY_LIST_SETTING_FROM_STORAGE.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_LASTUPDATED_VERSEOFTHEDAY_LIST_SETTING_FROM_STORAGE.FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\nimport { VERSEOFTHEDAY } from '../../../common/entities/constants';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_VERSEOFTHEDAY_LIST_FROM_API = `LOAD_${VERSEOFTHEDAY}_LIST_FROM_API`;\r\nexport const loadVerseOfTheDayListFromApi = (bibleVersionId) => action(LOAD_VERSEOFTHEDAY_LIST_FROM_API, {bibleVersionId});\r\n\r\nexport const LOAD_UPDATED_VERSEOFTHEDAY_LIST_FROM_API = `LOAD_UPDATED_${VERSEOFTHEDAY}_LIST_FROM_API`;\r\nexport const loadUpdatedVerseOfTheDayListFromApi = (bibleVersionId, modifiedSinceDateTimeUtc) => action(LOAD_UPDATED_VERSEOFTHEDAY_LIST_FROM_API, {bibleVersionId, modifiedSinceDateTimeUtc});\r\n\r\nexport const GET_VERSEOFTHEDAY_LIST_FROM_API = createRequestTypes(`GET_${VERSEOFTHEDAY}_LIST_FROM_API`);\r\n\r\nexport const getVerseOfTheDayListFromApi = {\r\n request: () => action(GET_VERSEOFTHEDAY_LIST_FROM_API.REQUEST),\r\n success: (id, response) => action(GET_VERSEOFTHEDAY_LIST_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VERSEOFTHEDAY_LIST_FROM_API.FAILURE, {error})\r\n}","import * as actions from '../../../actions/actionRequestTypes';\r\n\r\nconst { createRequestTypes, action } = actions;\r\n\r\nexport const LOAD_VERSEOFTHEDAY_FULL_VERSES_FROM_API = 'LOAD_VERSEOFTHEDAY_FULL_VERSES_FROM_API';\r\nexport const loadVerseOfTheDayFullVersesFromApi = (bibleVersionId) => action(LOAD_VERSEOFTHEDAY_FULL_VERSES_FROM_API, {bibleVersionId});\r\n\r\nexport const GET_VERSEOFTHEDAY_FULL_VERSES_FROM_API = createRequestTypes('GET_VERSEOFTHEDAY_FULL_VERSES_FROM_API');\r\n\r\nexport const getVerseOfTheDayFullVersesFromApi = {\r\n request: (bibleVersionId) => action(GET_VERSEOFTHEDAY_FULL_VERSES_FROM_API.REQUEST, {bibleVersionId}),\r\n success: (id, response) => action(GET_VERSEOFTHEDAY_FULL_VERSES_FROM_API.SUCCESS, {response}),\r\n failure: (id, error) => action(GET_VERSEOFTHEDAY_FULL_VERSES_FROM_API.FAILURE, {error})\r\n}","import * as _verseOfTheDayActions from './verseOfTheDayActions';\r\nimport * as _verseOfTheDayListActions from './verseOfTheDayListActions';\r\nimport * as _verseOfTheDayListStorageActions from './verseOfTheDayListStorageActions';\r\nimport * as _verseOfTheDayListFromApiActions from './verseOfTheDayListFromApiActions';\r\nimport * as _verseOfTheDayFullVersesFromApiActions from './verseOfTheDayFullVersesFromApiActions';\r\n\r\nexport const verseOfTheDayActions = _verseOfTheDayActions;\r\n//export const verseOfTheDayListActions = _verseOfTheDayListActions;\r\nexport const verseOfTheDayListStorageActions = _verseOfTheDayListStorageActions;\r\nexport const verseOfTheDayListFromApiActions = _verseOfTheDayListFromApiActions;\r\n//export const verseOfTheDayFullVersesFromApiActions = _verseOfTheDayFullVersesFromApiActions;","export const getCurrentDateTimeLtISO = () => {\r\n const currentDateTime = new Date();\r\n const dd = String(currentDateTime.getDate()).padStart(2, '0');\r\n const mm = String(currentDateTime.getMonth() + 1).padStart(2, '0'); //January is 0!\r\n const yyyy = currentDateTime.getFullYear();\r\n const hh = String(currentDateTime.getHours()).padStart(2, '0');\r\n const minutes = String(currentDateTime.getMinutes()).padStart(2, '0');\r\n const ss = String(currentDateTime.getSeconds()).padStart(2, '0');\r\n const ms = String(Math.round(currentDateTime.getMilliseconds()/100)*100).padStart(3, '0');\r\n\r\n return `${yyyy}-${mm}-${dd}T${hh}:${minutes}:${ss}.${ms}`;\r\n}\r\n\r\nexport const getCurrentDateTimeLt = () => {\r\n const currentDateTime = new Date();\r\n const dd = String(currentDateTime.getDate()).padStart(2, '0');\r\n const mm = String(currentDateTime.getMonth() + 1).padStart(2, '0'); //January is 0!\r\n const yyyy = currentDateTime.getFullYear();\r\n const hh = String(currentDateTime.getHours()).padStart(2, '0');\r\n const minutes = String(currentDateTime.getMinutes()).padStart(2, '0');\r\n const ss = String(currentDateTime.getSeconds()).padStart(2, '0');\r\n const ms = String(currentDateTime.getMilliseconds()).padStart(3, '0');\r\n\r\n return new Date(`${yyyy}-${mm}-${dd}T${hh}:${minutes}:${ss}.${ms}Z`);\r\n}\r\n\r\nexport const getCurrentDate = () => {\r\n let currentDate = new Date(); \r\n return getFormattedDate(currentDate);\r\n}\r\n\r\nconst getFormattedDate = date => {\r\n let dd = String(date.getDate()).padStart(2, '0');\r\n let mm = String(date.getMonth() + 1).padStart(2, '0'); //January is 0!\r\n let yyyy = date.getFullYear(); \r\n\r\n return `${yyyy}-${mm}-${dd}`;\r\n}\r\n\r\nDate.prototype.addDays = function (days) {\r\n let date = new Date(this.valueOf());\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n}\r\n\r\nexport const getDateCaptionFromDateTime = (dateTime) => {\r\n let currentDate = new Date();\r\n let formattedCurrentDate = getFormattedDate(currentDate);\r\n let yesterday = currentDate.addDays(-1);\r\n let formattedYesterday = getFormattedDate(yesterday);\r\n\r\n let date = new Date(dateTime);\r\n let formattedDate = getFormattedDate(date);\r\n \r\n // Should format as: Saturday, October 15, 2020\r\n return formattedDate === formattedCurrentDate \r\n ? 'Today' \r\n : formattedDate === formattedYesterday\r\n ? 'Yesterday' \r\n : date.toLocaleDateString(undefined, {\r\n weekday: 'long',\r\n day : 'numeric',\r\n month : 'long',\r\n year : 'numeric'\r\n });\r\n}\r\n\r\nexport const getTimeCaptionFromDateTime = (dateTime) => {\r\n let date = new Date(dateTime);\r\n return date.toLocaleTimeString(undefined, {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n });\r\n}\r\n\r\n","import * as ActionTypes from './actions';\r\n\r\nconst { GET_APP_VERSION_FROM_API } = ActionTypes.appVersionFromApiActions;\r\nconst { GET_APP_VERSION_FROM_STORAGE } = ActionTypes.appVersionFromStorageActions;\r\nconst { FORCE_APP_RELOAD } = ActionTypes;\r\n\r\nexport const settings = (state = {latestAppVersion: '', shouldDisplayNewVersionAvailable: false, shouldForceReload: false}, action) => { \r\n const { type } = action\r\n \r\n if (type === GET_APP_VERSION_FROM_API.SUCCESS) {\r\n return {\r\n ...state,\r\n latestAppVersion: action.response.webAppVersion\r\n }\r\n } else if (type === GET_APP_VERSION_FROM_STORAGE.SUCCESS) {\r\n return {\r\n ...state,\r\n shouldDisplayNewVersionAvailable: false\r\n }\r\n } else if (type === GET_APP_VERSION_FROM_STORAGE.FAILURE) {\r\n return {\r\n ...state,\r\n shouldDisplayNewVersionAvailable: true\r\n }\r\n } else if (type === FORCE_APP_RELOAD) {\r\n return {\r\n ...state,\r\n shouldForceReload: true\r\n }\r\n }\r\n\r\n return state\r\n}","import { changePasswordActions } from '../auth/ChangePassword/actions';\r\nimport { forgotPasswordActions } from '../auth/ForgotPassword/actions';\r\nimport { loginActions } from '../auth/Login/actions';\r\nimport { registerActions } from '../auth/Register/actions';\r\nimport { updateUserInfoActions } from '../auth/UpdateUserInfo/actions';\r\n\r\nconst { CHANGE_PASSWORD } = changePasswordActions;\r\nconst { FORGOT_PASSWORD } = forgotPasswordActions;\r\nconst { LOGIN } = loginActions;\r\nconst { REGISTER } = registerActions;\r\nconst { UPDATE_USER_INFO } = updateUserInfoActions;\r\n\r\nconst initialState = {isProcessing: false};\r\nexport const appStatus = (state = initialState, action) => {\r\n const { type } = action;\r\n\r\n switch(type) {\r\n case LOGIN.REQUEST:\r\n case REGISTER.REQUEST:\r\n case UPDATE_USER_INFO.REQUEST:\r\n case CHANGE_PASSWORD.REQUEST:\r\n case FORGOT_PASSWORD.REQUEST:\r\n return {\r\n ...state,\r\n isProcessing: true\r\n }\r\n case LOGIN.SUCCESS:\r\n case LOGIN.FAILURE:\r\n case REGISTER.SUCCESS:\r\n case REGISTER.FAILURE:\r\n case UPDATE_USER_INFO.SUCCESS:\r\n case UPDATE_USER_INFO.FAILURE:\r\n case CHANGE_PASSWORD.SUCCESS:\r\n case CHANGE_PASSWORD.FAILURE:\r\n case FORGOT_PASSWORD.SUCCESS:\r\n case FORGOT_PASSWORD.FAILURE:\r\n return {\r\n ...state,\r\n isProcessing: false\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import * as LoginActionTypes from './Login/actions';\r\nimport * as RegisterActionTypes from './Register/actions';\r\nimport * as UpdateUserInfoActionTypes from './UpdateUserInfo/actions';\r\nimport * as SignOutActionTypes from './SignOut/actions';\r\nimport { setToken } from '../../services/api';\r\n\r\nconst { LOGIN } = LoginActionTypes.loginActions;\r\nconst { AUTOSIGNIN } = LoginActionTypes.autoSignInActions;\r\nconst { REGISTER } = RegisterActionTypes.registerActions;\r\nconst { UPDATE_USER_INFO } = UpdateUserInfoActionTypes.updateUserInfoActions;\r\nconst { SIGNOUT_USER } = SignOutActionTypes.signOutActions;\r\n\r\nexport const loggedinUser = (state = null, action) => { \r\n const { type } = action\r\n\r\n switch (type) {\r\n case LOGIN.SUCCESS:\r\n case REGISTER.SUCCESS:\r\n case UPDATE_USER_INFO.SUCCESS:\r\n case AUTOSIGNIN.SUCCESS:\r\n setToken(action.response.encodedToken);\r\n return { ...action.response };\r\n case SIGNOUT_USER:\r\n setToken(null);\r\n return null;\r\n default:\r\n return state;\r\n }\r\n}","export const DEFAULT_LANGID = 2;\r\nexport const DEFAULT_VERSIONID = 3;","import * as ActionTypes from './actions';\r\nimport { DEFAULT_VERSIONID, DEFAULT_LANGID } from './constants';\r\n\r\nconst { GET_BIBLE_VERSIONS_FROM_STORAGE } = ActionTypes.getBibleVersionsFromStorageActions;\r\nconst { GET_BIBLE_VERSIONS_FROM_API } = ActionTypes.getBibleVersionsFromApiActions;\r\nconst { GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE } = ActionTypes.getViewFiltersBibleVersionFromStorageActions;\r\n\r\nexport const bibleVersion = (state = {id: DEFAULT_VERSIONID, langId: DEFAULT_LANGID, isLoading: false, isLoadingSuccessful: false}, action) => { \r\n const { type } = action\r\n\r\n if (type === ActionTypes.SET_BIBLE_VERSION) {\r\n return {\r\n ...state,\r\n id: action.versionId,\r\n langId: action.langId\r\n }\r\n } else if (type === GET_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE.SUCCESS) {\r\n return {\r\n ...state,\r\n id: action.response.bibleVersion.versionId,\r\n langId: action.response.bibleVersion.langId\r\n }\r\n } else if ((type === GET_BIBLE_VERSIONS_FROM_STORAGE.REQUEST) || (type === GET_BIBLE_VERSIONS_FROM_API.REQUEST)) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n } else if ((type === GET_BIBLE_VERSIONS_FROM_STORAGE.SUCCESS) || (type === GET_BIBLE_VERSIONS_FROM_API.SUCCESS)) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: true\r\n }\r\n } else if ((type === GET_BIBLE_VERSIONS_FROM_STORAGE.FAILURE) || (type === GET_BIBLE_VERSIONS_FROM_API.FAILURE)) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: false\r\n }\r\n }\r\n\r\n return state\r\n}","import * as ActionTypes from './actions';\r\n\r\nconst { GET_BIBLE_BOOKS_FROM_STORAGE } = ActionTypes.getBooksFromStorageActions;\r\nconst { GET_BIBLE_BOOKS_FROM_API } = ActionTypes.getBooksFromApiActions;\r\nconst { GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE } = ActionTypes.viewFiltersBibleBookFromStorageActions;\r\n\r\nexport const bibleBook = (state = {id: 0, isLoading: false, isLoadingSuccessful: false}, action) => { \r\n const { type, bookId } = action\r\n \r\n if (type === ActionTypes.SET_BIBLE_BOOK) {\r\n return {\r\n ...state,\r\n id: bookId\r\n }\r\n } else if (type === GET_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE.SUCCESS) {\r\n return {\r\n ...state,\r\n id: action.response.bibleBook.bookId\r\n }\r\n } else if ((type === GET_BIBLE_BOOKS_FROM_STORAGE.REQUEST) || (type === GET_BIBLE_BOOKS_FROM_API.REQUEST)) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n } else if ((type === GET_BIBLE_BOOKS_FROM_STORAGE.SUCCESS) || (type === GET_BIBLE_BOOKS_FROM_API.SUCCESS)) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: true\r\n }\r\n } else if ((type === GET_BIBLE_BOOKS_FROM_STORAGE.FAILURE) || (type === GET_BIBLE_BOOKS_FROM_API.FAILURE)) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: false\r\n }\r\n }\r\n\r\n return state\r\n}","import * as ActionTypes from './actions';\r\n\r\nconst { GET_BOOK_CHAPTERS_FROM_STORAGE } = ActionTypes.getBookChaptersFromStorageActions;\r\nconst { GET_BOOK_CHAPTERS_FROM_API } = ActionTypes.getBookChaptersFromApiActions;\r\nconst { GET_BIBLE_CHAPTERS_FROM_API } = ActionTypes.bibleChaptersFromApiActions\r\nconst { GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE } = ActionTypes.viewFiltersBookChapterFromStorageActions;\r\n\r\nexport const bookChapter = (state = {id: 0, isLoading: false, isLoadingSuccessful: false}, action) => { \r\n const { type, chapterId } = action\r\n\r\n if (type === ActionTypes.SET_BOOK_CHAPTER) {\r\n return {\r\n ...state,\r\n id: chapterId\r\n }\r\n } else if (type === GET_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE.SUCCESS) {\r\n return {\r\n ...state,\r\n id: action.response.bookChapter.chapterId\r\n }\r\n } else if ((type === GET_BOOK_CHAPTERS_FROM_STORAGE.REQUEST) || (type === GET_BOOK_CHAPTERS_FROM_API.REQUEST) || (type === GET_BIBLE_CHAPTERS_FROM_API.REQUEST)) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n } else if ((type === GET_BOOK_CHAPTERS_FROM_STORAGE.SUCCESS) || (type === GET_BOOK_CHAPTERS_FROM_API.SUCCESS) || (type === GET_BIBLE_CHAPTERS_FROM_API.SUCCESS)) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: true\r\n }\r\n } else if ((type === GET_BOOK_CHAPTERS_FROM_STORAGE.FAILURE) || (type === GET_BOOK_CHAPTERS_FROM_API.FAILURE) || (type === GET_BIBLE_CHAPTERS_FROM_API.FAILURE)) {\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: false\r\n }\r\n }\r\n\r\n return state\r\n}","import * as ActionTypes from './actions';\r\n\r\nconst { GET_CHAPTER_VERSES_FROM_STORAGE } = ActionTypes.getChapterVersesFromStorageActions;\r\nconst { GET_CHAPTER_VERSES_FROM_API } = ActionTypes.getChapterVersesFromApiActions;\r\nconst { LOAD_BOOK_VERSES_FROM_API } = ActionTypes.bookVersesFromApiActions;\r\nconst { LOAD_BIBLE_VERSES_FROM_API } = ActionTypes.bibleVersesFromApiActions;\r\nconst { DISPLAY_DOWNLOAD_BIBLE_OPTIONS } = ActionTypes;\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n isLoadingSuccessful: false,\r\n canDisplayDownloadBibleOptions: false\r\n}\r\n\r\nexport const chapterVerses = (state = initialState, action) => {\r\n const { type } = action\r\n\r\n switch (type) {\r\n case DISPLAY_DOWNLOAD_BIBLE_OPTIONS:\r\n return {\r\n ...state,\r\n canDisplayDownloadBibleOptions: true\r\n }\r\n case LOAD_BOOK_VERSES_FROM_API:\r\n case LOAD_BIBLE_VERSES_FROM_API:\r\n return {\r\n ...state,\r\n canDisplayDownloadBibleOptions: false\r\n }\r\n case GET_CHAPTER_VERSES_FROM_STORAGE.REQUEST:\r\n case GET_CHAPTER_VERSES_FROM_API.REQUEST:\r\n return {\r\n ...state,\r\n isLoading: true,\r\n canDisplayDownloadBibleOptions: false\r\n }\r\n case GET_CHAPTER_VERSES_FROM_STORAGE.SUCCESS:\r\n case GET_CHAPTER_VERSES_FROM_API.SUCCESS:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: true\r\n }\r\n case GET_CHAPTER_VERSES_FROM_STORAGE.FAILURE:\r\n case GET_CHAPTER_VERSES_FROM_API.FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: false\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import * as ActionTypes from './actions';\r\n\r\nconst { GET_VERSEOFTHEDAY, GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE, GENERATE_VERSEOFTHEDAY } = ActionTypes.verseOfTheDayActions;\r\n\r\nexport const verseOfTheDay = (state = {verseVersionId: 0, date: '', isLoading: false, isLoadingSuccessful: false}, action) => { \r\n const { type } = action\r\n\r\n switch (type) {\r\n case GET_VERSEOFTHEDAY:\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n case GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.SUCCESS:\r\n case GENERATE_VERSEOFTHEDAY.SUCCESS:\r\n return {\r\n ...state,\r\n verseVersionId: `${action.response.verseOfTheDay.versionId}-${action.response.verseOfTheDay.verseId}`,\r\n date: action.response.date,\r\n isLoading: false,\r\n isLoadingSuccessful: true\r\n }\r\n case GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE:\r\n case GENERATE_VERSEOFTHEDAY.FAILURE:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n isLoadingSuccessful: false\r\n }\r\n default:\r\n return state;\r\n }\r\n}","import { GET_ENTITY_LIST } from \"../../common/entities/actions/entityListActions\";\r\nimport { BIBLEHISTORY } from '../../common/entities/constants';\r\n\r\n\r\nconst initialState = {isLoading: false, isLoadingSuccessful: false, items: {}};\r\nexport const bibleHistory = (state = initialState, action) => {\r\n const { type } = action;\r\n\r\n switch (type) {\r\n case GET_ENTITY_LIST(BIBLEHISTORY).SUCCESS:\r\n if (action.response && action.response.length > 0)\r\n return {\r\n ...state,\r\n items: action.response\r\n }\r\n else\r\n return state;\r\n default:\r\n return state;\r\n }\r\n}","import { schema, normalize } from 'normalizr';\r\nimport merge from 'lodash/merge';\r\nimport _ from 'lodash';\r\nimport * as ActionTypes from '../actions';\r\nimport { bookVersesFromApiActions } from '../features/Bible/Verses/actions';\r\nimport { addEntityActions, entityListActions } from '../common/entities/actions';\r\nimport { HIGHLIGHTEDVERSES } from '../common/entities/constants';\r\nimport { combineReducers } from 'redux';\r\nimport { systemSettings } from '../features/Settings/System/reducer';\r\nimport { settings } from '../features/Version/reducer';\r\nimport { appStatus } from '../features/Home/reducer';\r\nimport { loggedinUser } from '../features/auth/reducer';\r\nimport { bibleVersion } from '../features/Bible/Versions/reducer';\r\nimport { bibleBook } from '../features/Bible/Books/reducer';\r\nimport { bookChapter } from '../features/Bible/Chapters/reducer';\r\nimport { chapterVerses } from '../features/Bible/Verses/reducer';\r\nimport { verseOfTheDay } from '../features/VerseOfTheDay/reducer';\r\nimport { bibleHistory } from '../features/BibleHistory/reducer';\r\nimport { ALERT_TYPE_SUCCESS, ALERT_TYPE_ERROR } from '../constants';\r\nimport { viewFilters } from './viewFilters';\r\n\r\nconst { ADD_ENTITY_STORAGE } = addEntityActions;\r\nconst { GET_ENTITY_LIST } = entityListActions;\r\n\r\n// Updates an entity cache in response to any action with response.entities.\r\nconst entities= (state = { bibleVersions:{}, books: {}, chapters: {}, verses: {}, verseOfTheDay: {} }, action) => {\r\n if (action.response && action.response.entities) {\r\n if (action.response.entities.verseOfTheDay) {\r\n const verseOfTheDayEntities = _.values(action.response.entities.verseOfTheDay);\r\n let vodVerses = verseOfTheDayEntities.map( vodVrs => {\r\n let verse = {verseId: vodVrs.verseId, versionId: vodVrs.versionId, isVerseOfTheDay: true};\r\n if (vodVrs.verseText) {\r\n verse = {...verse, verseOfTheDayText: vodVrs.verseText};\r\n }\r\n\r\n return verse;\r\n });\r\n\r\n const vodVerseSchema = new schema.Entity('verses', {}, {idAttribute: 'verseId'});\r\n const vodVerseSchemaArray = [ vodVerseSchema ];\r\n let normalizedvod = normalize(vodVerses, vodVerseSchemaArray);\r\n normalizedvod = {...normalizedvod}; \r\n state = merge({}, state, normalizedvod.entities);\r\n\r\n return {\r\n ...state,\r\n verseOfTheDay: action.response.entities.verseOfTheDay\r\n }\r\n }\r\n else {\r\n return merge({}, state, action.response.entities);\r\n } \r\n }\r\n\r\n const { type, response } = action; \r\n\r\n switch (type) {\r\n case ADD_ENTITY_STORAGE(HIGHLIGHTEDVERSES).SUCCESS: \r\n let verse = {verseId: response.verseId, versionId: response.versionId, isHighlighted: true};\r\n if (response.highlightedText) {\r\n verse = {...verse, highlightedText: response.highlightedText}; \r\n }\r\n \r\n let normalizedVerse = {[verse.verseId]: verse}\r\n const { verses } = state; \r\n const result = merge(verses, normalizedVerse)\r\n \r\n return {\r\n ...state,\r\n verses: result\r\n }\r\n case GET_ENTITY_LIST(HIGHLIGHTEDVERSES).SUCCESS:\r\n if (response && response.length > 0) {\r\n let highlightedVerses = response.map(highlightedVrs => {\r\n let verse = { verseId: highlightedVrs.verseId, versionId: highlightedVrs.versionId, isHighlighted: true };\r\n if (highlightedVrs.highlightedText) {\r\n verse = { ...verse, highlightedText: highlightedVrs.highlightedText };\r\n }\r\n\r\n return verse;\r\n });\r\n\r\n const highlightedVerseSchema = new schema.Entity('verses', {}, { idAttribute: 'verseId' });\r\n const highlightedVerseSchemaArray = [highlightedVerseSchema];\r\n let normalized = normalize(highlightedVerses, highlightedVerseSchemaArray);\r\n normalized = { ...normalized };\r\n return merge({}, state, normalized.entities);\r\n } else return state;\r\n \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst alertMessage = (state = null, action) => { \r\n const { type, error } = action\r\n\r\n switch (type) {\r\n case ActionTypes.RESET_ALERT_MESSAGE:\r\n return null;\r\n case ActionTypes.SET_ALERT_MESSAGE:\r\n return {\r\n ...state,\r\n alertType: action.alertType,\r\n alertText: action.alertText\r\n }\r\n case bookVersesFromApiActions.GET_BOOK_VERSES_FROM_API.SUCCESS:\r\n return {\r\n ...state,\r\n alertType: ALERT_TYPE_SUCCESS,\r\n alertText: 'Verses saved to local storage successfully!'\r\n } \r\n default:\r\n if (error) {\r\n let errorMessage = 'Error encountered while processing request';\r\n if (typeof error === 'string') {\r\n errorMessage = error;\r\n }\r\n return {\r\n ...state,\r\n alertType: ALERT_TYPE_ERROR,\r\n alertText: errorMessage\r\n }\r\n }\r\n\r\n return state;\r\n }\r\n}\r\n\r\nconst logMessages = (state = [], action) => {\r\n const { type } = action;\r\n\r\n switch (type) {\r\n case ActionTypes.RESET_LOG_MESSAGES:\r\n return [];\r\n case ActionTypes.ADD_LOG_MESSAGE:\r\n return [\r\n ...state, action.msg \r\n ]; \r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nconst rootReducer = combineReducers({\r\n systemSettings,\r\n settings,\r\n entities,\r\n appStatus,\r\n loggedinUser,\r\n viewFilters,\r\n bibleVersion,\r\n bibleBook,\r\n bookChapter,\r\n chapterVerses,\r\n verseOfTheDay,\r\n bibleHistory, \r\n alertMessage,\r\n logMessages,\r\n})\r\n\r\nexport default rootReducer","import * as ActionTypes from './actions';\r\nimport _ from 'lodash';\r\n\r\nexport const systemSettings = (state = null, action) => { \r\n const { type, response } = action;\r\n\r\n if (type === ActionTypes.GET_SETTINGS.SUCCESS) {\r\n return _.merge({}, state, response);\r\n }\r\n\r\n return state\r\n}","import { APIURL, BASEURL, LOGLEVEL } from './helper';\r\n\r\nexport const fetchSystemSettingsRequest = () => loadSystemSettings();\r\n\r\nconst loadSystemSettings = () => {\r\n return ({response: {\r\n 'apiUrl': `${APIURL}`,\r\n 'baseUrl': `${BASEURL}`,\r\n 'logLevel': `${LOGLEVEL}`\r\n }})\r\n\r\n // return fetch(`${BASEURL}config.json`)\r\n // .then((response) => response.json())\r\n // .then(\r\n // response => ({ response }),\r\n // error => ({ error: error.message || 'Something bad happened' })\r\n // )\r\n}","import { put, call } from 'redux-saga/effects';\r\n\r\n// resuable fetch Subroutine\r\n// entity : aircraftList | repo | starred | stargazers\r\n// apiFn : api.fetchAircraftList | api.fetchRepo | ...\r\n// id : login | fullName\r\n// url : next page url. If not provided will use pass it to apiFn\r\nexport const fetchEntity = function* (entity, apiFn, id, param1, param2, param3) {\r\n yield put (entity.request(id));\r\n const {response, error} = yield call(apiFn, id, param1, param2, param3);\r\n if (response) {\r\n yield put(entity.success(id, response));\r\n }\r\n else {\r\n yield put(entity.failure(id, error));\r\n }\r\n}\r\n\r\nexport const settle = (fn, ...args) =>\r\n call(function* () {\r\n try {\r\n return { status: \"fulfilled\", value: yield call(fn, ...args) };\r\n } catch (err) {\r\n return { status: \"rejected\", reason: err };\r\n }\r\n });","export const endpointUrl = (apiUrl, endpoint) => (endpoint.indexOf(apiUrl) === -1) ? apiUrl + endpoint : endpoint;","import { endpointUrl } from './apiHelper';\r\n\r\nlet apiUrl = null;\r\n\r\nexport const setApiUrl = apiServiceUrl => { apiUrl = apiServiceUrl; }\r\n\r\nconst TOKEN_RESOURCE = 'token';\r\nexport const tokenResourceUrl = () => endpointUrl(apiUrl, TOKEN_RESOURCE);\r\nexport const autoSignInResourceUrl = () => `${tokenResourceUrl()}/autoSignIn`;\r\nexport const forgotPasswordUrl = () => `${tokenResourceUrl()}/forgotPassword`;\r\n\r\n\r\nconst USERS_RESOURCE = 'users';\r\nexport const usersResourceUrl = () => endpointUrl(apiUrl, USERS_RESOURCE);\r\nexport const changePasswordUrl = () => `${usersResourceUrl()}/password`;\r\nexport const updateUserInfoUrl = userId => `${usersResourceUrl()}/${userId}`;\r\n\r\nconst ENTITIES_RESOURCE = 'entities';\r\nconst getUrlFilter = filter => {\r\n if (filter) {\r\n return Object.keys(filter).map(key => key + '=' + filter[key]).join('&')\r\n } else {\r\n return '';\r\n } \r\n};\r\nconst entitiesResourceFilter = filter => filter ? `?${getUrlFilter(filter)}` : '';\r\nexport const entitiesResourceUrl = (entityName, filter) => `${endpointUrl(apiUrl, ENTITIES_RESOURCE)}/${entityName}${entitiesResourceFilter(filter)}`;\r\n\r\nconst VERSEOFTHEDAY_RESOURCE = 'verseOfTheDay';\r\nconst verseOfTheDayResourceUrl = () => endpointUrl(apiUrl, VERSEOFTHEDAY_RESOURCE);\r\nexport const allVersesResourceUrl = (bibleVersionId) => { return `${verseOfTheDayResourceUrl()}?versionId=${bibleVersionId}` }\r\nexport const updatedVersesResourceUrl = (bibleVersionId, modifiedSinceDateTimeUtc) => { return `${allVersesResourceUrl(bibleVersionId)}&modifiedDateTimeUtc=${modifiedSinceDateTimeUtc}` }\r\n","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { VALIDATE_APP_VERSION, appVersionFromApiActions, appVersionFromStorageActions } from '../actions';\r\nimport { fetchAppVersionApi } from '../api';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchAppVersion = fetchEntity.bind(null, appVersionFromApiActions.getAppVersionFromApi, fetchAppVersionApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadAppVersionFromApi() {\r\n let apiUrl = yield select(getApiUrl);\r\n yield call(fetchAppVersion, apiUrl);\r\n}\r\n\r\nfunction* validateAppVersion(latestAppVersion) {\r\n if (latestAppVersion !== process.env.REACT_APP_VERSION) {\r\n yield put(appVersionFromStorageActions.loadAppVersionFromStorage(latestAppVersion));\r\n }\r\n}\r\n\r\nexport const watchLoadAppVersionFromApi = function* () {\r\n const { GET_APP_VERSION_FROM_API } = appVersionFromApiActions;\r\n\r\n while(true) {\r\n yield take(VALIDATE_APP_VERSION); \r\n yield fork(loadAppVersionFromApi);\r\n\r\n const action = yield take([GET_APP_VERSION_FROM_API.SUCCESS, GET_APP_VERSION_FROM_API.FAILURE]);\r\n if (action.type === GET_APP_VERSION_FROM_API.SUCCESS) {\r\n yield fork(validateAppVersion, action.response.webAppVersion); \r\n }\r\n }\r\n}","import { callApi } from '../../services/api';\r\nimport { endpointUrl } from '../../services/apiHelper';\r\n\r\nexport const APP_VERSION_RESOURCE = 'appVersion';\r\nexport const appVersionResourceUrl = apiUrl => endpointUrl(apiUrl, APP_VERSION_RESOURCE);\r\n\r\n// appVersion api services\r\nexport const fetchAppVersionApi = (apiUrl) => callApi(appVersionResourceUrl(apiUrl));","import Dexie from 'dexie';\r\n\r\nexport const indexedDb = new Dexie('ChristTheBelovedDb');\r\n\r\n// create stores\r\nindexedDb.version(1).stores({\r\n bibleVersions: 'versionId',\r\n books: 'bookLangId, langId', // might need bookId\r\n chapters: 'chapterLangId, langId, bookId',\r\n verses: 'verseVersionId, versionId, chapterId',\r\n viewFilters: 'filterName'\r\n});\r\nindexedDb.version(2).stores({\r\n verses: 'verseVersionId, versionId, chapterId, verseId',\r\n settings: 'settingName',\r\n verseOfTheDayMasterList: 'verseId',\r\n personalVerseOfTheDay: 'date, verseId'\r\n});\r\nindexedDb.version(3).stores({\r\n verseOfTheDayMasterList: null,\r\n verseOfTheDayList: 'verseVersionId, verseId, versionId'\r\n});\r\nindexedDb.version(4).stores({\r\n //verseOfTheDayMasterList: null,\r\n userSettings: '[settingName+userId], settingName',\r\n});\r\nindexedDb.version(5).stores({\r\n highlightedVerses: 'storageId, verseId, chapterId',\r\n});\r\nindexedDb.version(6).stores({\r\n bibleHistory: 'readDateTimeLt, chapterId, userId',\r\n});","export const SETTINGS_WEBAPPVERSION_NAME = 'webAppVersion';\r\nexport const SETTINGS_LASTUPDATED_VERSEOFTHEDAYLIST_NAME = 'lastUpdated_VerseOfTheDayList';\r\nexport const SETTINGS_LASTUPDATED_ENTITYLIST_NAME = (entityName, versionId) => versionId ? `lastUpdated_${entityName}List_versionId_${versionId}` : `lastUpdated_${entityName}List`;\r\nexport const SETTINGS_LASTUPLOADED_ENTITYLIST_NAME = (entityName, versionId) => versionId ? `lastUploaded_${entityName}List_versionId_${versionId}` : `lastUploaded_${entityName}List`;\r\n\r\nexport const USER_SETTINGS_SIGNEDIN_USERS = 'signedInUsers';","import { indexedDb } from '../../../services/indexedDb';\r\nimport { SETTINGS_WEBAPPVERSION_NAME } from '../../constants';\r\n\r\nexport const saveAppVersionToLocalStore = (appVersion) => {\r\n indexedDb.settings.put({settingName: SETTINGS_WEBAPPVERSION_NAME, settingValue: appVersion})\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { SETTINGS_WEBAPPVERSION_NAME } from '../../constants';\r\n\r\nconst loadAppVersionFromLocalStore = () => {\r\n return indexedDb.settings.get(SETTINGS_WEBAPPVERSION_NAME); \r\n}\r\n\r\nexport const fetchAppVersionFromStorage = (latestAppVersion) => {\r\n return loadAppVersionFromLocalStore()\r\n .then(appVersion => {\r\n if (appVersion) { \r\n if (appVersion.settingValue !== latestAppVersion) {\r\n } else {\r\n const response = {};\r\n return { ...response, appVersion }\r\n } \r\n } else {\r\n //throw new Error('No webAppVersion found in local storage!');\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { SETTINGS_WEBAPPVERSION_NAME } from '../../constants';\r\n\r\nexport const deleteAppVersionFromStorage = () => {\r\n indexedDb.settings.delete(SETTINGS_WEBAPPVERSION_NAME)\r\n .catch(error => {\r\n });\r\n}","import * as _saveAppVersionToLocalStoreDb from './saveAppVersionToLocalStoreDb';\r\nimport * as _fetchAppVersionFromStorageService from './fetchAppVersionFromStorageService';\r\nimport * as _deleteAppVersionFromStorageService from './deleteAppVersionFromStorageService';\r\n\r\nexport const saveAppVersionToLocalStoreDb = _saveAppVersionToLocalStoreDb;\r\nexport const fetchAppVersionFromStorageService = _fetchAppVersionFromStorageService;\r\nexport const deleteAppVersionFromStorageService = _deleteAppVersionFromStorageService;","import { take, call, fork } from 'redux-saga/effects';\r\nimport { appVersionFromStorageActions } from '../actions';\r\nimport { fetchAppVersionFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchAppVersionFromStorage = fetchEntity.bind(null, appVersionFromStorageActions.getAppVersionFromStorage, fetchAppVersionFromStorageService.fetchAppVersionFromStorage);\r\n\r\nfunction* loadAppVersion(appVersion) {\r\n yield call(fetchAppVersionFromStorage, appVersion); \r\n}\r\n\r\nexport const watchLoadAppVersionFromStorage = function* () {\r\n const { GET_APP_VERSION_FROM_STORAGE } = appVersionFromStorageActions;\r\n \r\n while(true) {\r\n const {appVersion} = yield take(appVersionFromStorageActions.LOAD_APP_VERSION_FROM_STORAGE);\r\n yield fork(loadAppVersion, appVersion);\r\n \r\n const action = yield take([\r\n GET_APP_VERSION_FROM_STORAGE.SUCCESS, \r\n GET_APP_VERSION_FROM_STORAGE.FAILURE\r\n ]);\r\n \r\n if (action.type === GET_APP_VERSION_FROM_STORAGE.FAILURE) { \r\n } \r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { UPDATE_APP_VERSION_STORAGE } from '../actions/appVersionFromStorageActions';\r\nimport { saveAppVersionToLocalStoreDb } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(appVersion) {\r\n yield call(saveAppVersionToLocalStoreDb.saveAppVersionToLocalStore, appVersion);\r\n}\r\n\r\nexport const watchUpdateAppVersionLocalStorage = function* () {\r\n while(true) {\r\n const {appVersion} = yield take(UPDATE_APP_VERSION_STORAGE);\r\n yield fork(updateLocalStorage, appVersion);\r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadAppVersionFromApi } from './getAppVersionFromApiSaga';\r\nimport { watchLoadAppVersionFromStorage } from './getAppVersionFromStorageSaga';\r\nimport { watchUpdateAppVersionLocalStorage } from './updateAppVersionLocalStorageSaga';\r\n\r\nexport const watchAppVersionRequests = function*() {\r\n yield all([ \r\n fork(watchLoadAppVersionFromApi),\r\n fork(watchLoadAppVersionFromStorage),\r\n fork(watchUpdateAppVersionLocalStorage) \r\n ])\r\n}","import { take, fork, select, put } from 'redux-saga/effects';\r\nimport _ from 'lodash';\r\nimport { LOAD_BIBLE_VERSIONS, getBibleVersionsFromStorageActions } from '../actions';\r\n\r\nconst getBibleVersions = (state) => state.entities.bibleVersions;\r\n\r\nfunction* loadBibleVersions() {\r\n let bibleVersions = yield select(getBibleVersions);\r\n\r\n if (_.isEmpty(bibleVersions)) { \r\n yield put(getBibleVersionsFromStorageActions.loadBibleVersionsFromStorage());\r\n }\r\n}\r\n\r\nexport const watchLoadBibleVersions = function* () {\r\n while(true) {\r\n yield take(LOAD_BIBLE_VERSIONS);\r\n yield fork(loadBibleVersions);\r\n }\r\n}","import { schema } from 'normalizr';\r\n\r\nconst bibleVersionSchema = new schema.Entity('bibleVersions', {}, {idAttribute: 'versionId'});\r\n\r\n// Schema for BibleVersions API response.\r\nexport const bibleVersionApiSchemaArray = { items: [ bibleVersionSchema ] };\r\n\r\nexport const bibleVersionStorageSchemaArray = [bibleVersionSchema];","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { VIEWFILTERS_BIBLEVERSION_NAME } from '../../constants';\r\n\r\nexport const saveViewFiltersBibleVersionToLocalStore = (bibleVersionId, langId) => {\r\n indexedDb.viewFilters.put({filterName: VIEWFILTERS_BIBLEVERSION_NAME, versionId: bibleVersionId, langId: langId})\r\n .catch(error => {\r\n });\r\n}","export const VIEWFILTERS_BIBLEVERSION_NAME = 'bibleVersion';\r\nexport const VIEWFILTERS_BIBLEBOOK_NAME = 'bibleBook';\r\nexport const VIEWFILTERS_BOOKCHAPTER_NAME = 'bookChapter';","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { VIEWFILTERS_BIBLEVERSION_NAME } from '../../constants';\r\n\r\nconst loadViewFiltersBibleVersionFromLocalStore = () => {\r\n return indexedDb.viewFilters.get(VIEWFILTERS_BIBLEVERSION_NAME); \r\n}\r\n\r\nexport const fetchViewFiltersBibleVersionFromStorage = () => {\r\n return loadViewFiltersBibleVersionFromLocalStore()\r\n .then(bibleVersion => {\r\n if (bibleVersion) { \r\n const response = {};\r\n return { ...response, bibleVersion }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport _ from 'lodash';\r\nimport * as _saveViewFiltersBibleVersionToLocalStoreDb from './saveViewFiltersBibleVersionToLocalStoreDb';\r\nimport * as _fetchViewFiltersBibleVersionFromStorageService from './fetchViewFiltersBibleVersionFromStorageService';\r\n\r\nexport const saveViewFiltersBibleVersionToLocalStoreDb = _saveViewFiltersBibleVersionToLocalStoreDb;\r\nexport const fetchViewFiltersBibleVersionFromStorageService = _fetchViewFiltersBibleVersionFromStorageService;\r\n\r\nexport const addBibleVersionsToLocalStore = (bibleVersions) => {\r\n const bibleVersionsList = _.values(bibleVersions);\r\n indexedDb.bibleVersions.bulkPut(bibleVersionsList).then(function(lastKey) {\r\n });\r\n}\r\n\r\nexport const loadBibleVersionsFromLocalStore = () => {\r\n return indexedDb.bibleVersions.toArray();\r\n}","import { take, call, fork, put } from 'redux-saga/effects';\r\nimport { getBibleVersionsFromStorageActions, getBibleVersionsFromApiActions } from '../actions';\r\nimport { fetchBibleVersionsFromStorageService } from '../indexedDbStorage/service';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBibleVersionsFromStorage = fetchEntity.bind(null, getBibleVersionsFromStorageActions.getBibleVersionsFromStorage, fetchBibleVersionsFromStorageService);\r\n\r\nfunction* loadBibleVersions() {\r\n yield call(fetchBibleVersionsFromStorage); \r\n}\r\n\r\nexport const watchLoadBibleVersionsFromStorage = function* () {\r\n const { GET_BIBLE_VERSIONS_FROM_STORAGE } = getBibleVersionsFromStorageActions;\r\n \r\n while(true) {\r\n yield take(getBibleVersionsFromStorageActions.LOAD_BIBLE_VERSIONS_FROM_STORAGE);\r\n yield fork(loadBibleVersions);\r\n \r\n const action = yield take([GET_BIBLE_VERSIONS_FROM_STORAGE.SUCCESS, GET_BIBLE_VERSIONS_FROM_STORAGE.FAILURE]);\r\n if (action.type === GET_BIBLE_VERSIONS_FROM_STORAGE.FAILURE) {\r\n yield put(getBibleVersionsFromApiActions.loadBibleVersionsFromApi());\r\n } \r\n }\r\n}","import { normalize } from 'normalizr';\r\nimport { bibleVersionStorageSchemaArray } from '../schema';\r\nimport { loadBibleVersionsFromLocalStore } from './index';\r\n\r\nexport const fetchBibleVersionsFromStorageService = () => {\r\n return loadBibleVersionsFromLocalStore()\r\n .then(bibleVersions => { \r\n if (bibleVersions.length > 0) {\r\n const normalized = normalize(bibleVersions, bibleVersionStorageSchemaArray);\r\n return {...normalized}\r\n }\r\n else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { getBibleVersionsFromApiActions, updateBibleVersionsStorage } from '../actions';\r\nimport { fetchBibleVersionsApi } from '../api'\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBibleVersions = fetchEntity.bind(null, getBibleVersionsFromApiActions.getBibleVersionsFromApi, fetchBibleVersionsApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadBibleVersions() {\r\n let apiUrl = yield select(getApiUrl);\r\n yield call(fetchBibleVersions, apiUrl);\r\n}\r\n\r\nexport const watchLoadBibleVersionsFromApi = function* () {\r\n const { GET_BIBLE_VERSIONS_FROM_API } = getBibleVersionsFromApiActions;\r\n\r\n while(true) {\r\n yield take(getBibleVersionsFromApiActions.LOAD_BIBLE_VERSIONS_FROM_API);\r\n yield fork(loadBibleVersions);\r\n\r\n const action = yield take([GET_BIBLE_VERSIONS_FROM_API.SUCCESS, GET_BIBLE_VERSIONS_FROM_API.FAILURE]);\r\n if (action.type === GET_BIBLE_VERSIONS_FROM_API.SUCCESS) {\r\n const bibleVersions = action.response.entities.bibleVersions;\r\n yield put(updateBibleVersionsStorage(bibleVersions));\r\n }\r\n }\r\n}","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { endpointUrl } from '../../../services/apiHelper';\r\nimport { bibleVersionApiSchemaArray } from './schema';\r\n\r\nexport const BIBLEVERSIONS_RESOURCE = 'bibleVersions';\r\nconst bibleVersionsResourceUrl = apiUrl => endpointUrl(apiUrl, BIBLEVERSIONS_RESOURCE);\r\n\r\n// bibleVersions api services\r\nexport const fetchBibleVersionsApi = apiUrl => callApiNormalizedResponse(bibleVersionsResourceUrl(apiUrl), bibleVersionApiSchemaArray);","import { take, put, select, all } from 'redux-saga/effects';\r\nimport * as bibleVersionsActions from '../actions';\r\nimport * as bibleBooksActions from '../../Books/actions';\r\nimport * as chaptersActions from '../../Chapters/actions';\r\nimport { chapterVersesActions } from '../../Verses/actions';\r\n\r\nconst getBibleVersion = state => state.bibleVersion;\r\nconst getBibleBook = state => state.bibleBook;\r\nconst getBookChapter = state => state.bookChapter;\r\n\r\nexport const watchSetBibleVersion = function* () {\r\n while(true) {\r\n const {versionId, langId} = yield take(bibleVersionsActions.SET_BIBLE_VERSION);\r\n yield put(bibleVersionsActions.updateViewFiltersBibleVersionStorage(versionId, langId));\r\n\r\n let bibleVersion = yield select(getBibleVersion);\r\n let bibleBook = yield select(getBibleBook);\r\n let bookChapter = yield select(getBookChapter);\r\n \r\n yield all ([\r\n put(bibleBooksActions.loadBibleBooks(bibleVersion.id)),\r\n put(chaptersActions.loadBookChapters(bibleVersion.id, bibleBook.id)),\r\n put(chapterVersesActions.getChapterVerses.request(bibleVersion.id, bibleBook.id, bookChapter.id))\r\n ]);\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { UPDATE_BIBLE_VERSIONS_STORAGE } from '../actions';\r\nimport { addBibleVersionsToLocalStore } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(bibleVersions) {\r\n yield call(addBibleVersionsToLocalStore, bibleVersions);\r\n}\r\n\r\nexport const watchUpdateBibleVersionsLocalStorage = function* () {\r\n while(true) {\r\n const {bibleVersions} = yield take(UPDATE_BIBLE_VERSIONS_STORAGE);\r\n yield fork(updateLocalStorage, bibleVersions);\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { UPDATE_VIEWFILTERS_BIBLEVERSION_STORAGE } from '../actions';\r\nimport { saveViewFiltersBibleVersionToLocalStoreDb } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(bibleVersionId, langId) {\r\n yield call(saveViewFiltersBibleVersionToLocalStoreDb.saveViewFiltersBibleVersionToLocalStore, bibleVersionId, langId);\r\n}\r\n\r\nexport const watchUpdateViewFiltersBibleVersionLocalStorage = function* () {\r\n while(true) {\r\n const {bibleVersionId, langId} = yield take(UPDATE_VIEWFILTERS_BIBLEVERSION_STORAGE);\r\n yield fork(updateLocalStorage, bibleVersionId, langId);\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { getViewFiltersBibleVersionFromStorageActions } from '../actions';\r\nimport { fetchViewFiltersBibleVersionFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchViewFiltersBibleVersionFromStorage = fetchEntity.bind(null, getViewFiltersBibleVersionFromStorageActions.getViewFiltersBibleVersionFromStorage, fetchViewFiltersBibleVersionFromStorageService.fetchViewFiltersBibleVersionFromStorage);\r\n\r\nfunction* loadViewFiltersBibleVersion() {\r\n yield call(fetchViewFiltersBibleVersionFromStorage); \r\n}\r\n\r\nexport const watchLoadViewFiltersBibleVersionFromStorage = function* () {\r\n while(true) {\r\n yield take(getViewFiltersBibleVersionFromStorageActions.LOAD_VIEWFILTERS_BIBLEVERSION_FROM_STORAGE);\r\n yield fork(loadViewFiltersBibleVersion); \r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadBibleVersions } from './getBibleVersionsSaga';\r\nimport { watchLoadBibleVersionsFromStorage } from './getBibleVersionsFromStorageSaga';\r\nimport { watchLoadBibleVersionsFromApi } from './getBibleVersionsFromApiSaga';\r\nimport { watchSetBibleVersion } from './setBibleVersionSaga';\r\nimport { watchUpdateBibleVersionsLocalStorage } from './updateBibleVersionsLocalStorageSaga';\r\nimport { watchUpdateViewFiltersBibleVersionLocalStorage } from './updateViewFiltersBibleVersionLocalStoreSaga';\r\nimport { watchLoadViewFiltersBibleVersionFromStorage } from './getViewFiltersBibleVersionFromStorageSaga';\r\n\r\nexport const watchBibleVersionsRequests = function*() {\r\n yield all([\r\n fork(watchLoadBibleVersions),\r\n fork(watchLoadBibleVersionsFromStorage),\r\n fork(watchLoadBibleVersionsFromApi),\r\n fork(watchUpdateBibleVersionsLocalStorage),\r\n fork(watchSetBibleVersion),\r\n fork(watchUpdateViewFiltersBibleVersionLocalStorage),\r\n fork(watchLoadViewFiltersBibleVersionFromStorage)\r\n ])\r\n}","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport * as bibleBooksActions from '../actions';\r\nimport { getBooksFromStorageActions, getBooksFromApiActions } from '../actions';\r\nimport { getBooksByBibleVersion } from '../selectors/getBooksByBibleVersionSelector';\r\nimport * as appVersionActions from '../../../Version/actions';\r\n\r\nconst getBibleBooksList = (state) => getBooksByBibleVersion(state);\r\nconst getBibleBook = state => state.bibleBook;\r\n\r\nconst setFirstBook = function* () {\r\n let bibleBooksList = yield select(getBibleBooksList); \r\n\r\n if (bibleBooksList[0]) { \r\n const firstBookId = bibleBooksList[0].bookId;\r\n yield put(bibleBooksActions.setBibleBook(firstBookId));\r\n } \r\n}\r\n\r\nfunction* loadBibleBooks(bibleVersionId) {\r\n yield put(getBooksFromStorageActions.loadBibleBooksFromStorage(bibleVersionId));\r\n}\r\n\r\nexport const watchLoadBibleBooks = function* () {\r\n const { GET_BIBLE_BOOKS_FROM_STORAGE } = getBooksFromStorageActions;\r\n const { GET_BIBLE_BOOKS_FROM_API } = getBooksFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId} = yield take(bibleBooksActions.LOAD_BIBLE_BOOKS);\r\n yield put(appVersionActions.validateAppVersion());\r\n yield fork(loadBibleBooks, bibleVersionId);\r\n\r\n const action = yield take([\r\n GET_BIBLE_BOOKS_FROM_STORAGE.SUCCESS, \r\n GET_BIBLE_BOOKS_FROM_API.SUCCESS\r\n ]);\r\n\r\n if ((action.type === GET_BIBLE_BOOKS_FROM_STORAGE.SUCCESS) || (action.type === GET_BIBLE_BOOKS_FROM_API.SUCCESS)) {\r\n let bibleBook = yield select(getBibleBook); \r\n if (bibleBook.id === 0) {\r\n yield call(setFirstBook);\r\n }\r\n }\r\n }\r\n}","import { schema } from 'normalizr';\r\n\r\nconst bibleBookSchema = new schema.Entity('books', {}, {idAttribute: 'bookId'});\r\n\r\n// Schemas for Books API responses.\r\nexport const bibleBookApiSchemaArray = { items: [ bibleBookSchema ] };\r\n\r\nexport const bibleBookStorageSchemaArray = [ bibleBookSchema ];","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { VIEWFILTERS_BIBLEBOOK_NAME } from '../../constants';\r\n\r\nexport const saveViewFiltersBibleBookToLocalStore = (bookId) => {\r\n indexedDb.viewFilters.put({filterName: VIEWFILTERS_BIBLEBOOK_NAME, bookId: bookId})\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { VIEWFILTERS_BIBLEBOOK_NAME } from '../../constants';\r\n\r\nconst loadViewFiltersBibleBookFromLocalStore = () => {\r\n return indexedDb.viewFilters.get(VIEWFILTERS_BIBLEBOOK_NAME); \r\n}\r\n\r\nexport const fetchViewFiltersBibleBookFromStorage = () => {\r\n return loadViewFiltersBibleBookFromLocalStore()\r\n .then(bibleBook => {\r\n if (bibleBook) { \r\n const response = {};\r\n return { ...response, bibleBook }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport _ from 'lodash';\r\nimport * as _saveViewFiltersBibleBookToLocalStoreDb from './saveViewFiltersBibleBookToLocalStoreDb';\r\nimport * as _fetchViewFiltersBibleBookFromStorageService from './fetchViewFiltersBibleBookFromStorageService';\r\n\r\nexport const saveViewFiltersBibleBookToLocalStoreDb = _saveViewFiltersBibleBookToLocalStoreDb;\r\nexport const fetchViewFiltersBibleBookFromStorageService = _fetchViewFiltersBibleBookFromStorageService;\r\n\r\nexport const addBooksToLocalStore = (books) => {\r\n const booksList = _.values(books);\r\n indexedDb.books.bulkPut(booksList).then(lastKey => {\r\n });\r\n}\r\n\r\nexport const loadBooksFromLocalStore = (langId) => {\r\n return indexedDb.books.where('langId').equals(langId).toArray();\r\n}","import { take, call, fork, put, select } from 'redux-saga/effects';\r\nimport { getBooksFromStorageActions, getBooksFromApiActions } from '../actions';\r\nimport { fetchBooksFromStorageService } from '../indexedDbStorage/service';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\nimport { DEFAULT_LANGID } from '../../Versions/constants'\r\n\r\nconst getBibleVersion = state => state.bibleVersion;\r\n\r\n// bind Generators\r\nconst fetchBooksFromStorage = fetchEntity.bind(null, getBooksFromStorageActions.getBibleBooksFromStorage, fetchBooksFromStorageService);\r\n\r\nfunction* loadBibleBooks(bibleVersionId) {\r\n let bibleVersion = yield select(getBibleVersion);\r\n \r\n const langId = bibleVersion ? bibleVersion.langId : DEFAULT_LANGID;\r\n\r\n yield call(fetchBooksFromStorage, langId); \r\n}\r\n\r\nexport const watchLoadBibleBooksFromStorage = function* () {\r\n const { GET_BIBLE_BOOKS_FROM_STORAGE } = getBooksFromStorageActions;\r\n \r\n while(true) {\r\n const {bibleVersionId} = yield take(getBooksFromStorageActions.LOAD_BIBLE_BOOKS_FROM_STORAGE);\r\n yield fork(loadBibleBooks, bibleVersionId);\r\n \r\n const action = yield take([\r\n GET_BIBLE_BOOKS_FROM_STORAGE.SUCCESS, \r\n GET_BIBLE_BOOKS_FROM_STORAGE.FAILURE\r\n ]);\r\n \r\n if (action.type === GET_BIBLE_BOOKS_FROM_STORAGE.FAILURE) {\r\n yield put(getBooksFromApiActions.loadBibleBooksFromApi(bibleVersionId));\r\n } \r\n }\r\n}","import { normalize } from 'normalizr';\r\nimport { bibleBookStorageSchemaArray } from '../schema';\r\nimport { loadBooksFromLocalStore } from './index';\r\n\r\nexport const fetchBooksFromStorageService = (langId) => {\r\n return loadBooksFromLocalStore(langId)\r\n .then(books => { \r\n if (books.length > 0) {\r\n const normalized = normalize(books, bibleBookStorageSchemaArray);\r\n return {...normalized}\r\n }\r\n else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { endpointUrl } from '../../../services/apiHelper';\r\nimport { bibleBookApiSchemaArray } from './schema';\r\n\r\nexport const BIBLEBOOKS_RESOURCE = 'books';\r\nexport const bibleBooksResourceUrl = apiUrl => endpointUrl(apiUrl, BIBLEBOOKS_RESOURCE);\r\nconst resourceUrl = (apiUrl, bibleVersionId) => { return `${bibleBooksResourceUrl(apiUrl)}?versionId=${bibleVersionId}` }\r\n\r\n// bibleBooks api services\r\nexport const fetchBibleBooksApi = (apiUrl, bibleVersionId) => callApiNormalizedResponse(resourceUrl(apiUrl, bibleVersionId), bibleBookApiSchemaArray);","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { getBooksFromApiActions, updateBooksStorage } from '../actions';\r\nimport { fetchBibleBooksApi } from '../api';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBibleBooks = fetchEntity.bind(null, getBooksFromApiActions.getBibleBooksFromApi, fetchBibleBooksApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadBibleBooks(bibleVersionId) {\r\n let apiUrl = yield select(getApiUrl);\r\n \r\n yield call(fetchBibleBooks, apiUrl, bibleVersionId);\r\n}\r\n\r\nexport const watchLoadBibleBooksFromApi = function* () {\r\n const { GET_BIBLE_BOOKS_FROM_API } = getBooksFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId} = yield take(getBooksFromApiActions.LOAD_BIBLE_BOOKS_FROM_API); \r\n yield fork(loadBibleBooks, bibleVersionId);\r\n\r\n const action = yield take([GET_BIBLE_BOOKS_FROM_API.SUCCESS, GET_BIBLE_BOOKS_FROM_API.FAILURE]);\r\n if (action.type === GET_BIBLE_BOOKS_FROM_API.SUCCESS) {\r\n const books = action.response.entities.books;\r\n yield put(updateBooksStorage(books));\r\n }\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { UPDATE_BOOKS_STORAGE } from '../actions';\r\nimport { addBooksToLocalStore } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(books) {\r\n yield call(addBooksToLocalStore, books);\r\n}\r\n\r\nexport const watchUpdateBibleBooksLocalStorage = function* () {\r\n while(true) {\r\n const {books} = yield take(UPDATE_BOOKS_STORAGE);\r\n yield fork(updateLocalStorage, books);\r\n }\r\n}","import { take, put, select, call } from 'redux-saga/effects';\r\nimport * as bibleBooksActions from '../actions';\r\nimport * as chaptersActions from '../../Chapters/actions';\r\nimport { getBookChaptersFromStorageActions, getBookChaptersFromApiActions, bibleChaptersFromApiActions } from '../../Chapters/actions';\r\nimport { getChaptersByBookId } from '../../Chapters/selectors/getChaptersByBookIdSelector';\r\n\r\nconst { GET_BOOK_CHAPTERS_FROM_STORAGE } = getBookChaptersFromStorageActions;\r\nconst { GET_BOOK_CHAPTERS_FROM_API } = getBookChaptersFromApiActions;\r\nconst { GET_BIBLE_CHAPTERS_FROM_API } = bibleChaptersFromApiActions;\r\n\r\nconst getBibleVersion = (state) => state.bibleVersion;\r\nconst getChaptersForCurrentBookId = state => getChaptersByBookId(state);\r\n\r\nconst setFirstChapter = function* () {\r\n let chaptersForCurrentBookId = yield select(getChaptersForCurrentBookId); \r\n if (!chaptersForCurrentBookId[0]) { \r\n yield take([\r\n GET_BOOK_CHAPTERS_FROM_STORAGE.SUCCESS, \r\n GET_BOOK_CHAPTERS_FROM_API.SUCCESS,\r\n GET_BIBLE_CHAPTERS_FROM_API.SUCCESS\r\n ]); \r\n chaptersForCurrentBookId = yield select(getChaptersForCurrentBookId);\r\n }\r\n\r\n if (chaptersForCurrentBookId[0]) {\r\n const firstChapterId = chaptersForCurrentBookId[0].chapterId;\r\n yield put(chaptersActions.setBookChapter(firstChapterId));\r\n } \r\n}\r\n\r\nexport const watchSetBibleBook = function* () {\r\n while(true) {\r\n const {bookId, skipSettingFirstChapter} = yield take(bibleBooksActions.SET_BIBLE_BOOK);\r\n yield put(bibleBooksActions.viewFiltersBibleBookFromStorageActions.updateViewFiltersBibleBookStorage(bookId));\r\n\r\n let bibleVersion = yield select(getBibleVersion);\r\n yield put(chaptersActions.loadBookChapters(bibleVersion.id, bookId));\r\n \r\n if (!skipSettingFirstChapter) {\r\n yield call(setFirstChapter);\r\n } \r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { viewFiltersBibleBookFromStorageActions } from '../actions';\r\nimport { saveViewFiltersBibleBookToLocalStoreDb } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(bookId) {\r\n yield call(saveViewFiltersBibleBookToLocalStoreDb.saveViewFiltersBibleBookToLocalStore, bookId);\r\n}\r\n\r\nexport const watchUpdateViewFiltersBibleBookLocalStorage = function* () {\r\n while(true) {\r\n const {bookId} = yield take(viewFiltersBibleBookFromStorageActions.UPDATE_VIEWFILTERS_BIBLEBOOK_STORAGE);\r\n yield fork(updateLocalStorage, bookId);\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { viewFiltersBibleBookFromStorageActions } from '../actions';\r\nimport { fetchViewFiltersBibleBookFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchViewFiltersBibleBookFromStorage = fetchEntity.bind(null, viewFiltersBibleBookFromStorageActions.getViewFiltersBibleBookFromStorage, fetchViewFiltersBibleBookFromStorageService.fetchViewFiltersBibleBookFromStorage);\r\n\r\nfunction* loadViewFiltersBibleBook() {\r\n yield call(fetchViewFiltersBibleBookFromStorage); \r\n}\r\n\r\nexport const watchLoadViewFiltersBibleBookFromStorage = function* () {\r\n while(true) {\r\n yield take(viewFiltersBibleBookFromStorageActions.LOAD_VIEWFILTERS_BIBLEBOOK_FROM_STORAGE);\r\n yield fork(loadViewFiltersBibleBook); \r\n }\r\n}","import { schema } from 'normalizr';\r\n\r\nconst chapterSchema = new schema.Entity('chapters', {}, {idAttribute: 'chapterId'});\r\n\r\n// Schema for Chapters API responses.\r\nexport const chapterApiSchemaArray = { items: [ chapterSchema ] };\r\n\r\nexport const chapterStorageSchemaArray = [ chapterSchema ];","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { bibleBooksResourceUrl } from '../Books/api';\r\nimport { chapterApiSchemaArray } from './schema';\r\n\r\nexport const CHAPTERS_RESOURCE = 'chapters';\r\nexport const chaptersResourceUrl = (apiUrl, bookId) => `${bibleBooksResourceUrl(apiUrl)}/${bookId}/${CHAPTERS_RESOURCE}`;\r\nconst resourceUrl = (apiUrl, bibleVersionId, bookId) => { return `${chaptersResourceUrl(apiUrl, bookId)}?versionId=${bibleVersionId}` }\r\n\r\n// chapters api services\r\nexport const fetchChaptersApi = (apiUrl, bibleVersionId, bookId) => callApiNormalizedResponse(resourceUrl(apiUrl, bibleVersionId, bookId), chapterApiSchemaArray);","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { endpointUrl } from '../../../services/apiHelper';\r\nimport { CHAPTERS_RESOURCE } from './bookChaptersApi';\r\nimport { chapterApiSchemaArray } from './schema';\r\n\r\nexport const chaptersResourceUrl = apiUrl => endpointUrl(apiUrl, CHAPTERS_RESOURCE);\r\nconst resourceUrl = (apiUrl, bibleVersionId) => { return `${chaptersResourceUrl(apiUrl)}?versionId=${bibleVersionId}` }\r\n\r\n// chapters api services\r\nexport const fetchBibleChaptersApi = (apiUrl, bibleVersionId) => callApiNormalizedResponse(resourceUrl(apiUrl, bibleVersionId), chapterApiSchemaArray);","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { bibleChaptersFromApiActions, updateChaptersStorage } from '../actions';\r\nimport { fetchBibleChaptersApi } from '../bibleChaptersApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBibleChapters = fetchEntity.bind(null, bibleChaptersFromApiActions.getBibleChaptersFromApi, fetchBibleChaptersApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadChapters(bibleVersionId) {\r\n let apiUrl = yield select(getApiUrl);\r\n \r\n yield call(fetchBibleChapters, apiUrl, bibleVersionId);\r\n}\r\n\r\nexport const watchLoadBibleChaptersFromApi = function* () {\r\n const { GET_BIBLE_CHAPTERS_FROM_API } = bibleChaptersFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId} = yield take(bibleChaptersFromApiActions.LOAD_BIBLE_CHAPTERS_FROM_API); \r\n yield fork(loadChapters, bibleVersionId);\r\n\r\n const action = yield take([GET_BIBLE_CHAPTERS_FROM_API.SUCCESS, GET_BIBLE_CHAPTERS_FROM_API.FAILURE]);\r\n if (action.type === GET_BIBLE_CHAPTERS_FROM_API.SUCCESS) {\r\n const chapters = action.response.entities.chapters;\r\n yield put(updateChaptersStorage(chapters));\r\n }\r\n }\r\n}","import { take, put, fork } from 'redux-saga/effects';\r\nimport * as chaptersActions from '../actions';\r\nimport { getBookChaptersFromStorageActions } from '../actions';\r\n\r\nfunction* loadBookChapters(bibleVersionId, bookId) {\r\n yield put(getBookChaptersFromStorageActions.loadBookChaptersFromStorage(bibleVersionId, bookId));\r\n}\r\n\r\nexport const watchLoadChapters = function* () {\r\n while(true) {\r\n const {bibleVersionId, bookId} = yield take(chaptersActions.LOAD_BOOK_CHAPTERS); \r\n yield fork(loadBookChapters, bibleVersionId, bookId);\r\n }\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport _ from 'lodash';\r\n\r\nexport const addChaptersToLocalStore = (chapters) => {\r\n const chaptersList = _.values(chapters);\r\n indexedDb.chapters.bulkPut(chaptersList).then(lastKey => {\r\n })\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\n\r\nexport const loadChaptersByBookIdAndLangIdFromLocalStore = (langId, bookId) => {\r\n return indexedDb.chapters.where('bookId')\r\n .equals(bookId)\r\n .and(chapter => { return chapter.langId === langId; })\r\n .toArray();\r\n}","import { normalize } from 'normalizr';\r\nimport { chapterStorageSchemaArray } from '../schema';\r\nimport { loadChaptersByBookIdAndLangIdFromLocalStore } from './loadChaptersByBookIdAndLangIdFromLocalStoreDb';\r\n\r\nexport const fetchChaptersByBookIdAndLangIdFromStorage = (langId, bookId) => {\r\n return loadChaptersByBookIdAndLangIdFromLocalStore(langId, bookId)\r\n .then(chapters => { \r\n if (chapters.length > 0) {\r\n const normalized = normalize(chapters, chapterStorageSchemaArray);\r\n return {...normalized}\r\n }\r\n else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { VIEWFILTERS_BOOKCHAPTER_NAME } from '../../constants';\r\n\r\nexport const saveViewFiltersBookChapterToLocalStore = (chapterId) => {\r\n indexedDb.viewFilters.put({filterName: VIEWFILTERS_BOOKCHAPTER_NAME, chapterId: chapterId})\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { VIEWFILTERS_BOOKCHAPTER_NAME } from '../../constants';\r\n\r\nconst loadViewFiltersBookChapterFromLocalStore = () => {\r\n return indexedDb.viewFilters.get(VIEWFILTERS_BOOKCHAPTER_NAME); \r\n}\r\n\r\nexport const fetchViewFiltersBookChapterFromStorage = () => {\r\n return loadViewFiltersBookChapterFromLocalStore()\r\n .then(bookChapter => {\r\n if (bookChapter) { \r\n const response = {};\r\n return { ...response, bookChapter }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import * as _addChaptersToLocalStoreDb from './addChaptersToLocalStoreDb';\r\nimport * as _loadChaptersByBookIdAndLangIdFromLocalStoreDb from './loadChaptersByBookIdAndLangIdFromLocalStoreDb';\r\nimport * as _fetchChaptersByBookIdAndLangIdFromStorageService from './fetchChaptersByBookIdAndLangIdFromStorageService';\r\nimport * as _saveViewFiltersBookChapterToLocalStoreDb from './saveViewFiltersBookChapterToLocalStoreDb';\r\nimport * as _fetchViewFiltersBookChapterFromStorageService from './fetchViewFiltersBookChapterFromStorageService';\r\n\r\nexport const addChaptersToLocalStoreDb = _addChaptersToLocalStoreDb;\r\nexport const loadChaptersByBookIdAndLangIdFromLocalStoreDb = _loadChaptersByBookIdAndLangIdFromLocalStoreDb;\r\nexport const fetchChaptersByBookIdAndLangIdFromStorageService = _fetchChaptersByBookIdAndLangIdFromStorageService;\r\nexport const saveViewFiltersBookChapterToLocalStoreDb = _saveViewFiltersBookChapterToLocalStoreDb;\r\nexport const fetchViewFiltersBookChapterFromStorageService = _fetchViewFiltersBookChapterFromStorageService;","import { take, call, fork, put, select } from 'redux-saga/effects';\r\nimport { getBookChaptersFromStorageActions, bibleChaptersFromApiActions } from '../actions';\r\nimport { fetchChaptersByBookIdAndLangIdFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\nimport { DEFAULT_LANGID } from '../../Versions/constants';\r\n\r\nconst getBibleVersion = state => state.bibleVersion;\r\n\r\n// bind Generators\r\nconst fetchBookChaptersFromStorage = fetchEntity.bind(null, getBookChaptersFromStorageActions.getBookChaptersFromStorage, fetchChaptersByBookIdAndLangIdFromStorageService.fetchChaptersByBookIdAndLangIdFromStorage);\r\n\r\nfunction* loadBookChapters(bibleVersionId, bookId) {\r\n let bibleVersion = yield select(getBibleVersion);\r\n \r\n const langId = bibleVersion ? bibleVersion.langId : DEFAULT_LANGID;\r\n\r\n yield call(fetchBookChaptersFromStorage, langId, bookId); \r\n}\r\n\r\nexport const watchLoadChaptersFromStorage = function* () {\r\n const { GET_BOOK_CHAPTERS_FROM_STORAGE } = getBookChaptersFromStorageActions;\r\n \r\n while(true) {\r\n const {bibleVersionId, bookId} = yield take(getBookChaptersFromStorageActions.LOAD_BOOK_CHAPTERS_FROM_STORAGE);\r\n yield fork(loadBookChapters, bibleVersionId, bookId);\r\n \r\n const action = yield take([\r\n GET_BOOK_CHAPTERS_FROM_STORAGE.SUCCESS, \r\n GET_BOOK_CHAPTERS_FROM_STORAGE.FAILURE\r\n ]);\r\n \r\n if (action.type === GET_BOOK_CHAPTERS_FROM_STORAGE.FAILURE) {\r\n yield put(bibleChaptersFromApiActions.loadBibleChaptersFromApi(bibleVersionId));\r\n //yield put(getBookChaptersFromApiActions.loadBookChaptersFromApi(bibleVersionId, bookId));\r\n } \r\n }\r\n}","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { getBookChaptersFromApiActions, updateChaptersStorage } from '../actions';\r\nimport { fetchChaptersApi } from '../bookChaptersApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBookChapters = fetchEntity.bind(null, getBookChaptersFromApiActions.getBookChaptersFromApi, fetchChaptersApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadBookChapters(bibleVersionId, bookId) {\r\n let apiUrl = yield select(getApiUrl);\r\n \r\n yield call(fetchBookChapters, apiUrl, bibleVersionId, bookId);\r\n}\r\n\r\nexport const watchLoadChaptersFromApi = function* () {\r\n const { GET_BOOK_CHAPTERS_FROM_API } = getBookChaptersFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId, bookId} = yield take(getBookChaptersFromApiActions.LOAD_BOOK_CHAPTERS_FROM_API); \r\n yield fork(loadBookChapters, bibleVersionId, bookId);\r\n\r\n const action = yield take([GET_BOOK_CHAPTERS_FROM_API.SUCCESS, GET_BOOK_CHAPTERS_FROM_API.FAILURE]);\r\n if (action.type === GET_BOOK_CHAPTERS_FROM_API.SUCCESS) {\r\n const chapters = action.response.entities.chapters;\r\n yield put(updateChaptersStorage(chapters));\r\n }\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { UPDATE_CHAPTERS_STORAGE } from '../actions';\r\nimport { addChaptersToLocalStoreDb } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(chapters) {\r\n yield call(addChaptersToLocalStoreDb.addChaptersToLocalStore, chapters);\r\n}\r\n\r\nexport const watchUpdateChaptersLocalStorage = function* () {\r\n while(true) {\r\n const {chapters} = yield take(UPDATE_CHAPTERS_STORAGE);\r\n yield fork(updateLocalStorage, chapters);\r\n }\r\n}","import { take, put, select } from 'redux-saga/effects';\r\nimport * as chaptersActions from '../actions';\r\n//import * as versesActions from '../../Verses/actions';\r\nimport { chapterVersesActions } from '../../Verses/actions';\r\n\r\nconst getBibleVersion = state => state.bibleVersion;\r\nconst getBibleBook = state => state.bibleBook;\r\nconst getBookChapter = state => state.bookChapter;\r\n\r\nexport const watchSetChapter = function* () {\r\n while(true) {\r\n const {chapterId} = yield take(chaptersActions.SET_BOOK_CHAPTER);\r\n yield put(chaptersActions.viewFiltersBookChapterFromStorageActions.updateViewFiltersBookChapterStorage(chapterId));\r\n \r\n let bibleVersion = yield select(getBibleVersion);\r\n let bibleBook = yield select(getBibleBook);\r\n let bookChapter = yield select(getBookChapter);\r\n yield put(chapterVersesActions.getChapterVerses.request(bibleVersion.id, bibleBook.id, bookChapter.id));\r\n }\r\n}","import { take, put, select } from 'redux-saga/effects';\r\nimport * as booksActions from '../../Books/actions';\r\nimport * as chaptersActions from '../actions';\r\nimport { getBibleBooks } from '../../Books/selectors/getBibleBooksSelector';\r\nimport { getChaptersByBookId } from '../selectors/getChaptersByBookIdSelector';\r\n\r\nconst getBibleBook = state => state.bibleBook;\r\nconst getBookChapter = state => state.bookChapter;\r\nconst getChaptersForCurrentBookId = state => getChaptersByBookId(state);\r\nconst getBooks = state => getBibleBooks(state);\r\n\r\nexport const watchRequestNextChapter = function* () {\r\n while(true) {\r\n yield take(chaptersActions.REQUEST_NEXT_CHAPTER);\r\n let bibleBook = yield select(getBibleBook);\r\n let bookChapter = yield select(getBookChapter);\r\n const bibleBooks = yield select(getBooks);\r\n\r\n let chaptersForCurrentBookId = yield select(getChaptersForCurrentBookId);\r\n const lastChapterForCurrentBookId = chaptersForCurrentBookId[chaptersForCurrentBookId.length - 1];\r\n\r\n let nextChapterId = bookChapter.id;\r\n\r\n if (bookChapter.id < lastChapterForCurrentBookId.chapterId) {\r\n nextChapterId = bookChapter.id + 1;\r\n } else if (bibleBook.id < bibleBooks[bibleBooks.length - 1].bookId) {\r\n yield put(booksActions.setBibleBook(bibleBook.id + 1)); \r\n }\r\n \r\n if (nextChapterId !== bookChapter.id) {\r\n yield put(chaptersActions.setBookChapter(nextChapterId));\r\n } \r\n }\r\n}","import { take, put, select } from 'redux-saga/effects';\r\nimport * as booksActions from '../../Books/actions';\r\nimport * as chaptersActions from '../actions';\r\nimport { getBookChaptersFromStorageActions, getBookChaptersFromApiActions } from '../../Chapters/actions';\r\nimport { getBibleBooks } from '../../Books/selectors/getBibleBooksSelector';\r\nimport { getChaptersByBookId } from '../selectors/getChaptersByBookIdSelector';\r\n\r\nconst { GET_BOOK_CHAPTERS_FROM_STORAGE } = getBookChaptersFromStorageActions;\r\nconst { GET_BOOK_CHAPTERS_FROM_API } = getBookChaptersFromApiActions;\r\n\r\nconst getBibleBook = state => state.bibleBook;\r\nconst getBookChapter = state => state.bookChapter;\r\nconst getChaptersForCurrentBookId = state => getChaptersByBookId(state);\r\nconst getBooks = state => getBibleBooks(state);\r\n\r\nexport const watchRequestPrevChapter = function* () {\r\n while(true) { \r\n yield take(chaptersActions.REQUEST_PREV_CHAPTER);\r\n const bibleBook = yield select(getBibleBook);\r\n const bookChapter = yield select(getBookChapter);\r\n const bibleBooks = yield select(getBooks);\r\n\r\n let chaptersForCurrentBookId = yield select(getChaptersForCurrentBookId);\r\n const firstChapterForCurrentBookId = chaptersForCurrentBookId[0];\r\n\r\n let prevChapterId = bookChapter.id;\r\n\r\n if (bookChapter.id > firstChapterForCurrentBookId.chapterId) {\r\n prevChapterId = bookChapter.id - 1;\r\n } else if (bibleBook.id > bibleBooks[0].bookId) {\r\n const prevBibleBookId = bibleBook.id - 1;\r\n const skipSettingFirstChapter = true;\r\n yield put(booksActions.setBibleBook(prevBibleBookId, skipSettingFirstChapter));\r\n chaptersForCurrentBookId = yield select(getChaptersForCurrentBookId);\r\n\r\n if (!chaptersForCurrentBookId[chaptersForCurrentBookId.length - 1]) { \r\n yield take([\r\n GET_BOOK_CHAPTERS_FROM_STORAGE.SUCCESS, \r\n GET_BOOK_CHAPTERS_FROM_API.SUCCESS\r\n ]); \r\n chaptersForCurrentBookId = yield select(getChaptersForCurrentBookId);\r\n }\r\n \r\n if (chaptersForCurrentBookId[chaptersForCurrentBookId.length - 1]) {\r\n prevChapterId = chaptersForCurrentBookId[chaptersForCurrentBookId.length - 1].chapterId;\r\n } \r\n }\r\n \r\n if (prevChapterId !== bookChapter.id) {\r\n yield put(chaptersActions.setBookChapter(prevChapterId));\r\n }\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { viewFiltersBookChapterFromStorageActions } from '../actions';\r\nimport { saveViewFiltersBookChapterToLocalStoreDb } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(chapterId) {\r\n yield call(saveViewFiltersBookChapterToLocalStoreDb.saveViewFiltersBookChapterToLocalStore, chapterId);\r\n}\r\n\r\nexport const watchUpdateViewFiltersBookChapterLocalStorage = function* () {\r\n while(true) {\r\n const {chapterId} = yield take(viewFiltersBookChapterFromStorageActions.UPDATE_VIEWFILTERS_BOOKCHAPTER_STORAGE);\r\n yield fork(updateLocalStorage, chapterId);\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { viewFiltersBookChapterFromStorageActions } from '../actions';\r\nimport { fetchViewFiltersBookChapterFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchViewFiltersBookChapterFromStorage = fetchEntity.bind(null, \r\n viewFiltersBookChapterFromStorageActions.getViewFiltersBookChapterFromStorage, \r\n fetchViewFiltersBookChapterFromStorageService.fetchViewFiltersBookChapterFromStorage);\r\n\r\nfunction* loadViewFiltersBookChapter() {\r\n yield call(fetchViewFiltersBookChapterFromStorage); \r\n}\r\n\r\nexport const watchLoadViewFiltersBookChapterFromStorage = function* () {\r\n while(true) {\r\n yield take(viewFiltersBookChapterFromStorageActions.LOAD_VIEWFILTERS_BOOKCHAPTER_FROM_STORAGE);\r\n yield fork(loadViewFiltersBookChapter); \r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadBibleChaptersFromApi } from './getBibleChaptersFromApiSaga';\r\nimport { watchLoadChapters } from './getChaptersSaga';\r\nimport { watchLoadChaptersFromStorage } from './getChaptersFromStorageSaga';\r\nimport { watchLoadChaptersFromApi } from './getChaptersFromApiSaga';\r\nimport { watchUpdateChaptersLocalStorage } from './updateChaptersLocalStorageSaga';\r\nimport { watchSetChapter } from './setChapterSaga';\r\nimport { watchRequestNextChapter } from './requestNextChapterSaga';\r\nimport { watchRequestPrevChapter } from './requestPrevChapterSaga';\r\nimport { watchUpdateViewFiltersBookChapterLocalStorage } from './updateViewFiltersBookChapterLocalStoreSaga';\r\nimport { watchLoadViewFiltersBookChapterFromStorage } from './getViewFiltersBookChapterFromStorageSaga';\r\n\r\nexport const watchChaptersRequests = function*() {\r\n yield all([\r\n fork(watchLoadBibleChaptersFromApi),\r\n fork(watchLoadChapters),\r\n fork(watchLoadChaptersFromStorage),\r\n fork(watchLoadChaptersFromApi),\r\n fork(watchUpdateChaptersLocalStorage),\r\n fork(watchSetChapter),\r\n fork(watchRequestNextChapter),\r\n fork(watchRequestPrevChapter),\r\n fork(watchUpdateViewFiltersBookChapterLocalStorage),\r\n fork(watchLoadViewFiltersBookChapterFromStorage) \r\n ])\r\n}","import { schema } from 'normalizr';\r\n\r\nconst verseOfTheDaySchema = new schema.Entity('verseOfTheDay', {}, {idAttribute: 'verseVersionId'});\r\n\r\n// Schema for verseOfTheDay list API responses.\r\nexport const verseOfTheDayApiSchemaArray = { items: [ verseOfTheDaySchema ] };\r\n\r\nexport const verseOfTheDayStorageSchemaArray = [ verseOfTheDaySchema ];","import { call } from 'redux-saga/effects';\r\nimport { verseOfTheDayListFromApiActions } from '../actions';\r\nimport { fetchVerseOfTheDayListApi, fetchUpdatedVerseOfTheDayListApi } from '../api/verseOfTheDayListApi';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchVerseOfTheDayList = fetchEntity.bind(null, verseOfTheDayListFromApiActions.getVerseOfTheDayListFromApi, fetchVerseOfTheDayListApi);\r\nconst fetchUpdatedVerseOfTheDayList = fetchEntity.bind(null, verseOfTheDayListFromApiActions.getVerseOfTheDayListFromApi, fetchUpdatedVerseOfTheDayListApi);\r\n\r\nexport const getVerseOfTheDayListFromApi = function* (filter) {\r\n let bibleVersionId = filter['versionId'];\r\n let modifiedDateTimeUtc = filter['modifiedDateTimeUtc'];\r\n\r\n if (modifiedDateTimeUtc) {\r\n yield call(fetchUpdatedVerseOfTheDayList, bibleVersionId, modifiedDateTimeUtc);\r\n }\r\n else {\r\n yield call(fetchVerseOfTheDayList, bibleVersionId);\r\n } \r\n}","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { allVersesResourceUrl, updatedVersesResourceUrl } from '../../../services/apiResources';\r\nimport { verseOfTheDayApiSchemaArray } from '../schema';\r\n\r\n// verseOfTheDay api services\r\nexport const fetchVerseOfTheDayListApi = (bibleVersionId) => callApiNormalizedResponse(allVersesResourceUrl(bibleVersionId), verseOfTheDayApiSchemaArray);\r\nexport const fetchUpdatedVerseOfTheDayListApi = (bibleVersionId, modifiedSinceDateTimeUtc) => callApiNormalizedResponse(updatedVersesResourceUrl(bibleVersionId, modifiedSinceDateTimeUtc), verseOfTheDayApiSchemaArray);","import { call } from 'redux-saga/effects';\r\nimport { normalize } from 'normalizr';\r\nimport * as entitiesNames from '../../common/entities/constants';\r\nimport { getVerseOfTheDayListFromApi } from './entity/getVerseOfTheDayListFromApi';\r\nimport { verseOfTheDayApiSchemaArray, verseOfTheDayStorageSchemaArray } from './schema';\r\n\r\nexport const verseOfTheDay = {\r\n entityName: entitiesNames.VERSEOFTHEDAY,\r\n storageTableName: 'verseOfTheDayList',\r\n apiTableName: 'VerseOfTheDay',\r\n filterByVersionId: true, \r\n shouldNormalizeApiResponse: true,\r\n apiSchemaArray: verseOfTheDayApiSchemaArray,\r\n addApiData(payload) {\r\n return getApiDataToAdd(payload)\r\n },\r\n addToStoragePayload(payload) { \r\n const verseVersionId = payload.versionId ? `${payload.versionId}-${payload.verseId}` : `0-${payload.verseId}`;\r\n return {...{'verseVersionId': verseVersionId}, ...payload}\r\n },\r\n getLoadedEntities(entities) {\r\n const normalized = normalize(entities, verseOfTheDayStorageSchemaArray);\r\n return {...normalized}\r\n //return entities;\r\n },\r\n getEntityListFilterForApi(filter, userId, lastUpdatedDateTimeUtc) {\r\n if (lastUpdatedDateTimeUtc) {\r\n filter = {...filter, modifiedDateTimeUtc: lastUpdatedDateTimeUtc }\r\n }\r\n \r\n return filter;\r\n },\r\n getEntityListFromApi: function*(filter) { yield call(getVerseOfTheDayListFromApi, filter) },\r\n getEntityListFromApiResponse(apiResponse) {\r\n return apiResponse.entities.verseOfTheDay;\r\n } \r\n}\r\n\r\nconst getApiDataToAdd = data => {\r\n let newFields = {verseId: data.verseId};\r\n if (data.selectedText) {\r\n switch (data.versionId) {\r\n case 1:\r\n newFields = { ...newFields, versionId: data.versionId, uncVerseText: data.selectedText };\r\n break;\r\n default:\r\n newFields = { ...newFields, versionId: data.versionId, verseText: data.selectedText }\r\n }\r\n }\r\n return newFields;\r\n}","import * as entitiesNames from '../../common/entities/constants';\r\n\r\nexport const highlightedVerses = { \r\n entityName: entitiesNames.HIGHLIGHTEDVERSES,\r\n storageTableName: 'highlightedVerses',\r\n apiTableName: 'HighlightedVerses',\r\n addApiData(payload) {\r\n return getApiDataToAdd(payload)\r\n },\r\n addToStoragePayload(payload) { \r\n const storageId = payload.versionId ? `${payload.versionId}-${payload.verseId}` : `0-${payload.verseId}`;\r\n return {...{'storageId': storageId}, ...payload}\r\n },\r\n getLoadedEntities(entities) {\r\n return entities;\r\n }\r\n}\r\n\r\nconst getApiDataToAdd = data => {\r\n let newFields = {verseId: data.verseId};\r\n if (data.highlightedText) {\r\n switch (data.versionId) {\r\n case 1:\r\n newFields = { ...newFields, versionId: data.versionId, uncVerseText: data.highlightedText };\r\n break;\r\n default:\r\n newFields = { ...newFields, versionId: data.versionId, verseText: data.highlightedText }\r\n }\r\n }\r\n\r\n if (data.userId) {\r\n newFields = { ...newFields, userId: data.userId }\r\n }\r\n return newFields;\r\n}","import * as entitiesNames from '../../common/entities/constants';\r\n\r\nexport const bibleHistory = {\r\n entityName: entitiesNames.BIBLEHISTORY,\r\n storageTableName: 'bibleHistory',\r\n sortByField: 'readDateTimeLt',\r\n sortDirection: 'desc',\r\n apiTableName: 'UserChaptersReadHistory',\r\n filterByVersionId: false,\r\n shouldNormalizeApiResponse: false,\r\n isGetEntitiesUserAuthenticationRequired: true,\r\n //apiSchemaArray: verseOfTheDayApiSchemaArray,\r\n addApiData(payload) {\r\n return getApiDataToAdd(payload)\r\n },\r\n addToStoragePayload(payload) { \r\n return payload;\r\n },\r\n getLoadedEntities(entities) {\r\n return entities;\r\n },\r\n //getEntityListFromApi: function*(filter) { yield call(getVerseOfTheDayListFromApi, filter) } \r\n getUnsynchedEntitiesFilter(lastUploadedDateTimeLtISO) {\r\n let filter = lastUploadedDateTimeLtISO\r\n ? {\r\n readDateTimeLt: {\r\n operand: '>',\r\n value: lastUploadedDateTimeLtISO\r\n }\r\n }\r\n : null;\r\n return filter;\r\n },\r\n getEntityListFilterForApi(filter, userId, lastUpdatedDateTimeUtc) {\r\n filter = {...filter, userId: userId }\r\n if (lastUpdatedDateTimeUtc) {\r\n filter = {...filter, modifiedDateTimeUtc: lastUpdatedDateTimeUtc }\r\n }\r\n \r\n return filter;\r\n },\r\n getEntityListFromApiResponse(apiResponse) {\r\n return apiResponse.items;\r\n }\r\n}\r\n\r\nconst getApiDataToAdd = data => { \r\n const {bookId, ...historyData} = data;\r\n return historyData;\r\n}","import { verseOfTheDay } from '../../features/VerseOfTheDay/metadata';\r\nimport { highlightedVerses } from '../../features/HighlightedVerses/metadata';\r\nimport { bibleHistory } from './../../features/BibleHistory/metadata';\r\n\r\nexport const entities = [];\r\n\r\nexport const initializeEntities = () => {\r\n entities.push(verseOfTheDay);\r\n entities.push(highlightedVerses);\r\n entities.push(bibleHistory);\r\n}\r\n\r\nexport const entityByName = entityName => entities.find(entity => entity.entityName === entityName);\r\n\r\nexport const apiEntityResourceName = entityName => {\r\n let apiResourceName = entityName;\r\n const entity = entityByName(entityName);\r\n if (entity && entity.apiTableName) {\r\n apiResourceName = entity.apiTableName;\r\n }\r\n\r\n return apiResourceName;\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { entityByName } from '../metadata';\r\n\r\nexport const fetchAddEntityToStorage = (entityName, payload) => {\r\n var table;\r\n const entity = entityByName(entityName);\r\n if (entity) {\r\n table = indexedDb.table(entity.storageTableName);\r\n\r\n return table.put(entity.addToStoragePayload(payload))\r\n .then(() => {\r\n return { ...payload }\r\n })\r\n .catch(error => {\r\n //throw error;\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n );\r\n } else {\r\n let error = 'Error adding entity to storage! Undefined entity';\r\n throw error;\r\n }\r\n}","import _ from 'lodash';\r\nimport { indexedDb } from '../../../services/indexedDb';\r\nimport { entityByName } from '../metadata';\r\n\r\nconst loadEntityListFromLocalStore = (entityName, filter) => {\r\n var table;\r\n const entity = entityByName(entityName);\r\n if (entity) {\r\n table = indexedDb.table(entity.storageTableName);\r\n }\r\n\r\n let entityList = table;\r\n\r\n if (filter && !_.isEmpty(filter)) {\r\n if (Object.values(filter)[0].operand) {\r\n if (Object.values(filter)[0].operand === '>') {\r\n entityList = entityList.where(Object.keys(filter)[0])\r\n .above(Object.values(filter)[0].value)\r\n } \r\n }\r\n else if (Object.values(filter)[0]) {\r\n entityList = entityList.where(Object.keys(filter)[0])\r\n .equals(Object.values(filter)[0])\r\n } \r\n }\r\n\r\n if (entity && entity.sortDirection && entity.sortDirection === 'desc') {\r\n entityList = entityList.reverse();\r\n }\r\n \r\n return entityList.toArray(); \r\n}\r\n\r\nexport const fetchEntityListFromStorage = (entityName, filter) => {\r\n return loadEntityListFromLocalStore(entityName, filter)\r\n .then(entities => { \r\n if (entities.length > 0) {\r\n const entity = entityByName(entityName);\r\n return entity && entity.getLoadedEntities ? entity.getLoadedEntities(entities) : entities; \r\n }\r\n else {\r\n //throw new Error('No verses found in local storage!');\r\n }\r\n })\r\n .catch(error => {\r\n //throw error;\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { SETTINGS_LASTUPDATED_ENTITYLIST_NAME } from '../../../features/constants';\r\n\r\nconst loadLastUpdatedEntityListSettingFromLocalStore = (entityName, versionId) => {\r\n return indexedDb.settings.get(SETTINGS_LASTUPDATED_ENTITYLIST_NAME(entityName, versionId));\r\n}\r\n\r\nexport const fetchLastUpdatedEntityListSettingFromStorage = (entityName, versionId) => {\r\n return loadLastUpdatedEntityListSettingFromLocalStore(entityName, versionId)\r\n .then(lastUpdatedSetting => {\r\n if (lastUpdatedSetting) { \r\n const response = {};\r\n return { ...response, lastUpdatedSetting }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { getTableForEntityName } from './entityHelper';\r\n\r\nconst loadLastAddedEntityFromLocalStore = (entityName, filter) => {\r\n let lastAddedEntity = null;\r\n let table = getTableForEntityName(entityName);\r\n if (table) { \r\n lastAddedEntity = table.orderBy(filter).last();\r\n }\r\n\r\n return lastAddedEntity; \r\n}\r\n\r\nexport const fetchLastAddedEntityFromStorage = (entityName, filter) => {\r\n return loadLastAddedEntityFromLocalStore(entityName, filter)\r\n .then(entityItem => { \r\n return entityItem;\r\n })\r\n .catch(error => {\r\n //throw error;\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n );\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { entityByName } from '../metadata';\r\n\r\nexport const getTableForEntityName = (entityName) => {\r\n let table = null;\r\n \r\n const entity = entityByName(entityName);\r\n if (entity) {\r\n table = indexedDb.table(entity.storageTableName);\r\n }\r\n\r\n return table;\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\n\r\nconst loadEntitySettingFromLocalStore = (entityName, settingName) => {\r\n return indexedDb.settings.get(settingName);\r\n}\r\n\r\nexport const fetchEntitySettingFromStorage = (entityName, settingName) => {\r\n return loadEntitySettingFromLocalStore(entityName, settingName)\r\n .then(entitySetting => {\r\n if (entitySetting) { \r\n const response = {};\r\n return { ...response, entitySetting }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import _ from 'lodash';\r\nimport { indexedDb } from '../../../services/indexedDb';\r\nimport { entityByName } from '../metadata';\r\nimport { SETTINGS_LASTUPDATED_ENTITYLIST_NAME } from '../../../features/constants';\r\n\r\nexport const saveEntityListToStorage = (entityName, entityList, versionId, currentUtcTime) => {\r\n var table;\r\n const entity = entityByName(entityName);\r\n if (entity) {\r\n table = indexedDb.table(entity.storageTableName);\r\n }\r\n\r\n if (table) {\r\n const entities = _.values(entityList);\r\n table.bulkPut(entities)\r\n .then(lastKey => {\r\n })\r\n .catch(error => {\r\n });\r\n\r\n indexedDb.settings.put({ settingName: SETTINGS_LASTUPDATED_ENTITYLIST_NAME(entityName, versionId), lastUpdatedUtcTime: currentUtcTime })\r\n .catch(error => {\r\n });\r\n } \r\n}","import * as _fetchAddEntityToStorageService from './fetchAddEntityToStorageService';\r\nimport * as _fetchEntityListFromStorageService from './fetchEntityListFromStorageService';\r\nimport * as _fetchLastUpdatedEntityListSettingFromStorageService from './fetchLastUpdatedEntityListSettingFromStorageService';\r\nimport * as _fetchLastAddedEntityFromStorageService from './fetchLastAddedEntityFromStorageService';\r\nimport * as _fetchEntitySettingFromStorageService from './fetchEntitySettingFromStorageService';\r\nimport * as _saveEntityListToStorageService from './saveEntityListToStorageService';\r\n\r\nexport const fetchAddEntityToStorageService = _fetchAddEntityToStorageService;\r\nexport const fetchEntityListFromStorageService = _fetchEntityListFromStorageService;\r\nexport const fetchLastUpdatedEntityListSettingFromStorageService = _fetchLastUpdatedEntityListSettingFromStorageService;\r\nexport const fetchLastAddedEntityFromStorageService = _fetchLastAddedEntityFromStorageService;\r\nexport const fetchEntitySettingFromStorageService = _fetchEntitySettingFromStorageService;\r\nexport const saveEntityListToStorageService = _saveEntityListToStorageService;","import { take, put, fork, call, all, select } from 'redux-saga/effects';\r\nimport { chapterVersesActions } from '../actions';\r\nimport { getChapterVersesFromStorageActions } from '../actions';\r\nimport { addEntityActions, entityListActions, getEntityActions } from '../../../../common/entities/actions';\r\nimport * as entitiesNames from '../../../../common/entities/constants';\r\nimport { getCurrentDateTimeLtISO } from '../../../../utils/dateHelper';\r\nimport { activeRoute } from '../../../../utils/routesHelper';\r\nimport * as Routes from '../../../../constants';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\nimport { fetchLastAddedEntityFromStorageService } from '../../../../common/entities/indexedDbStorage';\r\n\r\n// bind Generators\r\nconst fetchLastAddedEntityFromStorage = fetchEntity.bind(null, getEntityActions.getLastAddedEntityFromStorage, fetchLastAddedEntityFromStorageService.fetchLastAddedEntityFromStorage);\r\n\r\nconst getLoggedinUser = state => state.loggedinUser;\r\n\r\nfunction* loadVerses(bibleVersionId, bookId, chapterId) {\r\n yield put(getChapterVersesFromStorageActions.loadChapterVersesFromStorage(bibleVersionId, bookId, chapterId));\r\n}\r\n\r\nfunction* shouldAddChapterToBibleHistory(chapterId) {\r\n const filterField = 'readDateTimeLt';\r\n yield call(fetchLastAddedEntityFromStorage, entitiesNames.BIBLEHISTORY, filterField);\r\n}\r\n\r\nfunction* addToBibleHistory(bookId, chapterId) {\r\n let newFields = { readDateTimeLt: getCurrentDateTimeLtISO(), bookId: bookId, chapterId: chapterId };\r\n\r\n let loggedinUser = yield select(getLoggedinUser);\r\n if (loggedinUser) {\r\n newFields = { ...newFields, userId: loggedinUser.userId }\r\n }\r\n yield put(addEntityActions.addEntity(entitiesNames.BIBLEHISTORY, newFields));\r\n}\r\n\r\nexport const watchLoadChapterVerses = function* () {\r\n const { GET_CHAPTER_VERSES } = chapterVersesActions;\r\n const { GET_LASTADDED_ENTITY_FROM_STORAGE } = getEntityActions;\r\n\r\n while(true) {\r\n const {bibleVersionId, bookId, chapterId} = yield take(GET_CHAPTER_VERSES.REQUEST); \r\n yield all([\r\n fork(loadVerses, bibleVersionId, bookId, chapterId),\r\n //put(entityListActions.getEntityList.request(entitiesNames.HIGHLIGHTEDVERSES, {chapterId: chapterId})),\r\n //put(entityListActions.getEntityList.request(entitiesNames.FAVORITEVERSES, {chapterId: chapterId})),\r\n put(entityListActions.getEntityList.request(entitiesNames.VERSEOFTHEDAY, {versionId: bibleVersionId}))\r\n ]); \r\n \r\n const action = yield take([GET_CHAPTER_VERSES.SUCCESS, GET_CHAPTER_VERSES.FAILURE]);\r\n if (action.type === GET_CHAPTER_VERSES.SUCCESS) {\r\n if (activeRoute(Routes.ROUTES_BIBLE_PATHNAME)) {\r\n yield fork(shouldAddChapterToBibleHistory, chapterId);\r\n\r\n const action = yield take([\r\n GET_LASTADDED_ENTITY_FROM_STORAGE(entitiesNames.BIBLEHISTORY).SUCCESS,\r\n GET_LASTADDED_ENTITY_FROM_STORAGE(entitiesNames.BIBLEHISTORY).FAILURE\r\n ]);\r\n \r\n if (action.type === GET_LASTADDED_ENTITY_FROM_STORAGE(entitiesNames.BIBLEHISTORY).SUCCESS) {\r\n if (action.response.chapterId && action.response.chapterId !== chapterId) {\r\n yield fork(addToBibleHistory, bookId, chapterId);\r\n }\r\n } else {\r\n yield fork(addToBibleHistory, bookId, chapterId);\r\n } \r\n }\r\n }\r\n }\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport _ from 'lodash';\r\n\r\nexport const addVersesToLocalStore = (verses) => {\r\n const versesList = _.values(verses);\r\n indexedDb.verses.bulkPut(versesList).then(lastKey => {\r\n })\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\n\r\nexport const loadVersesByChapterIdAndVersionIdFromLocalStore = (versionId, chapterId) => {\r\n return indexedDb.verses.where('chapterId')\r\n .equals(chapterId)\r\n .and(verse => { return verse.versionId === versionId; })\r\n .toArray();\r\n}","import { schema } from 'normalizr';\r\n\r\nconst verseSchema = new schema.Entity('verses', {}, {idAttribute: 'verseId'});\r\n\r\n// Schema for Verses API responses.\r\nexport const verseApiSchemaArray = { items: [ verseSchema ] };\r\n\r\nexport const verseStorageSchemaArray = [ verseSchema ];","import { normalize } from 'normalizr';\r\nimport { verseStorageSchemaArray } from '../schema';\r\nimport { loadVersesByChapterIdAndVersionIdFromLocalStore } from './loadVersesByChapterIdAndVersionIdFromLocalStoreDb';\r\n\r\nexport const fetchVersesByChapterIdAndVersionIdFromStorage = (versionId, chapterId) => {\r\n return loadVersesByChapterIdAndVersionIdFromLocalStore(versionId, chapterId)\r\n .then(verses => { \r\n if (verses.length > 0) {\r\n const normalized = normalize(verses, verseStorageSchemaArray);\r\n return {...normalized}\r\n }\r\n else {\r\n //throw new Error('No verses found in local storage!');\r\n }\r\n })\r\n .catch(error => {\r\n //throw error;\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import * as _addVersesToLocalStoreDb from './addVersesToLocalStoreDb';\r\nimport * as _loadVersesByChapterIdAndVersionIdFromLocalStoreDb from './loadVersesByChapterIdAndVersionIdFromLocalStoreDb';\r\nimport * as _fetchVersesByChapterIdAndVersionIdFromStorageService from './fetchVersesByChapterIdAndVersionIdFromStorageService';\r\n\r\nexport const addVersesToLocalStoreDb = _addVersesToLocalStoreDb;\r\nexport const loadVersesByChapterIdAndVersionIdFromLocalStoreDb = _loadVersesByChapterIdAndVersionIdFromLocalStoreDb;\r\nexport const fetchVersesByChapterIdAndVersionIdFromStorageService = _fetchVersesByChapterIdAndVersionIdFromStorageService;","import { take, call, fork, put } from 'redux-saga/effects';\r\nimport { chapterVersesActions, getChapterVersesFromStorageActions, getChapterVersesFromApiActions } from '../actions';\r\nimport { fetchVersesByChapterIdAndVersionIdFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchChapterVersesFromStorage = fetchEntity.bind(null, getChapterVersesFromStorageActions.getChapterVersesFromStorage, fetchVersesByChapterIdAndVersionIdFromStorageService.fetchVersesByChapterIdAndVersionIdFromStorage);\r\n\r\nfunction* loadVerses(bibleVersionId, chapterId) {\r\n yield call(fetchChapterVersesFromStorage, bibleVersionId, chapterId); \r\n}\r\n\r\nexport const watchLoadChapterVersesFromStorage = function* () {\r\n const { GET_CHAPTER_VERSES_FROM_STORAGE } = getChapterVersesFromStorageActions;\r\n \r\n while(true) {\r\n const {bibleVersionId, bookId, chapterId} = yield take(getChapterVersesFromStorageActions.LOAD_CHAPTER_VERSES_FROM_STORAGE);\r\n yield fork(loadVerses, bibleVersionId, chapterId);\r\n \r\n const action = yield take([\r\n GET_CHAPTER_VERSES_FROM_STORAGE.SUCCESS, \r\n GET_CHAPTER_VERSES_FROM_STORAGE.FAILURE\r\n ]);\r\n \r\n if (action.type === GET_CHAPTER_VERSES_FROM_STORAGE.FAILURE) {\r\n yield put(getChapterVersesFromApiActions.loadChapterVersesFromApi(bibleVersionId, bookId, chapterId));\r\n } else if (action.type === GET_CHAPTER_VERSES_FROM_STORAGE.SUCCESS) {\r\n yield put (chapterVersesActions.getChapterVerses.success('ChapterVerses', action.response));\r\n } \r\n }\r\n}","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { chaptersResourceUrl } from '../Chapters/bookChaptersApi';\r\nimport { verseApiSchemaArray } from './schema';\r\n\r\nexport const VERSES_RESOURCE = 'verses';\r\nexport const chapterVersesResourceUrl = (apiUrl, bookId, chapterId) => `${chaptersResourceUrl(apiUrl, bookId)}/${chapterId}/${VERSES_RESOURCE}`;\r\nconst resourceUrl = (apiUrl, bibleVersionId, bookId, chapterId) => { return `${chapterVersesResourceUrl(apiUrl, bookId, chapterId)}?versionId=${bibleVersionId}` }\r\n\r\n// verses api services\r\nexport const fetchChapterVersesApi = (apiUrl, bibleVersionId, bookId, chapterId) => callApiNormalizedResponse(resourceUrl(apiUrl, bibleVersionId, bookId, chapterId), verseApiSchemaArray);\r\n","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { chapterVersesActions, getChapterVersesFromApiActions, updateVersesStorage, displayDownloadBibleOptions } from '../actions';\r\nimport { fetchChapterVersesApi } from '../chapterVersesApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchChapterVerses = fetchEntity.bind(null, getChapterVersesFromApiActions.getChapterVersesFromApi, fetchChapterVersesApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadVerses(bibleVersionId, bookId, chapterId) {\r\n let apiUrl = yield select(getApiUrl);\r\n \r\n yield call(fetchChapterVerses, apiUrl, bibleVersionId, bookId, chapterId);\r\n}\r\n\r\nexport const watchLoadChapterVersesFromApi = function* () {\r\n const { GET_CHAPTER_VERSES_FROM_API } = getChapterVersesFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId, bookId, chapterId} = yield take(getChapterVersesFromApiActions.LOAD_CHAPTER_VERSES_FROM_API); \r\n yield fork(loadVerses, bibleVersionId, bookId, chapterId);\r\n\r\n const action = yield take([GET_CHAPTER_VERSES_FROM_API.SUCCESS, GET_CHAPTER_VERSES_FROM_API.FAILURE]);\r\n if (action.type === GET_CHAPTER_VERSES_FROM_API.SUCCESS) {\r\n yield put(chapterVersesActions.getChapterVerses.success('ChapterVerses', action.response));\r\n yield put(displayDownloadBibleOptions(bibleVersionId, bookId));\r\n const verses = action.response.entities.verses;\r\n yield put(updateVersesStorage(verses));\r\n } else if (action.type === GET_CHAPTER_VERSES_FROM_API.FAILURE) {\r\n yield put(chapterVersesActions.getChapterVerses.failure());\r\n }\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { UPDATE_VERSES_STORAGE } from '../actions';\r\nimport { addVersesToLocalStoreDb } from '../indexedDbStorage';\r\n\r\nfunction* updateLocalStorage(verses) {\r\n yield call(addVersesToLocalStoreDb.addVersesToLocalStore, verses);\r\n}\r\n\r\nexport const watchUpdateVersesLocalStorage = function* () {\r\n while(true) {\r\n const {verses} = yield take(UPDATE_VERSES_STORAGE);\r\n yield fork(updateLocalStorage, verses);\r\n }\r\n}","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { bibleBooksResourceUrl } from '../Books/api';\r\nimport { VERSES_RESOURCE } from './chapterVersesApi';\r\nimport { verseApiSchemaArray } from './schema';\r\n\r\nexport const bookVersesResourceUrl = (apiUrl, bookId) => `${bibleBooksResourceUrl(apiUrl)}/${bookId}/${VERSES_RESOURCE}`;\r\nconst resourceUrl = (apiUrl, bibleVersionId, bookId) => { return `${bookVersesResourceUrl(apiUrl, bookId)}?versionId=${bibleVersionId}` }\r\n\r\n// verses api services\r\nexport const fetchBookVersesApi = (apiUrl, bibleVersionId, bookId) => callApiNormalizedResponse(resourceUrl(apiUrl, bibleVersionId, bookId), verseApiSchemaArray);","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { bookVersesFromApiActions, updateVersesStorage } from '../actions';\r\nimport { fetchBookVersesApi } from '../bookVersesApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBookVerses = fetchEntity.bind(null, bookVersesFromApiActions.getBookVersesFromApi, fetchBookVersesApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadVerses(bibleVersionId, bookId) {\r\n let apiUrl = yield select(getApiUrl);\r\n \r\n yield call(fetchBookVerses, apiUrl, bibleVersionId, bookId);\r\n}\r\n\r\nexport const watchLoadBookVersesFromApi = function* () {\r\n const { GET_BOOK_VERSES_FROM_API } = bookVersesFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId, bookId} = yield take(bookVersesFromApiActions.LOAD_BOOK_VERSES_FROM_API); \r\n yield fork(loadVerses, bibleVersionId, bookId);\r\n\r\n const action = yield take([GET_BOOK_VERSES_FROM_API.SUCCESS, GET_BOOK_VERSES_FROM_API.FAILURE]);\r\n if (action.type === GET_BOOK_VERSES_FROM_API.SUCCESS) {\r\n const verses = action.response.entities.verses;\r\n yield put(updateVersesStorage(verses));\r\n }\r\n }\r\n}","import { callApiNormalizedResponse } from '../../../services/api';\r\nimport { endpointUrl } from '../../../services/apiHelper';\r\nimport { VERSES_RESOURCE } from './chapterVersesApi';\r\nimport { verseApiSchemaArray } from './schema';\r\n\r\nexport const versesResourceUrl = apiUrl => endpointUrl(apiUrl, VERSES_RESOURCE);\r\nconst resourceUrl = (apiUrl, bibleVersionId) => { return `${versesResourceUrl(apiUrl)}?versionId=${bibleVersionId}` }\r\n\r\n// verses api services\r\nexport const fetchBibleVersesApi = (apiUrl, bibleVersionId) => callApiNormalizedResponse(resourceUrl(apiUrl, bibleVersionId), verseApiSchemaArray);","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { bibleChaptersFromApiActions } from '../../Chapters/actions';\r\nimport { bibleVersesFromApiActions, updateVersesStorage } from '../actions';\r\nimport { fetchBibleVersesApi } from '../bibleVersesApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchBibleVerses = fetchEntity.bind(null, bibleVersesFromApiActions.getBibleVersesFromApi, fetchBibleVersesApi);\r\n\r\nconst getApiUrl = state => state.systemSettings.apiUrl;\r\n\r\nfunction* loadVerses(bibleVersionId) {\r\n let apiUrl = yield select(getApiUrl);\r\n \r\n yield call(fetchBibleVerses, apiUrl, bibleVersionId);\r\n}\r\n\r\nexport const watchLoadBibleVersesFromApi = function* () {\r\n const { GET_BIBLE_VERSES_FROM_API } = bibleVersesFromApiActions;\r\n\r\n while(true) {\r\n const {bibleVersionId} = yield take(bibleVersesFromApiActions.LOAD_BIBLE_VERSES_FROM_API);\r\n yield put(bibleChaptersFromApiActions.loadBibleChaptersFromApi(bibleVersionId)); \r\n yield fork(loadVerses, bibleVersionId);\r\n\r\n const action = yield take([GET_BIBLE_VERSES_FROM_API.SUCCESS, GET_BIBLE_VERSES_FROM_API.FAILURE]);\r\n if (action.type === GET_BIBLE_VERSES_FROM_API.SUCCESS) {\r\n const verses = action.response.entities.verses;\r\n yield put(updateVersesStorage(verses));\r\n }\r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadChapterVerses } from './getVersesSaga';\r\nimport { watchLoadChapterVersesFromStorage } from './getVersesFromStorageSaga';\r\nimport { watchLoadChapterVersesFromApi } from './getVersesFromApiSaga';\r\nimport { watchUpdateVersesLocalStorage } from './updateVersesLocalStorageSaga';\r\nimport { watchLoadBookVersesFromApi } from './getBookVersesFromApiSaga';\r\nimport { watchLoadBibleVersesFromApi } from './getBibleVersesFromApiSaga';\r\n\r\nexport const watchVersesRequests = function*() {\r\n yield all([\r\n fork(watchLoadChapterVerses),\r\n fork(watchLoadChapterVersesFromStorage),\r\n fork(watchLoadChapterVersesFromApi),\r\n fork(watchUpdateVersesLocalStorage),\r\n fork(watchLoadBookVersesFromApi),\r\n fork(watchLoadBibleVersesFromApi) \r\n ])\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadBibleBooks } from './getBooksSaga';\r\nimport { watchLoadBibleBooksFromStorage } from './getBooksFromStorageSaga';\r\nimport { watchLoadBibleBooksFromApi } from './getBooksFromApiSaga';\r\nimport { watchUpdateBibleBooksLocalStorage } from './updateBooksLocalStorageSaga';\r\nimport { watchSetBibleBook } from './setBibleBookSaga';\r\nimport { watchUpdateViewFiltersBibleBookLocalStorage } from './updateViewFiltersBibleBookLocalStoreSaga';\r\nimport { watchLoadViewFiltersBibleBookFromStorage } from './getViewFiltersBibleBookFromStorageSaga';\r\nimport { watchChaptersRequests } from '../../Chapters/sagas';\r\nimport { watchVersesRequests } from '../../Verses/sagas';\r\n\r\nexport const watchBibleBooksRequests = function*() {\r\n yield all([\r\n fork(watchLoadBibleBooks),\r\n fork(watchLoadBibleBooksFromStorage),\r\n fork(watchLoadBibleBooksFromApi),\r\n fork(watchUpdateBibleBooksLocalStorage),\r\n fork(watchSetBibleBook),\r\n fork(watchUpdateViewFiltersBibleBookLocalStorage),\r\n fork(watchLoadViewFiltersBibleBookFromStorage),\r\n fork(watchChaptersRequests),\r\n fork(watchVersesRequests)\r\n ])\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport _ from 'lodash';\r\nimport { SETTINGS_LASTUPDATED_VERSEOFTHEDAYLIST_NAME } from '../../constants';\r\n\r\nexport const saveVerseOfTheDayListToStorage = (verses, currentUtcTime) => {\r\n const versesList = _.values(verses);\r\n indexedDb.verseOfTheDayList.bulkPut(versesList).then(lastKey => {\r\n })\r\n .catch(error => {\r\n });\r\n\r\n indexedDb.settings.put({settingName: SETTINGS_LASTUPDATED_VERSEOFTHEDAYLIST_NAME, lastUpdatedUtcTime: currentUtcTime})\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { normalize } from 'normalizr';\r\nimport { verseOfTheDayStorageSchemaArray } from '../schema';\r\n\r\nconst loadVerseOfTheDayListFromLocalStore = (versionId) => {\r\n return indexedDb.verseOfTheDayList.where('versionId')\r\n .equals(versionId)\r\n .toArray();\r\n}\r\n\r\nexport const fetchVerseOfTheDayListFromStorage = (versionId) => {\r\n return loadVerseOfTheDayListFromLocalStore(versionId)\r\n .then(verses => { \r\n if (verses.length > 0) {\r\n const normalized = normalize(verses, verseOfTheDayStorageSchemaArray);\r\n return {...normalized}\r\n }\r\n else {\r\n //throw new Error('No verses found in local storage!');\r\n }\r\n })\r\n .catch(error => {\r\n //throw error;\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../services/indexedDb';\r\n\r\nconst loadPersonalVerseOfTheDayFromLocalStore = (date) => {\r\n return indexedDb.personalVerseOfTheDay.get(date);\r\n}\r\n\r\nconst loadVerseOfTheDay = (bibleVersionId, verseId) => {\r\n return indexedDb.verseOfTheDayList.get({verseId: verseId, versionId: bibleVersionId});\r\n}\r\n\r\nexport const fetchPersonalVerseOfTheDayByDateFromStorage = (bibleVersionId, date) => {\r\n return loadPersonalVerseOfTheDayFromLocalStore(date)\r\n .then(personalVerseOfTheDay => {\r\n if (personalVerseOfTheDay) {\r\n return loadVerseOfTheDay(bibleVersionId, personalVerseOfTheDay.verseId)\r\n } else {\r\n }\r\n })\r\n .then(verseOfTheDay => {\r\n if (verseOfTheDay) { \r\n const response = { verseOfTheDay };\r\n return { ...response, date }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import { indexedDb } from '../../../services/indexedDb';\r\n\r\nexport const savePersonalVerseOfTheDayToStorage = (date, verseId) => {\r\n indexedDb.personalVerseOfTheDay.put({date: date, verseId: verseId})\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../services/indexedDb';\r\nimport { SETTINGS_LASTUPDATED_VERSEOFTHEDAYLIST_NAME } from '../../constants';\r\n\r\nconst loadLastUpdatedVerseOfTheDayListSettingFromLocalStore = () => {\r\n return indexedDb.settings.get(SETTINGS_LASTUPDATED_VERSEOFTHEDAYLIST_NAME);\r\n}\r\n\r\nexport const fetchLastUpdatedVerseOfTheDayListSettingFromStorage = () => {\r\n return loadLastUpdatedVerseOfTheDayListSettingFromLocalStore()\r\n .then(lastUpdatedSetting => {\r\n if (lastUpdatedSetting) { \r\n const response = {};\r\n return { ...response, lastUpdatedSetting }\r\n } else {\r\n }\r\n })\r\n .catch(error => {\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n ); \r\n}","import * as _saveVerseOfTheDayListToStorageService from './saveVerseOfTheDayListToStorageService';\r\nimport * as _fetchVerseOfTheDayListFromStorageService from './fetchVerseOfTheDayListFromStorageService';\r\nimport * as _fetchPersonalVerseOfTheDayByDateFromStorageService from './fetchPersonalVerseOfTheDayByDateFromStorageService';\r\nimport * as _savePersonalVerseOfTheDayToStorageService from './savePersonalVerseOfTheDayToStorageService';\r\nimport * as _fetchLastUpdatedVerseOfTheDayListSettingFromStorageService from './fetchLastUpdatedVerseOfTheDayListSettingFromStorageService';\r\n\r\nexport const saveVerseOfTheDayListToStorageService = _saveVerseOfTheDayListToStorageService;\r\nexport const fetchVerseOfTheDayListFromStorageService = _fetchVerseOfTheDayListFromStorageService;\r\nexport const fetchPersonalVerseOfTheDayByDateFromStorageService = _fetchPersonalVerseOfTheDayByDateFromStorageService;\r\nexport const savePersonalVerseOfTheDayToStorageService = _savePersonalVerseOfTheDayToStorageService;\r\nexport const fetchLastUpdatedVerseOfTheDayListSettingFromStorageService = _fetchLastUpdatedVerseOfTheDayListSettingFromStorageService;","import { take, call, fork } from 'redux-saga/effects';\r\nimport { verseOfTheDayActions } from '../actions';\r\nimport { fetchPersonalVerseOfTheDayByDateFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchPersonalVerseOfTheDayFromStorage = fetchEntity.bind(null, verseOfTheDayActions.getPersonalVerseOfTheDayFromStorage, fetchPersonalVerseOfTheDayByDateFromStorageService.fetchPersonalVerseOfTheDayByDateFromStorage);\r\n\r\nfunction* loadPersonalVerseOfTheDay(bibleVersionId, date) {\r\n yield call(fetchPersonalVerseOfTheDayFromStorage, bibleVersionId, date); \r\n}\r\n\r\nexport const watchLoadPersonalVerseOfTheDayFromStorage = function* () {\r\n const { LOAD_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE, GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE } = verseOfTheDayActions;\r\n \r\n while(true) {\r\n const {bibleVersionId, date} = yield take(LOAD_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE);\r\n yield fork(loadPersonalVerseOfTheDay, bibleVersionId, date);\r\n \r\n const action = yield take([\r\n GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.SUCCESS, \r\n GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE\r\n ]);\r\n \r\n if (action.type === GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE) { \r\n } \r\n }\r\n}","import { take, put } from 'redux-saga/effects';\r\nimport { entityListActions } from '../../../common/entities/actions';\r\nimport * as entitiesNames from '../../../common/entities/constants';\r\nimport { verseOfTheDayActions } from '../actions';\r\nimport { getCurrentDate } from '../../../utils/dateHelper';\r\n\r\nexport const watchGetVerseOfTheDay = function* () {\r\n const { GET_ENTITY_LIST } = entityListActions;\r\n const { GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE } = verseOfTheDayActions; \r\n\r\n while(true) {\r\n const {bibleVersionId} = yield take(verseOfTheDayActions.GET_VERSEOFTHEDAY);\r\n yield put(entityListActions.getEntityList.request(entitiesNames.VERSEOFTHEDAY, {versionId: bibleVersionId})); \r\n \r\n const action = yield take([GET_ENTITY_LIST(entitiesNames.VERSEOFTHEDAY).SUCCESS, GET_ENTITY_LIST(entitiesNames.VERSEOFTHEDAY).FAILURE]);\r\n if (action.type === GET_ENTITY_LIST(entitiesNames.VERSEOFTHEDAY).SUCCESS) {\r\n let currentDate = getCurrentDate();\r\n yield put(verseOfTheDayActions.loadPersonalVerseOfTheDayFromStorage(bibleVersionId, currentDate));\r\n\r\n const action = yield take([GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.SUCCESS, GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE]);\r\n if (action.type === GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE) {\r\n yield put(verseOfTheDayActions.generateVerseOfTheDay.request(currentDate)); \r\n } \r\n }\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { verseOfTheDayListStorageActions } from '../actions';\r\nimport { saveVerseOfTheDayListToStorageService } from '../indexedDbStorage';\r\n\r\nfunction* updateStorage(verses, currentUtcTime) {\r\n yield call(saveVerseOfTheDayListToStorageService.saveVerseOfTheDayListToStorage, verses, currentUtcTime);\r\n}\r\n\r\nexport const watchSaveVerseOfTheDayListToStorage = function* () {\r\n while(true) {\r\n const {entityList, currentUtcTime} = yield take(verseOfTheDayListStorageActions.SAVE_VERSEOFTHEDAY_LIST_TO_STORAGE);\r\n if (entityList) {\r\n yield fork(updateStorage, entityList, currentUtcTime);\r\n } \r\n }\r\n}","import { take, fork, select, put } from 'redux-saga/effects';\r\nimport { verseOfTheDayActions } from '../actions';\r\nimport _ from 'lodash';\r\n\r\nconst getVerseOfTheDayList = (state) => _.values(state.entities.verseOfTheDay);\r\n\r\nfunction getRndInteger(min, max) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n return Math.floor(Math.random() * (max - min + 1) ) + min;\r\n }\r\n\r\nfunction* generateVerseOfTheDay(date) {\r\n let verseOfTheDayList = yield select(getVerseOfTheDayList);\r\n\r\n let verseIndex = getRndInteger(0, verseOfTheDayList.length - 1);\r\n let verseOfTheDay = verseOfTheDayList[verseIndex];\r\n\r\n if (verseOfTheDay) { \r\n yield put(verseOfTheDayActions.savePersonalVerseOfTheDayToStorage(date, verseOfTheDay.verseId));\r\n let response = { verseOfTheDay };\r\n response = { ...response, date }\r\n yield put(verseOfTheDayActions.generateVerseOfTheDay.success(verseOfTheDay.verseVersionId, response));\r\n //sync to server \r\n }\r\n else {\r\n yield put(verseOfTheDayActions.generateVerseOfTheDay.failure(null, { error: 'Error encountered while generating verse of the day!' }))\r\n } \r\n}\r\n\r\nexport const watchGenerateVerseOfTheDay = function* () {\r\n while(true) {\r\n const {date} = yield take(verseOfTheDayActions.GENERATE_VERSEOFTHEDAY.REQUEST);\r\n yield fork(generateVerseOfTheDay, date); \r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { verseOfTheDayActions } from '../actions';\r\nimport { savePersonalVerseOfTheDayToStorageService } from '../indexedDbStorage';\r\n\r\nfunction* updateStorage(date, verseId) {\r\n yield call(savePersonalVerseOfTheDayToStorageService.savePersonalVerseOfTheDayToStorage, date, verseId);\r\n}\r\n\r\nexport const watchSavePersonalVerseOfTheDayToStorage = function* () {\r\n while(true) {\r\n const {date, verseId} = yield take(verseOfTheDayActions.SAVE_PERSONAL_VERSEOFTHEDAY_TO_STORAGE);\r\n yield fork(updateStorage, date, verseId);\r\n }\r\n}","import { take, put } from 'redux-saga/effects';\r\nimport * as bibleVersionsActions from '../../Bible/Versions/actions';\r\nimport { verseOfTheDayActions } from '../actions';\r\nimport { ROUTES_VERSEOFTHEDAY_PATHNAME } from '../../../constants';\r\n\r\nexport const watchSetVerseOfTheDayVersion = function* () {\r\n while(true) {\r\n const {versionId} = yield take(bibleVersionsActions.SET_BIBLE_VERSION);\r\n if (window.location.pathname === ROUTES_VERSEOFTHEDAY_PATHNAME) { \r\n yield put(verseOfTheDayActions.getVerseOfTheDay(versionId));\r\n } \r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadPersonalVerseOfTheDayFromStorage } from './getPersonalVerseOfTheDayFromStorageSaga';\r\nimport { watchGetVerseOfTheDay } from './getVerseOfTheDaySaga';\r\n//import { watchGetVerseOfTheDayList } from './getVerseOfTheDayListSaga';\r\n//import { watchLoadVerseOfTheDayListFromStorage } from './getVerseOfTheDayListFromStorageSaga';\r\n//import { watchLoadVerseOfTheDayListFromApi } from './getVerseOfTheDayListFromApiSaga';\r\n//import { watchLoadUpdatedVerseOfTheDayListFromApi } from './getUpdatedVerseOfTheDayListFromApiSaga';\r\nimport { watchSaveVerseOfTheDayListToStorage } from './saveVerseOfTheDayListToStorageSaga';\r\nimport { watchGenerateVerseOfTheDay } from './generateVerseOfTheDaySaga';\r\nimport { watchSavePersonalVerseOfTheDayToStorage } from './savePersonalVerseOfTheDayToStorageSaga';\r\nimport { watchSetVerseOfTheDayVersion } from './setVerseOfTheDayVersionSaga';\r\n\r\nexport const watchVerseOfTheDayRequests = function*() {\r\n yield all([\r\n fork(watchGetVerseOfTheDay),\r\n //fork(watchGetVerseOfTheDayList),\r\n //fork(watchLoadVerseOfTheDayListFromStorage),\r\n //fork(watchLoadVerseOfTheDayListFromApi),\r\n //fork(watchLoadUpdatedVerseOfTheDayListFromApi),\r\n fork(watchLoadPersonalVerseOfTheDayFromStorage),\r\n fork(watchSaveVerseOfTheDayListToStorage),\r\n fork(watchGenerateVerseOfTheDay),\r\n fork(watchSavePersonalVerseOfTheDayToStorage),\r\n fork(watchSetVerseOfTheDayVersion) \r\n ])\r\n}","import { take, call, fork, put } from 'redux-saga/effects';\r\nimport { loginActions, signedInUsersStorageActions } from '../actions';\r\nimport { fetchSubmitLoginRequestApi } from '../api/loginApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchSubmitLoginRequest = fetchEntity.bind(null, loginActions.login, fetchSubmitLoginRequestApi);\r\n\r\nfunction* submitLoginRequest(encodedCredentials) {\r\n yield call(fetchSubmitLoginRequest, encodedCredentials);\r\n}\r\n\r\nexport const watchSubmitLoginRequest = function* () {\r\n while(true) {\r\n const {encodedCredentials, shouldRememberUser} = yield take(loginActions.SUBMIT_LOGIN_REQUEST);\r\n yield fork(submitLoginRequest, encodedCredentials);\r\n\r\n const action = yield take([loginActions.LOGIN.SUCCESS, loginActions.LOGIN.FAILURE]);\r\n if (action.type === loginActions.LOGIN.SUCCESS) {\r\n if (shouldRememberUser) {\r\n yield put(signedInUsersStorageActions.saveUserToStorage(action.response));\r\n }\r\n \r\n window.history.back(); \r\n }\r\n }\r\n}","import { callApi, API_POST } from '../../../../services/api';\r\nimport { tokenResourceUrl } from '../../../../services/apiResources';\r\n\r\n// login api service\r\nexport const fetchSubmitLoginRequestApi = (encodedCredentials) => callApi(tokenResourceUrl(), API_POST, encodedCredentials);","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { USER_SETTINGS_SIGNEDIN_USERS } from '../../../constants';\r\n\r\nexport const deleteUserFromStorage = (userId) => {\r\n indexedDb.userSettings\r\n .delete([USER_SETTINGS_SIGNEDIN_USERS, userId])\r\n .catch(error => {\r\n });\r\n}","import * as _deleteUserFromStorageService from './deleteUserFromStorageService';\r\n\r\nexport const deleteUserFromStorageService = _deleteUserFromStorageService;","import { take, fork, call, put } from 'redux-saga/effects';\r\nimport _ from 'lodash';\r\nimport { autoSignInActions, signedInUsersStorageActions } from '../actions';\r\nimport { fetchSubmitAutoSignInRequestApi } from '../api/autoSignInApi';\r\nimport { deleteUserFromStorageService } from '../../SignOut/indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\nimport { setToken } from '../../../../services/api';\r\nimport { getCurrentDateTimeLt } from '../../../../utils/dateHelper';\r\n\r\n// bind Generators\r\nconst fetchSubmitAutoSignInRequest = fetchEntity.bind(null, autoSignInActions.autoSignIn, fetchSubmitAutoSignInRequestApi);\r\n\r\nconst { AUTOSIGNIN } = autoSignInActions;\r\n\r\nfunction* submitAutoSignInRequest(userId) {\r\n const loginDateTimeLt = getCurrentDateTimeLt(); \r\n yield fork(fetchSubmitAutoSignInRequest, JSON.stringify({currentDateTimeLt: loginDateTimeLt}));\r\n\r\n const action = yield take([AUTOSIGNIN.SUCCESS, AUTOSIGNIN.FAILURE]);\r\n if (action.type === AUTOSIGNIN.SUCCESS) {\r\n yield put(signedInUsersStorageActions.saveUserToStorage(action.response))\r\n } else if (action.type === AUTOSIGNIN.FAILURE) {\r\n yield call(deleteUserFromStorageService.deleteUserFromStorage, userId);\r\n setToken(null); \r\n }\r\n}\r\n\r\nexport const watchSubmitAutoSignInRequest = function* () {\r\n const { GET_SIGNEDIN_USERS_FROM_STORAGE } = signedInUsersStorageActions;\r\n\r\n while(true) {\r\n yield take(autoSignInActions.SUBMIT_AUTOSIGNIN_REQUEST);\r\n yield put(signedInUsersStorageActions.loadSignedInUsersFromStorage());\r\n\r\n const action = yield take([GET_SIGNEDIN_USERS_FROM_STORAGE.SUCCESS, GET_SIGNEDIN_USERS_FROM_STORAGE.FAILURE]);\r\n if (action.type === GET_SIGNEDIN_USERS_FROM_STORAGE.SUCCESS) {\r\n const signedInUsers = _.values(action.response);\r\n if (signedInUsers.length === 1) {\r\n const signedInUser = signedInUsers[0];\r\n setToken(signedInUser.token);\r\n yield fork(submitAutoSignInRequest, signedInUser.userId);\r\n } else { \r\n }\r\n }\r\n }\r\n}","import { callApi, API_POST } from '../../../../services/api';\r\nimport { autoSignInResourceUrl } from '../../../../services/apiResources';\r\n\r\n// autosignin api service\r\nexport const fetchSubmitAutoSignInRequestApi = loginDateTimeLt => callApi(autoSignInResourceUrl(), API_POST, loginDateTimeLt);","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { USER_SETTINGS_SIGNEDIN_USERS } from '../../../constants';\r\n\r\nexport const saveUserToStorage = (userId, displayName, token) => {\r\n indexedDb.userSettings\r\n .put({\r\n settingName: USER_SETTINGS_SIGNEDIN_USERS,\r\n userId: userId,\r\n displayName: displayName,\r\n token: token\r\n })\r\n .catch(error => {\r\n });\r\n}","import { indexedDb } from '../../../../services/indexedDb';\r\nimport { USER_SETTINGS_SIGNEDIN_USERS } from '../../../constants';\r\n\r\nconst loadSignedInUsersFromLocalStore = () => {\r\n return indexedDb.userSettings.where('settingName')\r\n .equals(USER_SETTINGS_SIGNEDIN_USERS)\r\n .toArray();\r\n}\r\n\r\nexport const fetchSignedInUsersFromStorage = () => {\r\n return loadSignedInUsersFromLocalStore()\r\n .then(signedInUsers => { \r\n if (signedInUsers.length > 0) {\r\n return {...signedInUsers}\r\n }\r\n else {\r\n //throw new Error('No verses found in local storage!');\r\n }\r\n })\r\n .catch(error => {\r\n //throw error;\r\n })\r\n .then(\r\n response => ({ response }),\r\n error => ({ error: error.message })\r\n );\r\n}","import * as _saveUserToStorageService from './saveUserToStorageService';\r\nimport * as _fetchSignedInUsersFromStorageService from './fetchSignedInUsersFromStorageService';\r\n\r\nexport const saveUserToStorageService = _saveUserToStorageService;\r\nexport const fetchSignedInUsersFromStorageService = _fetchSignedInUsersFromStorageService;","import { take, call } from 'redux-saga/effects';\r\nimport { signedInUsersStorageActions } from '../actions';\r\nimport { fetchSignedInUsersFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchSignedInUsersFromStorage = fetchEntity.bind(null, signedInUsersStorageActions.getSignedInUsersFromStorage, fetchSignedInUsersFromStorageService.fetchSignedInUsersFromStorage);\r\n\r\nexport const watchLoadSignedInUsersFromStorage = function* () {\r\n while(true) {\r\n yield take(signedInUsersStorageActions.LOAD_SIGNEDIN_USERS_FROM_STORAGE);\r\n yield call(fetchSignedInUsersFromStorage);\r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { signedInUsersStorageActions } from '../actions';\r\nimport { saveUserToStorageService } from '../indexedDbStorage';\r\n\r\nfunction* updateStorage(userId, displayName, encodedToken) {\r\n yield call(saveUserToStorageService.saveUserToStorage, userId, displayName, encodedToken);\r\n}\r\n\r\nexport const watchSaveUserToStorage = function* () {\r\n while(true) {\r\n const {loggedInUser} = yield take(signedInUsersStorageActions.SAVE_USER_TO_STORAGE);\r\n if (loggedInUser) {\r\n yield fork(updateStorage, loggedInUser.userId, loggedInUser.displayName, loggedInUser.encodedToken);\r\n } \r\n }\r\n}","import { take, call, fork } from 'redux-saga/effects';\r\nimport { registerActions } from '../actions';\r\nimport { fetchSubmitRegisterRequestApi } from '../api/registerApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchSubmitRegisterRequest = fetchEntity.bind(null, registerActions.register, fetchSubmitRegisterRequestApi);\r\n\r\nfunction* submitRegisterRequest(newUser) {\r\n yield call(fetchSubmitRegisterRequest, newUser);\r\n}\r\n\r\nexport const watchSubmitRegisterRequest = function* () {\r\n while(true) {\r\n const {newUser} = yield take(registerActions.SUBMIT_REGISTER_REQUEST);\r\n yield fork(submitRegisterRequest, newUser);\r\n\r\n const action = yield take([registerActions.REGISTER.SUCCESS, registerActions.REGISTER.FAILURE]);\r\n if (action.type === registerActions.REGISTER.SUCCESS) {\r\n window.history.back();\r\n }\r\n }\r\n}","import { callApi, API_POST } from '../../../../services/api';\r\nimport { usersResourceUrl } from '../../../../services/apiResources';\r\n\r\n// register api service\r\nexport const fetchSubmitRegisterRequestApi = newUser => callApi(usersResourceUrl(), API_POST, newUser);","import { take, call, fork } from 'redux-saga/effects';\r\nimport { updateUserInfoActions } from '../actions';\r\nimport { fetchSubmitUpdateUserInfoRequestApi } from '../api/updateUserInfoApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchSubmitUpdateUserInfoRequest = fetchEntity.bind(null, updateUserInfoActions.updateUserInfo, fetchSubmitUpdateUserInfoRequestApi);\r\n\r\nfunction* submitUpdateUserInfoRequest(userId, modifiedUser) {\r\n yield call(fetchSubmitUpdateUserInfoRequest, userId, modifiedUser);\r\n}\r\n\r\nexport const watchSubmitUpdateUserInfoRequest = function* () {\r\n const { UPDATE_USER_INFO } = updateUserInfoActions;\r\n\r\n while(true) {\r\n const {userId, modifiedUser} = yield take(updateUserInfoActions.SUBMIT_UPDATE_USER_INFO_REQUEST);\r\n yield fork(submitUpdateUserInfoRequest, userId, modifiedUser);\r\n\r\n const action = yield take([UPDATE_USER_INFO.SUCCESS, UPDATE_USER_INFO.FAILURE]);\r\n if (action.type === UPDATE_USER_INFO.SUCCESS) {\r\n window.history.back();\r\n }\r\n }\r\n}","import { callApi, API_PUT } from '../../../../services/api';\r\nimport { updateUserInfoUrl } from '../../../../services/apiResources';\r\n\r\n// updateUserInfo api service\r\nexport const fetchSubmitUpdateUserInfoRequestApi = (userId, modifiedUser) => callApi(updateUserInfoUrl(userId), API_PUT, modifiedUser);","import { take, call, fork } from 'redux-saga/effects';\r\nimport { signOutActions } from '../actions';\r\nimport { deleteUserFromStorageService } from '../indexedDbStorage';\r\nimport * as Routes from '../../../../constants';\r\n\r\nfunction* updateStorage(userId) {\r\n yield call(deleteUserFromStorageService.deleteUserFromStorage, userId);\r\n}\r\n\r\nexport const watchSignOutRequest = function* () {\r\n while(true) {\r\n const {userId} = yield take(signOutActions.SIGNOUT_USER);\r\n yield fork(updateStorage, userId);\r\n\r\n if (window.location.pathname === Routes.ROUTES_UPDATE_USER_INFO_PATHNAME) {\r\n window.history.back();\r\n }\r\n }\r\n}","import { take, fork, call, put } from 'redux-saga/effects';\r\nimport { changePasswordActions } from '../actions';\r\nimport { fetchSubmitChangePasswordRequestApi } from '../api/changePasswordApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\nimport { setAlertMessage } from '../../../../actions';\r\nimport { ALERT_TYPE_SUCCESS } from '../../../../constants';\r\n\r\n// bind Generators\r\nconst fetchSubmitChangePasswordRequest = fetchEntity.bind(null, changePasswordActions.changePassword, fetchSubmitChangePasswordRequestApi);\r\n\r\nfunction* submitChangePassword(encodedCredentials) {\r\n yield call(fetchSubmitChangePasswordRequest, encodedCredentials);\r\n}\r\n\r\nexport const watchSubmitChangePasswordRequest = function* () {\r\n const { CHANGE_PASSWORD } = changePasswordActions;\r\n\r\n while(true) {\r\n const {encodedCredentials} = yield take(changePasswordActions.SUBMIT_CHANGE_PASSWORD_REQUEST);\r\n yield fork(submitChangePassword, encodedCredentials);\r\n\r\n const action = yield take([CHANGE_PASSWORD.SUCCESS, CHANGE_PASSWORD.FAILURE]);\r\n if (action.type === CHANGE_PASSWORD.SUCCESS) {\r\n yield put(setAlertMessage(ALERT_TYPE_SUCCESS, 'Password changed successfully!')); \r\n }\r\n }\r\n}","import { callApi, API_POST } from '../../../../services/api';\r\nimport { changePasswordUrl } from '../../../../services/apiResources';\r\n\r\n// change password api service\r\nexport const fetchSubmitChangePasswordRequestApi = encodedCredentials => callApi(changePasswordUrl(), API_POST, encodedCredentials);","import { take, fork, call, put } from 'redux-saga/effects';\r\nimport { forgotPasswordActions } from '../actions';\r\nimport { fetchSubmitForgotPasswordRequestApi } from '../api/forgotPasswordApi';\r\nimport { fetchEntity } from '../../../../sagas/sagaHelper';\r\nimport { setAlertMessage } from '../../../../actions';\r\nimport { ALERT_TYPE_SUCCESS } from '../../../../constants';\r\n\r\n// bind Generators\r\nconst fetchSubmitForgotPasswordRequest = fetchEntity.bind(null, forgotPasswordActions.forgotPassword, fetchSubmitForgotPasswordRequestApi);\r\n\r\nfunction* submitForgotPassword(encodedCredentials) {\r\n yield call(fetchSubmitForgotPasswordRequest, encodedCredentials);\r\n}\r\n\r\nexport const watchSubmitForgotPasswordRequest = function* () {\r\n const { FORGOT_PASSWORD } = forgotPasswordActions;\r\n\r\n while(true) {\r\n const {encodedCredentials} = yield take(forgotPasswordActions.SUBMIT_FORGOT_PASSWORD_REQUEST);\r\n yield fork(submitForgotPassword, encodedCredentials);\r\n\r\n const action = yield take([FORGOT_PASSWORD.SUCCESS, FORGOT_PASSWORD.FAILURE]);\r\n if (action.type === FORGOT_PASSWORD.SUCCESS) { \r\n yield put(setAlertMessage(ALERT_TYPE_SUCCESS, 'An email has been sent to email account on file!')); \r\n window.history.back(); \r\n }\r\n }\r\n}","import { callApi, API_POST } from '../../../../services/api';\r\nimport { forgotPasswordUrl } from '../../../../services/apiResources';\r\n\r\n// change password api service\r\nexport const fetchSubmitForgotPasswordRequestApi = encodedCredentials => callApi(forgotPasswordUrl(), API_POST, encodedCredentials);","import { fork, all, put } from 'redux-saga/effects';\r\nimport { watchSubmitLoginRequest } from '../Login/sagas/loginSaga';\r\nimport { watchSubmitAutoSignInRequest } from '../Login/sagas/autoSignInSaga';\r\nimport { watchLoadSignedInUsersFromStorage } from '../Login/sagas/getSignedInUsersFromStorageSaga';\r\nimport { watchSaveUserToStorage } from '../Login/sagas/saveUserToStorageSaga';\r\nimport { watchSubmitRegisterRequest } from '../Register/sagas/registerSaga';\r\nimport { watchSubmitUpdateUserInfoRequest } from '../UpdateUserInfo/sagas/updateUserInfoSaga';\r\nimport { watchSignOutRequest } from '../SignOut/sagas/signOutSaga';\r\nimport { watchSubmitChangePasswordRequest } from '../ChangePassword/sagas/changePasswordSaga';\r\nimport { watchSubmitForgotPasswordRequest } from '../ForgotPassword/sagas/forgotPasswordSaga';\r\nimport { autoSignInActions } from '../Login/actions';\r\n\r\nconst { submitAutoSignInRequest } = autoSignInActions;\r\n\r\nexport const watchAuthRequests = function*() {\r\n yield all([\r\n fork(watchSubmitLoginRequest),\r\n fork(watchSubmitAutoSignInRequest),\r\n fork(watchSubmitRegisterRequest),\r\n fork(watchSubmitUpdateUserInfoRequest), \r\n fork(watchSignOutRequest),\r\n fork(watchLoadSignedInUsersFromStorage),\r\n fork(watchSaveUserToStorage),\r\n fork(watchSubmitChangePasswordRequest),\r\n fork(watchSubmitForgotPasswordRequest),\r\n put(submitAutoSignInRequest()), \r\n ])\r\n}","import { callApi, callApiNormalizedResponse, API_POST } from '../../../services/api';\r\nimport { entitiesResourceUrl } from '../../../services/apiResources';\r\nimport { entityByName } from '../metadata';\r\n\r\n// entities api service\r\nexport const fetchSubmitAddEntityRequestApi = (entityName, payload) => {\r\n let apiTableName = entityName;\r\n const entity = entityByName(entityName);\r\n if (entity && entity.apiTableName) {\r\n apiTableName = entity.apiTableName;\r\n }\r\n return callApi(entitiesResourceUrl(apiTableName), API_POST, payload)\r\n};\r\n\r\n\r\nexport const fetchEntityListApi = (entityName, filter) => callApi(entitiesResourceUrl(entityName, filter));\r\nexport const fetchNormalizedEntityListApi = (entityName, filter, entitySchemaArray) => callApiNormalizedResponse(entitiesResourceUrl(entityName, filter), entitySchemaArray);","import { take, call, fork, select, put } from 'redux-saga/effects';\r\nimport { addEntityActions, syncEntityListToTheCloud } from '../actions';\r\nimport { entityByName } from '../metadata';\r\nimport { fetchAddEntityToStorage } from '../indexedDbStorage/fetchAddEntityToStorageService';\r\nimport { fetchSubmitAddEntityRequestApi } from '../api/entitiesApi';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchSubmitAddEntityToStorageRequest = fetchEntity.bind(null, addEntityActions.addEntityStorage, fetchAddEntityToStorage);\r\nconst fetchSubmitAddEntityApiRequest = fetchEntity.bind(null, addEntityActions.addEntityApi, fetchSubmitAddEntityRequestApi);\r\n\r\nconst getLoggedinUser = state => state.loggedinUser;\r\n\r\nfunction* submitAddEntityApiRequest(entityName, payload) {\r\n yield call(fetchSubmitAddEntityApiRequest, entityName, JSON.stringify(payload));\r\n}\r\n\r\nfunction* submitAddEntityStorageRequest(entityName, payload) {\r\n yield call(fetchSubmitAddEntityToStorageRequest, entityName, payload);\r\n}\r\n\r\nexport const watchAddEntity = function* (entityName) {\r\n const ADD_ENTITY_STORAGE = addEntityActions.ADD_ENTITY_STORAGE(entityName);\r\n const ADD_ENTITY_API = addEntityActions.ADD_ENTITY_API(entityName); \r\n\r\n while(true) {\r\n const {payload} = yield take(addEntityActions.ADD_ENTITY_ACTION_TYPE(entityName));\r\n\r\n let loggedinUser = yield select(getLoggedinUser);\r\n const entity = entityByName(entityName);\r\n\r\n var entityData = payload;\r\n\r\n/* if (loggedinUser) {\r\n yield fork(submitAddEntityApiRequest, entityName, entity.addApiData(payload));\r\n\r\n const action = yield take([ADD_ENTITY_API.SUCCESS, ADD_ENTITY_API.FAILURE]);\r\n if (action.type === ADD_ENTITY_API.SUCCESS) {\r\n entityData = {...entityData, ...action.response};\r\n }\r\n } */ \r\n\r\n yield fork(submitAddEntityStorageRequest, entityName, entityData);\r\n\r\n const action = yield take([ADD_ENTITY_STORAGE.SUCCESS, ADD_ENTITY_STORAGE.FAILURE]);\r\n if (action.type === ADD_ENTITY_STORAGE.SUCCESS && loggedinUser) {\r\n yield put(syncEntityListToTheCloud(entityName));\r\n }\r\n \r\n //yield put(addEntityActions.addEntityApi.request(entityName, payload)); \r\n\r\n // save to storage using service or saga - ensure it includes datetime\r\n // put api request\r\n // it's possible api would fail and it would resync later\r\n\r\n // yield put(appVersionActions.validateAppVersion());\r\n // yield put(verseOfTheDayListActions.getVerseOfTheDayList.request(bibleVersionId)); \r\n \r\n // const action = yield take([GET_VERSEOFTHEDAY_LIST.SUCCESS, GET_VERSEOFTHEDAY_LIST.FAILURE]);\r\n // if (action.type === GET_VERSEOFTHEDAY_LIST.SUCCESS) {\r\n // let currentDate = getCurrentDate();\r\n // yield put(verseOfTheDayActions.loadPersonalVerseOfTheDayFromStorage(bibleVersionId, currentDate));\r\n\r\n // const action = yield take([GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.SUCCESS, GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE]);\r\n // if (action.type === GET_PERSONAL_VERSEOFTHEDAY_FROM_STORAGE.FAILURE) {\r\n // yield put(verseOfTheDayActions.generateVerseOfTheDay.request(currentDate)); \r\n // } \r\n // }\r\n }\r\n}\r\n","import { take, put, select } from 'redux-saga/effects';\r\nimport { entityByName } from '../metadata';\r\nimport { entityListActions, entityListStorageActions, syncEntityListFromTheCloud } from '../actions';\r\n\r\nconst getLoggedinUser = state => state.loggedinUser;\r\n\r\nexport const watchGetEntityList = function* (entityName) {\r\n const GET_ENTITY_LIST = entityListActions.GET_ENTITY_LIST(entityName);\r\n const GET_ENTITY_LIST_FROM_STORAGE = entityListStorageActions.GET_ENTITY_LIST_FROM_STORAGE(entityName);\r\n const entity = entityByName(entityName);\r\n\r\n while(true) {\r\n const {type, ...filter} = yield take(GET_ENTITY_LIST.REQUEST);\r\n yield put(entityListStorageActions.loadEntityListFromStorage(entityName, filter));\r\n\r\n const action = yield take([\r\n GET_ENTITY_LIST_FROM_STORAGE.SUCCESS, \r\n GET_ENTITY_LIST_FROM_STORAGE.FAILURE\r\n ]);\r\n\r\n if (action.type === GET_ENTITY_LIST_FROM_STORAGE.FAILURE) {\r\n //yield put(entityListApiActions.loadEntityListFromApi(entityName, filter)); \r\n } else if (action.type === GET_ENTITY_LIST_FROM_STORAGE.SUCCESS) {\r\n yield put(entityListActions.getEntityList.success(entityName, action.response));\r\n //yield put(lastUpdatedEntityListSettingStorageActions.loadEntityListLastUpdatedSettingFromStorage(entityName, filter)); \r\n }\r\n \r\n let loggedinUser = yield select(getLoggedinUser);\r\n if (entity.isGetEntitiesUserAuthenticationRequired == null || \r\n !entity.isGetEntitiesUserAuthenticationRequired || \r\n (entity.isGetEntitiesUserAuthenticationRequired && loggedinUser)) {\r\n yield put(syncEntityListFromTheCloud(entityName, filter));\r\n } \r\n }\r\n}","import { take, fork, call } from 'redux-saga/effects';\r\n//import { entityByName } from '../metadata';\r\nimport { entityListStorageActions } from '../actions';\r\nimport { fetchEntityListFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchEntityListFromStorage = fetchEntity.bind(null, entityListStorageActions.getEntityListFromStorage, fetchEntityListFromStorageService.fetchEntityListFromStorage);\r\n\r\nfunction* loadEntities(entityName, filter) {\r\n yield call(fetchEntityListFromStorage, entityName, filter); \r\n}\r\n\r\nexport const watchLoadEntityListFromStorage = function* (entityName) {\r\n while(true) {\r\n const {type, ...filter} = yield take(entityListStorageActions.LOAD_ENTITY_LIST_FROM_STORAGE(entityName));\r\n yield fork(loadEntities, entityName, filter); \r\n }\r\n}","import { take, fork, call, put, select } from 'redux-saga/effects';\r\nimport { entityByName } from '../metadata';\r\nimport { lastUpdatedEntityListSettingStorageActions, entityListApiActions } from '../actions';\r\nimport { fetchLastUpdatedEntityListSettingFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchLastUpdatedEntityListSettingFromStorage = fetchEntity.bind(null, lastUpdatedEntityListSettingStorageActions.getLastUpdatedEntityListSettingFromStorage, fetchLastUpdatedEntityListSettingFromStorageService.fetchLastUpdatedEntityListSettingFromStorage);\r\n\r\nconst getVersionId = state => state.bibleVersion.id;\r\n\r\nfunction* loadLastUpdatedEntityListSetting(entityName) {\r\n const entity = entityByName(entityName);\r\n let versionId = entity.filterByVersionId ? yield select(getVersionId) : null;\r\n yield call(fetchLastUpdatedEntityListSettingFromStorage, entityName, versionId); \r\n}\r\n\r\nexport const watchLoadLastUpdatedEntityListSettingFromStorage = function* (entityName) {\r\n const { GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE } = lastUpdatedEntityListSettingStorageActions;\r\n\r\n while(true) {\r\n const {type, ...filter} = yield take(lastUpdatedEntityListSettingStorageActions.LOAD_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName));\r\n yield fork(loadLastUpdatedEntityListSetting, entityName);\r\n \r\n const action = yield take([\r\n GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).SUCCESS, \r\n GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).FAILURE\r\n ]);\r\n\r\n if (action.type === GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).SUCCESS) {\r\n const lastUpdatedEntityListSetting = action.response.lastUpdatedSetting;\r\n let lastUpdatedUtcTime = lastUpdatedEntityListSetting.lastUpdatedUtcTime;\r\n lastUpdatedUtcTime = lastUpdatedUtcTime.substr(0, 19);\r\n yield put(entityListApiActions.loadUpdatedEntityListFromApi(entityName, filter, lastUpdatedUtcTime)); \r\n } else if (action.type === GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName).FAILURE) {\r\n yield put(entityListApiActions.loadEntityListFromApi(entityName, filter)); \r\n }\r\n }\r\n}","import { take, call, fork, put, } from 'redux-saga/effects';\r\nimport { entityByName, apiEntityResourceName } from '../metadata';\r\nimport { entityListActions, entityListApiActions, entityListStorageActions } from '../actions';\r\nimport { fetchEntityListApi, fetchNormalizedEntityListApi } from '../api/entitiesApi';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchEntityList = fetchEntity.bind(null, entityListApiActions.getEntityListFromApi, fetchEntityListApi);\r\nconst fetchNormalizedEntityList = fetchEntity.bind(null, entityListApiActions.getEntityListFromApi, fetchNormalizedEntityListApi);\r\n\r\nfunction* loadEntities(entityName, filter) {\r\n const apiResourceName = apiEntityResourceName(entityName);\r\n const entity = entityByName(entityName);\r\n \r\n entity.getEntityListFromApi\r\n ? yield call(entity.getEntityListFromApi, filter)\r\n : entity.shouldNormalizeApiResponse\r\n ? yield call(fetchNormalizedEntityList, apiResourceName, filter, entity.apiSchemaArray)\r\n : yield call(fetchEntityList, apiResourceName, filter);\r\n}\r\n\r\nfunction* saveEntitiesToStorage(entityName, apiResponse) {\r\n const currentUtcTime = apiResponse.result ? apiResponse.result.currentUtcTime : apiResponse.currentUtcTime;\r\n const entity = entityByName(entityName);\r\n let entityList = null;\r\n if (entity) {\r\n entityList = entity.getEntityListFromApiResponse(apiResponse);\r\n } \r\n if (entityList) {\r\n yield put(entityListStorageActions.saveEntityListToStorage(entityName, entityList, currentUtcTime));\r\n }\r\n}\r\n\r\nexport const watchLoadEntityListFromApi = function* (entityName) {\r\n const apiResourceName = apiEntityResourceName(entityName);\r\n const GET_ENTITY_LIST_FROM_API = entityListApiActions.GET_ENTITY_LIST_FROM_API(apiResourceName);\r\n\r\n while(true) {\r\n const {type, ...filter} = yield take(entityListApiActions.LOAD_ENTITY_LIST_FROM_API(entityName));\r\n yield fork(loadEntities, entityName, filter);\r\n\r\n const action = yield take([\r\n GET_ENTITY_LIST_FROM_API.SUCCESS, \r\n GET_ENTITY_LIST_FROM_API.FAILURE\r\n ]);\r\n if (action.type === GET_ENTITY_LIST_FROM_API.SUCCESS) {\r\n yield put(entityListActions.getEntityList.success(entityName, action.response));\r\n yield fork(saveEntitiesToStorage, entityName, action.response);\r\n } \r\n else if (action.type === GET_ENTITY_LIST_FROM_API.FAILURE) {\r\n yield put(entityListActions.getEntityList.failure(entityName, action.error));\r\n }\r\n }\r\n}","import { take, call, fork, select } from 'redux-saga/effects';\r\nimport { entityListStorageActions } from '../actions';\r\nimport { entityByName } from '../metadata';\r\nimport { saveEntityListToStorageService } from '../indexedDbStorage';\r\n\r\nconst getVersionId = state => state.bibleVersion.id;\r\n\r\nfunction* updateStorage(entityName, entityList, currentUtcTime) {\r\n const entity = entityByName(entityName);\r\n let versionId = entity.filterByVersionId ? yield select(getVersionId) : null;\r\n yield call(saveEntityListToStorageService.saveEntityListToStorage, entityName, entityList, versionId, currentUtcTime);\r\n}\r\n\r\nexport const watchSaveEntityListToStorage = function* (entityName) {\r\n while(true) {\r\n const {entityList, currentUtcTime} = yield take(entityListStorageActions.SAVE_ENTITY_LIST_TO_STORAGE(entityName));\r\n if (entityList) {\r\n yield fork(updateStorage, entityName, entityList, currentUtcTime);\r\n } \r\n }\r\n}","import { take, fork, call, put, select } from 'redux-saga/effects';\r\nimport { SYNC_ENTITY_LIST_TO_THECLOUD, lastUploadedEntityListSettingStorageActions, entityListStorageActions, addEntityActions } from '../actions';\r\nimport { entityByName } from '../metadata';\r\nimport { SETTINGS_LASTUPLOADED_ENTITYLIST_NAME } from '../../../features/constants';\r\nimport { fetchEntitySettingFromStorageService } from '../indexedDbStorage';\r\nimport { fetchSubmitAddEntityRequestApi } from '../api/entitiesApi';\r\nimport { settle, fetchEntity } from '../../../sagas/sagaHelper';\r\nimport { saveSettingsItemToStorage } from '../../../services/storage/saveSettingsItemToStorageService';\r\nimport { getCurrentDateTimeLtISO } from '../../../utils/dateHelper';\r\n\r\n// bind Generators\r\nconst fetchLastUploadedEntityListSettingFromStorage = fetchEntity.bind(null, \r\n lastUploadedEntityListSettingStorageActions.getLastUploadedEntityListSettingFromStorage, \r\n fetchEntitySettingFromStorageService.fetchEntitySettingFromStorage);\r\n\r\nconst fetchSubmitAddEntityApiRequest = fetchEntity.bind(null, addEntityActions.addEntityApi, fetchSubmitAddEntityRequestApi);\r\n\r\nconst getLoggedinUser = state => state.loggedinUser;\r\n\r\nfunction* loadLastUploadedEntityListSetting(entityName) {\r\n yield call(fetchLastUploadedEntityListSettingFromStorage, entityName, SETTINGS_LASTUPLOADED_ENTITYLIST_NAME(entityName)); \r\n}\r\n\r\nfunction* submitAddEntityApiRequest(entityName, payload) {\r\n const ADD_ENTITY_API = addEntityActions.ADD_ENTITY_API(entityName);\r\n\r\n yield fork(fetchSubmitAddEntityApiRequest, entityName, JSON.stringify(payload));\r\n\r\n yield take([ADD_ENTITY_API.SUCCESS, ADD_ENTITY_API.FAILURE]);\r\n //const action = yield take([ADD_ENTITY_API.SUCCESS, ADD_ENTITY_API.FAILURE]);\r\n //if (action.type === ADD_ENTITY_API.SUCCESS) {\r\n //entityData = { ...entityData, ...action.response };\r\n //}\r\n}\r\n\r\nfunction* addEntityListToApi(entityName, entityList) {\r\n const entity = entityByName(entityName); \r\n let addEntityToApiRequests = entityList.map(entityItem => {\r\n return settle(submitAddEntityApiRequest, entityName, entity.addApiData(entityItem));\r\n });\r\n\r\n for (let request of addEntityToApiRequests) {\r\n yield request;\r\n }\r\n}\r\n\r\nexport const watchSyncEntityListToTheCloud = function* (entityName) {\r\n const GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE = lastUploadedEntityListSettingStorageActions.GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE(entityName);\r\n const GET_ENTITY_LIST_FROM_STORAGE = entityListStorageActions.GET_ENTITY_LIST_FROM_STORAGE(entityName);\r\n const entity = entityByName(entityName); \r\n\r\n while(true) {\r\n yield take(SYNC_ENTITY_LIST_TO_THECLOUD(entityName));\r\n yield fork(loadLastUploadedEntityListSetting, entityName); \r\n \r\n const action = yield take([\r\n GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE.SUCCESS, \r\n GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE.FAILURE\r\n ]);\r\n\r\n let lastUploadedDateTimeLt = null;\r\n if (action.type === GET_ENTITY_LIST_LASTUPLOADED_SETTING_FROM_STORAGE.SUCCESS) { \r\n lastUploadedDateTimeLt = action.response.entitySetting.lastUploadedDateTimeLt; \r\n }\r\n yield put(entityListStorageActions.loadEntityListFromStorage(entityName, entity.getUnsynchedEntitiesFilter(lastUploadedDateTimeLt)));\r\n \r\n const getEntityListAction = yield take([\r\n GET_ENTITY_LIST_FROM_STORAGE.SUCCESS, \r\n GET_ENTITY_LIST_FROM_STORAGE.FAILURE\r\n ]);\r\n\r\n if (getEntityListAction.type === GET_ENTITY_LIST_FROM_STORAGE.SUCCESS) {\r\n let entityList = getEntityListAction.response;\r\n let loggedinUser = yield select(getLoggedinUser);\r\n let addEntityToApiRequests = entityList.map(entityItem => {\r\n if (loggedinUser) {\r\n entityItem = { ...entityItem, userId: loggedinUser.userId }\r\n }\r\n return settle(submitAddEntityApiRequest, entityName, entity.addApiData(entityItem));\r\n });\r\n\r\n for (let request of addEntityToApiRequests) {\r\n yield request;\r\n }\r\n \r\n saveSettingsItemToStorage(SETTINGS_LASTUPLOADED_ENTITYLIST_NAME(entityName), { lastUploadedDateTimeLt: getCurrentDateTimeLtISO() });\r\n }\r\n\r\n // Possibly move sections of yield/take..yield/put into their own methods or Command files\r\n } \r\n}","import { indexedDb } from '../indexedDb';\r\n\r\nexport const saveSettingsItemToStorage = (settingName, data) => {\r\n indexedDb.settings.put({ settingName: settingName, ...data })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n}","import { take, fork, call, put, select } from 'redux-saga/effects';\r\nimport { SYNC_ENTITY_LIST_FROM_THECLOUD, lastUpdatedEntityListSettingStorageActions, entityListApiActions } from '../actions';\r\nimport { entityByName } from '../metadata';\r\nimport { SETTINGS_LASTUPDATED_ENTITYLIST_NAME } from '../../../features/constants';\r\nimport { fetchEntitySettingFromStorageService } from '../indexedDbStorage';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\n\r\n// bind Generators\r\nconst fetchLastUpdatedEntityListSettingFromStorage = fetchEntity.bind(null, \r\n lastUpdatedEntityListSettingStorageActions.getLastUpdatedEntityListSettingFromStorage, \r\n fetchEntitySettingFromStorageService.fetchEntitySettingFromStorage);\r\n\r\nconst getLoggedinUser = state => state.loggedinUser;\r\nconst getVersionId = state => state.bibleVersion.id;\r\n\r\nfunction* loadLastUpdatedEntityListSetting(entityName) {\r\n const entity = entityByName(entityName);\r\n let versionId = entity.filterByVersionId ? yield select(getVersionId) : null;\r\n yield call(fetchLastUpdatedEntityListSettingFromStorage, entityName, SETTINGS_LASTUPDATED_ENTITYLIST_NAME(entityName, versionId)); \r\n}\r\n\r\nexport const watchSyncEntityListFromTheCloud = function* (entityName) {\r\n const GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE = lastUpdatedEntityListSettingStorageActions.GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE(entityName);\r\n const entity = entityByName(entityName);\r\n\r\n while(true) {\r\n const {type, ...filter} = yield take(SYNC_ENTITY_LIST_FROM_THECLOUD(entityName));\r\n yield fork(loadLastUpdatedEntityListSetting, entityName);\r\n\r\n const action = yield take([\r\n GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE.SUCCESS, \r\n GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE.FAILURE\r\n ]);\r\n\r\n let loggedinUser = yield select(getLoggedinUser);\r\n let lastUpdatedDateTimeUtc = null;\r\n if (action.type === GET_ENTITY_LIST_LASTUPDATED_SETTING_FROM_STORAGE.SUCCESS) {\r\n lastUpdatedDateTimeUtc = action.response.entitySetting.lastUpdatedUtcTime;\r\n lastUpdatedDateTimeUtc = lastUpdatedDateTimeUtc.substr(0, 19);\r\n }\r\n let userId = loggedinUser ? loggedinUser.userId : null;\r\n yield put(entityListApiActions.loadEntityListFromApi(entityName, entity.getEntityListFilterForApi(filter, userId, lastUpdatedDateTimeUtc)));\r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchAddEntity } from './addEntitySaga';\r\nimport { watchGetEntityList } from './getEntityListSaga';\r\nimport { watchLoadEntityListFromStorage } from './getEntityListFromStorageSaga';\r\nimport { watchLoadLastUpdatedEntityListSettingFromStorage } from './getLastUpdatedEntityListSettingFromStorageSaga';\r\nimport { watchLoadEntityListFromApi } from './getEntityListFromApiSaga';\r\nimport { watchSaveEntityListToStorage } from './saveEntityListToStorageSaga';\r\nimport { watchSyncEntityListToTheCloud } from './syncEntityListToTheCloudSaga';\r\nimport { watchSyncEntityListFromTheCloud } from './syncEntityListFromTheCloudSaga';\r\n\r\nexport const watchEntitiesRequests = function*(entityName) {\r\n yield all([\r\n fork(watchAddEntity, entityName),\r\n fork(watchGetEntityList, entityName),\r\n fork(watchLoadEntityListFromStorage, entityName),\r\n fork(watchLoadLastUpdatedEntityListSettingFromStorage, entityName),\r\n fork(watchLoadEntityListFromApi, entityName),\r\n fork(watchSaveEntityListToStorage, entityName), \r\n fork(watchSyncEntityListToTheCloud, entityName),\r\n fork(watchSyncEntityListFromTheCloud, entityName), \r\n ])\r\n}","import { take, put, select } from 'redux-saga/effects';\r\nimport { entityListActions } from '../../../common/entities/actions';\r\nimport * as entitiesNames from '../../../common/entities/constants';\r\nimport { loadBookChapters } from '../../Bible/Chapters/actions';\r\nimport { getBookChaptersFromStorageActions } from '../../Bible/Chapters/actions';\r\nimport { settle } from '../../../sagas/sagaHelper';\r\n\r\nconst getBibleVersion = state => state.bibleVersion;\r\n\r\nfunction* loadChaptersByBookId(bibleVersionId, bookId) {\r\n yield put(loadBookChapters(bibleVersionId, bookId));\r\n\r\n const { GET_BOOK_CHAPTERS_FROM_STORAGE } = getBookChaptersFromStorageActions;\r\n\r\n yield take([\r\n GET_BOOK_CHAPTERS_FROM_STORAGE.SUCCESS, \r\n GET_BOOK_CHAPTERS_FROM_STORAGE.FAILURE\r\n ]);\r\n}\r\n\r\nexport const watchBibleHistoryListTrigger = function* () {\r\n const { GET_ENTITY_LIST } = entityListActions;\r\n\r\n while(true) {\r\n const action = yield take([\r\n GET_ENTITY_LIST(entitiesNames.BIBLEHISTORY).SUCCESS, \r\n GET_ENTITY_LIST(entitiesNames.BIBLEHISTORY).FAILURE\r\n ]);\r\n\r\n if (action.type === GET_ENTITY_LIST(entitiesNames.BIBLEHISTORY).SUCCESS) {\r\n let historyList = action.response.items ? action.response.items : action.response;\r\n let bibleVersion = yield select(getBibleVersion);\r\n let requestedBooks = [];\r\n \r\n let loadChaptersRequests = historyList.map(historyItem => {\r\n if (!requestedBooks.includes(historyItem.bookId)) {\r\n requestedBooks.push(historyItem.bookId);\r\n return settle(loadChaptersByBookId, bibleVersion.id, historyItem.bookId);\r\n }\r\n });\r\n\r\n for (let request of loadChaptersRequests) {\r\n yield request;\r\n }\r\n }\r\n }\r\n}\r\n","import { fork, all } from 'redux-saga/effects';\r\nimport { watchBibleHistoryListTrigger } from './getBibleHistoryListTriggerSaga';\r\n\r\nexport const watchBibleHistoryRequests = function*() {\r\n yield all([\r\n fork(watchBibleHistoryListTrigger), \r\n ]);\r\n}","import { take, call, fork, all, put, select } from 'redux-saga/effects';\r\nimport * as settingsSystemActions from './actions';\r\nimport { fetchSystemSettingsRequest } from './api';\r\nimport { fetchEntity } from '../../../sagas/sagaHelper';\r\nimport { setApiUrl } from '../../../services/apiResources';\r\nimport { watchAppVersionRequests } from '../../Version/sagas';\r\nimport { watchBibleVersionsRequests } from '../../Bible/Versions/sagas';\r\nimport { watchBibleBooksRequests } from '../../Bible/Books/sagas';\r\nimport { watchVerseOfTheDayRequests } from '../../VerseOfTheDay/sagas';\r\nimport { watchAuthRequests } from '../../auth/sagas';\r\nimport { watchEntitiesRequests } from '../../../common/entities/sagas';\r\nimport { watchBibleHistoryRequests } from '../../BibleHistory/sagas';\r\nimport * as appVersionActions from '../../Version/actions';\r\nimport * as bibleVersionsActions from '../../Bible/Versions/actions';\r\nimport * as bibleBooksActions from '../../Bible/Books/actions';\r\nimport * as bookChaptersActions from '../../Bible/Chapters/actions';\r\n//import { verseOfTheDayActions } from '../../VerseOfTheDay/actions';\r\n//import { ROUTES_BIBLE_PATHNAME } from '../../../constants';\r\nimport * as entitiesNames from '../../../common/entities/constants';\r\nimport { initializeEntities } from '../../../common/entities/metadata';\r\n\r\nconst { getViewFiltersBibleVersionFromStorageActions } = bibleVersionsActions;\r\nconst { viewFiltersBibleBookFromStorageActions } = bibleBooksActions;\r\nconst { viewFiltersBookChapterFromStorageActions } = bookChaptersActions;\r\n\r\nconst getBibleVersion = state => state.bibleVersion;\r\n\r\n// bind Generators\r\nconst fetchSystemSettings = fetchEntity.bind(null, settingsSystemActions.getSettings, fetchSystemSettingsRequest);\r\n\r\nfunction* loadSystemSettings() {\r\n initializeEntities();\r\n\r\n yield call(fetchSystemSettings);\r\n}\r\n\r\nfunction* setBibleVersion() {\r\n const { GET_BIBLE_VERSIONS_FROM_STORAGE } = bibleVersionsActions.getBibleVersionsFromStorageActions;\r\n const { GET_BIBLE_VERSIONS_FROM_API } = bibleVersionsActions.getBibleVersionsFromApiActions;\r\n\r\n const action = yield take([\r\n GET_BIBLE_VERSIONS_FROM_STORAGE.SUCCESS, \r\n GET_BIBLE_VERSIONS_FROM_API.SUCCESS\r\n ]);\r\n\r\n if ((action.type === GET_BIBLE_VERSIONS_FROM_STORAGE.SUCCESS) || (action.type === GET_BIBLE_VERSIONS_FROM_API.SUCCESS)) {\r\n let bibleVersion = yield select(getBibleVersion);\r\n //if (window.location.pathname === ROUTES_BIBLE_PATHNAME) { \r\n yield put(bibleVersionsActions.setBibleVersion(bibleVersion.id, bibleVersion.langId));\r\n //} \r\n }\r\n}\r\n\r\nexport const watchLoadSystemSettingsRequest = function* () {\r\n while(true) {\r\n yield take(settingsSystemActions.LOAD_SETTINGS_REQUEST);\r\n yield fork(loadSystemSettings); \r\n\r\n const action = yield take([settingsSystemActions.GET_SETTINGS.SUCCESS]); \r\n if (action.type === settingsSystemActions.GET_SETTINGS.SUCCESS) {\r\n yield call(setApiUrl, action.response.apiUrl);\r\n yield all([\r\n fork(watchEntitiesRequests, entitiesNames.VERSEOFTHEDAY),\r\n fork(watchEntitiesRequests, entitiesNames.FAVORITEVERSES),\r\n fork(watchEntitiesRequests, entitiesNames.HIGHLIGHTEDVERSES),\r\n fork(watchEntitiesRequests, entitiesNames.BIBLEHISTORY),\r\n fork(watchAuthRequests),\r\n fork(watchAppVersionRequests),\r\n put(appVersionActions.validateAppVersion()),\r\n fork(watchBibleVersionsRequests),\r\n fork(watchBibleBooksRequests),\r\n fork(watchBibleHistoryRequests),\r\n put(getViewFiltersBibleVersionFromStorageActions.loadViewFiltersBibleVersionFromStorage()),\r\n put(viewFiltersBibleBookFromStorageActions.loadViewFiltersBibleBookFromStorage()),\r\n put(viewFiltersBookChapterFromStorageActions.loadViewFiltersBookChapterFromStorage()),\r\n put(bibleVersionsActions.loadBibleVersions()),\r\n fork(setBibleVersion), \r\n fork(watchVerseOfTheDayRequests) \r\n ]);\r\n }\r\n }\r\n}","import { fork, all } from 'redux-saga/effects';\r\nimport { watchLoadSystemSettingsRequest } from '../features/Settings/System/saga';\r\n\r\nexport default function* root() {\r\n yield all([\r\n fork(watchLoadSystemSettingsRequest) \r\n ])\r\n}","import { createStore, applyMiddleware } from 'redux';\nimport createSagaMiddleware, { END } from 'redux-saga';\nimport rootReducer from '../reducers';\nimport rootSaga from '../sagas';\n\nconst configureStore = preloadedState => {\n const sagaMiddleware = createSagaMiddleware()\n const store = createStore (\n rootReducer,\n preloadedState,\n applyMiddleware(sagaMiddleware)\n )\n\n store.runSaga = sagaMiddleware.run(rootSaga);\n store.close = () => store.dispatch(END)\n return store\n}\n\nexport default configureStore","const drawerWidth = 240;\r\n\r\nconst primaryColor = [\"#9c27b0\", \"#ab47bc\", \"#8e24aa\", \"#af2cc5\"];\r\nconst warningColor = [\"#ff9800\", \"#ffa726\", \"#fb8c00\", \"#ffa21a\"];\r\nconst dangerColor = [\"#f44336\", \"#ef5350\", \"#e53935\", \"#f55a4e\"];\r\nconst successColor = [\"#4caf50\", \"#66bb6a\", \"#43a047\", \"#5cb860\"];\r\nconst infoColor = [\"#00acc1\", \"#26c6da\", \"#00acc1\", \"#00d3ee\"];\r\nconst roseColor = [\"#e91e63\", \"#ec407a\", \"#d81b60\", \"#eb3573\"];\r\nconst grayColor = [\r\n \"#999\",\r\n \"#777\",\r\n \"#3C4858\",\r\n \"#AAAAAA\",\r\n \"#D2D2D2\",\r\n \"#DDD\",\r\n \"#b4b4b4\",\r\n \"#555555\",\r\n \"#333\",\r\n \"#a9afbb\",\r\n \"#eee\",\r\n \"#e7e7e7\"\r\n];\r\nconst blackColor = \"#000\";\r\nconst whiteColor = \"#FFF\";\r\n\r\nconst container = {\r\n paddingRight: \"15px\",\r\n paddingLeft: \"15px\",\r\n marginRight: \"auto\",\r\n marginLeft: \"auto\"\r\n};\r\n\r\nconst transition = {\r\n transition: \"all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)\"\r\n};\r\n\r\n// ##############################\r\n// // // Function that converts from hex color to rgb color\r\n// // // Example: input = #9c27b0 => output = 156, 39, 176\r\n// // // Example: input = 9c27b0 => output = 156, 39, 176\r\n// // // Example: input = #999 => output = 153, 153, 153\r\n// // // Example: input = 999 => output = 153, 153, 153\r\n// #############################\r\nconst hexToRgb = input => {\r\n input = input + \"\";\r\n input = input.replace(\"#\", \"\");\r\n let hexRegex = /[0-9A-Fa-f]/g;\r\n if (!hexRegex.test(input) || (input.length !== 3 && input.length !== 6)) {\r\n throw new Error(\"input is not a valid hex color.\");\r\n }\r\n if (input.length === 3) {\r\n let first = input[0];\r\n let second = input[1];\r\n let last = input[2];\r\n input = first + first + second + second + last + last;\r\n }\r\n input = input.toUpperCase();\r\n let first = input[0] + input[1];\r\n let second = input[2] + input[3];\r\n let last = input[4] + input[5];\r\n return (\r\n parseInt(first, 16) +\r\n \", \" +\r\n parseInt(second, 16) +\r\n \", \" +\r\n parseInt(last, 16)\r\n );\r\n};\r\n\r\nconst boxShadow = {\r\n boxShadow:\r\n \"0 10px 30px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.42), 0 4px 25px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\"\r\n};\r\n\r\nconst defaultBoxShadow = {\r\n border: \"0\",\r\n borderRadius: \"3px\",\r\n boxShadow:\r\n \"0 10px 20px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.42), 0 3px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n padding: \"10px 0\",\r\n transition: \"all 150ms ease 0s\"\r\n};\r\n\r\nconst primaryBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \",.4)\"\r\n};\r\nconst infoBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.4)\"\r\n};\r\nconst successBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.4)\"\r\n};\r\nconst warningBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.4)\"\r\n};\r\nconst dangerBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.4)\"\r\n};\r\nconst roseBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \",.4)\"\r\n};\r\n\r\nconst defaultFont = {\r\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontWeight: \"300\",\r\n lineHeight: \"1.5em\"\r\n };\r\n\r\nexport {\r\n drawerWidth,\r\n hexToRgb,\r\n transition,\r\n container,\r\n boxShadow,\r\n defaultBoxShadow,\r\n defaultFont,\r\n primaryColor,\r\n warningColor,\r\n dangerColor,\r\n successColor,\r\n infoColor,\r\n roseColor,\r\n grayColor,\r\n blackColor,\r\n whiteColor,\r\n primaryBoxShadow,\r\n infoBoxShadow,\r\n successBoxShadow,\r\n warningBoxShadow,\r\n dangerBoxShadow,\r\n roseBoxShadow,\r\n}"," import {\r\n drawerWidth,\r\n hexToRgb,\r\n boxShadow,\r\n transition,\r\n defaultFont,\r\n grayColor,\r\n whiteColor,\r\n blackColor,\r\n dangerColor,\r\n warningColor,\r\n successColor,\r\n infoColor,\r\n primaryColor,\r\n primaryBoxShadow,\r\n} from '../CTBWebApp';\r\n\r\nconst drawerStyle = theme => ({\r\n drawerPaper: {\r\n width: drawerWidth,\r\n border: \"none\",\r\n position: \"fixed\",\r\n top: \"0\",\r\n bottom: \"0\",\r\n left: \"0\",\r\n zIndex: \"1\",\r\n ...boxShadow,\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: drawerWidth,\r\n position: \"fixed\",\r\n height: \"100%\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: drawerWidth,\r\n ...boxShadow,\r\n position: \"fixed\",\r\n display: \"block\",\r\n top: \"0\",\r\n height: \"100vh\",\r\n //right: \"0\",\r\n left: \"auto\",\r\n zIndex: \"1032\",\r\n visibility: \"visible\",\r\n overflowY: \"visible\",\r\n borderTop: \"none\",\r\n textAlign: \"left\",\r\n paddingRight: \"0px\",\r\n paddingLeft: \"0\",\r\n transform: `translate3d(${drawerWidth}px, 0, 0)`,\r\n ...transition\r\n }\r\n },\r\n\r\n toolbar: theme.mixins.toolbar,\r\n \r\n drawerContainer: {\r\n position: \"relative\",\r\n height: \"calc(100vh - 75px)\",\r\n overflow: \"auto\",\r\n width: drawerWidth,\r\n zIndex: \"4\",\r\n overflowScrolling: \"touch\"\r\n },\r\n\r\n brand: {\r\n position: \"relative\",\r\n padding: \"12px 12px\",\r\n zIndex: \"4\",\r\n \"&:after\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n bottom: \"0\",\r\n height: \"1px\",\r\n right: \"15px\",\r\n width: \"calc(100% - 30px)\",\r\n backgroundColor: \"rgba(\" + hexToRgb(grayColor[6]) + \", 0.3)\"\r\n }\r\n },\r\n brandLink: {\r\n ...defaultFont,\r\n textTransform: \"uppercase\",\r\n padding: \"5px 0\",\r\n display: \"block\",\r\n fontSize: \"18px\",\r\n textAlign: \"left\",\r\n fontWeight: \"400\",\r\n lineHeight: \"30px\",\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\",\r\n \"&,&:hover\": {\r\n color: whiteColor\r\n }\r\n },\r\n brandImage: {\r\n width: \"30px\",\r\n display: \"inline-block\",\r\n maxHeight: \"30px\",\r\n marginLeft: \"10px\",\r\n marginRight: \"15px\"\r\n },\r\n img: {\r\n width: \"35px\",\r\n top: \"18px\",\r\n position: \"absolute\",\r\n verticalAlign: \"middle\",\r\n border: \"0\"\r\n },\r\n background: {\r\n position: \"absolute\",\r\n zIndex: \"1\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n display: \"block\",\r\n top: \"0\",\r\n left: \"0\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n \"&:after\": {\r\n position: \"absolute\",\r\n zIndex: \"3\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n content: '\"\"',\r\n display: \"block\",\r\n background: blackColor,\r\n opacity: \".8\"\r\n }\r\n },\r\n list: {\r\n marginTop: \"20px\",\r\n paddingLeft: \"0\",\r\n paddingTop: \"0\",\r\n paddingBottom: \"0\",\r\n marginBottom: \"0\",\r\n listStyle: \"none\",\r\n position: \"unset\"\r\n },\r\n item: {\r\n position: \"relative\",\r\n display: \"block\",\r\n textDecoration: \"none\",\r\n \"&:hover,&:focus,&:visited,&\": {\r\n color: whiteColor\r\n }\r\n },\r\n itemLink: {\r\n width: \"auto\",\r\n transition: \"all 300ms linear\",\r\n margin: \"10px 15px 0\",\r\n borderRadius: \"3px\",\r\n position: \"relative\",\r\n display: \"block\",\r\n padding: \"10px 15px\",\r\n backgroundColor: \"transparent\",\r\n ...defaultFont\r\n },\r\n itemIcon: {\r\n width: \"24px\",\r\n height: \"30px\",\r\n fontSize: \"24px\",\r\n lineHeight: \"30px\",\r\n float: \"left\",\r\n marginRight: \"15px\",\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n color: \"rgba(\" + hexToRgb(whiteColor) + \", 0.8)\"\r\n },\r\n itemText: {\r\n ...defaultFont,\r\n margin: \"0\",\r\n lineHeight: \"30px\",\r\n fontSize: \"14px\",\r\n color: whiteColor\r\n },\r\n whiteFont: {\r\n color: whiteColor\r\n },\r\n purple: {\r\n backgroundColor: primaryColor[0],\r\n ...primaryBoxShadow,\r\n \"&:hover,&:focus\": {\r\n backgroundColor: primaryColor[0],\r\n ...primaryBoxShadow\r\n }\r\n },\r\n blue: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n green: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n orange: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n red: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n versionInfoItem: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n bottom: \"13px\"\r\n }\r\n }\r\n});\r\n\r\nexport default drawerStyle;","import React from 'react';\r\nimport classNames from \"classnames\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { NavLink } from 'react-router-dom';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Icon from \"@material-ui/core/Icon\";\r\nimport styles from '../../assets/jss/components/drawerStyle';\r\nimport { activeRoute } from '../../utils/routesHelper';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst DrawerListItem = props => {\r\n const classes = useStyles();\r\n const { routePathname, itemCaption } = props;\r\n const ItemIcon = props.itemIcon;\r\n\r\n const activeMenuColor = 'green';\r\n\r\n return (\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DrawerList;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport DrawerList from './DrawerList';\r\nimport styles from '../../assets/jss/components/drawerStyle';\r\nimport drawerImage from \"../../assets/img/river.jpg\";\r\n//import logo from \"../../assets/img/ettLogo.png\";\r\n\r\nexport const drawerWidth = 240;\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst HomePageDrawer = props => {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n\r\n const { isMobileDrawerOpen, onHandleDrawerToggle } = props;\r\n\r\n const brand = (\r\n