{"version":3,"sources":["reducers/user.js","reducers/journal.js","reducers/lover.js","reducers/rootReducer.js","aws-exports.js","customgraphql/queries.js","customgraphql/mutations.js","graphql/mutations.js","graphql/subscriptions.js","graphql/queries.js","actions/notification.js","utils/reorderBooks.js","actions/user.js","components/LoadingCard.js","utils/ProfilePic.js","containers/Navigation.js","containers/Auth/Login.js","containers/Auth/Signup.js","containers/Auth/ConfirmAccount.js","containers/Auth/ResendVerificationCode.js","components/Footer.js","containers/Auth/ForgotPassword.js","containers/Auth/ForgotUsername.js","containers/Auth/SetNewPassword.js","utils/DecodeHtml.js","components/MyJournalListItem.js","components/MyJournalList.js","actions/journal.js","utils/ImageProcess.js","utils/isPaidUser.js","components/AddBookPopup.js","components/UpgradePopup.js","containers/BooksMyJournal.js","containers/MyJournal.js","components/QuillEditor.js","utils/DateTimePicker.js","containers/WriteJournal.js","components/JournalEntryContent.js","components/NoMatch.js","containers/JournalEntry.js","components/CommentWrite.js","components/CommentListItem.js","containers/Comments.js","components/PublicJournalEntryContent.js","containers/PublicJournalEntry.js","containers/EditJournal.js","components/PublicJournalListItem.js","containers/Community.js","components/MemberListItem.js","components/WeeklyJournalChallenge.js","containers/Challenge.js","components/ChatRoomListItem.js","actions/chat.js","containers/Chat.js","components/ChatMessageItem.js","containers/ChatRoom.js","components/NotificationListItem.js","containers/Notification.js","helper/isPaidMember.js","components/shared/member-badge.js","utils/AbbrNum.js","containers/MyAccount.js","containers/Author.js","actions/membership.js","components/CouponForm.js","components/CreditCardForm.js","components/BillingSubscriptionInfo.js","helper/isLegacyUser.js","components/BillingListItem.js","containers/Billing.js","containers/Setting.js","containers/CancelConfirm.js","components/MemberLevel.js","containers/Following.js","containers/Follower.js","components/LovedUsersListItem.js","containers/LovedUsers.js","components/Contact.js","components/UserFeedback.js","components/LoadingBook.js","components/SortableBooks/Book.js","components/SortableBooks/SortableBooks.js","containers/MyBooks.js","components/EditBookPopup.js","components/BookJournalListItem.js","containers/BookJournals.js","App.js","serviceWorker.js","index.js","assets/images/gnj-logo.svg","assets/images/loading-dark.svg","assets/images/loading.svg","assets/images/watermelon-icon.svg","assets/images/happy-logo-black.svg","assets/images/profile-pic.svg","assets/images/happy-logo-white.svg","assets/images/bible-logo-black.svg","assets/images/bible-logo-white.svg","assets/images/gnj-profile-pic.svg","assets/images/members-only.svg","assets/images/notification-loved.svg","assets/images/upload-img-icon.svg","assets/images/favicon.svg","assets/images/avocado.svg","assets/images/community.svg"],"names":["initialUserData","isFetchingCurrentUserSession","isAuthenticated","isFetchUserData","isLoginSuccess","loginError","loginLoading","accountData","userData","currentUser","userJournal","notifications","userBooks","notification_nextToken","userBook_nextToken","iPhoneExtensions","user","state","arguments","length","undefined","action","type","Object","objectSpread","journals","items","books","nextToken","concat","toConsumableArray","newBookData","filter","book","id","deletedBook","map","item","updatedBook","find","_ref","assign","moreUserJournals","notification","newNotificationData","i","notifId","read","totalJournal","total","initialState","journalLoading","pendingCreate","pendingDelete","pendingUpdate","currentJournal","myJournalLimit","communityLimit","challengeLimit","journal","loading","journalCreated","journalUpdated","limit","lovedUsers","loverLoading","lover","appReducer","combineReducers","rootReducer","awsmobile","aws_project_region","aws_mobile_analytics_app_id","aws_mobile_analytics_app_region","Analytics","AWSPinpoint","appId","region","aws_cloud_logic_custom","name","endpoint","aws_appsync_graphqlEndpoint","aws_appsync_region","aws_appsync_authenticationType","aws_cognito_identity_pool_id","aws_cognito_region","aws_user_pools_id","aws_user_pools_web_client_id","oauth","aws_cognito_username_attributes","aws_cognito_social_providers","aws_cognito_signup_attributes","aws_cognito_mfa_configuration","aws_cognito_mfa_types","aws_cognito_password_protection_settings","passwordPolicyMinLength","passwordPolicyCharacters","aws_cognito_verification_mechanisms","aws_user_files_s3_bucket","aws_user_files_s3_bucket_region","isUserFollowingTheAuthor","userFollowingAsKey","userFollowerAsKey","getUser","getAuthor","getJournals","getJournal","getLoveUserComment","listPublicJournals","getLoveUserJournal","gnjAmplifyStripeGetCustomerInfo","yearMonthUserAsKey","yearMonthJournalsPerMonthAsKey","getPublicJournal","markedAsAuthorAsKey","journalAuthorLatestAsKey","publicJournalMarkedAsKey","isUserLovedJournalAsKey","isUserLovedCommentAsKey","gnjAmplifyuserBackUpJournals","getBook","isUserHasABookAsKey","doesChatRoomExist","getChatRoom","chatRoomUserChatRoomIdAsKey","gnjAmplifyStripeCreateMember","gnjAmplifyStripeGetCouponCode","gnjAmplifyStripeUpdateCustomer","gnjAmplifyStripeCancelMembership","createFollowing","deleteFollowing","createUser","updateUser","createUserLovedJournal","deleteUserLovedJournal","createJournal","updateJournal","deleteJournal","createUserLovedComment","deleteUserLovedComment","createComment","updateComment","deleteComment","gnjAmplifyadminDisableUser","createChallenge","updateChallenge","deleteChallenge","createPublicJournal","updatePublicJournal","deletePublicJournal","createBook","updateBook","deleteBook","gnjAmplifyJournalCommentCount","gnjAmplifyJournalLovedCount","gnjAmplifyForgotUsername","createChatRoomUser","deleteChatRoomUser","createChatRoom","createMessage","deleteMessage","updateChatRoomUser","updateChatRoom","gnjAmplifyExpoSendNotification","gnjAmplifySendEmailNotification","createNotification","updateNotification","onCreateNotification","onCreateMessage","onDeleteMessage","listNotifications","createNotificationSubscription","asyncToGenerator","regenerator_default","a","mark","_callee","dispatch","getState","subscription","wrap","_context","prev","next","API","graphql","graphqlOperation","subscriptions","subscribe","eventData","value","data","sent","abrupt","unsubscribe","stop","_x","_x2","apply","this","getMoreNotifications","username","_ref2","_callee2","_context2","customQueries","nextTokenNotification","t0","console","log","_x3","readNotification","mutations","input","err","createNotificationFromComment","_x4","_x5","_x6","_createNotificationFromComment","_callee3","commentInput","journalAuthorId","comments","_context3","commentAuthorId","commentJournalId","content","category","link","actionUser","userID","displayName","photoURL","profileImage","notificationUserId","sendPushNotification","sendEmailNotification","createNotificationFromLovedJournal","_x7","_x8","_x9","_createNotificationFromLovedJournal","_callee4","userLovedJournalId","_context4","checkExistNotification","createNotificationFromLovedComment","_x10","_x11","_x12","_createNotificationFromLovedComment","_callee5","comment","journalID","_context5","author","createNotificationFromFollow","_x13","_x14","_createNotificationFromFollow","_callee6","targetId","_context6","encodeURIComponent","createNotificationThirtyJournal","_x15","_x16","_createNotificationThirtyJournal","_callee7","event","userId","_context7","avocado","createChatRoomCreatedNotification","_x19","_x20","_x21","_createChatRoomCreatedNotification","_callee9","chatRoomUserUserId","chatRoomUserChatRoomId","_context9","_callee10","isFollow","checkData","_context10","queries","eq","_callee11","sendTo","title","body","_context11","_callee12","_context12","reorderBooks","bookOrder","sort","b","indexOf","Amplify","configure","aws_exports","bucket","fetchingCurrentUserSession","setLoginSuccess","getCurrentUserSession","Promise","resolve","reject","Auth","currentSession","then","getUserData","idToken","payload","sub","getCurrentUser","catch","userLoginRequest","password","callback","signIn","window","ReactNativeWebView","postMessage","JSON","stringify","pushNotificationUsername","signInUserSession","Error","message","callLoginAPI","res","resetLoginError","createUserData","uuid","custom_mutations","_ref3","currentUserInfo","updateProfilePic","file","_ref4","extension","mimeType","dataToURL","filePath","url","options","params","result","currentAuthenticatedUser","exec","Date","toJSON","slice","replace","ACL","contentType","level","Storage","put","updateUserAttributes","uploadToS3","_ref5","_ref6","limitJournal","groups","journalByMonth","newBookOrder","custom_queries","reduce","r","o","m","createdAt","split","push","month","moment","format","keys","k","parse","getJournalsData","_ref7","nextTokenJournal","getMoreUserJournal","_ref8","_callee8","_context8","setMyJournalLimit","userSignOut","signOut","getAuthorData","getAuthorPublicJournalData","query","variables","sortDirection","authMode","followAuthor","targetAuthor","followingAuthor","_ref11","response","following","adjustCounts","difference","followingCount","followerCount","unfollowAuthor","followingId","_callee13","_context13","doesSourceFollowTarget","sourceUserId","targetUserId","_callee14","_context14","getUserFollowings","_callee15","_context15","getUserFollowers","_callee16","_context16","getChallengeData","_callee17","currentYear","currentMonth","_data","_context17","getFullYear","getMonth","yearMonth","setChallengeLimit","updateUserSetting","_ref18","_callee18","_context18","preferred_username","adjustUserJournalCount","diff","_ref19","_callee19","_context19","_ref20","_callee20","_context20","updateUserBookOrder","_ref21","_callee21","_context21","LoadingCard","react_default","createElement","Fragment","className","ProfilePic","thisPropsUser","loadingIcon","attributes","picture","profilePic","Navigation","_this","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","showSubNav","hideBillingLink","showSubNavUI","bind","assertThisInitialized","setState","confirm","props","history","prevProps","location","pathname","_this$state","notifBadgeCounts","n","chatNotfication","chatRoomUser","chatRoom","messages","messageUserId","receiverHasRead","chatNotificationBadgeCounts","Nav","react_router_dom","to","onClick","src","alt","style","background","borderRadius","width","height","marginLeft","href","happyLogoBlack","happyLogoWhite","bibleLogoBlack","bibleLogoWhite","logoLinkTo","gnjLogoMobile","gnjLogo","Component","connect","bindActionCreators","withRouter","Login","lostPassword","userLogin","onChange","e","_e$target","target","defineProperty","preventDefault","toLowerCase","_this$state2","react_router","from","margin","display","justifyContent","marginBottom","maxWidth","maxHeight","onSubmit","placeholder","autoCorrect","autoCapitalize","required","includes","disabled","marginTop","padding","Signup","email","errorMsg","isLoading","userSignup","scrollTo","_this2","emailLowercase","signUp","rel","ConfirmAccount","verficationcode","confirmAccount","usernameLowercase","confirmSignUp","ResendVerificationCode","resendVerificationClicked","resendSignUp","Footer","ForgotPassword","resetPassword","forgotPassword","components_Footer","ForgotUsername","_onChange","_findUsername","emailSent","SetNewPassword","forgotPasswordSubmit","decodeHtml","html","txt","document","innerHTML","MyJournalListItem","showJournalList","showJournalButton","_this$props","monthJournal","monthJournalList","index","draft","key","privacy","journalBookId","paddingRight","color","verticalAlign","journalWordCount","lovedCount","commentCount","fontWeight","textTransform","MyJournalList","searched","searchingJournals","components_LoadingCard","components_MyJournalListItem","textAlign","paddingTop","saveJournal","checkIfUserHasJournalAlready","userUid","journalWordCountPerMonth","request","getLatestJournals","_iterator","_step","publicJournalLatest","publicJournalData","publicLatestJournal","latestJournalData","resetData","journalWordCountBeforeEditing","publicJournalBookId","markedAs","_createForOfIteratorHelper","s","done","f","finish","t1","journalUid","adjustBookJournalsCount","setJournal","setEmptyCurrentJournal","newCommentCount","adjustJournalCommentCount","errors","errorType","newComment","findUpdatedComment","findIndex","x","hasLoved","commentId","obj","journalId","count","maxTries","all","getMoreComments","_ref9","nextTokenComment","getPublicJournals","setCommunityLimit","searchPublicJournals","contains","getPublicJournalEntry","_ref12","userLovedJournalJournalId","userLovedJournalUserId","_ref13","_ref14","_x17","userLovedCommentUserId","_ref15","userLovedCommentCommentId","commentLovedCount","_x18","_ref16","commentLovedID","getLovedUsersFromJournal","_ref17","lovedNextToken","getLovedUsersFromComment","commendUid","getComment","_x22","challengeData","countJournalWordCountPerMonth","journalsPerMonth","_x23","_x24","userProfileImage","userDisplayName","challengeUid","newNumberOfJournal","_callee22","_context22","isUserLovedJournal","_callee23","_context23","isUserLovedComment","_callee24","_context24","isUserHasABook","bookName","_callee25","_context25","bookUserId","createABook","bookData","_ref26","_callee27","createABookReqeust","coverImage","_context27","error","_ref27","_callee26","_context26","bookCoverImg","_x27","uploadBookCoverImage","_x25","_x26","_callee28","_context28","getMoreUserBooks","_ref29","_callee29","_context29","nextTokenBook","_x28","getABookWithJournals","bookID","nextTokenPublicJournal","_ref30","_callee30","_context30","_x29","deleteABook","_ref31","_callee31","_context31","_x30","updateABook","_ref32","_callee32","_context32","newImage","bookJournalCount","_x31","_x32","bookId","_ref33","_callee33","getTotalJournalsOfTheBook","_context33","_x33","_x34","convertHEICToAny","heic2any","blob","toType","quality","warn","test","getCompressedImage","imageFile","compressedFile","maxSizeMB","maxWidthOrHeight","useWebWorker","imageCompression","isPaidUser","membership","AddBookPopup","_closeModal","bookPopupControl","_createABook","_coverImageSelect","files","showAddaBook","isCreatingABook","lib_default","isOpen","contentLabel","onRequestClose","overlay","maxLength","htmlFor","ReactModal","setAppElement","UpgradePopup","_closePopup","popupControl","publishPrivate","ctaText","_becomeAMember","_this$props2","featureName","showUpgrade","membersOnly","BooksMyJournal","_showBook","showBook","localStorage","setItem","_showAddaBookUI","_popupControl","_bookPopupControl","bookCreated","_bookCreated","t2","getItem","listOfBooks","backgroundImage","fontSize","components_AddBookPopup","components_UpgradePopup","MyJournal","showSearch","showLoadingIcon","searchText","showSearchUI","loadMore","searchJournals","totalJournals","_this$props$user","newJournalList","j","totalLoadedMonthNumber","role","aria-label","containers_BooksMyJournal","class","onKeyUp","components_MyJournalList","PureComponent","timeout","QuillEditor","_handleChange","text","textCallback","cursorBottomPosition","quillTextarea","thisEditor","editor","lastIndex","getSelection","newCursorBottomPosition","getBounds","bottom","innerHeight","scrollBy","newWordArray","setTimeout","words","clearTimeout","modules","toolbar","header","clipboard","matchVisual","imageHandler","insertToEditor","setSelection","getLength","readOnly","getModule","addHandler","qlToolbar","querySelectorAll","offsetTop","docBody","documentElement","parentNode","hasOffset","pageYOffset","onscroll","scrollTop","classList","add","remove","range","insertEmbed","_this3","temp","getElementById","setAttribute","cursor","opacity","position","accept","appendChild","click","addEventListener","enable","origin","now","_this4","deleteText","_this5","react_quill_lib_default","defaultValue","theme","ref","quilltext","scrollingContainer","DateTimePicker","newDate","setDate","react_datepicker_min_default","selected","date","timeInputLabel","dateFormat","maxDate","addDays","showTimeInput","WriteJournal","_selectPrivacy","textPassed","wordCount","autoSaved","journalContent","journalCreatedAt","journalPrivacy","upgradePopUpMessage","toISOString","replaceState","_publishJournal","_updateJournal","ReactGA","label","isSavingJournal","prevPath","_selectBook","_newJournalCreatedAt","journalPromptCheck","URLSearchParams","search","bookSelected","get","journalPrompt","_this$state3","bookList","goBack","utils_DateTimePicker","components_QuillEditor","JournalEntryContent","journalEntry","NoMatch","JournalEntry","_isMounted","_deleteJournal","journal_uid","deletedJournal","match","alert","_goBackDestination","_renderSubNavUI","stateUpdating","attemptJournal","components_NoMatch","loadJournalEntry","components_JournalEntryContent","CommentWrite","_commentSubmit","commentCallback","commentValue","onChangeCommend","CommentListItem","_editComment","editMode","_cancelEditComment","commentCotent","_editCommentHandleChange","_editCommentSave","_deleteComment","_userLovedComment","_this$props3","loveComment","currentUserID","loveLoading","_userUnlovedComment","unloveComment","_this$props4","commentEditUI","editCommentFormBtns","editCommentForm","lovedUI","data-id","Comments","_addComment","commentPassed","showLoadingIconWriting","writingContent","_updateComment","_loadMore","moreComment","currentUserLovedComment","self","_loveComment","foundIndex","userLovedComment","_unloveComment","_onWritingComment","localJournal","commentList","components_CommentListItem","components_CommentWrite","PublicJournalEntryContent","_userLovedJournal","loveJournal","_userUnlovedJournal","unloveJournal","getAttribute","_renderLovedBtn","_copyURL","selection","dummy","URLtoCopy","createRange","selectNodeContents","removeAllRanges","addRange","setSelectionRange","select","execCommand","removeChild","journalInteraction","_useState","useState","_useState2","slicedToArray","setIsUserLovedJournal","_useState3","_useState4","setStateUpdating","_useState5","_useState6","setLocalJournal","useEffect","unmounted","currentJournalUid","checkIfUserLovedJournal","goBackDestination","_isUserLovedJournal","_isUserLovedJournal2","components_PublicJournalEntryContent","Helmet","renderSubNavUI","containers_Comments","EditJournal","journalLovedCount","journalCommentCount","bookChangedFromId","journlReturned","editJoural","PublicJournalListItem","journalImage","imageLoaded","tmp","querySelector","onLoad","Community","invokeMasonryAgain","invokeMasonry","publicJournals","loadingJournals","elem","Masonry","itemSelector","percentPosition","jornalList","components_PublicJournalListItem","MemberListItem","member","toString","weeklyChallengeCompleted","WeeklyJournalChallenge","getWeeks","weekStart","d","day","getDay","getDate","getMonday","days","userJournalThisMonth","subtract","endOf","userWeeklyJournalCheck","mj","journalDays","len","charAt","Challenge","listUsers","isMoreLoading","memberList","myJournalThisMonth","myChallenge","memberListRender","components_MemberListItem","components_WeeklyJournalChallenge","ChatRoomListItem","chatUsers","chatRoomUsers","chatUserNames","u","join","currentUserSentLastMessage","renderLastMessage","renderLastMessageTime","fromNow","userHasSeenTheLastMessage","profilePlaceholder","chatCreateMessageSubscriptions","chatCreateSubscription","newChatData","unshift","chatDeleteMessageSubscriptions","chatDeleteSubscription","checkExistingChatRoom","members","createdBy","createChatMessage","chatRoomId","messageChatRoomId","deleteChatMessage","chatMessageId","getChatRoomUserId","cr","updatedTime","updatedAt","getChatRoomUsersByChatRoomId","getChatRoomData","token","nextTokenMessage","updateChatRoomRead","getMoreChatRoomUsers","nextTokenChatRoomUser","currentUsername","setCurrentUsername","setNextToken","loadMoreChatRooms","renderChatList","chat","components_ChatRoomListItem","ChatMessageItem","showDeleteLink","setShowDeleteLink","renderUsername","chatMessage","deletingMessage","removeChatMessage","checkMembership","setUpgradePopup","_useState7","_useState8","setMessage","_useState9","_useState10","newChatRoom","setChatRoom","_useState11","_useState12","chatData","getChatData","_useState13","_useState14","subscriptionChatData","setSubscriptionChatData","_useState15","_useState16","setLimit","_useState17","_useState18","_useState19","_useState20","setLoading","_useState21","_useState22","stopScrollingToBottom","setStopScrollingToBottom","_useState23","_useState24","sendingMessage","setSendingMessage","_useState25","_useState26","setDeletingMessage","scrollHeight","fetchData","fetchChatData","chatRoom_uid","reverse","subscribeChatData","sendMessage","allUsers","sortedMembersToChatArray","AllSortedMembersToChat","existingChatRooms","chatRoomCreated","messageCreated","chatWith","row","userClickedInput","removeChatMessageByUser","messageId","leaveChatRoom","renderChatUI","loadMoreFetchChatData","fetchMoreData","components_ChatMessageItem","rows","onKeyDown","keyCode","which","shiftKey","onFocus","renderChatTitle","chatWithDisplayname","NotificationListItem","followIconNoProfilePic","Notification","_renderNotificationList","components_NotificationListItem","_this$props$user2","noNotifications","isPaidMember","MemberBadge","abbrNum","number","decPlaces","Math","pow","abbrev","size","round","MyAccount","_selectLocalImage","showProfilePicLoadingIcon","authorData","loadingAuthorData","authData","uploadIcon","floor","community","Author","author_uid","decodedAuthor_uid","decodeURIComponent","_followAuthor","currentUserData","stAuthorData","followingObj","followingInProgress","showFollowBtn","_unfollowAuthor","_renderFollowingBtn","checkExistingChatRooms","allUsersToChat","sortedMembersToChat","sortedMembersDisplayNameToChat","_renderMessageBtn","_loadMoreBook","_this$state4","booksToRender","authenticatedUsername","followData","_this$state5","newArray","stripeCreateMember","stripeData","stripeGetCustomerInfo","stripeCustomerId","updateStripeCustomerInfo","customerData","stripeGetCouponCode","stripeCouponId","stripeCancelMembership","stripeSubscriptionId","cancel","membershipPlan","userBackUpJournals","deleteBackup","CouponForm","_getCouponCode","coupon","_applyCouponCode","applyCouponCode","couponMsg","isCouponLoading","CreditCardForm","creditCardSubmitForm","react_stripe_elements_es","base","BillingSubscriptionInfo","_reactivateMembership","reactivateMembership","getMembershipBadge","membershipBadge","_onPlanChange","userSelectedPlan","selectedMembershipPlan","_renderFreeMember","creditCardSubmit","couponDiscount","isCurrentUserLegacyUser","subscriptionPlan","annual","monthly","checked","components_CouponForm","price","discount","newPrice","discountedPrice","components_CreditCardForm","_renderAnnualMember","stripeCustomer","creaditCardUpdate","showUpdateCreditCard","showUpdateCreditCardValue","customer","unix","current_period_end","plan","amount","sources","brand","last4","_renderNonAnnualMember","_renderSubscriptionInfo","deleted","BillingListItem","billingList","str","amountCharged","created","source","ReceiptURL","receipt_url","Billing","_applyCouponcode","couponCodePassedForSubmit","couponInfo","couponCode","percent_off","_showUpdateCreditCard","_creditCardSubmit","membershipPlanSelected","userSubscribe","stripe","createToken","stripeToken","raw","_creaditCardUpdate","updatedCreditCard","charges","_reactivateMembershipRequest","_stripeData","nickname","_selectedMembershipPlan","charge","status","billing","components_BillingSubscriptionInfo","injectStripe","Setting","_updateUserSetting","verificationCode","emailVerified","successMsg","verifyCurrentUserAttributeSubmit","_resendVerificationCode","verifyCurrentUserAttribute","_changePassword","currentPassword","newPassword","isLoadingPassword","changePassword","passwordSuccessMsg","passwordErrorMsg","_darkTheme","getElementsByTagName","darkMode","_renderThemeSetting","_setEmailNotificationSetting","userEmailNotification","custom:emailNotification","_renderEmailNotificationInfo","_updateUserEmailNotificationSetting","_renderAccountInfo","email_verified","_renderChangePassword","_renderBackupJournals","backupTimeout","backupProcessing","_backupMyJournals","requestBackup","downloadUrl","open","fileName","_deleteMyAccount","showDeleteMyAccount","_deleteMyAccountRequest","prompt","deleteMyAccountUI","CancelConfirm","_cancelMembership","MemberLevel","Following","getFollowingData","followings","divs","followingProfile","followingsObj","nextFollowingToken","loadingMore","loadingFollowingData","followingContent","Follower","getFollowerData","followers","follower","followerProfile","followersObj","nextFollowerToken","loadingFollowerData","followersCount","followerContent","LovedUsersListItem","lovedUser","LovedUsers","_loadLovedUser","journalOrComment_uid","_this$props$lover","components_LovedUsersListItem","Contact","scrolling","allowtransparency","frameBorder","border","UserFeedback","marginHeight","marginWidth","LoadingBook","Book","_useSortable","useSortable","listeners","setNodeRef","transform","transition","isDragging","userSelect","CSS","Transform","BookGrid","forwardRef","_props$book","useHistory","SortableBooks","activeId","setActiveId","setItems","callbackNewOrder","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","core_esm","collisionDetection","closestCenter","onDragEnd","active","over","oldIndex","newIndex","arrayMove","onDragStart","sortable_esm","strategy","rectSortingStrategy","reorderMode","MyBooks","upgradeMessage","getNewOrderofBooks","newOrder","saveNewBookOrder","newBookOrderIds","exisitingBookOrderIds","every","el","selectedBook","SortableBooks_SortableBooks","pointerEvents","components_LoadingBook","EditBookPopup","_editAbook","editBook","_removeImage","removeImage","isUpdatingABook","BookJournalListItem","BookJournals","book_uid","bookJournalNextToken","_getJournalsByBook","bookJournals","newBookObj","journalAdded","_editPopUp","_editBook","newData","_updatedBook","_deleteBook","fetchingJournals","noJournalMessage","components_BookJournalListItem","editPopup","components_EditBookPopup","bookPresent","backgroundSize","initialize","pageview","PrivateRoute","component","rest","objectWithoutProperties","auth","render","App","forEach","myId","gnjFav","containers_Navigation","path","PublicJournalEntry","App_PrivateRoute","exact","Chat","ChatRoom","MyAccountPage","Boolean","hostname","composeEnhancer","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","thunk","ReactDOM","react_redux_es","apiKey","process","src_App","navigator","serviceWorker","ready","registration","unregister","module","exports","__webpack_require__","p"],"mappings":"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","file":"static/js/main.49eece34.chunk.js","sourcesContent":["const initialUserData = {\n isFetchingCurrentUserSession: false,\n isAuthenticated: null,\n isFetchUserData: false,\n isLoginSuccess: false,\n loginError: null,\n loginLoading: false,\n accountData: null,\n userData: null,\n currentUser: null,\n userJournal: [],\n notifications: [],\n userBooks: [],\n notification_nextToken: null,\n userBook_nextToken: null,\n iPhoneExtensions: [\"HEIC\", \"Heic\", \"heic\", \"HEIF\", \"Heif\", \"heif\"]\n};\n\nconst user = (state = initialUserData, action) => {\n switch (action.type) {\n case \"SET_CURRENT_USER_SESSION\":\n return {\n ...state,\n isFetchingCurrentUserSession: action.isFetchingCurrentUserSession,\n isAuthenticated: action.isAuthenticated\n };\n case \"SET_LOGIN_SUCCESS\":\n return {\n ...state,\n isLoginSuccess: action.isLoginSuccess,\n accountData: action.accountData\n };\n case \"SET_LOGIN_STATUS\":\n return {\n ...state,\n loginError: action.loginError,\n loginLoading: action.loginLoading\n };\n case \"RESET_LOAGIN_ERROR\":\n return {\n ...state,\n loginError: null\n };\n case \"GET_USER_DATA\":\n return {\n ...state,\n userData: action.userData,\n userJournal: [action.userData.journals],\n notifications: action.userData.notifications.items,\n userBooks: action.userData.books.items,\n notification_nextToken: action.userData.notifications.nextToken,\n userBook_nextToken: action.userData.books.nextToken\n };\n case \"CREATE_USER_BOOK\":\n return {\n ...state,\n userBooks: [action.userBooks, ...state.userBooks]\n };\n case \"ADD_USER_BOOK_DATA\":\n return {\n ...state,\n userBooks: [...state.userBooks, ...action.newBookData.items],\n userBook_nextToken: action.newBookData.nextToken\n };\n case \"REMOVE_A_BOOK\":\n return {\n ...state,\n userBooks: state.userBooks.filter(book => {\n return book.id !== action.deletedBook.id;\n })\n };\n case \"UPDATE_A_BOOK\":\n return {\n ...state,\n userBooks: state.userBooks.map(book => {\n const item = action.updatedBook.find(({ id }) => id === book.id);\n return item ? item : book;\n })\n };\n case \"GET_MORE_USER_SEARCH_DATA\":\n return {\n ...state,\n userJournal: [...state.userJournal, action.userData.journals]\n };\n case 'SET_FETCH_USER_DATA_SESSION':\n return Object.assign({}, state, {\n isFetchUserData: action.isFetchUserData\n });\n case \"GET_CURRENT_USER\":\n return {\n ...state,\n currentUser: action.currentUser\n };\n case \"ADD_USER_JOURNAL_DATA\":\n return {\n ...state,\n userJournal: [...state.userJournal, action.moreUserJournals]\n };\n case \"CREATE_NOTIFICATION_SUBSCRIPTION\":\n return {\n ...state,\n notifications: [action.notification, ...state.notifications]\n };\n case \"ADD_NOTIFICATION_DATA\":\n return {\n ...state,\n notifications: [\n ...state.notifications,\n ...action.newNotificationData.items\n ],\n notification_nextToken: action.newNotificationData.nextToken\n };\n case \"UPDATE_NOTIFICATION\":\n for (let i = 0; i < state.notifications.length; i++) {\n if (state.notifications[i].id === action.notifId) {\n state.notifications[i].read = true;\n }\n }\n return {\n ...state,\n notifications: [...state.notifications]\n };\n case \"ADJUST_TOTAL_JOURNAL\":\n state.userData.totalJournal = action.total\n return {\n ...state\n };\n case \"USER_LOGOUT\":\n return {\n userJournal: [],\n currentUser: null,\n userData: null,\n accountData: null,\n notifications: [],\n userBooks: [],\n isFetchingCurrentUserSession: false\n };\n default:\n return state;\n }\n};\n\nexport default user;\n","const initialState = {\n journalLoading: false,\n pendingCreate: false,\n pendingDelete: false,\n pendingUpdate: false,\n currentJournal: null,\n myJournalLimit: 60,\n communityLimit: 30,\n challengeLimit: 30\n}\n\nfunction journal(state = initialState, action) {\n switch (action.type) {\n case \"JOURNAL_LOADING_STATUS\":\n return {\n ...state,\n journalLoading: action.loading,\n };\n case \"JOURNAL_TEMP_SET\":\n return {\n ...state,\n currentJournal: action.journal,\n };\n case \"JOURNAL_AVAILABLE\":\n return {\n ...state,\n currentJournal: action.currentJournal,\n journalLoading: false,\n };\n case \"REQUEST_CREATE_JOURNAL\":\n return {\n ...state,\n pendingCreate: true,\n };\n case \"REQUEST_CREATE_JOURNAL_SUCCESS\":\n return {\n ...state,\n currentJournal: action.journalCreated,\n pendingCreate: false\n };\n case \"REQUEST_CREATE_JOURNAL_FAILED\":\n return {\n ...state,\n pendingCreate: false,\n }; \n case \"REQUEST_UPDATE_JOURNAL\":\n return {\n ...state,\n pendingUpdate: true,\n };\n case \"REQUEST_UPDATE_JOURNAL_SUCCESS\":\n return {\n ...state,\n currentJournal: action.journalUpdated,\n pendingUpdate: false\n };\n case \"REQUEST_UPDATE_JOURNAL_FAILED\":\n return {\n ...state,\n pendingUpdate: false,\n }; \n case \"REQUEST_DELETE_JOURNAL\":\n return {\n ...state,\n pendingDelete: true,\n }; \n case \"REQUEST_DELETE_JOURNAL_SUCCESS\":\n return {\n ...state,\n pendingDelete: false\n }\n case \"REQUEST_DELETE_JOURNAL_FAILED\":\n return {\n ...state,\n pendingDelete: false,\n };\n case \"SET_MY_JOURNAL_LIMIT\":\n return {\n ...state,\n myJournalLimit: action.limit\n }\n case \"SET_COMMUNITY_LIMIT\":\n return {\n ...state,\n communityLimit: action.limit\n }\n case \"SET_CHALLENGE_LIMIT\":\n return {\n ...state,\n challengeLimit: action.limit\n }\n default:\n return state;\n }\n}\n\nexport default journal;\n","const initialState = {\n lovedUsers: [],\n loverLoading: false,\n nextToken: null,\n}\n\nfunction lover(state = initialState, action) {\n switch (action.type) {\n case \"SET_LOVERLOADING_STATUS\":\n return {\n ...state,\n loverLoading: action.loverLoading,\n };\n case \"SET_LOVED_USERS\":\n return {\n ...state,\n lovedUsers: action.lovedUsers.items,\n nextToken: action.lovedUsers.nextToken\n };\n case \"ADD_LOVED_USERS\":\n return {\n ...state,\n lovedUsers: [...state.lovedUsers, ...action.lovedUsers.items],\n nextToken: action.lovedUsers.nextToken\n };\n default:\n return state;\n }\n}\n\nexport default lover;\n","import { combineReducers } from 'redux'\nimport user from './user'\nimport journal from './journal'\nimport lover from './lover'\n\nconst appReducer = combineReducers({\n user,\n journal,\n lover\n})\n\nconst rootReducer = (state, action) => {\n if (action.type === 'USER_LOGOUT') {\n state = undefined\n }\n\n return appReducer(state, action)\n}\n\nexport default rootReducer\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-east-1\",\n \"aws_mobile_analytics_app_id\": \"4338ad7e3c0c42eb98fc6bb2ffad9f84\",\n \"aws_mobile_analytics_app_region\": \"us-east-1\",\n \"Analytics\": {\n \"AWSPinpoint\": {\n \"appId\": \"4338ad7e3c0c42eb98fc6bb2ffad9f84\",\n \"region\": \"us-east-1\"\n }\n },\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"gnjAmplifyStripeWebhooks\",\n \"endpoint\": \"https://cu9xrrwp5h.execute-api.us-east-1.amazonaws.com/production\",\n \"region\": \"us-east-1\"\n }\n ],\n \"aws_appsync_graphqlEndpoint\": \"https://qxg7xs7mvvfebjgj6zwwdrwdnu.appsync-api.us-east-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"us-east-1\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_cognito_identity_pool_id\": \"us-east-1:0573d83d-ed84-4c85-b3aa-31854936a75a\",\n \"aws_cognito_region\": \"us-east-1\",\n \"aws_user_pools_id\": \"us-east-1_MjKPaSZT4\",\n \"aws_user_pools_web_client_id\": \"7k0dmghplva0959erm7ovno27l\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_user_files_s3_bucket\": \"gnj-amplify-production\",\n \"aws_user_files_s3_bucket_region\": \"us-east-1\"\n};\n\n\nexport default awsmobile;\n","export const getUserFollowings = `query GetUserFollowings($user: String!, $nextToken: String) {\n listFollowings(filter: { user: { eq: $user }}, nextToken: $nextToken) {\n items {\n id\n user\n following\n createdAt\n followingProfile\n followerProfile\n }\n nextToken\n }\n }\n `\n\nexport const getUserFollowingsFilteredByTarget = `query GetUserFollowingsFiltered($user: String!, $following: String!) {\n listFollowings(filter: { and: { user: { eq: $user}, following: { eq: $following}}}) {\n items {\n id\n }\n nextToken\n }\n }\n `\n\nexport const isUserFollowingTheAuthor = `query IsUserFollowingTheAuthor(\n $following: String!\n $user: String!\n $limit: Int\n $nextToken: String\n $sortDirection: DirectionEnum\n ) {\n isUserFollowingTheAuthor(\n following: $following\n user: $user\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n `\n\nexport const getUserFollowers = `query GetUserFollowers($following: String!, $nextToken: String) {\n listFollowings(filter: { following: { eq: $following }}, nextToken: $nextToken) {\n items {\n id\n user\n following\n createdAt\n followingProfile\n followerProfile\n }\n nextToken\n }\n}\n`\n\nexport const getUserFollowersFilteredByTarget = `query GetUserFollowingsFiltered($id: ID!, $target: String!) {\n getUser(id: $id) {\n follower( filter: { target: { eq: $target }} ) {\n items {\n id\n target\n createdAt\n }\n nextToken\n }\n }\n}\n`\n\nexport const userFollowingAsKey = `query UserFollowingAsKey(\n $user: String\n $nextToken: String\n $limit: Int\n) {\n userFollowingAsKey(\n user: $user\n nextToken: $nextToken\n sortDirection: DESC\n limit: $limit\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n }\n nextToken\n }\n}\n`\nexport const userFollowerAsKey = `query UserFollowerAsKey(\n $following: String\n $nextToken: String\n $limit: Int\n) {\n userFollowerAsKey(\n following: $following\n nextToken: $nextToken\n sortDirection: DESC\n limit: $limit\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n }\n nextToken\n }\n}\n`\n\nexport const getUserJournalOfMonth = `query GetUser(\n $id: ID!\n $yearMonth: String\n) {\n getUser(id: $id) {\n numberOfJournal(yearMonth: $yearMonth)\n }\n}\n`\n\nexport const listUsers = `query ListUsers(\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n $yearMonth: String\n) {\n listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n numberOfJournal(yearMonth: $yearMonth)\n followingCount\n followerCount\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n nextToken\n }\n}\n`\nexport const getUser = `query GetUser(\n $id: ID!\n $nextTokenJournal: String\n $nextTokenNotification: String\n $nextTokenPublicJournal: String\n $nextTokenBook: String\n $nextTokenChatRoomUser: String\n $limit: Int\n) {\n getUser(id: $id) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n journals(limit: $limit, sortDirection: DESC, nextToken: $nextTokenJournal) {\n items {\n id\n privacy\n draft\n lovedCount\n commentCount\n content\n journalWordCount\n createdAt\n updatedAt\n markedAs\n journalBookId\n }\n nextToken\n }\n publicJournals(limit: 30, sortDirection: DESC, nextToken: $nextTokenPublicJournal) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n journalWordCount\n lovedCount\n commentCount\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n lovedJournals {\n items {\n id\n createdAt\n }\n nextToken\n }\n lovedComments {\n items {\n id\n createdAt\n }\n nextToken\n }\n notifications(limit: 30, sortDirection: DESC, nextToken: $nextTokenNotification) {\n items {\n id\n content\n category\n link\n createdAt\n read\n actionUser{\n userID\n displayName\n photoURL\n }\n user {\n id\n }\n }\n nextToken\n }\n books(limit: 30, sortDirection: DESC, nextToken: $nextTokenBook) {\n items {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n nextToken\n }\n chatRoomUser(limit: 30, sortDirection: DESC, nextToken: $nextTokenChatRoomUser) {\n items {\n id\n createdAt\n updatedAt\n members\n chatRoom {\n id\n receiverHasRead\n createdBy\n messages(sortDirection: DESC) {\n items {\n content\n messageUserId\n createdAt\n user {\n displayName\n id\n profileImage\n }\n }\n }\n chatRoomUsers {\n items {\n user {\n displayName\n id\n profileImage\n }\n }\n }\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const getAuthor = /* GraphQL */ `\n query GetUser($id: ID!) {\n getUser(id: $id) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n journals {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n }\n nextToken\n }\n publicJournals {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n }\n nextToken\n }\n lovedComments {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n }\n nextToken\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n notifications {\n items {\n id\n content\n category\n link\n read\n createdAt\n }\n nextToken\n }\n books(limit: 30, sortDirection: DESC) {\n items {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const getJournals = /* GraphQL */ `\n query GetUser(\n $id: ID!\n $content: String\n $nextTokenJournal: String\n $nextTokenNotification: String\n ) {\n getUser(id: $id) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals(\n limit: 365\n filter: { content: { contains: $content } }\n sortDirection: DESC\n nextToken: $nextTokenJournal\n ) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n }\n nextToken\n }\n publicJournals {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n }\n nextToken\n }\n lovedComments {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n }\n nextToken\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n notifications(\n limit: 30\n sortDirection: DESC\n nextToken: $nextTokenNotification\n ) {\n items {\n id\n content\n category\n link\n read\n createdAt\n }\n nextToken\n }\n books(limit: 30, sortDirection: DESC) {\n items {\n id\n book\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n nextToken\n }\n chatRoomUser(limit: 30, sortDirection: DESC) {\n items {\n id\n createdAt\n updatedAt\n members\n chatRoom {\n id\n receiverHasRead\n createdBy\n messages(sortDirection: DESC) {\n items {\n content\n messageUserId\n createdAt\n user {\n displayName\n id\n profileImage\n }\n }\n }\n chatRoomUsers {\n items {\n user {\n displayName\n id\n profileImage\n }\n }\n }\n }\n }\n nextToken\n }\n }\n }\n`\nexport const getJournal = /* GraphQL */ `\n query GetJournal($id: ID!) {\n getJournal(id: $id) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n publicJournals {\n nextToken\n }\n }\n }\n }\n`\nexport const getComment = `query GetComment($id: ID!) {\n getComment(id: $id) {\n id\n content\n author {\n id\n uuid\n displayName\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n journal {\n id\n privacy\n draft\n content\n markedAs\n author {\n id\n uuid\n displayName\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n comments {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n}\n`\n\nexport const getLoveUserComment = `query GetComment(\n $id: ID!\n $lovedNextToken: String) {\n getComment(id: $id) {\n id\n content\n lovedUsers(limit: 30, nextToken: $lovedNextToken) {\n items {\n id\n user{\n id\n displayName\n profileImage\n }\n createdAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const listComments = `query ListComments(\n $filter: ModelCommentFilterInput\n $nextToken: String\n) {\n listComments(filter: $filter, limit: 30, nextToken: $nextToken) {\n items {\n id\n content\n author {\n id\n uuid\n displayName\n createdAt\n updatedAt\n }\n journal {\n id\n privacy\n draft\n content\n markedAs\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n createdAt\n updatedAt\n }\n nextToken\n }\n}\n`\nexport const listPublicJournals = /* GraphQL */ `\n query ListPublicJournals(\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPublicJournals(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const getLoveUserJournal = `query getPublicJournal(\n $id: ID!\n $lovedNextToken: String\n) {\n getPublicJournal(id: $id) {\n id\n content\n lovedUsers(limit: 30, nextToken: $lovedNextToken) {\n items {\n id\n createdAt\n user{\n id\n displayName\n profileImage\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const journalAuthorIdMarkedAsKey = `query journalAuthorIdMarkedAsKey(\n $journalAuthorId: String\n) {\n journalAuthorIdMarkedAsKey(journalAuthorId: $journalAuthorId, markedAs: { eq: \"LATEST\" }) {\n items{\n id\n markedAs\n }\n nextToken\n }\n}\n`\nexport const getUserLatestPublicJournal = `query JournalAuthorIdPrivacyAsKey(\n $journalAuthorId: String\n) {\n journalAuthorIdPrivacyAsKey(\n journalAuthorId: $journalAuthorId\n privacy: { eq: \"PUBLIC\" }\n sortDirection: DESC\n limit: 1\n ) {\n items {\n id\n }\n }\n}\n`\nexport const gnjAmplifyStripeGetCustomerInfo = `query gnjAmplifyStripeGetCustomerInfo($stripeCustomerId: String!) {\n gnjAmplifyStripeGetCustomerInfo(stripeCustomerId: $stripeCustomerId)\n}\n`\nexport const yearMonthUserAsKey = `query YearMonthUserAsKey(\n $yearMonth: String\n $user: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChallengeFilterInput\n $limit: Int\n $nextToken: String\n) {\n yearMonthUserAsKey(\n yearMonth: $yearMonth\n user: $user\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n }\n nextToken\n }\n}\n`\nexport const yearMonthJournalsPerMonthAsKey = `query YearMonthJournalsPerMonthAsKey(\n $yearMonth: String\n $journalsPerMonth: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChallengeFilterInput\n $limit: Int\n $nextToken: String\n) {\n yearMonthJournalsPerMonthAsKey(\n yearMonth: $yearMonth\n journalsPerMonth: $journalsPerMonth\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n }\n nextToken\n }\n}\n`\nexport const getPublicJournal = /* GraphQL */ `\n query GetPublicJournal($id: ID!, $nextTokenComment: String) {\n getPublicJournal(id: $id) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n }\n nextToken\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n publicJournals {\n nextToken\n }\n }\n comments(limit: 10, sortDirection: ASC, nextToken: $nextTokenComment) {\n items {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n }\n lovedUsers {\n items {\n id\n createdAt\n user {\n id\n displayName\n profileImage\n }\n }\n nextToken\n }\n }\n nextToken\n }\n }\n }\n`\nexport const markedAsAuthorAsKey = /* GraphQL */ `\n query MarkedAsAuthorAsKey(\n $markedAs: String\n $journalAuthorId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n markedAsAuthorAsKey(\n markedAs: $markedAs\n journalAuthorId: $journalAuthorId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const journalAuthorLatestAsKey = /* GraphQL */ `\n query JournalAuthorLatestAsKey(\n $journalAuthorId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n journalAuthorLatestAsKey(\n journalAuthorId: $journalAuthorId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const publicJournalMarkedAsKey = /* GraphQL */ `\n query PublicJournalMarkedAsKey(\n $markedAs: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n publicJournalMarkedAsKey(\n markedAs: $markedAs\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const isUserLovedJournalAsKey = /* GraphQL */ `\n query IsUserLovedJournalAsKey(\n $userLovedJournalUserId: String\n $userLovedJournalJournalId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserLovedJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserLovedJournalAsKey(\n userLovedJournalUserId: $userLovedJournalUserId\n userLovedJournalJournalId: $userLovedJournalJournalId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const isUserLovedCommentAsKey = /* GraphQL */ `\n query IsUserLovedCommentAsKey(\n $userLovedCommentUserId: String\n $userLovedCommentCommentId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserLovedCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserLovedCommentAsKey(\n userLovedCommentUserId: $userLovedCommentUserId\n userLovedCommentCommentId: $userLovedCommentCommentId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n comment {\n id\n content\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const gnjAmplifyuserBackUpJournals = /* GraphQL */ `\n query GnjAmplifyuserBackUpJournals(\n $username: String!\n $deleteBackup: String\n ) {\n gnjAmplifyuserBackUpJournals(\n username: $username\n deleteBackup: $deleteBackup\n )\n }\n`\nexport const getBook = /* GraphQL */ `\n query GetBook(\n $id: ID!\n $nextTokenJournal: String\n $nextTokenPublicJournal: String\n ) {\n getBook(id: $id) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals(limit: 30, sortDirection: DESC, nextToken: $nextTokenJournal) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n author {\n id\n uuid\n displayName\n profileImage\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n publicJournals(\n limit: 30\n sortDirection: DESC\n nextToken: $nextTokenPublicJournal\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const isUserHasABookAsKey = /* GraphQL */ `\n query IsUserHasABookAsKey(\n $bookUserId: String\n $book: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelBookFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserHasABookAsKey(\n bookUserId: $bookUserId\n book: $book\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n publicJournals {\n nextToken\n }\n }\n nextToken\n }\n }\n`\nexport const doesChatRoomExist = /* GraphQL */ `\n query DoesChatRoomExist(\n $chatRoomUserUserId: String\n $members: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChatRoomUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n doesChatRoomExist(\n chatRoomUserUserId: $chatRoomUserUserId\n members: $members\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\nexport const getChatRoom = /* GraphQL */ `\n query GetChatRoom($id: ID!, $limit: Int, $nextTokenMessage: String) {\n getChatRoom(id: $id) {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n items {\n user {\n id\n displayName\n }\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n }\n nextToken\n }\n messages(\n limit: $limit\n sortDirection: DESC\n nextToken: $nextTokenMessage\n ) {\n items {\n user {\n id\n displayName\n }\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`\nexport const chatRoomUserChatRoomIdAsKey = /* GraphQL */ `\n query ChatRoomUserChatRoomIdAsKey(\n $chatRoomUserChatRoomId: String\n $chatRoomUserUserId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChatRoomUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n chatRoomUserChatRoomIdAsKey(\n chatRoomUserChatRoomId: $chatRoomUserChatRoomId\n chatRoomUserUserId: $chatRoomUserUserId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n }\n nextToken\n }\n }\n`\n","export const gnjAmplifyStripeCreateMember = /* GraphQL */ `\n mutation GnjAmplifyStripeCreateMember(\n $stripeToken: String!\n $username: String!\n $email: String!\n $uuid: String!\n $membershipPlanSelected: String!\n $stripeCouponId: String\n $stripeCustomerId: String\n ) {\n gnjAmplifyStripeCreateMember(\n stripeToken: $stripeToken\n username: $username\n email: $email\n uuid: $uuid\n membershipPlanSelected: $membershipPlanSelected\n stripeCouponId: $stripeCouponId\n stripeCustomerId: $stripeCustomerId\n )\n }\n`\nexport const gnjAmplifyStripeGetCouponCode = `mutation GnjAmplifyStripeGetCouponCode($stripeCouponId: String!) {\n gnjAmplifyStripeGetCouponCode(stripeCouponId: $stripeCouponId)\n}\n`\nexport const gnjAmplifyStripeUpdateCustomer = `mutation GnjAmplifyStripeUpdateCustomer(\n $stripeCustomerId: String!\n $stripeToken: String\n $email: String\n) {\n gnjAmplifyStripeUpdateCustomer(\n stripeCustomerId: $stripeCustomerId\n stripeToken: $stripeToken\n email: $email\n )\n}\n`\nexport const gnjAmplifyupdateCustomerCreditCard = `mutation GnjAmplifyupdateCustomerCreditCard(\n $stripeCustomerId: String!\n $stripeToken: String!\n) {\n gnjAmplifyupdateCustomerCreditCard(\n stripeCustomerId: $stripeCustomerId\n stripeToken: $stripeToken\n )\n}\n`\nexport const gnjAmplifyStripeCancelMembership = /* GraphQL */ `\n mutation GnjAmplifyStripeCancelMembership(\n $stripeSubscriptionId: String!\n $username: String!\n $cancel: Boolean!\n $membershipPlan: String\n ) {\n gnjAmplifyStripeCancelMembership(\n stripeSubscriptionId: $stripeSubscriptionId\n username: $username\n cancel: $cancel\n membershipPlan: $membershipPlan\n )\n }\n`\nexport const createFollowing = /* GraphQL */ `\n mutation CreateFollowing($input: CreateFollowingInput!) {\n createFollowing(input: $input) {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n }\n }\n`\nexport const deleteFollowing = /* GraphQL */ `\n mutation DeleteFollowing($input: DeleteFollowingInput!) {\n deleteFollowing(input: $input) {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n }\n }\n`\nexport const createUser = `mutation CreateUser($input: CreateUserInput!) {\n createUser(input: $input) {\n id\n uuid\n }\n}\n`\nexport const updateUser = `mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(input: $input) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n journals {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n createdAt\n updatedAt\n }\n nextToken\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n lovedJournals {\n items {\n id\n createdAt\n }\n nextToken\n }\n books(limit: 30, sortDirection: DESC) {\n items {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n nextToken\n }\n publicJournals {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n }\n nextToken\n }\n lovedComments {\n items {\n id\n createdAt\n }\n nextToken\n }\n notifications {\n items {\n id\n content\n category\n link\n read\n actionUser {\n userID\n photoURL\n displayName\n }\n user {\n id\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const createUserLovedJournal = /* GraphQL */ `\n mutation CreateUserLovedJournal($input: CreateUserLovedJournalInput!) {\n createUserLovedJournal(input: $input) {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const updateUserLovedJournal = `mutation UpdateUserLovedJournal(\n $input: UpdateUserLovedJournalInput!\n $nextTokenComment: String\n) {\n updateUserLovedJournal(input: $input) {\n id\n journal {\n id\n privacy\n draft\n content\n markedAs\n author {\n id\n uuid\n displayName\n profileImage\n createdAt\n updatedAt\n }\n lovedUsers {\n items{\n id\n user{\n id\n displayName\n profileImage\n }\n }\n nextToken\n }\n comments(limit: 30, sortDirection: ASC, nextToken: $nextTokenComment){\n items {\n id\n content\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n }\n lovedUsers {\n items{\n id\n user{\n id\n displayName\n profileImage\n }\n }\n nextToken\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n user {\n id\n uuid\n displayName\n profileImage\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n }\n}\n`\nexport const deleteUserLovedJournal = /* GraphQL */ `\n mutation DeleteUserLovedJournal($input: DeleteUserLovedJournalInput!) {\n deleteUserLovedJournal(input: $input) {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const createJournal = `mutation CreateJournal($input: CreateJournalInput!) {\n createJournal(input: $input) {\n id\n privacy\n draft\n content\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalAuthorId\n journalBookId\n author {\n id\n uuid\n displayName\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const updateJournal = `mutation UpdateJournal(\n $input: UpdateJournalInput!\n) {\n updateJournal(input: $input) {\n id\n privacy\n draft\n content\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalAuthorId\n journalBookId\n author {\n id\n uuid\n displayName\n profileImage\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const deleteJournal = `mutation DeleteJournal($input: DeleteJournalInput!) {\n deleteJournal(input: $input) {\n id\n privacy\n draft\n content\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalAuthorId\n journalBookId\n author {\n id\n uuid\n displayName\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n}\n`\nexport const createUserLovedComment = /* GraphQL */ `\n mutation CreateUserLovedComment($input: CreateUserLovedCommentInput!) {\n createUserLovedComment(input: $input) {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n comment {\n id\n content\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n }\n }\n }\n`\nexport const updateUserLovedComment = `mutation UpdateUserLovedComment(\n $input: UpdateUserLovedCommentInput!\n $nextTokenComment: String\n) {\n updateUserLovedComment(input: $input) {\n id\n comment {\n id\n content\n author {\n id\n uuid\n displayName\n createdAt\n updatedAt\n }\n journal {\n id\n privacy\n draft\n content\n author {\n id\n uuid\n displayName\n createdAt\n updatedAt\n profileImage\n }\n lovedUsers {\n items{\n id\n user{\n id\n displayName\n profileImage\n }\n }\n nextToken\n }\n comments(limit: 30, sortDirection: ASC, nextToken: $nextTokenComment){\n items {\n id\n content\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n }\n lovedUsers {\n items{\n id\n user{\n id\n displayName\n profileImage\n }\n }\n nextToken\n }\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n createdAt\n updatedAt\n }\n user {\n id\n uuid\n displayName\n profileImage\n journals {\n nextToken\n }\n comments {\n nextToken\n }\n lovedJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n notifications {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n }\n}\n`\nexport const deleteUserLovedComment = `mutation DeleteUserLovedComment(\n $input: DeleteUserLovedCommentInput!\n) {\n deleteUserLovedComment(input: $input) {\n id\n createdAt\n }\n}\n`\nexport const createComment = /* GraphQL */ `\n mutation CreateComment($input: CreateCommentInput!) {\n createComment(input: $input) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n comments {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n }\n nextToken\n }\n }\n }\n`\nexport const updateComment = /* GraphQL */ `\n mutation UpdateComment($input: UpdateCommentInput!) {\n updateComment(input: $input) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n comments {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n }\n nextToken\n }\n }\n }\n`\nexport const deleteComment = /* GraphQL */ `\n mutation DeleteComment($input: DeleteCommentInput!) {\n deleteComment(input: $input) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n lovedUsers {\n nextToken\n }\n comments {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n }\n nextToken\n }\n }\n }\n`\nexport const gnjAmplifyadminDisableUser = `mutation GnjAmplifyadminDisableUser($username: String!) {\n gnjAmplifyadminDisableUser(username: $username)\n}\n`\nexport const createChallenge = `mutation CreateChallenge($input: CreateChallengeInput!) {\n createChallenge(input: $input) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n }\n}\n`\nexport const updateChallenge = `mutation UpdateChallenge($input: UpdateChallengeInput!) {\n updateChallenge(input: $input) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n }\n}\n`\nexport const deleteChallenge = `mutation DeleteChallenge($input: DeleteChallengeInput!) {\n deleteChallenge(input: $input) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n }\n}\n`\nexport const createPublicJournal = /* GraphQL */ `\n mutation CreatePublicJournal($input: CreatePublicJournalInput!) {\n createPublicJournal(input: $input) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n }\n nextToken\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n publicJournals {\n nextToken\n }\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const updatePublicJournal = /* GraphQL */ `\n mutation UpdatePublicJournal($input: UpdatePublicJournalInput!) {\n updatePublicJournal(input: $input) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n }\n nextToken\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n publicJournals {\n nextToken\n }\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const deletePublicJournal = /* GraphQL */ `\n mutation DeletePublicJournal($input: DeletePublicJournalInput!) {\n deletePublicJournal(input: $input) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n lovedUsers {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n }\n nextToken\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n createdAt\n updatedAt\n }\n publicJournals {\n nextToken\n }\n }\n comments {\n items {\n id\n content\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const gnjAmplifyExpoSendNotification = /* GraphQL */ `\n mutation GnjAmplifyExpoSendNotification(\n $sendTo: String!\n $title: String!\n $body: String\n ) {\n gnjAmplifyExpoSendNotification(sendTo: $sendTo, title: $title, body: $body)\n }\n`\nexport const createBook = /* GraphQL */ `\n mutation CreateBook($input: CreateBookInput!) {\n createBook(input: $input) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n publicJournals {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const updateBook = /* GraphQL */ `\n mutation UpdateBook($input: UpdateBookInput!) {\n updateBook(input: $input) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n journals {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n publicJournals {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n }\n`\nexport const deleteBook = /* GraphQL */ `\n mutation DeleteBook($input: DeleteBookInput!) {\n deleteBook(input: $input) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n }\n }\n`\nexport const gnjAmplifyJournalCommentCount = /* GraphQL */ `\n mutation GnjAmplifyJournalCommentCount(\n $journalId: String!\n $commentCount: Int!\n ) {\n gnjAmplifyJournalCommentCount(\n journalId: $journalId\n commentCount: $commentCount\n )\n }\n`\nexport const gnjAmplifyJournalLovedCount = /* GraphQL */ `\n mutation GnjAmplifyJournalLovedCount($journalId: String!, $lovedCount: Int!) {\n gnjAmplifyJournalLovedCount(journalId: $journalId, lovedCount: $lovedCount)\n }\n`\nexport const gnjAmplifyForgotUsername = /* GraphQL */ `\n mutation GnjAmplifyForgotUsername($email: String!) {\n gnjAmplifyForgotUsername(email: $email)\n }\n`\nexport const createChatRoomUser = /* GraphQL */ `\n mutation CreateChatRoomUser($input: CreateChatRoomUserInput!) {\n createChatRoomUser(input: $input) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n chatRoom {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n nextToken\n }\n messages {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n chatRoomUser {\n nextToken\n }\n chatMassages {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const deleteChatRoomUser = /* GraphQL */ `\n mutation DeleteChatRoomUser($input: DeleteChatRoomUserInput!) {\n deleteChatRoomUser(input: $input) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n chatRoom {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n nextToken\n }\n messages {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n chatRoomUser {\n nextToken\n }\n chatMassages {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const createChatRoom = /* GraphQL */ `\n mutation CreateChatRoom($input: CreateChatRoomInput!) {\n createChatRoom(input: $input) {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n }\n nextToken\n }\n messages {\n items {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`\nexport const createMessage = /* GraphQL */ `\n mutation CreateMessage($input: CreateMessageInput!) {\n createMessage(input: $input) {\n id\n content\n messageChatRoomId\n messageUserId\n chatRoom {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n nextToken\n }\n messages {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n chatRoomUser {\n nextToken\n }\n chatMassages {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const deleteMessage = /* GraphQL */ `\n mutation DeleteMessage($input: DeleteMessageInput!) {\n deleteMessage(input: $input) {\n id\n content\n messageChatRoomId\n messageUserId\n chatRoom {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n nextToken\n }\n messages {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n chatRoomUser {\n nextToken\n }\n chatMassages {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const updateChatRoomUser = /* GraphQL */ `\n mutation UpdateChatRoomUser($input: UpdateChatRoomUserInput!) {\n updateChatRoomUser(input: $input) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n chatRoom {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n nextToken\n }\n messages {\n nextToken\n }\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n journals {\n nextToken\n }\n chatRoomUser {\n nextToken\n }\n chatMassages {\n nextToken\n }\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n }\n books {\n nextToken\n }\n publicJournals {\n nextToken\n }\n lovedComments {\n nextToken\n }\n comments {\n nextToken\n }\n notifications {\n nextToken\n }\n }\n }\n }\n`\nexport const updateChatRoom = /* GraphQL */ `\n mutation UpdateChatRoom($input: UpdateChatRoomInput!) {\n updateChatRoom(input: $input) {\n id\n createdBy\n receiverHasRead\n chatRoomUsers {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n }\n nextToken\n }\n messages {\n items {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n }\n`\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const gnjAmplifyStripeCreateMember = /* GraphQL */ `\n mutation GnjAmplifyStripeCreateMember(\n $stripeToken: String!\n $username: String!\n $email: String!\n $uuid: String!\n $membershipPlanSelected: String!\n $stripeCouponId: String\n $stripeCustomerId: String\n ) {\n gnjAmplifyStripeCreateMember(\n stripeToken: $stripeToken\n username: $username\n email: $email\n uuid: $uuid\n membershipPlanSelected: $membershipPlanSelected\n stripeCouponId: $stripeCouponId\n stripeCustomerId: $stripeCustomerId\n )\n }\n`;\nexport const gnjAmplifyStripeUpdateCustomer = /* GraphQL */ `\n mutation GnjAmplifyStripeUpdateCustomer(\n $stripeCustomerId: String!\n $stripeToken: String\n $email: String\n ) {\n gnjAmplifyStripeUpdateCustomer(\n stripeCustomerId: $stripeCustomerId\n stripeToken: $stripeToken\n email: $email\n )\n }\n`;\nexport const gnjAmplifyStripeGetCouponCode = /* GraphQL */ `\n mutation GnjAmplifyStripeGetCouponCode($stripeCouponId: String!) {\n gnjAmplifyStripeGetCouponCode(stripeCouponId: $stripeCouponId)\n }\n`;\nexport const gnjAmplifyStripeCancelMembership = /* GraphQL */ `\n mutation GnjAmplifyStripeCancelMembership(\n $stripeSubscriptionId: String!\n $username: String!\n $cancel: Boolean!\n $membershipPlan: String\n ) {\n gnjAmplifyStripeCancelMembership(\n stripeSubscriptionId: $stripeSubscriptionId\n username: $username\n cancel: $cancel\n membershipPlan: $membershipPlan\n )\n }\n`;\nexport const gnjAmplifyadminDisableUser = /* GraphQL */ `\n mutation GnjAmplifyadminDisableUser($username: String!) {\n gnjAmplifyadminDisableUser(username: $username)\n }\n`;\nexport const gnjAmplifyJournalLovedCount = /* GraphQL */ `\n mutation GnjAmplifyJournalLovedCount($journalId: String!, $lovedCount: Int!) {\n gnjAmplifyJournalLovedCount(journalId: $journalId, lovedCount: $lovedCount)\n }\n`;\nexport const gnjAmplifyJournalCommentCount = /* GraphQL */ `\n mutation GnjAmplifyJournalCommentCount(\n $journalId: String!\n $commentCount: Int!\n ) {\n gnjAmplifyJournalCommentCount(\n journalId: $journalId\n commentCount: $commentCount\n )\n }\n`;\nexport const gnjAmplifyExpoSendNotification = /* GraphQL */ `\n mutation GnjAmplifyExpoSendNotification(\n $sendTo: String!\n $title: String!\n $body: String\n ) {\n gnjAmplifyExpoSendNotification(sendTo: $sendTo, title: $title, body: $body)\n }\n`;\nexport const gnjAmplifySendEmailNotification = /* GraphQL */ `\n mutation GnjAmplifySendEmailNotification(\n $sendTo: String!\n $title: String!\n $body: String\n ) {\n gnjAmplifySendEmailNotification(sendTo: $sendTo, title: $title, body: $body)\n }\n`;\nexport const createUser = /* GraphQL */ `\n mutation CreateUser($input: CreateUserInput!) {\n createUser(input: $input) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateUser = /* GraphQL */ `\n mutation UpdateUser($input: UpdateUserInput!) {\n updateUser(input: $input) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteUser = /* GraphQL */ `\n mutation DeleteUser($input: DeleteUserInput!) {\n deleteUser(input: $input) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const createFollowing = /* GraphQL */ `\n mutation CreateFollowing($input: CreateFollowingInput!) {\n createFollowing(input: $input) {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const updateFollowing = /* GraphQL */ `\n mutation UpdateFollowing($input: UpdateFollowingInput!) {\n updateFollowing(input: $input) {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const deleteFollowing = /* GraphQL */ `\n mutation DeleteFollowing($input: DeleteFollowingInput!) {\n deleteFollowing(input: $input) {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const createUserLovedJournal = /* GraphQL */ `\n mutation CreateUserLovedJournal($input: CreateUserLovedJournalInput!) {\n createUserLovedJournal(input: $input) {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateUserLovedJournal = /* GraphQL */ `\n mutation UpdateUserLovedJournal($input: UpdateUserLovedJournalInput!) {\n updateUserLovedJournal(input: $input) {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteUserLovedJournal = /* GraphQL */ `\n mutation DeleteUserLovedJournal($input: DeleteUserLovedJournalInput!) {\n deleteUserLovedJournal(input: $input) {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const createJournal = /* GraphQL */ `\n mutation CreateJournal($input: CreateJournalInput!) {\n createJournal(input: $input) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateJournal = /* GraphQL */ `\n mutation UpdateJournal($input: UpdateJournalInput!) {\n updateJournal(input: $input) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteJournal = /* GraphQL */ `\n mutation DeleteJournal($input: DeleteJournalInput!) {\n deleteJournal(input: $input) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const createBook = /* GraphQL */ `\n mutation CreateBook($input: CreateBookInput!) {\n createBook(input: $input) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateBook = /* GraphQL */ `\n mutation UpdateBook($input: UpdateBookInput!) {\n updateBook(input: $input) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteBook = /* GraphQL */ `\n mutation DeleteBook($input: DeleteBookInput!) {\n deleteBook(input: $input) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const createPublicJournal = /* GraphQL */ `\n mutation CreatePublicJournal($input: CreatePublicJournalInput!) {\n createPublicJournal(input: $input) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const updatePublicJournal = /* GraphQL */ `\n mutation UpdatePublicJournal($input: UpdatePublicJournalInput!) {\n updatePublicJournal(input: $input) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const deletePublicJournal = /* GraphQL */ `\n mutation DeletePublicJournal($input: DeletePublicJournalInput!) {\n deletePublicJournal(input: $input) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const createChallenge = /* GraphQL */ `\n mutation CreateChallenge($input: CreateChallengeInput!) {\n createChallenge(input: $input) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const updateChallenge = /* GraphQL */ `\n mutation UpdateChallenge($input: UpdateChallengeInput!) {\n updateChallenge(input: $input) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const deleteChallenge = /* GraphQL */ `\n mutation DeleteChallenge($input: DeleteChallengeInput!) {\n deleteChallenge(input: $input) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const createUserLovedComment = /* GraphQL */ `\n mutation CreateUserLovedComment($input: CreateUserLovedCommentInput!) {\n createUserLovedComment(input: $input) {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateUserLovedComment = /* GraphQL */ `\n mutation UpdateUserLovedComment($input: UpdateUserLovedCommentInput!) {\n updateUserLovedComment(input: $input) {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteUserLovedComment = /* GraphQL */ `\n mutation DeleteUserLovedComment($input: DeleteUserLovedCommentInput!) {\n deleteUserLovedComment(input: $input) {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const createComment = /* GraphQL */ `\n mutation CreateComment($input: CreateCommentInput!) {\n createComment(input: $input) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateComment = /* GraphQL */ `\n mutation UpdateComment($input: UpdateCommentInput!) {\n updateComment(input: $input) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteComment = /* GraphQL */ `\n mutation DeleteComment($input: DeleteCommentInput!) {\n deleteComment(input: $input) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const createNotification = /* GraphQL */ `\n mutation CreateNotification($input: CreateNotificationInput!) {\n createNotification(input: $input) {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateNotification = /* GraphQL */ `\n mutation UpdateNotification($input: UpdateNotificationInput!) {\n updateNotification(input: $input) {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteNotification = /* GraphQL */ `\n mutation DeleteNotification($input: DeleteNotificationInput!) {\n deleteNotification(input: $input) {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const createChatRoomUser = /* GraphQL */ `\n mutation CreateChatRoomUser($input: CreateChatRoomUserInput!) {\n createChatRoomUser(input: $input) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateChatRoomUser = /* GraphQL */ `\n mutation UpdateChatRoomUser($input: UpdateChatRoomUserInput!) {\n updateChatRoomUser(input: $input) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteChatRoomUser = /* GraphQL */ `\n mutation DeleteChatRoomUser($input: DeleteChatRoomUserInput!) {\n deleteChatRoomUser(input: $input) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const createChatRoom = /* GraphQL */ `\n mutation CreateChatRoom($input: CreateChatRoomInput!) {\n createChatRoom(input: $input) {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateChatRoom = /* GraphQL */ `\n mutation UpdateChatRoom($input: UpdateChatRoomInput!) {\n updateChatRoom(input: $input) {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteChatRoom = /* GraphQL */ `\n mutation DeleteChatRoom($input: DeleteChatRoomInput!) {\n deleteChatRoom(input: $input) {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const createMessage = /* GraphQL */ `\n mutation CreateMessage($input: CreateMessageInput!) {\n createMessage(input: $input) {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const updateMessage = /* GraphQL */ `\n mutation UpdateMessage($input: UpdateMessageInput!) {\n updateMessage(input: $input) {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const deleteMessage = /* GraphQL */ `\n mutation DeleteMessage($input: DeleteMessageInput!) {\n deleteMessage(input: $input) {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const gnjAmplifyExpoNotificationToken = /* GraphQL */ `\n mutation GnjAmplifyExpoNotificationToken(\n $username: String!\n $expoNotificationToken: String!\n ) {\n gnjAmplifyExpoNotificationToken(\n username: $username\n expoNotificationToken: $expoNotificationToken\n )\n }\n`;\nexport const gnjAmplifyForgotUsername = /* GraphQL */ `\n mutation GnjAmplifyForgotUsername($email: String!) {\n gnjAmplifyForgotUsername(email: $email)\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const onCreateUser = /* GraphQL */ `\n subscription OnCreateUser {\n onCreateUser {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateUser = /* GraphQL */ `\n subscription OnUpdateUser {\n onUpdateUser {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteUser = /* GraphQL */ `\n subscription OnDeleteUser {\n onDeleteUser {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateFollowing = /* GraphQL */ `\n subscription OnCreateFollowing {\n onCreateFollowing {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const onUpdateFollowing = /* GraphQL */ `\n subscription OnUpdateFollowing {\n onUpdateFollowing {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const onDeleteFollowing = /* GraphQL */ `\n subscription OnDeleteFollowing {\n onDeleteFollowing {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const onCreateUserLovedJournal = /* GraphQL */ `\n subscription OnCreateUserLovedJournal {\n onCreateUserLovedJournal {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateUserLovedJournal = /* GraphQL */ `\n subscription OnUpdateUserLovedJournal {\n onUpdateUserLovedJournal {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteUserLovedJournal = /* GraphQL */ `\n subscription OnDeleteUserLovedJournal {\n onDeleteUserLovedJournal {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateJournal = /* GraphQL */ `\n subscription OnCreateJournal($owner: String) {\n onCreateJournal(owner: $owner) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateJournal = /* GraphQL */ `\n subscription OnUpdateJournal($owner: String) {\n onUpdateJournal(owner: $owner) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteJournal = /* GraphQL */ `\n subscription OnDeleteJournal($owner: String) {\n onDeleteJournal(owner: $owner) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateBook = /* GraphQL */ `\n subscription OnCreateBook {\n onCreateBook {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateBook = /* GraphQL */ `\n subscription OnUpdateBook {\n onUpdateBook {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteBook = /* GraphQL */ `\n subscription OnDeleteBook {\n onDeleteBook {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreatePublicJournal = /* GraphQL */ `\n subscription OnCreatePublicJournal {\n onCreatePublicJournal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdatePublicJournal = /* GraphQL */ `\n subscription OnUpdatePublicJournal {\n onUpdatePublicJournal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeletePublicJournal = /* GraphQL */ `\n subscription OnDeletePublicJournal {\n onDeletePublicJournal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateChallenge = /* GraphQL */ `\n subscription OnCreateChallenge {\n onCreateChallenge {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const onUpdateChallenge = /* GraphQL */ `\n subscription OnUpdateChallenge {\n onUpdateChallenge {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const onDeleteChallenge = /* GraphQL */ `\n subscription OnDeleteChallenge {\n onDeleteChallenge {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const onCreateUserLovedComment = /* GraphQL */ `\n subscription OnCreateUserLovedComment {\n onCreateUserLovedComment {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateUserLovedComment = /* GraphQL */ `\n subscription OnUpdateUserLovedComment {\n onUpdateUserLovedComment {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteUserLovedComment = /* GraphQL */ `\n subscription OnDeleteUserLovedComment {\n onDeleteUserLovedComment {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateComment = /* GraphQL */ `\n subscription OnCreateComment {\n onCreateComment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateComment = /* GraphQL */ `\n subscription OnUpdateComment {\n onUpdateComment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteComment = /* GraphQL */ `\n subscription OnDeleteComment {\n onDeleteComment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateNotification = /* GraphQL */ `\n subscription OnCreateNotification {\n onCreateNotification {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateNotification = /* GraphQL */ `\n subscription OnUpdateNotification {\n onUpdateNotification {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteNotification = /* GraphQL */ `\n subscription OnDeleteNotification {\n onDeleteNotification {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateChatRoomUser = /* GraphQL */ `\n subscription OnCreateChatRoomUser {\n onCreateChatRoomUser {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateChatRoomUser = /* GraphQL */ `\n subscription OnUpdateChatRoomUser {\n onUpdateChatRoomUser {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteChatRoomUser = /* GraphQL */ `\n subscription OnDeleteChatRoomUser {\n onDeleteChatRoomUser {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateChatRoom = /* GraphQL */ `\n subscription OnCreateChatRoom {\n onCreateChatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateChatRoom = /* GraphQL */ `\n subscription OnUpdateChatRoom {\n onUpdateChatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteChatRoom = /* GraphQL */ `\n subscription OnDeleteChatRoom {\n onDeleteChatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const onCreateMessage = /* GraphQL */ `\n subscription OnCreateMessage {\n onCreateMessage {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onUpdateMessage = /* GraphQL */ `\n subscription OnUpdateMessage {\n onUpdateMessage {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const onDeleteMessage = /* GraphQL */ `\n subscription OnDeleteMessage {\n onDeleteMessage {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const isUserFollowingTheAuthor = /* GraphQL */ `\n query IsUserFollowingTheAuthor(\n $following: String!\n $user: String!\n $limit: Int\n $nextToken: String\n $sortDirection: DirectionEnum\n ) {\n isUserFollowingTheAuthor(\n following: $following\n user: $user\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const gnjAmplifyStripeGetCustomerInfo = /* GraphQL */ `\n query GnjAmplifyStripeGetCustomerInfo($stripeCustomerId: String!) {\n gnjAmplifyStripeGetCustomerInfo(stripeCustomerId: $stripeCustomerId)\n }\n`;\nexport const gnjAmplifyuserBackUpJournals = /* GraphQL */ `\n query GnjAmplifyuserBackUpJournals(\n $username: String!\n $deleteBackup: String\n ) {\n gnjAmplifyuserBackUpJournals(\n username: $username\n deleteBackup: $deleteBackup\n )\n }\n`;\nexport const getUser = /* GraphQL */ `\n query GetUser($id: ID!) {\n getUser(id: $id) {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n lovedJournals {\n nextToken\n __typename\n }\n journals {\n nextToken\n __typename\n }\n books {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n lovedComments {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n notifications {\n nextToken\n __typename\n }\n chatRoomUser {\n nextToken\n __typename\n }\n chatMassages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const listUsers = /* GraphQL */ `\n query ListUsers(\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getFollowing = /* GraphQL */ `\n query GetFollowing($id: ID!) {\n getFollowing(id: $id) {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listFollowings = /* GraphQL */ `\n query ListFollowings(\n $filter: ModelFollowingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listFollowings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const userFollowingAsKey = /* GraphQL */ `\n query UserFollowingAsKey(\n $user: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFollowingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n userFollowingAsKey(\n user: $user\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const userFollowerAsKey = /* GraphQL */ `\n query UserFollowerAsKey(\n $following: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFollowingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n userFollowerAsKey(\n following: $following\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const isUserFollowing = /* GraphQL */ `\n query IsUserFollowing(\n $user: String\n $following: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelFollowingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserFollowing(\n user: $user\n following: $following\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n user\n following\n followingProfile\n followerProfile\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getUserLovedJournal = /* GraphQL */ `\n query GetUserLovedJournal($id: ID!) {\n getUserLovedJournal(id: $id) {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const listUserLovedJournals = /* GraphQL */ `\n query ListUserLovedJournals(\n $filter: ModelUserLovedJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUserLovedJournals(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const isUserLovedJournalAsKey = /* GraphQL */ `\n query IsUserLovedJournalAsKey(\n $userLovedJournalUserId: String\n $userLovedJournalJournalId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserLovedJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserLovedJournalAsKey(\n userLovedJournalUserId: $userLovedJournalUserId\n userLovedJournalJournalId: $userLovedJournalJournalId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userLovedJournalUserId\n userLovedJournalJournalId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getJournal = /* GraphQL */ `\n query GetJournal($id: ID!) {\n getJournal(id: $id) {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n owner\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const listJournals = /* GraphQL */ `\n query ListJournals(\n $filter: ModelJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listJournals(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const journalMarkedAsKey = /* GraphQL */ `\n query JournalMarkedAsKey(\n $markedAs: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n journalMarkedAsKey(\n markedAs: $markedAs\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const journalAuthorIdMarkedAsKey = /* GraphQL */ `\n query JournalAuthorIdMarkedAsKey(\n $journalAuthorId: String\n $markedAs: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n journalAuthorIdMarkedAsKey(\n journalAuthorId: $journalAuthorId\n markedAs: $markedAs\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const journalAuthorIdPrivacyAsKey = /* GraphQL */ `\n query JournalAuthorIdPrivacyAsKey(\n $journalAuthorId: String\n $privacy: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n journalAuthorIdPrivacyAsKey(\n journalAuthorId: $journalAuthorId\n privacy: $privacy\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const privacyCreatedAtAsKey = /* GraphQL */ `\n query PrivacyCreatedAtAsKey(\n $privacy: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n privacyCreatedAtAsKey(\n privacy: $privacy\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n draft\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n journalBookId\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getBook = /* GraphQL */ `\n query GetBook($id: ID!) {\n getBook(id: $id) {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journals {\n nextToken\n __typename\n }\n publicJournals {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const listBooks = /* GraphQL */ `\n query ListBooks(\n $filter: ModelBookFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listBooks(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const isUserHasABookAsKey = /* GraphQL */ `\n query IsUserHasABookAsKey(\n $bookUserId: String\n $book: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelBookFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserHasABookAsKey(\n bookUserId: $bookUserId\n book: $book\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getPublicJournal = /* GraphQL */ `\n query GetPublicJournal($id: ID!) {\n getPublicJournal(id: $id) {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n book {\n id\n book\n bookUserId\n bookCoverImg\n bookJournalCount\n createdAt\n updatedAt\n __typename\n }\n comments {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const listPublicJournals = /* GraphQL */ `\n query ListPublicJournals(\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPublicJournals(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const publicJournalMarkedAsKey = /* GraphQL */ `\n query PublicJournalMarkedAsKey(\n $markedAs: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n publicJournalMarkedAsKey(\n markedAs: $markedAs\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const markedAsAuthorAsKey = /* GraphQL */ `\n query MarkedAsAuthorAsKey(\n $markedAs: String\n $journalAuthorId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n markedAsAuthorAsKey(\n markedAs: $markedAs\n journalAuthorId: $journalAuthorId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const PrivacyDateAsKey = /* GraphQL */ `\n query PrivacyDateAsKey(\n $privacy: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n PrivacyDateAsKey(\n privacy: $privacy\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const journalAuthorLatestAsKey = /* GraphQL */ `\n query JournalAuthorLatestAsKey(\n $journalAuthorId: String\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelPublicJournalFilterInput\n $limit: Int\n $nextToken: String\n ) {\n journalAuthorLatestAsKey(\n journalAuthorId: $journalAuthorId\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getChallenge = /* GraphQL */ `\n query GetChallenge($id: ID!) {\n getChallenge(id: $id) {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listChallenges = /* GraphQL */ `\n query ListChallenges(\n $filter: ModelChallengeFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listChallenges(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const yearMonthUserAsKey = /* GraphQL */ `\n query YearMonthUserAsKey(\n $yearMonth: String\n $user: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChallengeFilterInput\n $limit: Int\n $nextToken: String\n ) {\n yearMonthUserAsKey(\n yearMonth: $yearMonth\n user: $user\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const yearMonthJournalsPerMonthAsKey = /* GraphQL */ `\n query YearMonthJournalsPerMonthAsKey(\n $yearMonth: String\n $journalsPerMonth: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChallengeFilterInput\n $limit: Int\n $nextToken: String\n ) {\n yearMonthJournalsPerMonthAsKey(\n yearMonth: $yearMonth\n journalsPerMonth: $journalsPerMonth\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n yearMonth\n user\n userDisplayName\n userProfileImage\n journalsPerMonth\n journalWordCountPerMonth\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getUserLovedComment = /* GraphQL */ `\n query GetUserLovedComment($id: ID!) {\n getUserLovedComment(id: $id) {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n comment {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const listUserLovedComments = /* GraphQL */ `\n query ListUserLovedComments(\n $filter: ModelUserLovedCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUserLovedComments(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const isUserLovedCommentAsKey = /* GraphQL */ `\n query IsUserLovedCommentAsKey(\n $userLovedCommentUserId: String\n $userLovedCommentCommentId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserLovedCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n isUserLovedCommentAsKey(\n userLovedCommentUserId: $userLovedCommentUserId\n userLovedCommentCommentId: $userLovedCommentCommentId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n userLovedCommentUserId\n userLovedCommentCommentId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getComment = /* GraphQL */ `\n query GetComment($id: ID!) {\n getComment(id: $id) {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n author {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n journal {\n id\n privacy\n content\n journalAuthorId\n markedAs\n lovedCount\n commentCount\n journalWordCount\n publicJournalBookId\n createdAt\n updatedAt\n __typename\n }\n lovedUsers {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const listComments = /* GraphQL */ `\n query ListComments(\n $filter: ModelCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listComments(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n content\n commentLovedCount\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getNotification = /* GraphQL */ `\n query GetNotification($id: ID!) {\n getNotification(id: $id) {\n id\n content\n category\n link\n read\n actionUser {\n userID\n displayName\n photoURL\n __typename\n }\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const listNotifications = /* GraphQL */ `\n query ListNotifications(\n $filter: ModelNotificationFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listNotifications(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n content\n category\n link\n read\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getChatRoomUser = /* GraphQL */ `\n query GetChatRoomUser($id: ID!) {\n getChatRoomUser(id: $id) {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const listChatRoomUsers = /* GraphQL */ `\n query ListChatRoomUsers(\n $filter: ModelChatRoomUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listChatRoomUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const chatRoomUserChatRoomIdAsKey = /* GraphQL */ `\n query ChatRoomUserChatRoomIdAsKey(\n $chatRoomUserChatRoomId: String\n $chatRoomUserUserId: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChatRoomUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n chatRoomUserChatRoomIdAsKey(\n chatRoomUserChatRoomId: $chatRoomUserChatRoomId\n chatRoomUserUserId: $chatRoomUserUserId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const doesChatRoomExist = /* GraphQL */ `\n query DoesChatRoomExist(\n $chatRoomUserUserId: String\n $members: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelChatRoomUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n doesChatRoomExist(\n chatRoomUserUserId: $chatRoomUserUserId\n members: $members\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n chatRoomUserUserId\n chatRoomUserChatRoomId\n members\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getChatRoom = /* GraphQL */ `\n query GetChatRoom($id: ID!) {\n getChatRoom(id: $id) {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n chatRoomUsers {\n nextToken\n __typename\n }\n messages {\n nextToken\n __typename\n }\n __typename\n }\n }\n`;\nexport const listChatRooms = /* GraphQL */ `\n query ListChatRooms(\n $filter: ModelChatRoomFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listChatRooms(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getMessage = /* GraphQL */ `\n query GetMessage($id: ID!) {\n getMessage(id: $id) {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n user {\n id\n uuid\n displayName\n profileImage\n membership\n totalJournal\n followingCount\n followerCount\n bookOrder\n createdAt\n updatedAt\n __typename\n }\n chatRoom {\n id\n createdBy\n receiverHasRead\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const listMessages = /* GraphQL */ `\n query ListMessages(\n $filter: ModelMessageFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMessages(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n content\n messageChatRoomId\n messageUserId\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\n","import Amplify, { API, graphqlOperation } from 'aws-amplify'\nimport aws_exports from '../aws-exports'\nimport * as mutations from '../graphql/mutations'\nimport * as subscriptions from '../graphql/subscriptions'\nimport * as customQueries from '../customgraphql/queries'\nimport * as queries from '../graphql/queries'\n\nimport avocado from '../assets/images/avocado.svg'\nimport watermelon from '../assets/images/watermelon-icon.svg'\n\nAmplify.configure(aws_exports)\n\n// Create a Notification\n// -----------------------------------------------------------------------------\nexport function createNotificationSubscription() {\n return async (dispatch, getState) => {\n const subscription = await API.graphql(\n graphqlOperation(subscriptions.onCreateNotification)\n ).subscribe({\n next: (eventData) => {\n const notification = eventData.value.data.onCreateNotification\n if (\n getState().user.isAuthenticated &&\n notification.user.id === getState().user.userData.id\n )\n dispatch({ type: 'CREATE_NOTIFICATION_SUBSCRIPTION', notification })\n },\n })\n return () => subscription.unsubscribe()\n }\n}\n\n// Get More Notifications\n// -----------------------------------------------------------------------------\nexport function getMoreNotifications(username, nextToken) {\n return async (dispatch) => {\n try {\n const data = await API.graphql(\n graphqlOperation(customQueries.getUser, {\n id: username,\n nextTokenNotification: nextToken,\n })\n )\n const newNotificationData = {\n items: data.data.getUser.notifications.items,\n nextToken: data.data.getUser.notifications.nextToken,\n }\n dispatch({ type: 'ADD_NOTIFICATION_DATA', newNotificationData })\n } catch (err) {\n console.log('error reading notification: ', err)\n }\n }\n}\n\n// Delete Notification\n// -----------------------------------------------------------------------------\nexport function deleteNotification(notifId) {\n return (dispatch) => {\n try {\n API.graphql(\n graphqlOperation(mutations.deleteNotification, {\n input: { id: notifId },\n })\n )\n dispatch({ type: 'DELETE_NOTIFICATION', notifId })\n } catch (err) {\n console.log('error deleting notification: ', err)\n }\n }\n}\n\n// Update Notification\n// -----------------------------------------------------------------------------\nexport function readNotification(notifId) {\n return (dispatch) => {\n try {\n API.graphql(\n graphqlOperation(mutations.updateNotification, {\n input: { id: notifId, read: true },\n })\n )\n dispatch({ type: 'UPDATE_NOTIFICATION', notifId })\n } catch (err) {\n console.log('error reading notification: ', err)\n }\n }\n}\n\n// Create Notification when add comment\n// -----------------------------------------------------------------------------\nexport async function createNotificationFromComment(\n commentInput,\n journalAuthorId,\n userData\n) {\n if (commentInput.commentAuthorId === journalAuthorId) return\n const data = await API.graphql(\n graphqlOperation(customQueries.getPublicJournal, {\n id: commentInput.commentJournalId,\n })\n )\n const comments = data.data.getPublicJournal.comments.items\n const notification = {\n content: `added a new comment on your journal`,\n category: 'comment',\n link: `/public-journal/${commentInput.commentJournalId}#${\n comments[comments.length - 1].id\n }`,\n read: false,\n actionUser: {\n userID: userData.id,\n displayName: userData.displayName,\n photoURL: userData.profileImage,\n },\n notificationUserId: journalAuthorId,\n }\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n\n sendEmailNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n}\n\n// Create Notification when user loves journal\n// -----------------------------------------------------------------------------\nexport async function createNotificationFromLovedJournal(\n userLovedJournalId,\n journalAuthorId,\n userData\n) {\n if (userData.id === journalAuthorId) return\n const notification = {\n content: `liked your journal`,\n category: 'love journal',\n link: `/public-journal/${userLovedJournalId}`,\n read: false,\n actionUser: {\n userID: userData.id,\n displayName: userData.displayName,\n photoURL: userData.profileImage,\n },\n notificationUserId: journalAuthorId,\n }\n const exist = await checkExistNotification(notification, userData.id, false)\n if (exist) return\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n}\n\n// Create Notification when user loves comment\n// -----------------------------------------------------------------------------\nexport async function createNotificationFromLovedComment(\n comment,\n journalID,\n userData\n) {\n if (comment.author.id === userData.id) return\n const notification = {\n content: `liked your comment`,\n category: 'love comment',\n link: `/public-journal/${journalID}#${comment.id}`,\n read: false,\n actionUser: {\n userID: userData.id,\n displayName: userData.displayName,\n photoURL: userData.profileImage,\n },\n notificationUserId: comment.author.id,\n }\n const exist = await checkExistNotification(notification, userData.id, false)\n if (exist) return\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n}\n\n// Create Notification when user follows author\n// -----------------------------------------------------------------------------\nexport async function createNotificationFromFollow(targetId, userData) {\n if (targetId === userData.id) return\n const notification = {\n content: `is following you`,\n category: 'follow',\n link: `/author/${encodeURIComponent(userData.id)}`,\n read: false,\n actionUser: {\n userID: userData.id,\n displayName: userData.displayName,\n photoURL: userData.profileImage,\n },\n notificationUserId: targetId,\n }\n const exist = await checkExistNotification(notification, targetId, true)\n if (exist) return\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n\n // TODO: check 'custom:emailNotification' and don't even call the function if it's set to \"off\"\n sendEmailNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n}\n\n// Create Notification form 30 journal Avocado\n// -----------------------------------------------------------------------------\nexport async function createNotificationThirtyJournal(event, userId) {\n const notification = {\n content: `You earned an avocado`,\n category: 'reward',\n link: `/my-account`,\n read: false,\n actionUser: {\n userID: 'goodnightjournal',\n displayName: `You wrote ${event} journals!`,\n photoURL: `${avocado}`,\n },\n notificationUserId: userId,\n }\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n notification.content,\n notification.category\n )\n}\n\n// Weekly challenge completion notification\n// TODO: implement this on when journal is published.\n// -----------------------------------------------------------------------------\nexport async function createNotificationWeeklyChallengeCompletion(\n event,\n userId\n) {\n const notification = {\n content: `You completed weekly challenge`,\n category: 'challenge',\n link: `/challenge`,\n read: false,\n actionUser: {\n userID: 'goodnightjournal',\n displayName: `Week of ${event}!`,\n photoURL: `${watermelon}`,\n },\n notificationUserId: userId,\n }\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n notification.content,\n notification.category\n )\n}\n\n// Send notification on creating chat room\n// -----------------------------------------------------------------------------\nexport async function createChatRoomCreatedNotification(\n chatRoomUserUserId,\n chatRoomUserChatRoomId,\n userData\n) {\n const notification = {\n content: `invited you to a chat`,\n category: 'chat',\n link: `/chat/${chatRoomUserChatRoomId}`,\n read: false,\n actionUser: {\n userID: userData.id,\n displayName: userData.displayName,\n photoURL: userData.profileImage,\n },\n notificationUserId: chatRoomUserUserId,\n }\n\n await API.graphql(\n graphqlOperation(mutations.createNotification, { input: notification })\n )\n sendPushNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n sendEmailNotification(\n notification.notificationUserId,\n (notification.actionUser.displayName\n ? notification.actionUser.displayName\n : notification.actionUser.userID) +\n ' ' +\n notification.content,\n notification.category\n )\n}\n\n// TODO: this check existing notification function should be improved as listNotification won't get exact data that needs to be checked.\nasync function checkExistNotification(notification, userID, isFollow) {\n const checkData = await API.graphql(\n graphqlOperation(queries.listNotifications, {\n filter: {\n content: { eq: notification.content },\n link: { eq: notification.link },\n },\n })\n )\n const notifications = checkData.data.listNotifications.items\n if (notifications.length === 0) return false\n if (isFollow)\n return notifications.filter((item) => item.user.id === userID).length > 0\n return (\n notifications.filter((item) => item.actionUser.userID === userID).length > 0\n )\n}\n\nasync function sendPushNotification(sendTo, title, body) {\n await API.graphql(\n graphqlOperation(mutations.gnjAmplifyExpoSendNotification, {\n sendTo,\n title,\n body,\n })\n )\n}\n\nasync function sendEmailNotification(sendTo, title, body) {\n const emailBody =\n \"

You have a new notification at Goodnight Journal!

Click here to see the notification.

 

Goodnight Journal

Goodnight Journal. Unsubscribe notification email.

\"\n await API.graphql(\n graphqlOperation(mutations.gnjAmplifySendEmailNotification, {\n sendTo,\n title,\n body: emailBody,\n })\n )\n}\n","export function reorderBooks(books, bookOrder) {\n return books.sort((a, b) => bookOrder.indexOf(a.id) - bookOrder.indexOf(b.id))\n}\n","import Amplify, { Storage, Auth, API, graphqlOperation } from 'aws-amplify'\nimport aws_exports from '../aws-exports'\nimport * as custom_queries from '../customgraphql/queries'\nimport * as custom_mutations from '../customgraphql/mutations'\nimport {\n createNotificationFromFollow,\n createNotificationThirtyJournal,\n} from './notification'\nimport { reorderBooks } from '../utils/reorderBooks'\n\nimport moment from 'moment'\n\nAmplify.configure(aws_exports)\n\nconst { aws_user_files_s3_bucket: bucket } = aws_exports\n\nfunction fetchingCurrentUserSession(\n isFetchingCurrentUserSession,\n isAuthenticated\n) {\n return {\n type: 'SET_CURRENT_USER_SESSION',\n isFetchingCurrentUserSession,\n isAuthenticated,\n }\n}\n\nfunction setLoginSuccess(isLoginSuccess, accountData) {\n return {\n type: 'SET_LOGIN_SUCCESS',\n isLoginSuccess,\n accountData,\n }\n}\n\n// Get current User session\n// -----------------------------------------------------------------------------\nexport function getCurrentUserSession() {\n return (dispatch) => {\n dispatch(fetchingCurrentUserSession(true, false))\n dispatch(setLoginSuccess(false, null))\n\n return new Promise((resolve, reject) => {\n Auth.currentSession()\n .then((user) => {\n dispatch(setLoginSuccess(true, user))\n dispatch(\n getUserData(\n user.idToken.payload['cognito:username'],\n null,\n user.idToken.payload.sub\n )\n )\n dispatch(fetchingCurrentUserSession(false, true))\n dispatch(getCurrentUser())\n return resolve(user)\n })\n .catch((err) => {\n console.log(err)\n dispatch(fetchingCurrentUserSession(false, false))\n return reject(err)\n })\n })\n }\n}\n\n// User Log in\n// -----------------------------------------------------------------------------\nexport const userLoginRequest = (username, password) => {\n return (dispatch) => {\n dispatch(setLoginSuccess(false, null))\n dispatch({ type: 'SET_LOGIN_STATUS', loginError: null, loginLoading: true })\n\n callLoginAPI(username, password, (res) => {\n if (res instanceof Error) {\n dispatch({\n type: 'SET_LOGIN_STATUS',\n loginError: res,\n loginLoading: false,\n })\n } else {\n dispatch(setLoginSuccess(true, res))\n dispatch({\n type: 'SET_LOGIN_STATUS',\n loginError: null,\n loginLoading: false,\n })\n dispatch(\n getUserData(\n res.idToken.payload['cognito:username'],\n null,\n res.idToken.payload.sub\n )\n )\n dispatch(fetchingCurrentUserSession(false, true))\n dispatch(getCurrentUser())\n }\n })\n }\n}\n\n// Reset Log in error\n// -----------------------------------------------------------------------------\nexport const resetLoginError = () => {\n return (dispatch) => {\n dispatch({ type: 'RESET_LOAGIN_ERROR' })\n }\n}\n\n// User Login HTTP request\n// -----------------------------------------------------------------------------\nfunction callLoginAPI(username, password, callback) {\n Auth.signIn(username, password)\n .then(async (user) => {\n // Tell React Native app that user successfully logged-in to the app and send username\n window.ReactNativeWebView &&\n window.ReactNativeWebView.postMessage(\n JSON.stringify({ pushNotificationUsername: user.username })\n )\n return callback(user.signInUserSession)\n })\n .catch((err) => {\n return callback(new Error(err.message))\n })\n}\n\n// Create User data in DynamoDB on user signin for the first time\n// -----------------------------------------------------------------------------\nexport function createUserData(username, uuid) {\n return async (dispatch) => {\n try {\n let user = await API.graphql(\n graphqlOperation(custom_mutations.createUser, {\n input: { id: username, uuid: uuid },\n })\n )\n // TODO: createUser error messege cause uuid passed in as undefined for the second time\n dispatch(\n getUserData(user.data.createUser.id, null, user.data.createUser.id)\n )\n } catch (err) {\n console.log('error creating user data: ', err)\n }\n }\n}\n\n// Get current user\n// -----------------------------------------------------------------------------\nexport function getCurrentUser() {\n return async (dispatch) => {\n try {\n const user = await Auth.currentUserInfo()\n dispatch({ type: 'GET_CURRENT_USER', currentUser: user })\n } catch (err) {\n console.log('error creating user data: ', err)\n }\n }\n}\n\n// Update Profile Picture\n// -----------------------------------------------------------------------------\nexport function updateProfilePic(id, file) {\n return async (dispatch) => {\n let user = await Auth.currentAuthenticatedUser()\n let userId = user.signInUserSession.idToken.payload['cognito:username']\n const extension = /^.+\\.([^.]+)$/.exec(file.name)[1]\n const { type: mimeType } = file\n\n const dataToURL = new Date()\n .toJSON()\n .slice(0, 23)\n .replace(/[^0-9-]/g, '-')\n const filePath = `profile/${id}-${dataToURL}.${extension}`\n\n const url = `https://${bucket}.s3.amazonaws.com/public/profile/${encodeURIComponent(\n id\n )}-${dataToURL}.${extension}`\n\n try {\n // Uploading to S3 bucket\n var options = {\n ACL: 'public-read',\n contentType: mimeType,\n level: 'public',\n }\n await Storage.put(filePath, file, options)\n\n // Adding URL to AWS Cognito\n let params = {}\n params['picture'] = url\n let result = await Auth.updateUserAttributes(user, params)\n await API.graphql(\n graphqlOperation(custom_mutations.updateUser, {\n input: { id: userId, profileImage: url },\n })\n )\n dispatch(getCurrentUser())\n return result\n } catch (err) {\n console.log('error updating profile picture: ', err)\n }\n }\n}\n\n// Update Article Pictures\n// -----------------------------------------------------------------------------\nexport function uploadToS3(file, id) {\n return async (dispatch) => {\n let user = await Auth.currentAuthenticatedUser()\n let userId = user.signInUserSession.idToken.payload['cognito:username']\n const extension = /^.+\\.([^.]+)$/.exec(file.name)[1]\n const { type: mimeType } = file\n\n const dataToURL = new Date().toJSON().slice(0, 10).replace(/-/g, '/')\n const filePath = `${dataToURL}/${userId}-article-${id}.${extension}`\n\n const url = `https://${bucket}.s3.amazonaws.com/public/${dataToURL}/${encodeURIComponent(\n userId\n )}-article-${id}.${extension}`\n\n try {\n // Uploading to S3 bucket\n var options = {\n ACL: 'public-read',\n contentType: mimeType,\n level: 'public',\n }\n await Storage.put(filePath, file, options)\n\n return url\n } catch (err) {\n console.log('error uploading article picture: ', err)\n }\n }\n}\n\n// Get User Data\n// -----------------------------------------------------------------------------\nexport function getUserData(username, limit, uuid) {\n return async (dispatch) => {\n try {\n dispatch({ type: 'SET_FETCH_USER_DATA_SESSION', isFetchUserData: true })\n const limitJournal = limit || 60\n const data = await API.graphql(\n graphqlOperation(custom_queries.getUser, {\n id: username,\n limit: limitJournal,\n })\n )\n // console.log(data.data.getUser)\n\n if (!data.data.getUser) {\n if (!uuid) return\n dispatch(createUserData(username, uuid))\n } else {\n // This is main base data for logged in user and we are modifying;\n // User journals to group by month\n // and Book order by custom order that user set'\n\n // Grouping journals by month\n if (\n data.data.getUser.journals &&\n data.data.getUser.journals.items.length > 0\n ) {\n let groups = data.data.getUser.journals.items.reduce(function (r, o) {\n let m = o.createdAt.split('-')[0] + '-' + o.createdAt.split('-')[1]\n r[m]\n ? r[m].data.push(o)\n : (r[m] = {\n month: moment(o.createdAt).format('MMM YYYY'),\n data: [o],\n })\n return r\n }, {})\n\n // Add month as a key\n let journalByMonth = Object.keys(groups).map(function (k) {\n return groups[k]\n })\n\n // Replace journals data with new format with months\n data.data.getUser.journals.items = journalByMonth\n\n // reorder user books by bookOrder(users can change order or books)\n if (\n data.data.getUser.bookOrder &&\n data.data.getUser.bookOrder.length > 0\n ) {\n const newBookOrder = JSON.parse(data.data.getUser.bookOrder)\n data.data.getUser.books.items = reorderBooks(\n data.data.getUser.books.items,\n newBookOrder\n )\n }\n }\n\n dispatch({ type: 'GET_USER_DATA', userData: data.data.getUser })\n dispatch({\n type: 'SET_FETCH_USER_DATA_SESSION',\n isFetchUserData: false,\n })\n }\n } catch (err) {\n console.log('error getting user data: ', err)\n dispatch({ type: 'SET_FETCH_USER_DATA_SESSION', isFetchUserData: false })\n }\n }\n}\n\n// Get user journal data\n// -----------------------------------------------------------------------------\nexport function getJournalsData(username, value, nextToken) {\n return async (dispatch) => {\n try {\n // TODO: search needs to be improved because query and filter only covers the data that are queried.\n const data = await API.graphql(\n graphqlOperation(custom_queries.getJournals, {\n id: username,\n content: value,\n nextTokenJournal: nextToken,\n })\n )\n\n if (data.data.getUser.journals.items.length > 0) {\n let groups = data.data.getUser.journals.items.reduce(function (r, o) {\n let m = o.createdAt.split('-')[0] + '-' + o.createdAt.split('-')[1]\n r[m]\n ? r[m].data.push(o)\n : (r[m] = {\n month: moment(o.createdAt).format('MMM YYYY'),\n data: [o],\n })\n return r\n }, {})\n\n // Add month as a key\n let journalByMonth = Object.keys(groups).map(function (k) {\n return groups[k]\n })\n\n // Replace journals data with new format with months\n data.data.getUser.journals.items = journalByMonth\n } else {\n data.data.getUser.journals.items = ''\n }\n\n dispatch({\n type: nextToken ? 'GET_MORE_USER_SEARCH_DATA' : 'GET_USER_DATA',\n userData: data.data.getUser,\n })\n } catch (err) {\n console.log('error getting user data: ', err)\n }\n }\n}\n\n// get More user journal\n// -----------------------------------------------------------------------------\nexport function getMoreUserJournal(username, nextToken) {\n return async (dispatch) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getUser, {\n id: username,\n limit: 60,\n nextTokenJournal: nextToken,\n })\n )\n // console.log(data.data.getUser)\n\n if (data.data.getUser.journals.items.length > 0) {\n let groups = data.data.getUser.journals.items.reduce(function (r, o) {\n let m = o.createdAt.split('-')[1]\n r[m]\n ? r[m].data.push(o)\n : (r[m] = {\n month: moment(o.createdAt).format('MMM YYYY'),\n data: [o],\n })\n return r\n }, {})\n\n // Add month as a key\n let journalByMonth = Object.keys(groups).map(function (k) {\n return groups[k]\n })\n\n dispatch({\n type: 'ADD_USER_JOURNAL_DATA',\n moreUserJournals: {\n items: journalByMonth,\n nextToken: data.data.getUser.journals.nextToken,\n },\n })\n } else {\n console.log('End of your journal')\n dispatch({\n type: 'ADD_USER_JOURNAL_DATA',\n moreUserJournals: { items: [], nextToken: null },\n })\n }\n } catch (err) {\n console.log('error getting more user journal data: ', err)\n }\n }\n}\n\nexport function setMyJournalLimit(limit) {\n return (dispatch) => {\n dispatch({ type: 'SET_MY_JOURNAL_LIMIT', limit })\n }\n}\n\n// User Sign Out\n// -----------------------------------------------------------------------------\nexport function userSignOut() {\n return (dispatch) => {\n dispatch({\n type: 'SET_CURRENT_USER_SESSION',\n isAuthenticated: false,\n isFetchingCurrentUserSession: false,\n })\n Auth.signOut()\n .then((data) => {\n dispatch({ type: 'USER_LOGOUT' })\n })\n .catch((err) => console.log(err))\n }\n}\n\n// Get Author data\n// -----------------------------------------------------------------------------\nexport function getAuthorData(username) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getAuthor, { id: username })\n )\n\n if (\n data.data.getUser.bookOrder &&\n data.data.getUser.bookOrder.length > 0\n ) {\n const newBookOrder = JSON.parse(data.data.getUser.bookOrder)\n data.data.getUser.books.items = reorderBooks(\n data.data.getUser.books.items,\n newBookOrder\n )\n }\n\n return data.data.getUser\n } catch (err) {\n console.log('error getting author data: ')\n console.log(err)\n }\n }\n}\n\n// Get Author PUBLIC journal data\n// -----------------------------------------------------------------------------\nexport function getAuthorPublicJournalData(journalAuthorId, nextToken) {\n return async () => {\n try {\n const data = await API.graphql({\n query: custom_queries.journalAuthorLatestAsKey,\n variables: {\n journalAuthorId: journalAuthorId,\n sortDirection: 'DESC',\n nextToken: nextToken,\n limit: 30,\n },\n authMode: 'AWS_IAM',\n })\n return data.data.journalAuthorLatestAsKey\n } catch (err) {\n console.log('error getting user data: ', err)\n }\n }\n}\n\n// Follow an author\n// -----------------------------------------------------------------------------\nexport function followAuthor(targetAuthor, followingAuthor) {\n return async (dispatch, getState) => {\n let response = {}\n try {\n response = (\n await API.graphql(\n graphqlOperation(custom_mutations.createFollowing, {\n input: { user: followingAuthor.id, following: targetAuthor.id },\n })\n )\n ).data.createFollowing\n createNotificationFromFollow(targetAuthor.id, getState().user.userData)\n } catch (err) {\n console.log('error following author: ', err)\n }\n return response\n }\n}\n\n// Adjust following and follower counts of an author\n// -----------------------------------------------------------------------------\nexport function adjustCounts(targetAuthor, followingAuthor, difference) {\n return async () => {\n let response = {}\n try {\n // increment following count of following author\n let followingCount = followingAuthor.followingCount || 0\n followingCount = followingCount + difference\n response['user'] = (\n await API.graphql(\n graphqlOperation(custom_mutations.updateUser, {\n input: {\n id: followingAuthor.id,\n followingCount: followingCount <= 0 ? 0 : followingCount,\n },\n })\n )\n ).data.updateUser\n\n // increment follower count of followed author\n let followerCount = targetAuthor.followerCount || 0\n followerCount = followerCount + difference\n response['author'] = (\n await API.graphql(\n graphqlOperation(custom_mutations.updateUser, {\n input: {\n id: targetAuthor.id,\n followerCount: followerCount <= 0 ? 0 : followerCount,\n },\n })\n )\n ).data.updateUser\n } catch (err) {\n console.log('error following author: ', err)\n }\n return response\n }\n}\n\n// Unfollow an author\n// -----------------------------------------------------------------------------\nexport function unfollowAuthor(followingId) {\n return async () => {\n try {\n await API.graphql(\n graphqlOperation(custom_mutations.deleteFollowing, {\n input: { id: followingId },\n })\n )\n } catch (err) {\n console.log('error unfollowAuthor: ', err)\n }\n }\n}\n\n// Following\n// -----------------------------------------------------------------------------\nexport function doesSourceFollowTarget(sourceUserId, targetUserId) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.isUserFollowingTheAuthor, {\n following: targetUserId,\n user: sourceUserId,\n })\n )\n return data.data.isUserFollowingTheAuthor\n } catch (err) {\n console.log('error getting doesSourceFollowTarget: ', err)\n }\n }\n}\n\nexport function getUserFollowings(userId, nextToken) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.userFollowingAsKey, {\n user: userId,\n nextToken: nextToken,\n limit: 30,\n })\n )\n return data.data.userFollowingAsKey\n } catch (err) {\n console.log('error getUserFollowings()', err)\n }\n }\n}\n\nexport function getUserFollowers(userId, nextToken) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.userFollowerAsKey, {\n following: userId,\n nextToken: nextToken,\n limit: 30,\n })\n )\n return data.data.userFollowerAsKey\n } catch (err) {\n console.log('error getUserFollowers()', err)\n }\n }\n}\n\nexport function getChallengeData(username, limit, nextToken) {\n return async () => {\n try {\n const currentYear = new Date().getFullYear()\n const currentMonth = new Date().getMonth()\n if (username) {\n const data = await API.graphql(\n graphqlOperation(custom_queries.yearMonthUserAsKey, {\n user: { eq: username },\n yearMonth: currentYear + '-' + ('0' + (currentMonth + 1)).slice(-2),\n sortDirection: 'DESC',\n })\n )\n return data.data.yearMonthUserAsKey\n } else {\n const data = await API.graphql(\n graphqlOperation(custom_queries.yearMonthJournalsPerMonthAsKey, {\n yearMonth: currentYear + '-' + ('0' + (currentMonth + 1)).slice(-2),\n nextToken: nextToken,\n limit,\n sortDirection: 'DESC',\n })\n )\n return data.data.yearMonthJournalsPerMonthAsKey\n }\n } catch (err) {\n console.log('error getChallengeData()', err)\n }\n }\n}\n\nexport function setChallengeLimit(limit) {\n return (dispatch) => {\n dispatch({ type: 'SET_CHALLENGE_LIMIT', limit })\n }\n}\n\n// Update user displayName\n// -----------------------------------------------------------------------------\nexport function updateUserSetting(userData) {\n return async (dispatch) => {\n let user = await Auth.currentAuthenticatedUser()\n let userId = user.signInUserSession.idToken.payload['cognito:username']\n try {\n let data = await Auth.updateUserAttributes(user, userData)\n await API.graphql(\n graphqlOperation(custom_mutations.updateUser, {\n input: { id: userId, displayName: userData.preferred_username },\n })\n )\n dispatch(getCurrentUser())\n return data\n } catch (err) {\n console.log('error updating user setting: ', err)\n }\n }\n}\n\nexport function adjustUserJournalCount(diff) {\n return async (dispatch, getState) => {\n try {\n let total = getState().user.userData.totalJournal + diff\n if (total < 0) total = 0\n await API.graphql(\n graphqlOperation(custom_mutations.updateUser, {\n input: { id: getState().user.userData.id, totalJournal: total },\n })\n )\n if (total % 30 === 0 && total !== 0) {\n createNotificationThirtyJournal(total, getState().user.userData.id)\n }\n dispatch({ type: 'ADJUST_TOTAL_JOURNAL', total })\n } catch (e) {\n console.log(e)\n }\n }\n}\n\n// Disable user\n// -----------------------------------------------------------------------------\nexport function gnjAmplifyadminDisableUser(username) {\n return async (dispatch) => {\n try {\n await API.graphql(\n graphqlOperation(custom_mutations.gnjAmplifyadminDisableUser, {\n username: username,\n })\n )\n dispatch(userSignOut())\n } catch (e) {\n console.log(e)\n }\n }\n}\n\n// Update bookOrder under User table\n// -----------------------------------------------------------------------------\nexport function updateUserBookOrder(newBookOrder) {\n return async (dispatch) => {\n let user = await Auth.currentAuthenticatedUser()\n let userId = user.signInUserSession.idToken.payload['cognito:username']\n try {\n await API.graphql(\n graphqlOperation(custom_mutations.updateUser, {\n input: { id: userId, bookOrder: newBookOrder },\n })\n )\n dispatch(getCurrentUser())\n } catch (err) {\n console.log('error updating userBooks data: ', err)\n }\n }\n}\n","import React from 'react'\n\nconst LoadingCard = () => (\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n)\n\nexport default LoadingCard;","import profilePic from '../assets/images/profile-pic.svg'\nimport loadingIcon from '../assets/images/loading.svg'\n\nexport default function ProfilePic(thisPropsUser) {\n\tconst { currentUser, profileImage } = thisPropsUser\n\n\tlet profileImageURL = loadingIcon\n\tif(currentUser){\n\t\tif (currentUser.attributes && currentUser.attributes.picture) {\n\t\t\tprofileImageURL = currentUser.attributes.picture\n\t\t} else {\n\t\t\t// TODO: This needs to be improved\n\t\t\tprofileImageURL = profilePic\n\t\t}\n\t} else if(profileImage){\n\t\tprofileImageURL = profileImage\n\t} else {\n\t\tprofileImageURL = profilePic\n\t}\n\n\treturn profileImageURL\n}","import React, { Component } from 'react'\nimport { Link, withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { userSignOut } from '../actions/user'\nimport ProfilePic from '../utils/ProfilePic'\n// import isPaidUser from '../utils/isPaidUser'\n// import { TopNoticeBar } from '../components/TopNoticeBar'\n\nimport gnjLogo from '../assets/images/gnj-logo.svg'\nimport gnjLogoMobile from '../assets/images/favicon.svg'\nimport happyLogoBlack from '../assets/images/happy-logo-black.svg'\nimport happyLogoWhite from '../assets/images/happy-logo-white.svg'\nimport bibleLogoBlack from '../assets/images/bible-logo-black.svg'\nimport bibleLogoWhite from '../assets/images/bible-logo-white.svg'\n\nclass Navigation extends Component {\n constructor() {\n super()\n this.state = {\n showSubNav: false,\n hideBillingLink: false,\n }\n\n this.showSubNavUI = this.showSubNavUI.bind(this)\n this.signOut = this.signOut.bind(this)\n }\n\n // componentDidMount() {\n // // TODO: Added to see detect ios and android. Hide Billing for ios\n // // TODO: needed for ios app store app review\n // // Please see: src/containers/Navigation.js on main app repo\n // window.addEventListener(\n // 'message',\n // (event) => {\n // if (event.data.userPlatform === 'ios') {\n // this.setState({ hideBillingLink: true })\n // }\n // },\n // false\n // )\n // }\n\n showSubNavUI() {\n this.setState({\n showSubNav: !this.state.showSubNav,\n })\n }\n\n async signOut() {\n const ask = window.confirm('Do you want to log out?')\n if (ask) {\n console.log('Signing out...')\n await this.props.userSignOut()\n this.props.history.push('/login')\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.location.pathname !== prevProps.location.pathname) {\n this.setState({\n showSubNav: false,\n })\n }\n }\n\n render() {\n const { showSubNav, hideBillingLink } = this.state\n const { user } = this.props\n\n const notifBadgeCounts = user.notifications.filter((n) => !n.read).length\n const chatNotfication =\n user.userData &&\n user.userData.chatRoomUser.items.map((r) => {\n return (\n r.chatRoom.messages.items[0] &&\n r.chatRoom.messages.items[0].messageUserId !==\n user.accountData.idToken.payload['cognito:username'] &&\n !r.chatRoom.receiverHasRead\n )\n })\n const chatNotificationBadgeCounts =\n chatNotfication && chatNotfication.filter((n) => n === true).length\n\n const Nav = user.isAuthenticated ? (\n \n ) : (\n \n )\n\n const logoLinkTo = user.isAuthenticated ? (\n \n \n \n \n ) : (\n \n \n \n \n )\n\n return (\n \n {/* TODO: use TopNotieBar for future promotions. This is a benner that shows up on the top of the page */}\n {/* {user.currentUser &&\n !isPaidUser(user.currentUser.attributes['custom:membership']) && (\n \n )} */}\n \n \n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n userSignOut,\n },\n dispatch\n )\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(Navigation))\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { Redirect, Link } from 'react-router-dom'\n\nimport { userLoginRequest, resetLoginError } from '../../actions/user'\n\nimport ProfilePic from '../../assets/images/gnj-profile-pic.svg'\nimport loadingIcon from '../../assets/images/loading.svg'\n\nclass Login extends Component {\n constructor(props) {\n super(props)\n this.state = {\n username: '',\n password: '',\n lostPassword: false,\n }\n\n this.userLogin = this.userLogin.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n onChange(e) {\n const { name, value } = e.target\n this.setState({ [name]: value })\n }\n\n userLogin(e) {\n e.preventDefault()\n const { username, password } = this.state\n this.props.userLoginRequest(username.toLowerCase(), password)\n }\n\n componentWillUnmount() {\n this.props.resetLoginError()\n }\n\n render() {\n const { user } = this.props\n const { username, password } = this.state\n if (user.isAuthenticated) {\n return (\n \n )\n }\n return (\n
\n
\n \n \n

\n

\n Welcome back to\n
\n Goodnight Journal!\n

\n
\n \n \n {user.loginError && (\n

\n {user.loginError.message.includes(\n 'Password reset required for the user'\n )\n ? 'Welcome back! because we launched a brand new website, you must reset your password. Please click Forgot password below to reset password.'\n : user.loginError.message.includes('User is disabled')\n ? 'User does not exist.'\n : user.loginError.message}\n

\n )}\n \n {user.loginLoading ? (\n \n ) : (\n 'Log in'\n )}\n \n \n
\n

\n \n \n Forgot password\n {' '}\n   |  {' '}\n \n Confirm account\n \n \n

\n
\n
\n

\n Haven't signed up yet?{' '}\n \n Sign up\n \n

\n
\n
\n
\n )\n }\n}\nconst mapStateToProps = (state) => {\n return state\n}\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n userLoginRequest,\n resetLoginError,\n },\n dispatch\n )\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(Login)\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\n\nimport { Auth } from 'aws-amplify';\n\nimport loadingIcon from '../../assets/images/loading.svg'\n\nclass Signup extends Component {\n constructor(){\n super()\n this.state = {\n username: '',\n email: '',\n password: '',\n errorMsg: '',\n isLoading: false\n }\n\n this.userSignup = this.userSignup.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n componentDidMount() {\n window.scrollTo(0, 0)\n }\n\n onChange(e) {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n }\n\n userSignup(e){\n e.preventDefault()\n this.setState({ isLoading: true })\n const { email, password } = this.state;\n const username = this.state.username.toLowerCase();\n const emailLowercase = email.toLowerCase();\n\n Auth.signUp({\n username,\n password,\n attributes: {\n email: emailLowercase,\n }\n })\n .then(data => {\n // console.log(data)\n this.setState({\n errorMsg: '',\n isLoading: false\n })\n this.props.history.push('/confirm-account', { username: username })\n })\n .catch(err => {\n // console.log(err)\n this.setState({\n errorMsg: err.message,\n isLoading: false\n })\n });\n }\n\n render() {\n const { user } = this.props\n const { email, password, username, errorMsg, isLoading } = this.state\n\n if (user.isAuthenticated) {\n return \n }\n\n return(\n
\n
\n

Welcome to
Goodnight Journal!

\n

Write unlimited private journals for free, become a member for additional features.

\n
\n \n\n \n\n \n\n {errorMsg ?

{errorMsg.includes(\"User already exists\") ? \"Username unavailable\" : errorMsg}

: ''}\n \n \n\n
\n

By using this app, you agree to Goodnight Journal's Privacy policy & Terms of use.

\n
\n\n
\n

Already have an account? Log in

\n
\n
\n
\n )\n }\n};\n\nconst mapStateToProps = state => {\n return state\n}\n\nexport default connect(mapStateToProps)(Signup);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\n\nimport { Auth } from 'aws-amplify';\n\nimport loadingIcon from '../../assets/images/loading.svg'\n\nclass ConfirmAccount extends Component {\n constructor(props){\n super(props)\n this.state = {\n username: props.location.state !== undefined ? props.location.state.username !== undefined ? props.location.state.username : '' : '',\n verficationcode: '',\n errorMsg: '',\n isLoading: false\n }\n\n this.confirmAccount = this.confirmAccount.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n componentDidMount() {\n window.scrollTo(0, 0)\n }\n\n onChange(e) {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n }\n\n confirmAccount(e){\n e.preventDefault()\n this.setState({ isLoading: true })\n const { username, verficationcode } = this.state;\n const usernameLowercase = username.toLowerCase();\n Auth.confirmSignUp(usernameLowercase, verficationcode)\n .then(data => {\n // console.log(data)\n this.setState({\n errorMsg: '',\n isLoading: false\n })\n this.props.history.push('/login', { username: usernameLowercase })\n })\n .catch(err => {\n // console.log(err)\n this.setState({\n errorMsg: err.message,\n isLoading: false\n })\n });\n }\n\n render() {\n const { user } = this.props\n const { username, verficationcode, errorMsg, isLoading } = this.state\n\n if (user.isAuthenticated) {\n return \n }\n\n return(\n
\n
\n

Check junk mail if you have not received email with the verification code yet

\n
\n \n\n \n\n {errorMsg ?

{errorMsg}

: ''}\n \n \n
\n

Resend verification code

\n

or back to Log in

\n
\n
\n
\n )\n }\n};\n\nconst mapStateToProps = state => {\n return state\n}\n\nexport default connect(mapStateToProps)(ConfirmAccount);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\n\nimport { Auth } from 'aws-amplify';\n\nimport loadingIcon from '../../assets/images/loading.svg'\n\nclass ResendVerificationCode extends Component {\n constructor(){\n super()\n this.state = {\n username: '',\n errorMsg: '',\n isLoading: false\n }\n\n this.resendVerificationClicked = this.resendVerificationClicked.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n componentDidMount() {\n window.scrollTo(0, 0)\n }\n\n onChange(e) {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n }\n\n resendVerificationClicked(e){\n e.preventDefault()\n this.setState({ isLoading: true })\n\n const { username } = this.state;\n const usernameLowercase = username.toLowerCase()\n\n Auth.resendSignUp(usernameLowercase)\n .then(data => {\n // console.log(data)\n this.setState({\n errorMsg: '',\n isLoading: false\n })\n this.props.history.push('/confirm-account', { username: usernameLowercase })\n })\n .catch(err => {\n // console.log(err)\n this.setState({\n errorMsg: err.message,\n isLoading: false\n })\n })\n }\n\n render() {\n const { user } = this.props\n const { username, errorMsg, isLoading } = this.state\n\n if (user.isAuthenticated) {\n return \n }\n\n return(\n
\n
\n

Enter your username to get a new verification code

\n
\n \n\n {errorMsg ?

{errorMsg}

: ''}\n \n {isLoading ? \"Loading...\" : 'Resend'}\n \n \n
\n

Confirm account

\n

or back to Log in

\n
\n
\n
\n )\n }\n};\n\nconst mapStateToProps = state => {\n return state\n}\n\nexport default connect(mapStateToProps)(ResendVerificationCode);\n","import React, { Component } from 'react'\nimport { Link } from 'react-router-dom'\n\nclass Footer extends Component {\n render() {\n const currentYear = new Date().getFullYear()\n return (\n
\n

\n \n Contact\n \n  \n \n Feedback\n \n  \n \n Privacy\n \n

\n

© Goodnight Journal by Allspectives LLC {currentYear}.

\n
\n )\n }\n}\n\nexport default Footer\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\n\nimport { Auth } from 'aws-amplify';\n\nimport Footer from \"../../components/Footer\";\nimport loadingIcon from '../../assets/images/loading.svg'\n\nclass ForgotPassword extends Component {\n constructor(){\n super()\n this.state = {\n username: '',\n errorMsg: '',\n isLoading: false\n }\n\n this.resetPassword = this.resetPassword.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n componentDidMount() {\n window.scrollTo(0, 0);\n }\n\n onChange(e) {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n }\n\n resetPassword(e){\n e.preventDefault()\n this.setState({ isLoading: true })\n const { username } = this.state;\n const usernameLowercase = username.toLowerCase()\n Auth.forgotPassword(usernameLowercase)\n .then(data => {\n // console.log(data)\n this.setState({\n errorMsg: '',\n isLoading: false\n })\n this.props.history.push('/set-new-password', { username: usernameLowercase })\n })\n .catch(err => {\n // console.log(err)\n this.setState({\n errorMsg: err.message,\n isLoading: false\n })\n })\n }\n\n render() {\n const { user } = this.props\n const { username, errorMsg, isLoading } = this.state\n\n if (user.isAuthenticated) {\n return \n }\n\n return(\n
\n
\n

Enter your username to set a new password

\n
\n \n\n {errorMsg ?

{errorMsg}

: ''}\n \n {isLoading ? \"Loading...\" : 'Submit'}\n \n \n
\n

\n \n Forgot username \n \n

\n
\n
\n

or back to Log in

\n
\n
\n
\n
\n
\n
\n )\n }\n};\n\nconst mapStateToProps = state => {\n return state\n}\n\nexport default connect(mapStateToProps)(ForgotPassword);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\n\nimport Footer from \"../../components/Footer\";\nimport loadingIcon from '../../assets/images/loading.svg';\n\nimport Amplify, { API } from 'aws-amplify';\nimport aws_exports from '../../aws-exports';\nimport * as custom_mutations from '../../customgraphql/mutations';\n\nAmplify.configure(aws_exports);\n\nclass ForgotUsername extends Component {\n constructor(){\n super()\n this.state = {\n email: '',\n errorMsg: '',\n isLoading: false,\n emailSent: false\n }\n }\n\n componentDidMount() {\n window.scrollTo(0, 0);\n }\n\n _onChange = async e => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n }\n\n _findUsername = async e => {\n e.preventDefault()\n this.setState({ isLoading: true })\n const { email } = this.state;\n const emailLowercase = email.toLowerCase()\n\n if(emailLowercase.length > 3){\n try {\n const data = await API.graphql({\n query: custom_mutations.gnjAmplifyForgotUsername,\n variables: {\n email: emailLowercase\n },\n authMode: 'AWS_IAM'\n });\n const result = JSON.parse(data.data.gnjAmplifyForgotUsername)\n\n !result.err ? \n this.setState({\n errorMsg: \"Sent username to your email! It might be in junk mail.\",\n isLoading: false,\n emailSent: true\n })\n : \n this.setState({\n errorMsg: result.err,\n isLoading: false\n })\n } catch (e) {\n console.log(e)\n this.setState({\n errorMsg: \"Something went wrong. Please try again.\",\n isLoading: false\n })\n }\n }\n }\n\n render() {\n const { user } = this.props\n const { username, errorMsg, isLoading, emailSent } = this.state\n\n if (user.isAuthenticated) {\n return \n }\n\n return(\n
\n
\n

Enter your email address to find your username

\n
\n \n\n {errorMsg ?

{errorMsg}

: ''}\n \n {isLoading ? \"Loading...\" : 'Submit'}\n \n \n
\n

\n \n Forgot password \n \n

\n
\n
\n

or back to Log in

\n
\n
\n
\n
\n
\n
\n )\n }\n};\n\nconst mapStateToProps = state => {\n return state\n}\n\nexport default connect(\n mapStateToProps\n)(ForgotUsername);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Redirect, Link } from 'react-router-dom';\n\nimport { Auth } from 'aws-amplify';\n\nimport loadingIcon from '../../assets/images/loading.svg'\n\nclass SetNewPassword extends Component {\n constructor(props){\n super(props)\n this.state = {\n username: props.location.state !== undefined ? props.location.state.username : '',\n verficationcode: '',\n password: '',\n errorMsg: '',\n isLoading: false\n }\n\n this.confirmAccount = this.confirmAccount.bind(this)\n this.onChange = this.onChange.bind(this)\n }\n\n componentDidMount() {\n window.scrollTo(0, 0)\n }\n\n onChange(e) {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n }\n\n confirmAccount(e){\n e.preventDefault()\n this.setState({ isLoading: true })\n const { username, password, verficationcode } = this.state;\n const usernameLowercase = username.toLowerCase()\n Auth.forgotPasswordSubmit(usernameLowercase, verficationcode, password)\n .then(data => {\n // console.log(data)\n this.setState({\n errorMsg: '',\n isLoading: false\n })\n this.props.history.push('/login', { username: usernameLowercase })\n })\n .catch(err => {\n console.log(err)\n this.setState({\n errorMsg: err.message,\n isLoading: false\n })\n });\n }\n\n render() {\n const { user } = this.props\n const { username, verficationcode, password, errorMsg, isLoading } = this.state\n\n if (user.isAuthenticated) {\n return \n }\n\n return(\n
\n
\n

Check junk mail if you have not received email with the verification code yet

\n
\n \n\n \n\n \n\n {errorMsg ?

{errorMsg}

: ''}\n \n {isLoading ? \"Loading...\" : 'Set a new password'}\n \n \n
\n

or back to Log in

\n
\n
\n
\n )\n }\n};\n\nconst mapStateToProps = state => {\n return state\n}\n\nexport default connect(mapStateToProps)(SetNewPassword);\n","export default function decodeHtml(html) {\n var txt = document.createElement(\"textarea\");\n txt.innerHTML = html;\n return txt.value;\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport moment from \"moment\";\nimport decodeHtml from \"../utils/DecodeHtml\";\n\nclass MyJournalListItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showJournalList: true\n };\n\n this.showJournalButton = this.showJournalButton.bind(this);\n }\n\n showJournalButton() {\n this.setState({\n showJournalList: !this.state.showJournalList\n });\n }\n\n render() {\n const { showJournalList } = this.state;\n const { month, monthJournal } = this.props;\n\n const monthJournalList = monthJournal.map((journal, index) => (\n \n \n
\n \n {journal.privacy === \"PRIVATE\" && Private}{\" \"}\n {journal.draft && Draft}\n
\n
\n

\n {journal.journalBookId && }\n {decodeHtml(journal.content.replace(/<(.|\\n)*?>/g, \" \").slice(0, 80))}\n {journal.content.replace(/<(.|\\n)*?>/g, \"\").length > 80 && \"...\"} {journal.journalWordCount && - {journal.journalWordCount} words}\n

\n
\n {journal.privacy === \"PUBLIC\" &&\n !journal.draft ? (\n
\n
\n {\" \"}\n {journal.lovedCount ? journal.lovedCount : 0}\n
\n
\n {/* TODO: get total count of comments instead of items.length */}\n {\" \"}\n {journal.commentCount ? journal.commentCount : 0}\n
\n
\n ) : (\n \"\"\n )}\n \n \n ));\n\n return (\n
\n \n \n \n
\n {monthJournalList}\n \n );\n }\n}\n\nexport default MyJournalListItem;\n","import React, { Component } from \"react\";\nimport MyJournalListItem from \"./MyJournalListItem\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport gnjLogoMobile from \"../assets/images/favicon.svg\";\n\nclass MyJournalList extends Component {\n render() {\n const { journals, searched, searchingJournals, userData } = this.props;\n if (searchingJournals || !userData) return ;\n return (\n
\n {Object.keys(journals).length > 0 &&\n Object.keys(journals).map((month, index) => {\n return (\n \n );\n })}\n {Object.keys(journals).length === 0 && (\n
\n {!searched && (\n \n )}\n

\n {searched ? \"Nothing found...\" : \"Write your first journal :)\"}\n

\n
\n )}\n
\n );\n }\n}\n\nexport default MyJournalList;\n","import Amplify, { API, graphqlOperation, Storage } from 'aws-amplify'\nimport aws_exports from '../aws-exports'\nimport {\n createNotificationFromComment,\n createNotificationFromLovedJournal,\n createNotificationFromLovedComment,\n} from './notification'\nimport { adjustUserJournalCount } from './user'\nimport * as custom_queries from '../customgraphql/queries'\nimport * as custom_mutations from '../customgraphql/mutations'\n\nAmplify.configure(aws_exports)\nconst { aws_user_files_s3_bucket: bucket } = aws_exports\n\n// Create a Journal\n// -----------------------------------------------------------------------------\nexport function saveJournal(journal) {\n return async (dispatch) => {\n dispatch({ type: 'REQUEST_CREATE_JOURNAL' })\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createJournal, { input: journal })\n )\n dispatch({\n type: 'REQUEST_CREATE_JOURNAL_SUCCESS',\n journalCreated: data.data.createJournal,\n })\n dispatch(adjustUserJournalCount(1))\n dispatch(\n checkIfUserHasJournalAlready({\n userUid: journal.journalAuthorId,\n journalWordCountPerMonth: 0,\n request: 'WRITE',\n })\n )\n } catch (err) {\n console.log('error creating journal: ', err)\n dispatch({ type: 'REQUEST_CREATE_JOURNAL_FAILED' })\n }\n }\n}\n\n// Update Journal\n// -----------------------------------------------------------------------------\nexport function updateJournal(journal) {\n return async (dispatch) => {\n dispatch({ type: 'REQUEST_UPDATE_JOURNAL' })\n let result\n try {\n if (journal.draft === false) {\n result = await API.graphql(\n graphqlOperation(custom_mutations.updateJournal, {\n input: {\n id: journal.id,\n content: journal.content,\n privacy: journal.privacy,\n journalAuthorId: journal.journalAuthorId,\n draft: journal.draft,\n journalWordCount: journal.journalWordCount,\n journalBookId: journal.journalBookId\n ? journal.journalBookId\n : null,\n createdAt: journal.createdAt,\n },\n })\n )\n dispatch(\n checkIfUserHasJournalAlready({\n userUid: journal.journalAuthorId,\n journalWordCountBeforeEditing:\n journal.journalWordCountBeforeEditing,\n journalWordCountPerMonth: journal.journalWordCount,\n request: 'UPDATE',\n })\n )\n // PublicJournal logics\n if (journal.privacy === 'PUBLIC') {\n const checkPublicJournal = await API.graphql(\n graphqlOperation(custom_queries.getPublicJournal, {\n id: journal.id,\n })\n )\n if (checkPublicJournal.data.getPublicJournal) {\n // Is user editing the exisitng PUBLIC journal -> updatePublicJournal\n await API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: journal.id,\n content: journal.content,\n privacy: 'PUBLIC',\n journalAuthorId: journal.journalAuthorId,\n journalWordCount: journal.journalWordCount,\n publicJournalBookId: journal.journalBookId\n ? journal.journalBookId\n : null,\n createdAt: journal.createdAt,\n },\n })\n )\n } else {\n // Remove all LATEST journals by author before assigning new LATEST\n const getLatestJournals = await API.graphql(\n graphqlOperation(custom_queries.markedAsAuthorAsKey, {\n markedAs: 'LATEST',\n journalAuthorId: { eq: journal.journalAuthorId },\n limit: 3,\n })\n )\n if (getLatestJournals.data.markedAsAuthorAsKey.items.length > 0) {\n for (const publicJournalLatest of getLatestJournals.data\n .markedAsAuthorAsKey.items) {\n await API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: publicJournalLatest.id,\n markedAs: null,\n },\n })\n )\n }\n }\n // Is user creating a new PUBLIC journal -> createPublicJournal\n // Is user changing PRIVATE journal to PUBLIC journal -> createPublicJournal\n let publicJournalData = {\n id: journal.id,\n content: journal.content,\n privacy: 'PUBLIC',\n journalAuthorId: journal.journalAuthorId,\n markedAs: 'LATEST',\n lovedCount: journal.lovedCount,\n commentCount: journal.commentCount,\n journalWordCount: journal.journalWordCount,\n createdAt: journal.createdAt,\n }\n if (journal.journalBookId)\n publicJournalData.publicJournalBookId = journal.journalBookId\n\n await API.graphql(\n graphqlOperation(custom_mutations.createPublicJournal, {\n input: publicJournalData,\n })\n )\n }\n } else {\n // Is user changing PUBLIC to PRIVATE journal -> deletePublicJournal\n const checkPublicJournal = await API.graphql(\n graphqlOperation(custom_queries.getPublicJournal, {\n id: journal.id,\n })\n )\n if (checkPublicJournal.data.getPublicJournal) {\n const publicLatestJournal = await API.graphql(\n graphqlOperation(custom_mutations.deletePublicJournal, {\n input: { id: journal.id },\n })\n )\n // if deleted journal is LATEST public journal, find the next latest public journal and assign LATEST\n if (\n publicLatestJournal.data.deletePublicJournal.markedAs === 'LATEST'\n ) {\n const latestJournalData = await API.graphql(\n graphqlOperation(custom_queries.journalAuthorLatestAsKey, {\n journalAuthorId:\n publicLatestJournal.data.deletePublicJournal\n .journalAuthorId,\n sortDirection: 'DESC',\n })\n )\n if (\n latestJournalData.data.journalAuthorLatestAsKey.items.length > 0\n ) {\n await API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: latestJournalData.data.journalAuthorLatestAsKey\n .items[0].id,\n markedAs: 'LATEST',\n },\n })\n )\n }\n }\n }\n }\n dispatch({\n type: 'REQUEST_UPDATE_JOURNAL_SUCCESS',\n journalUpdated:\n journal.privacy === 'PUBLIC'\n ? result.data.updatePublicJournal\n : result.data.updateJournal,\n })\n } else {\n let resetData = {\n id: journal.id,\n content: journal.content,\n privacy: journal.privacy,\n journalAuthorId: journal.journalAuthorId,\n journalWordCount: journal.journalWordCount,\n draft: journal.draft,\n journalBookId: journal.journalBookId ? journal.journalBookId : null,\n createdAt: journal.createdAt,\n }\n result = await API.graphql(\n graphqlOperation(custom_mutations.updateJournal, { input: resetData })\n )\n dispatch({\n type: 'REQUEST_UPDATE_JOURNAL_SUCCESS',\n journalUpdated: result.data.updateJournal,\n })\n }\n } catch (err) {\n console.log('error updating journal: ', err)\n dispatch({ type: 'REQUEST_UPDATE_JOURNAL_FAILED' })\n }\n }\n}\n\n// Get Journal\n// -----------------------------------------------------------------------------\nexport function getJournal(journalUid) {\n return async (dispatch) => {\n dispatch({ type: 'JOURNAL_LOADING_STATUS', loading: true })\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getJournal, { id: journalUid })\n )\n dispatch({\n type: 'JOURNAL_AVAILABLE',\n currentJournal: data.data.getJournal,\n })\n return data.data.getJournal\n } catch (err) {\n console.log('error getting journal: ', err)\n }\n }\n}\n\n// Delete Journal\n// -----------------------------------------------------------------------------\nexport function deleteJournal(journalUid) {\n return async (dispatch) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.deleteJournal, {\n input: { id: journalUid },\n })\n )\n // Remove public journal if it's a public journal\n if (data.data.deleteJournal.privacy === 'PUBLIC') {\n const publicLatestJournal = await API.graphql(\n graphqlOperation(custom_mutations.deletePublicJournal, {\n input: { id: journalUid },\n })\n )\n // if deleted journal is LATEST public journal, find the next latest public journal and assign LATEST\n if (\n publicLatestJournal.data.deletePublicJournal &&\n publicLatestJournal.data.deletePublicJournal.markedAs === 'LATEST'\n ) {\n const latestJournalData = await API.graphql(\n graphqlOperation(custom_queries.journalAuthorLatestAsKey, {\n journalAuthorId:\n publicLatestJournal.data.deletePublicJournal.journalAuthorId,\n sortDirection: 'DESC',\n })\n )\n if (\n latestJournalData.data.journalAuthorLatestAsKey.items.length > 0\n ) {\n await API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: latestJournalData.data.journalAuthorLatestAsKey.items[0]\n .id,\n markedAs: 'LATEST',\n },\n })\n )\n }\n }\n }\n dispatch(adjustUserJournalCount(-1))\n // Update book bookJournalCount count number with -1 if journalBookId exist\n if (\n data.data.deleteJournal.journalBookId &&\n data.data.deleteJournal.journalBookId !== null\n ) {\n dispatch(\n adjustBookJournalsCount(data.data.deleteJournal.journalBookId, -1)\n )\n }\n\n dispatch(\n checkIfUserHasJournalAlready({\n userUid: data.data.deleteJournal.author.id,\n journalWordCountPerMonth: data.data.deleteJournal.journalWordCount,\n request: 'DELETE',\n })\n )\n\n return data.data.deleteJournal\n } catch (err) {\n console.log('error deleteJournal: ', err)\n }\n }\n}\n\n// Set Journal\n// -----------------------------------------------------------------------------\nexport function setJournal(journal) {\n return (dispatch) => {\n dispatch({ type: 'JOURNAL_TEMP_SET', journal })\n }\n}\n\n// Set current Public journal empty\n// -----------------------------------------------------------------------------\nexport function setEmptyCurrentJournal() {\n return (dispatch) => {\n dispatch({ type: 'JOURNAL_AVAILABLE', currentJournal: null })\n }\n}\n\n// Create a Comment\n// -----------------------------------------------------------------------------\nexport function createComment(comment, journalAuthorId) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createComment, { input: comment })\n )\n let newCommentCount = getState().journal.currentJournal.commentCount + 1\n\n dispatch(\n adjustJournalCommentCount(\n getState().journal.currentJournal.id,\n newCommentCount\n )\n )\n createNotificationFromComment(\n comment,\n journalAuthorId,\n getState().user.userData\n )\n\n getState().journal.currentJournal.comments.items = [\n ...getState().journal.currentJournal.comments.items,\n data.data.createComment,\n ]\n getState().journal.currentJournal.commentCount = newCommentCount\n dispatch({\n type: 'JOURNAL_AVAILABLE',\n currentJournal: getState().journal.currentJournal,\n })\n } catch (err) {\n console.log(err)\n if (err.errors[0].errorType === 'Unauthorized') {\n createNotificationFromComment(\n comment,\n journalAuthorId,\n getState().user.userData\n )\n } else {\n console.log('error commenting: ', err)\n }\n }\n }\n}\n\n// Update Comment\n// -----------------------------------------------------------------------------\nexport function updateComment(comment, newComment) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.updateComment, {\n input: { id: comment.id, content: newComment },\n })\n )\n let findUpdatedComment =\n getState().journal.currentJournal.comments.items.findIndex(\n (x) => x.id === data.data.updateComment.id\n )\n getState().journal.currentJournal.comments.items[findUpdatedComment] =\n data.data.updateComment\n getState().journal.currentJournal.comments.items[findUpdatedComment][\n 'hasLoved'\n ] = comment.hasLoved\n dispatch({\n type: 'JOURNAL_AVAILABLE',\n currentJournal: getState().journal.currentJournal,\n })\n } catch (err) {\n console.log('error updating comment: ', err)\n }\n }\n}\n\n// Delete Comment\n// -----------------------------------------------------------------------------\nexport function deleteComment(commentId) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.deleteComment, { input: commentId })\n )\n let newCommentCount =\n getState().journal.currentJournal.commentCount > 0\n ? getState().journal.currentJournal.commentCount - 1\n : 0\n\n dispatch(\n adjustJournalCommentCount(\n getState().journal.currentJournal.id,\n newCommentCount\n )\n )\n\n getState().journal.currentJournal.comments.items =\n getState().journal.currentJournal.comments.items.filter(function (obj) {\n return obj.id !== data.data.deleteComment.id\n })\n getState().journal.currentJournal.commentCount = newCommentCount\n dispatch({\n type: 'JOURNAL_AVAILABLE',\n currentJournal: getState().journal.currentJournal,\n })\n } catch (err) {\n console.log('error deleteing comment: ', err)\n }\n }\n}\n\n// Adjust journal comment count\n// -----------------------------------------------------------------------------\nexport function adjustJournalCommentCount(journalId, commentCount) {\n return async () => {\n let count = 0\n let maxTries = 3\n\n while (true) {\n try {\n await Promise.all([\n API.graphql(\n graphqlOperation(custom_mutations.gnjAmplifyJournalCommentCount, {\n journalId: journalId,\n commentCount: commentCount,\n })\n ),\n API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: journalId,\n commentCount: commentCount,\n },\n })\n ),\n ])\n break\n } catch (err) {\n console.log('error adjustJournalCommentCount: ', err)\n if (++count === maxTries) throw err\n }\n }\n }\n}\n\n// Get more comment\n// -----------------------------------------------------------------------------\nexport function getMoreComments(journalUid, nextToken) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql({\n query: custom_queries.getPublicJournal,\n variables: {\n id: journalUid,\n nextTokenComment: nextToken,\n },\n authMode: 'AWS_IAM',\n })\n if (nextToken) {\n return data.data.getPublicJournal.comments\n }\n dispatch({\n type: 'JOURNAL_AVAILABLE',\n currentJournal: data.data.getPublicJournal,\n })\n } catch (err) {\n console.log('error getting comment: ', err)\n }\n }\n}\n\n// Get Public Journal List\n// -----------------------------------------------------------------------------\nexport function getPublicJournals(limit, nextToken) {\n return async () => {\n try {\n const data = await API.graphql({\n query: custom_queries.publicJournalMarkedAsKey,\n variables: {\n markedAs: 'LATEST',\n limit: limit,\n sortDirection: 'DESC',\n nextToken,\n },\n authMode: 'AWS_IAM',\n })\n return data.data.publicJournalMarkedAsKey\n } catch (err) {\n console.log('error getting journal: ', err)\n }\n }\n}\n\nexport function setCommunityLimit(limit) {\n return (dispatch) => {\n dispatch({ type: 'SET_COMMUNITY_LIMIT', limit })\n }\n}\n\n// Filter Public Journal List\n// -----------------------------------------------------------------------------\nexport function searchPublicJournals(value, nextToken) {\n return async () => {\n try {\n // TODO: search needs to be improved because query and filter only covers the data that are queried.\n const data = await API.graphql(\n graphqlOperation(custom_queries.listPublicJournals, {\n filter: { content: { contains: value } },\n limit: 100,\n nextToken,\n })\n )\n return data.data.listPublicJournals\n } catch (err) {\n console.log('error getting journal: ', err)\n }\n }\n}\n\n// Get Public Journal Entry\n// -----------------------------------------------------------------------------\nexport function getPublicJournalEntry(journalUid) {\n return async (dispatch) => {\n dispatch({ type: 'JOURNAL_LOADING_STATUS', loading: true })\n // dispatch({ type: \"JOURNAL_AVAILABLE\", currentJournal: null })\n try {\n const data = await API.graphql({\n query: custom_queries.getPublicJournal,\n variables: {\n id: journalUid,\n },\n authMode: 'AWS_IAM',\n })\n dispatch({\n type: 'JOURNAL_AVAILABLE',\n currentJournal: data.data.getPublicJournal,\n })\n return data.data.getPublicJournal\n } catch (err) {\n console.log('error getting journal: ', err)\n }\n }\n}\n\n// Create User Love Journal\n// -----------------------------------------------------------------------------\nexport function createUserLovedJournal(\n userLovedJournalJournalId,\n userLovedJournalUserId,\n journalAuthorId\n) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createUserLovedJournal, {\n input: { userLovedJournalJournalId, userLovedJournalUserId },\n })\n )\n\n await Promise.all([\n API.graphql(\n graphqlOperation(custom_mutations.gnjAmplifyJournalLovedCount, {\n journalId: getState().journal.currentJournal.id,\n lovedCount: getState().journal.currentJournal.lovedCount,\n })\n ),\n API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: getState().journal.currentJournal.id,\n lovedCount: getState().journal.currentJournal.lovedCount,\n },\n })\n ),\n ])\n\n createNotificationFromLovedJournal(\n userLovedJournalJournalId,\n journalAuthorId,\n getState().user.userData\n )\n\n return data.data.createUserLovedJournal\n } catch (err) {\n if (err.errors[0].errorType === 'Unauthorized') {\n createNotificationFromLovedJournal(\n userLovedJournalJournalId,\n journalAuthorId,\n getState().user.userData\n )\n } else {\n console.log('error Create User Love Journal: ', err)\n }\n }\n }\n}\n\n// Delete User Love Journal\n// -----------------------------------------------------------------------------\nexport function deleteUserLovedJournal(id) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.deleteUserLovedJournal, {\n input: { id },\n })\n )\n\n await Promise.all([\n API.graphql(\n graphqlOperation(custom_mutations.gnjAmplifyJournalLovedCount, {\n journalId: getState().journal.currentJournal.id,\n lovedCount: getState().journal.currentJournal.lovedCount,\n })\n ),\n API.graphql(\n graphqlOperation(custom_mutations.updatePublicJournal, {\n input: {\n id: getState().journal.currentJournal.id,\n lovedCount: getState().journal.currentJournal.lovedCount,\n },\n })\n ),\n ])\n\n return data.data.deleteUserLovedJournal\n } catch (err) {\n console.log('error Delete User Love Journal: ', err)\n }\n }\n}\n\n// Create User Love Comment\n// -----------------------------------------------------------------------------\nexport function createUserLovedComment(\n comment,\n userLovedCommentUserId,\n journalID\n) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createUserLovedComment, {\n input: {\n userLovedCommentCommentId: comment.id,\n userLovedCommentUserId,\n },\n })\n )\n await API.graphql(\n graphqlOperation(custom_mutations.updateComment, {\n input: {\n id: comment.id,\n commentLovedCount: comment.commentLovedCount,\n },\n })\n )\n createNotificationFromLovedComment(\n comment,\n journalID,\n getState().user.userData\n )\n return data.data.createUserLovedComment\n } catch (err) {\n if (err.errors[0].errorType === 'Unauthorized') {\n createNotificationFromLovedComment(\n comment,\n journalID,\n getState().user.userData\n )\n } else {\n console.log('errer creating user loved comment: ', err)\n }\n }\n }\n}\n\n// Delete User Love Comment\n// -----------------------------------------------------------------------------\nexport function deleteUserLovedComment(comment) {\n return async (dispatch) => {\n try {\n const commentLovedID = comment.hasLoved\n\n await Promise.all([\n API.graphql(\n graphqlOperation(custom_mutations.deleteUserLovedComment, {\n input: { id: commentLovedID },\n })\n ),\n API.graphql(\n graphqlOperation(custom_mutations.updateComment, {\n input: {\n id: comment.id,\n commentLovedCount: comment.commentLovedCount,\n },\n })\n ),\n ])\n } catch (err) {\n console.log('error deleting user loved comment: ', err)\n }\n }\n}\n\n// Get Loved users from Public Journal Entry\n// -----------------------------------------------------------------------------\nexport function getLovedUsersFromJournal(journalUid, nextToken) {\n return async (dispatch) => {\n if (!nextToken)\n dispatch({ type: 'SET_LOVERLOADING_STATUS', loverLoading: true })\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getLoveUserJournal, {\n id: journalUid,\n lovedNextToken: nextToken,\n })\n )\n if (nextToken)\n dispatch({\n type: 'ADD_LOVED_USERS',\n lovedUsers: data.data.getPublicJournal.lovedUsers,\n })\n else\n dispatch({\n type: 'SET_LOVED_USERS',\n lovedUsers: data.data.getPublicJournal.lovedUsers,\n })\n dispatch({ type: 'SET_LOVERLOADING_STATUS', loverLoading: false })\n } catch (err) {\n console.log('error getting loved user from journal: ', err)\n dispatch({ type: 'SET_LOVERLOADING_STATUS', loverLoading: false })\n }\n }\n}\n\n// Get Loved users from Comment\n// -----------------------------------------------------------------------------\nexport function getLovedUsersFromComment(commendUid, nextToken) {\n return async (dispatch) => {\n if (!nextToken)\n dispatch({ type: 'SET_LOVERLOADING_STATUS', loverLoading: true })\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getLoveUserComment, {\n id: commendUid,\n lovedNextToken: nextToken,\n })\n )\n if (nextToken)\n dispatch({\n type: 'ADD_LOVED_USERS',\n lovedUsers: data.data.getComment.lovedUsers,\n })\n else\n dispatch({\n type: 'SET_LOVED_USERS',\n lovedUsers: data.data.getComment.lovedUsers,\n })\n dispatch({ type: 'SET_LOVERLOADING_STATUS', loverLoading: false })\n } catch (err) {\n console.log('error getting loved user from comment ', err)\n dispatch({ type: 'SET_LOVERLOADING_STATUS', loverLoading: false })\n }\n }\n}\n\n// Check Challenge table with username and yearMonth then excute functions accordingly\n// -----------------------------------------------------------------------------\nexport function checkIfUserHasJournalAlready(challengeData) {\n return async (dispatch, getState) => {\n try {\n const currentYear = new Date().getFullYear()\n const currentMonth = new Date().getMonth()\n const yearMonth = currentYear + '-' + ('0' + (currentMonth + 1)).slice(-2)\n const data = await API.graphql(\n graphqlOperation(custom_queries.yearMonthUserAsKey, {\n yearMonth: yearMonth,\n user: { eq: challengeData.userUid },\n })\n )\n //Excute functions accordingly\n if (challengeData.request === 'WRITE') {\n if (data.data.yearMonthUserAsKey.items.length === 0) {\n dispatch(\n createChallenge(challengeData, yearMonth, getState().user.userData)\n )\n } else {\n dispatch(\n updateChallenge(\n data.data.yearMonthUserAsKey.items[0].id,\n data.data.yearMonthUserAsKey.items[0].journalsPerMonth + 1,\n getState().user.userData,\n data.data.yearMonthUserAsKey.items[0].journalWordCountPerMonth +\n challengeData.journalWordCountPerMonth\n )\n )\n }\n } else if (challengeData.request === 'UPDATE') {\n const countJournalWordCountPerMonth =\n challengeData.journalWordCountBeforeEditing\n ? data.data.yearMonthUserAsKey.items[0].journalWordCountPerMonth +\n (challengeData.journalWordCountPerMonth -\n challengeData.journalWordCountBeforeEditing)\n : data.data.yearMonthUserAsKey.items[0].journalWordCountPerMonth +\n challengeData.journalWordCountPerMonth\n\n dispatch(\n updateChallenge(\n data.data.yearMonthUserAsKey.items[0].id,\n data.data.yearMonthUserAsKey.items[0].journalsPerMonth,\n getState().user.userData,\n countJournalWordCountPerMonth\n )\n )\n } else {\n if (data.data.yearMonthUserAsKey.items[0].journalsPerMonth <= 1) {\n dispatch(deleteChallenge(data.data.yearMonthUserAsKey.items[0].id))\n } else {\n dispatch(\n updateChallenge(\n data.data.yearMonthUserAsKey.items[0].id,\n data.data.yearMonthUserAsKey.items[0].journalsPerMonth - 1,\n getState().user.userData,\n data.data.yearMonthUserAsKey.items[0].journalWordCountPerMonth -\n challengeData.journalWordCountPerMonth\n )\n )\n }\n }\n } catch (e) {\n console.log('checkIfUserHasJournalAlready ', e)\n }\n }\n}\n\n// Add item to Challenge table\n// -----------------------------------------------------------------------------\nexport function createChallenge(challengeData, yearMonth, userData) {\n return async () => {\n try {\n await API.graphql(\n graphqlOperation(custom_mutations.createChallenge, {\n input: {\n yearMonth: yearMonth,\n user: challengeData.userUid,\n journalsPerMonth: 1,\n journalWordCountPerMonth: challengeData.journalWordCountPerMonth,\n userProfileImage: userData.profileImage\n ? userData.profileImage\n : null,\n userDisplayName: userData.displayName ? userData.displayName : null,\n },\n })\n )\n } catch (err) {\n console.log('createChallenge ', err)\n }\n }\n}\n\n// Remove item on Challenge table\n// -----------------------------------------------------------------------------\nexport function deleteChallenge(challengeUid) {\n return async () => {\n try {\n await API.graphql(\n graphqlOperation(custom_mutations.deleteChallenge, {\n input: {\n id: challengeUid,\n },\n })\n )\n } catch (err) {\n console.log('deleteChallenge ', err)\n }\n }\n}\n\n// Update Challenge table\n// -----------------------------------------------------------------------------\nexport function updateChallenge(\n challengeUid,\n newNumberOfJournal,\n userData,\n journalWordCountPerMonth\n) {\n return async () => {\n try {\n await API.graphql(\n graphqlOperation(custom_mutations.updateChallenge, {\n input: {\n id: challengeUid,\n journalsPerMonth: newNumberOfJournal,\n journalWordCountPerMonth:\n journalWordCountPerMonth < 0 ? 0 : journalWordCountPerMonth,\n userProfileImage: userData.profileImage\n ? userData.profileImage\n : null,\n userDisplayName: userData.displayName ? userData.displayName : null,\n },\n })\n )\n } catch (err) {\n console.log('updateChallenge ', err)\n }\n }\n}\n\n// Check is current user loved journal or not\n// -----------------------------------------------------------------------------\nexport function isUserLovedJournal(user, journal) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.isUserLovedJournalAsKey, {\n userLovedJournalUserId: user,\n userLovedJournalJournalId: { eq: journal },\n })\n )\n return data.data.isUserLovedJournalAsKey\n } catch (err) {\n console.log('isUserLovedJournal ', err)\n }\n }\n}\n\n// Check is current user loved comment or not\n// -----------------------------------------------------------------------------\nexport function isUserLovedComment(user, comment) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.isUserLovedCommentAsKey, {\n userLovedCommentUserId: user,\n userLovedCommentCommentId: { eq: comment },\n })\n )\n return data.data.isUserLovedCommentAsKey\n } catch (err) {\n // console.log('isUserLovedComment ', err)\n }\n }\n}\n\n// Check if user has the book with the same name already\n// -----------------------------------------------------------------------------\nexport function isUserHasABook(user, bookName) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.isUserHasABookAsKey, {\n bookUserId: user,\n book: { eq: bookName },\n })\n )\n return data.data.isUserHasABookAsKey\n } catch (err) {\n console.log('isUserHasABook ', err)\n }\n }\n}\n\n// Create a book\n// -----------------------------------------------------------------------------\nexport function createABook(bookData) {\n return async (dispatch, getState) => {\n const username = getState().user.userData.id\n const numberOfBooks = getState().user.userData.books.items.length\n\n // Create up to 30 books\n if (numberOfBooks >= 30) {\n return { error: 'You have reached the maximum number(30) of books.' }\n }\n\n // check if user has the book with the same name already\n const checkedBookName = await dispatch(\n isUserHasABook(username, bookData.book)\n )\n if (checkedBookName.items.length > 0) {\n return { error: 'Book name exists already' }\n } else {\n // Call this with or without cover image\n async function createABookReqeust(coverImage) {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createBook, {\n input: {\n book: bookData.book,\n bookUserId: username,\n bookCoverImg: coverImage,\n },\n })\n )\n\n dispatch({ type: 'CREATE_USER_BOOK', userBooks: data.data.createBook })\n // return data.data.createBook\n }\n\n try {\n if (bookData.bookCoverImg) {\n const coverImage = await dispatch(\n uploadBookCoverImage(username, bookData.bookCoverImg)\n )\n createABookReqeust(coverImage)\n } else {\n createABookReqeust()\n }\n } catch (err) {\n console.log('createABook ', err)\n }\n }\n }\n}\n\n// Upload book cover image to S3\n// -----------------------------------------------------------------------------\nexport function uploadBookCoverImage(username, file) {\n return async () => {\n const extension = /^.+\\.([^.]+)$/.exec(file.name)[1]\n const { type: mimeType } = file\n const dataToURL = new Date()\n .toJSON()\n .slice(0, 23)\n .replace(/[^0-9-]/g, '-')\n const filePath = `book/${username}-book-${dataToURL}.${extension}`\n\n try {\n // Uploading to S3 bucket\n var options = {\n ACL: 'public-read',\n contentType: mimeType,\n level: 'public',\n }\n await Storage.put(filePath, file, options)\n return `https://${bucket}.s3.amazonaws.com/public/book/${encodeURIComponent(\n username\n )}-book-${dataToURL}.${extension}`\n } catch (err) {\n console.log('error uploadBookCoverImage: ', err)\n }\n }\n}\n\n// Get More User Books\n// -----------------------------------------------------------------------------\nexport function getMoreUserBooks(username, nextToken) {\n return async (dispatch) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getUser, {\n id: username,\n nextTokenBook: nextToken,\n })\n )\n const newBookData = {\n items: data.data.getUser.books.items,\n nextToken: data.data.getUser.books.nextToken,\n }\n dispatch({ type: 'ADD_USER_BOOK_DATA', newBookData })\n } catch (err) {\n console.log('error getMoreUserBooks: ', err)\n }\n }\n}\n\n// Get a Book with journals\n// -----------------------------------------------------------------------------\nexport function getABookWithJournals(\n bookID,\n nextTokenJournal,\n nextTokenPublicJournal\n) {\n return async (dispatch) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getBook, {\n id: bookID,\n nextTokenJournal: nextTokenJournal,\n nextTokenPublicJournal: nextTokenPublicJournal,\n })\n )\n return data.data.getBook\n } catch (err) {\n console.log('error getABookWithJournals: ', err)\n }\n }\n}\n\n// Delete a book\n// -----------------------------------------------------------------------------\nexport function deleteABook(bookID) {\n return async (dispatch) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.deleteBook, { input: { id: bookID } })\n )\n dispatch({ type: 'REMOVE_A_BOOK', deletedBook: data.data.deleteBook })\n // return data.data.deleteBook\n } catch (err) {\n console.log('error deleteABook: ', err)\n }\n }\n}\n\n// Update a book\n// -----------------------------------------------------------------------------\nexport function updateABook(bookData) {\n return async (dispatch, getState) => {\n const username = getState().user.userData.id\n\n try {\n let coverImage = bookData.bookCoverImg\n if (bookData.newImage) {\n coverImage = await dispatch(\n uploadBookCoverImage(username, bookData.bookCoverImg)\n )\n }\n\n const data = await API.graphql(\n graphqlOperation(custom_mutations.updateBook, {\n input: {\n id: bookData.id,\n book: bookData.book,\n bookCoverImg: coverImage,\n bookJournalCount: bookData.bookJournalCount,\n },\n })\n )\n\n dispatch({ type: 'UPDATE_A_BOOK', updatedBook: [data.data.updateBook] })\n return data.data.updateBook\n } catch (err) {\n console.log('error updateABook: ', err)\n }\n }\n}\n\n// Update book journal number count\n// -----------------------------------------------------------------------------\nexport function adjustBookJournalsCount(bookId, diff) {\n return async (dispatch, getState) => {\n let count = 0\n let maxTries = 3\n\n while (true) {\n try {\n const getTotalJournalsOfTheBook = getState().user.userBooks.filter(\n (book) => {\n return book.id === bookId\n }\n )\n let total =\n getTotalJournalsOfTheBook[0] &&\n getTotalJournalsOfTheBook[0].bookJournalCount\n ? getTotalJournalsOfTheBook[0].bookJournalCount + diff\n : diff\n if (total < 0) total = 0\n const data = await API.graphql(\n graphqlOperation(custom_mutations.updateBook, {\n input: {\n id: bookId,\n bookJournalCount: total,\n },\n })\n )\n\n dispatch({ type: 'UPDATE_A_BOOK', updatedBook: [data.data.updateBook] })\n break\n } catch (err) {\n console.log('error adjustBookJournalsCount: ', err)\n if (++count === maxTries) throw err\n }\n }\n }\n}\n","import heic2any from \"heic2any\";\nimport imageCompression from \"browser-image-compression\";\n\nexport const convertHEICToAny = async(file) => {\n try {\n console.log(\"HEIC image is being converted...\");\n await heic2any({\n blob: file,\n toType: \"image/jpeg\",\n quality: 0.8\n }).then(result => (file = result));\n } catch (error) {\n console.warn(error);\n }\n if (/^image\\//.test(file.type)) {\n try {\n return file;\n } catch (err) {\n console.log(err);\n }\n } else {\n console.warn(\"Could not convert image at the moment, please try later.\");\n }\n}\n\nexport const getCompressedImage = async(imageFile) => {\n var options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 2000,\n useWebWorker: false\n };\n try {\n console.log(\"Image is being compressed...\");\n let compressedFile = \"\";\n await imageCompression(imageFile, options).then(\n result => (compressedFile = result)\n );\n compressedFile.name = \"converted.jpeg\";\n return compressedFile;\n } catch (error) {\n console.warn(\"Image could not be compressed: \", error);\n return imageFile;\n }\n}","const isPaidUser = (membership) => {\n if (membership === 'annual' || membership === 'monthly') {\n return true\n }\n return false\n}\n\nexport default isPaidUser\n","import React, { Component } from \"react\";\nimport ReactModal from \"react-modal\";\nimport loadingIcon from \"../assets/images/loading.svg\";\n\nclass AddBookPopup extends Component {\n _closeModal = () => {\n const { bookPopupControl } = this.props;\n bookPopupControl(false);\n }\n\n _createABook = async (e) => {\n e.preventDefault()\n await this.props.createABook(this.state)\n }\n\n _onChange = async e => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n _coverImageSelect = async e => {\n this.setState({ bookCoverImg: e.target.files[0] })\n }\n \n render() {\n const { showAddaBook, book, error, isCreatingABook } = this.props\n\n return (\n
\n \n\n
\n

Create a book

\n\n
\n \n \n
\n\n
\n \n \n
\n\n {error &&

{error}

}\n \n
\n\n \n
\n );\n }\n}\n\nexport default AddBookPopup;\n","import React, { Component } from 'react'\n// import { Link } from \"react-router-dom\";\nimport { withRouter } from 'react-router'\nimport ReactModal from 'react-modal'\nimport membersOnly from '../assets/images/members-only.svg'\n\nReactModal.setAppElement('body')\n\nclass UpgradePopup extends Component {\n _closePopup = async () => {\n const { popupControl, publishPrivate, ctaText } = this.props\n if (publishPrivate && ctaText !== 'Close') publishPrivate('PRIVATE')\n popupControl(false)\n }\n\n _closeModal = async () => {\n const { popupControl } = this.props\n popupControl(false)\n }\n\n _becomeAMember = async () => {\n const { popupControl } = this.props\n // TODO: Arman, maybe you can make this better? I want to save it as Private journal(it's better if it's draft too) before take user to the Billing page\n this.props.history.push({ pathname: '/my-account/billing' })\n popupControl(false)\n }\n\n render() {\n const { featureName, showUpgrade, ctaText } = this.props\n\n return (\n
\n \n \n

{featureName} is member's only feature

\n

\n Your membership helps us out a lot! Support the community by\n becoming a member and get full access to all features.\n

\n {/* TODO: Save the journal as a private then take user to the Billing page */}\n

\n \n

{' '}\n {/* TODO: Save the journal as a private */}\n {ctaText && (\n

\n \n \n {ctaText}\n \n \n

\n )}{' '}\n \n
\n )\n }\n}\n\nexport default withRouter(UpgradePopup)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { withRouter } from 'react-router'\n\nimport {\n createABook,\n getMoreUserBooks,\n getABookWithJournals,\n} from '../actions/journal'\nimport { convertHEICToAny, getCompressedImage } from '../utils/ImageProcess'\nimport isPaidUser from '../utils/isPaidUser'\n\nimport AddBookPopup from '../components/AddBookPopup'\nimport UpgradePopup from '../components/UpgradePopup'\n\nclass BooksMyJournal extends Component {\n constructor(props) {\n super(props)\n this.state = {\n showBook: false,\n showAddaBook: false,\n showUpgrade: false,\n bookUserId: props.user.accountData.idToken.payload['cognito:username'],\n error: '',\n isCreatingABook: false,\n }\n }\n\n componentDidMount() {\n if (localStorage.getItem('show-books-on-my-journal') === 'true') {\n this.setState({ showBook: true })\n }\n }\n\n _showBook = () => {\n const { showBook } = this.state\n this.setState(\n {\n showBook: !showBook,\n },\n () => {\n if (showBook) {\n localStorage.setItem('show-books-on-my-journal', false)\n this.setState({ showBook: false })\n } else {\n localStorage.setItem('show-books-on-my-journal', true)\n this.setState({ showBook: true })\n }\n }\n )\n }\n\n _showAddaBookUI = () => {\n const { userBooks, user } = this.props\n\n userBooks.length > 2 &&\n !isPaidUser(user.currentUser.attributes['custom:membership'])\n ? this.setState({\n showAddaBook: false,\n showUpgrade: true,\n })\n : this.setState({\n showAddaBook: true,\n showUpgrade: false,\n })\n }\n\n _popupControl = async (callback) => {\n this.setState({\n showUpgrade: callback,\n })\n }\n\n _bookPopupControl = async (callback) => {\n this.setState({\n showAddaBook: callback,\n })\n if (!callback) {\n this.setState({\n error: '',\n })\n }\n }\n\n _createABook = async (bookData) => {\n const { bookUserId } = this.state\n this.setState({\n isCreatingABook: true,\n showAddaBook: true,\n })\n\n try {\n if (bookData.bookCoverImg) {\n let file = bookData.bookCoverImg\n let iPhoneExtensions = this.props.user.iPhoneExtensions\n\n // file type is only image.\n if (iPhoneExtensions.includes(file.name.split('.')[1])) {\n try {\n await convertHEICToAny(file).then((result) => (file = result))\n } catch {\n console.log('Converter not working.')\n }\n }\n if (/^image\\//.test(file.type)) {\n try {\n await getCompressedImage(file).then((result) => (file = result))\n console.log('Image is being uploaded...')\n bookData.bookCoverImg = file\n const bookCreated = await this.props.createABook(\n bookData,\n bookUserId\n )\n if (bookCreated && bookCreated.error) {\n this.setState({\n error: bookCreated.error,\n })\n } else {\n this.setState({\n showAddaBook: false,\n error: '',\n })\n }\n } catch (err) {\n console.log(err)\n }\n } else {\n console.warn('You could only upload images.')\n }\n } else {\n const bookCreated = await this.props.createABook(bookData, bookUserId)\n if (bookCreated && bookCreated.error) {\n this.setState({\n error: bookCreated.error,\n })\n } else {\n this.setState({\n showAddaBook: false,\n error: '',\n })\n }\n }\n this.setState({ isCreatingABook: false })\n } catch (err) {\n console.log(err)\n this.setState({ error: err, isCreatingABook: false })\n }\n }\n\n render() {\n const { showBook, showAddaBook, showUpgrade, error, isCreatingABook } =\n this.state\n const { userBooks } = this.props\n\n const listOfBooks =\n userBooks.length > 0 ? (\n userBooks.slice(0, 13).map((book) => {\n return (\n this.props.history.push('/book/' + book.id)}\n id={'book_clicked_' + book.id}\n >\n \n {book.book} ({book.bookJournalCount ? book.bookJournalCount : 0}\n )\n \n \n )\n })\n ) : (\n
\n \n \n \n \n Create your\n
\n first book!\n
\n
\n )\n\n return (\n
\n
\n \n My books\n \n \n \n \n
\n\n
\n {userBooks.items === 'loading' ?
: listOfBooks}\n {userBooks.length > 0 && (\n this.props.history.push('/books')}\n >\n See all books\n
\n )}\n
\n\n \n\n \n \n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n createABook,\n getMoreUserBooks,\n getABookWithJournals,\n },\n dispatch\n )\n}\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(BooksMyJournal)\n)\n","import React, { PureComponent } from 'react'\nimport { Link } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport {\n getJournalsData,\n getMoreUserJournal,\n getUserData,\n setMyJournalLimit,\n} from '../actions/user'\nimport MyJournalList from '../components/MyJournalList'\nimport BooksMyJournal from './BooksMyJournal'\nimport moment from 'moment'\nimport loadingIcon from '../assets/images/loading-dark.svg'\n\nclass MyJournal extends PureComponent {\n constructor(props) {\n super(props)\n this.state = {\n username: props.user.accountData.idToken.payload['cognito:username'],\n showSearch: false,\n showLoadingIcon: false,\n searchingJournals: false,\n searched: false,\n searchText: '',\n }\n\n this.showSearchUI = this.showSearchUI.bind(this)\n this.loadMore = this.loadMore.bind(this)\n this.searchJournals = this.searchJournals.bind(this)\n }\n\n async componentDidMount() {\n const { journal, user } = this.props\n const { username } = this.state\n try {\n if (user.isAuthenticated)\n await this.props.getUserData(username, journal.myJournalLimit)\n } catch (err) {\n console.log(err)\n }\n }\n\n showSearchUI() {\n this.setState({ showSearch: !this.state.showSearch })\n }\n\n async searchJournals(event) {\n const { journal } = this.props\n if (event.key === 'Enter' || event.target.value === '') {\n const { username } = this.state\n this.setState({\n searchingJournals: true,\n searchText: event.target.value,\n })\n if (event.target.value !== '') {\n try {\n await this.props.getJournalsData(username, event.target.value)\n this.setState({\n searchingJournals: false,\n searched: true,\n })\n } catch (err) {\n console.log(err)\n this.setState({ searchingJournals: false })\n }\n } else {\n try {\n await this.props.getUserData(username, journal.myJournalLimit)\n this.setState({\n searchingJournals: false,\n searched: false,\n })\n } catch (err) {\n console.log(err)\n this.setState({ searchingJournals: false })\n }\n }\n }\n }\n\n async loadMore(totalJournals) {\n const { username, showSearch, searchText } = this.state\n const { userJournal } = this.props.user\n this.setState({ showLoadingIcon: true })\n try {\n if (showSearch && searchText) {\n await this.props.getJournalsData(\n username,\n searchText,\n userJournal[userJournal.length - 1].nextToken\n )\n } else {\n await this.props.getMoreUserJournal(\n username,\n userJournal[userJournal.length - 1].nextToken\n )\n this.props.setMyJournalLimit(totalJournals + 60)\n }\n this.setState({ showLoadingIcon: false })\n } catch (err) {\n console.log(err)\n this.setState({ showLoadingIcon: false })\n }\n }\n\n render() {\n const { showSearch, showLoadingIcon, searchingJournals, searched } =\n this.state\n const { userJournal, userData, userBooks } = this.props.user\n\n // Re-organize user journals by month\n let newJournalList = {}\n\n for (let i = 0; i < userJournal.length; i++) {\n for (let j = 0; j < userJournal[i].items.length; j++) {\n let month = userJournal[i].items[j].month\n if (!newJournalList[month]) newJournalList[month] = []\n newJournalList[month] = [\n ...newJournalList[month],\n ...userJournal[i].items[j].data,\n ]\n }\n }\n\n const totalLoadedMonthNumber = Object.keys(newJournalList).length\n\n let totalJournals = 0\n Object.keys(newJournalList).map(function (key, index) {\n return (totalJournals = totalJournals + newJournalList[key].length)\n })\n\n return (\n
\n
\n
\n \n \n
Write something today...
\n \n \n (window.location =\n 'https://happy.goodnightjournal.com/journal-prompt')\n }\n role=\"img\"\n aria-label=\"Thinking Face\"\n >\n 🤔\n \n
\n
\n\n {userData ? (\n \n ) : (\n \n )}\n\n
\n {Object.keys(newJournalList).length >= 1 ? (\n
\n {totalJournals} journal{totalJournals !== 1 && 's'} loaded from\n last {totalLoadedMonthNumber} month\n {totalLoadedMonthNumber === 1 ? '' : 's'}\n \n
\n ) : searched ? (\n
\n 0 journal loaded\n \n
\n ) : (\n ''\n )}\n\n
\n
\n this.searchJournals(event)}\n />\n
\n\n \n\n {userJournal[userJournal.length - 1] &&\n userJournal[userJournal.length - 1].items.length > 0 &&\n userJournal[userJournal.length - 1].nextToken && (\n
\n {showLoadingIcon ? (\n \n ) : (\n this.loadMore(totalJournals)}\n >\n Load more\n \n )}\n
\n )}\n
\n
\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getJournalsData,\n getMoreUserJournal,\n getUserData,\n setMyJournalLimit,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MyJournal)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport ReactQuill from 'react-quill'\nimport imageCompression from 'browser-image-compression'\nimport heic2any from 'heic2any'\nimport { uploadToS3 } from '../actions/user'\nimport 'react-quill/dist/quill.snow.css'\nimport '../assets/QuillEditor.css'\n\nlet timeout = null\n\nclass QuillEditor extends Component {\n constructor(props) {\n super(props)\n this.state = {\n text: '',\n cursorBottomPosition: 0,\n }\n\n QuillEditor.modules = {\n toolbar: [\n [{ header: '1' }, { header: '2' }],\n ['bold', 'italic', 'strike', 'link'],\n ['image'],\n ],\n clipboard: {\n matchVisual: false,\n },\n }\n\n this.imageHandler = this.imageHandler.bind(this)\n this.insertToEditor = this.insertToEditor.bind(this)\n this.getCompressedImage = this.getCompressedImage.bind(this)\n this.convertHEICToAny = this.convertHEICToAny.bind(this)\n }\n\n componentDidMount() {\n const thisEditor = this.quillTextarea.editor\n\n // autofocus\n thisEditor.getSelection(true)\n thisEditor.setSelection(thisEditor.getLength(), 0)\n\n // add custom image handler to editor\n if (!this.props.readOnly) {\n thisEditor.getModule('toolbar').addHandler('image', () => {\n this.imageHandler()\n })\n }\n\n // UX - Add sticky toolbar\n let qlToolbar = document.querySelectorAll('.quillEditor .ql-toolbar')[0]\n if (qlToolbar !== undefined) {\n let stop = qlToolbar.offsetTop,\n docBody =\n document.documentElement || document.body.parentNode || document.body,\n hasOffset = window.pageYOffset !== undefined,\n scrollTop\n\n window.onscroll = function (e) {\n scrollTop = hasOffset ? window.pageYOffset : docBody.scrollTop\n if (scrollTop >= stop) {\n qlToolbar.classList.add('sticky')\n } else {\n qlToolbar.classList.remove('sticky')\n }\n }\n }\n }\n\n insertToEditor(url) {\n // push image url to editor.\n if (url) {\n const range = this.quillTextarea.editor.getSelection()\n this.quillTextarea.editor.insertEmbed(range.index, 'image', url)\n } else {\n console.log('Image upload failed')\n }\n }\n\n async convertHEICToAny(file) {\n try {\n console.log('HEIC image is being converted...')\n await heic2any({\n blob: file,\n toType: 'image/jpeg',\n quality: 0.8,\n }).then((result) => (file = result))\n } catch (error) {\n console.warn(error)\n }\n if (/^image\\//.test(file.type)) {\n try {\n file.name = 'converted.jpeg'\n this.getCompressedImage(file)\n } catch (err) {\n console.log(err)\n }\n } else {\n console.warn('Could not convert image at the moment, please try later.')\n }\n }\n\n imageHandler() {\n let input = document.createElement('input')\n let temp = document.getElementById('quill-custom-container')\n input.setAttribute('type', 'file')\n input.style.cursor = 'pointer'\n input.style.opacity = 0\n input.style.position = 'absolute'\n input.style.width = '1px'\n input.style.height = '1px'\n input.style.accept = 'image/*'\n temp.appendChild(input)\n input.click()\n\n // Listen upload local image and save to S3\n input.addEventListener('change', () => {\n const file = input.files[0]\n\n // Disable editor\n this.quillTextarea.editor.enable(false)\n // Save current cursor state\n const range = this.quillTextarea.editor.getSelection()\n // Insert temporary loading placeholder image\n this.quillTextarea.editor.insertEmbed(\n range.index,\n 'image',\n `${window.location.origin}/images/placeholder.gif`\n )\n // Move cursor to right side of image (easier to continue typing)\n this.quillTextarea.editor.setSelection(range.index + 1)\n\n // file type is only image.\n if (\n this.props.iPhoneExtensions &&\n this.props.iPhoneExtensions.includes(file.name.split('.')[1])\n ) {\n this.convertHEICToAny(file)\n } else if (/^image\\//.test(file.type)) {\n try {\n this.getCompressedImage(file)\n } catch (err) {\n console.log(err)\n }\n } else {\n console.warn('You could only upload images.')\n }\n })\n }\n\n async getCompressedImage(imageFile) {\n var options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 2000,\n useWebWorker: false,\n }\n try {\n console.log('Image is being compressed...')\n let compressedFile = ''\n await imageCompression(imageFile, options).then(\n (result) => (compressedFile = result)\n )\n console.log('Image is being sent to S3...')\n this.props\n .uploadToS3(compressedFile, Date.now())\n .then((result) => this.insertToEditor(result))\n .then(() => {\n // remove placeholder gif\n const range = this.quillTextarea.editor.getSelection()\n this.quillTextarea.editor.deleteText(range.index - 1, 1)\n // enable editor\n this.quillTextarea.editor.enable(true)\n this.quillTextarea.editor.setSelection(range.index + 1)\n })\n } catch (error) {\n console.warn('Image could not be uploaded: ', error)\n }\n }\n\n _handleChange = (value) => {\n this.setState({ text: value })\n const { textCallback } = this.props\n\n // UX to add about 50px room on the bottom of the page when writer reaches to the bottom of the screen while typing\n const { cursorBottomPosition } = this.state\n if (this.quillTextarea) {\n const thisEditor = this.quillTextarea.editor\n const lastIndex = thisEditor.getSelection()\n\n if (lastIndex) {\n // TODO: cause thisEditor.getSelection() returns undefined when content is pasted into Quill editor.\n const newCursorBottomPosition = thisEditor.getBounds(lastIndex).bottom\n if (\n cursorBottomPosition !== newCursorBottomPosition &&\n newCursorBottomPosition + 300 > window.innerHeight\n ) {\n this.setState({\n cursorBottomPosition: newCursorBottomPosition,\n })\n window.scrollBy(0, 40)\n }\n }\n }\n\n let newWordArray = []\n setTimeout(function () {\n let words = value.split(/\\s+/)\n for (var i = 0; i < words.length; i++) {\n if (words[i]) {\n newWordArray.push(words[i])\n }\n }\n }, 500)\n\n clearTimeout(timeout)\n\n timeout = setTimeout(function () {\n textCallback(value, newWordArray.length)\n }, 500)\n }\n\n render() {\n const { readOnly, value } = this.props\n\n return (\n
\n (this.quillTextarea = quilltext)}\n scrollingContainer=\"html, body\"\n />\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n iPhoneExtensions: state.user.iPhoneExtensions,\n }\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n uploadToS3,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(QuillEditor)\n","import React, { Component } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport { addDays } from 'date-fns';\n\nimport \"react-datepicker/dist/react-datepicker.css\";\n\nclass DateTimePicker extends Component{\n render() {\n const { newDate, setDate} = this.props\n return (\n
\n {\n newDate(date)\n }\n }\n timeInputLabel=\"Time:\"\n dateFormat=\"MMM d, yyyy h:mm aa\"\n maxDate={addDays(new Date(), 0)}\n showTimeInput\n />\n
\n );\n }\n}\n\nexport default DateTimePicker","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport QuillEditor from '../components/QuillEditor'\nimport UpgradePopup from '../components/UpgradePopup'\nimport DateTimePicker from '../utils/DateTimePicker'\nimport isPaidUser from '../utils/isPaidUser'\n\nimport {\n saveJournal,\n updateJournal,\n adjustBookJournalsCount,\n} from '../actions/journal'\n\nimport ReactGA from 'react-ga'\n\nclass WriteJournal extends Component {\n constructor(props) {\n super(props)\n this.state = {\n privacy: 'PRIVATE',\n journalUid: '',\n journalAuthorId:\n props.user.accountData.idToken.payload['cognito:username'],\n journalContent: '',\n journalWordCount: 0,\n autoSaved: false,\n showUpgrade: false,\n journalBookId: '',\n journalPromptCheck: false,\n journalCreatedAt: new Date(),\n upgradePopUpMessage: {\n featureName: 'Publishing a public journal',\n ctaText: 'Publish it as a private journal',\n },\n isSavingJournal: false,\n }\n }\n\n async componentDidMount() {\n const params = new URLSearchParams(this.props.history.location.search)\n const bookSelected = params.get('bookSelected')\n const journalPrompt = params.get('journalPrompt')\n\n bookSelected && this.setState({ journalBookId: bookSelected })\n journalPrompt &&\n this.setState({\n journalContent:\n '

' +\n journalPrompt +\n '

',\n })\n\n this.setState({ journalPromptCheck: true })\n }\n\n _selectPrivacy = async (e) => {\n this.setState({\n privacy: e.target.value,\n })\n }\n\n _handleChange = async (textPassed, wordCount) => {\n this.setState({\n journalContent: textPassed,\n journalWordCount: wordCount,\n })\n const {\n privacy,\n journalUid,\n autoSaved,\n journalContent,\n journalAuthorId,\n journalWordCount,\n journalBookId,\n journalCreatedAt,\n } = this.state\n const { user } = this.props\n\n let journalPrivacy = privacy\n if (!isPaidUser(user.currentUser.attributes['custom:membership'])) {\n journalPrivacy = 'PRIVATE'\n }\n\n if (journalContent.length < 10) {\n return\n }\n\n if (autoSaved) {\n // if non-paid user, disable autosave and shows the warning message for the first time only\n if (!isPaidUser(user.currentUser.attributes['custom:membership'])) {\n if (localStorage.getItem('auto-save-for-paid-users') === 'true') {\n return\n } else {\n this.setState({\n showUpgrade: true,\n upgradePopUpMessage: {\n featureName: 'Autosave',\n ctaText: 'Close',\n },\n })\n localStorage.setItem('auto-save-for-paid-users', 'true')\n return\n }\n }\n try {\n await this.props.updateJournal({\n id: journalUid,\n journalAuthorId: journalAuthorId,\n privacy: journalPrivacy,\n draft: true,\n content: journalContent,\n journalWordCount: journalWordCount,\n journalBookId: journalBookId,\n })\n } catch (err) {\n console.log(err)\n }\n } else {\n this.setState({ autoSaved: true })\n try {\n await this.props.saveJournal({\n journalAuthorId: journalAuthorId,\n privacy: privacy,\n draft: true,\n content: journalContent,\n journalWordCount: journalWordCount,\n createdAt: journalCreatedAt.toISOString(),\n })\n const { journal } = this.props\n this.setState({\n journalUid: journal.currentJournal.id,\n })\n // Replacing URL with the newly created journal ID so it won't mess around with other journals when auto save is triggered\n // There was a bug when going back by clicking go back button on web browser that sometimes replace the current journal with previous journal\n window.history.replaceState(\n null,\n ``,\n `/edit/${journal.currentJournal.id}`\n )\n } catch (err) {\n console.log(err)\n this.setState({ autoSaved: false })\n }\n }\n }\n\n _publishJournal = async () => {\n const { privacy } = this.state\n const { user } = this.props\n if (\n privacy === 'PUBLIC' &&\n !isPaidUser(user.currentUser.attributes['custom:membership'])\n ) {\n this.setState({\n showUpgrade: true,\n upgradePopUpMessage: {\n featureName: 'Publishing a public journal',\n ctaText: 'Publish it as a private journal',\n },\n })\n } else {\n this._updateJournal(privacy)\n // Event tracking.\n ReactGA.event({\n category: this.state.journalAuthorId,\n action: 'Writing',\n label: privacy,\n })\n }\n }\n\n _popupControl = async (callback) => {\n this.setState({\n showUpgrade: callback,\n })\n }\n\n _updateJournal = async (privacy) => {\n const {\n journalUid,\n journalAuthorId,\n journalContent,\n journalWordCount,\n journalBookId,\n journalCreatedAt,\n } = this.state\n\n if (journalContent.length <= 0) {\n return\n }\n\n this.setState({ isSavingJournal: true })\n if (journalUid) {\n try {\n await this.props.updateJournal({\n id: journalUid,\n privacy: privacy,\n journalAuthorId: journalAuthorId,\n draft: false,\n content: journalContent,\n journalWordCount: journalWordCount,\n journalBookId: journalBookId,\n createdAt: journalCreatedAt.toISOString(),\n })\n // Update book bookJournalCount number if journalBookId exist\n if (journalBookId && journalBookId !== null) {\n await this.props.adjustBookJournalsCount(journalBookId, 1)\n }\n this.props.history.push({\n pathname:\n (privacy === 'PUBLIC' ? '/public-journal/' : '/journal/') +\n journalUid,\n state: { prevPath: this.props.location.pathname },\n })\n } catch (err) {\n console.log(err)\n this.setState({ isSavingJournal: false })\n }\n }\n }\n\n _selectBook = async (e) => {\n this.setState({\n journalBookId: e.target.value,\n })\n }\n\n _newJournalCreatedAt = (date) => {\n const { journalCreatedAt } = this.state\n const { user } = this.props\n if (!isPaidUser(user.currentUser.attributes['custom:membership'])) {\n this.setState({\n showUpgrade: true,\n journalCreatedAt: journalCreatedAt,\n upgradePopUpMessage: {\n featureName: 'Changing date and time',\n ctaText: 'Publish it with current date and time',\n },\n })\n } else {\n this.setState({\n journalCreatedAt: date,\n })\n }\n }\n\n render() {\n const {\n privacy,\n showUpgrade,\n journalBookId,\n journalContent,\n journalPromptCheck,\n upgradePopUpMessage,\n journalCreatedAt,\n isSavingJournal,\n } = this.state\n const { journal, user } = this.props\n\n const bookList =\n user && user.userBooks.length > 0 ? (\n \n \n {user.userBooks.map((book) => {\n return (\n \n )\n })}\n \n ) : (\n \n )\n\n return (\n
\n
    \n
  • \n this.props.history.goBack()}\n className=\"link-text\"\n id=\"writeJournal_go_back\"\n >\n Back\n \n
  • \n
  • {bookList}
  • \n
  • \n \n {journal.pendingCreate || journal.pendingUpdate || isSavingJournal\n ? 'Saving...'\n : 'Publish'}\n \n
  • \n
\n
\n \n \n \n \n \n
\n
\n {journalPromptCheck && (\n \n )}\n
\n\n \n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n saveJournal,\n updateJournal,\n adjustBookJournalsCount,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(WriteJournal)\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport QuillEditor from \"./QuillEditor\";\n\nimport moment from \"moment\";\n\nimport ProfilePic from \"../utils/ProfilePic\";\n\nclass JournalEntryContent extends Component {\n\n render() {\n const { journalEntry } = this.props;\n\n if (!journalEntry) return null\n\n return (\n
\n
\n
\n \n \n \n \n
\n

\n {journalEntry.book && \n \n {journalEntry.book.book}\n \n }{\" \"}\n {journalEntry.draft && Draft}{\" \"}\n {journalEntry.privacy === \"PRIVATE\" && Private}\n

\n
\n \n
\n );\n }\n}\n\nexport default JournalEntryContent;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\n\nconst NoMatch = ({ location }) => (\n \n
    \n
  • \n \n Back to home\n \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n
\n
\n \n

\n 404 Page not found :(\n

\n

{location ? location.pathname : ''} page does not exist. Wanna go to the homepage?

\n
\n
\n
\n);\n\nexport default NoMatch\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { getJournal, deleteJournal } from \"../actions/journal\";\nimport { getUserData } from \"../actions/user\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport JournalEntryContent from \"../components/JournalEntryContent\";\nimport NoMatch from \"../components/NoMatch\";\n\nclass JournalEntry extends Component {\n _isMounted = false;\n\n constructor(props) {\n super(props);\n this.state = {\n username: props.user.accountData.idToken.payload[\"cognito:username\"],\n stateUpdating: false,\n attemptJournal: false\n };\n }\n\n async componentDidMount() {\n this._isMounted = true;\n const { journal_uid } = this.props.match.params;\n const userJorunal = await this.props.getJournal(journal_uid)\n if(!userJorunal){\n this.setState({ attemptJournal: true })\n }\n }\n\n _deleteJournal = async () => {\n const { journal_uid } = this.props.match.params;\n const ask = window.confirm(\n \"Do you want to permanently delete this journal?\"\n );\n if (ask) {\n try {\n const deletedJournal = await this.props.deleteJournal(journal_uid);\n await this.props.getUserData(this.props.user.userData.id);\n if (deletedJournal.id === journal_uid) {\n this.props.history.push(\"/\");\n } else {\n alert(\n \"Error deleting the journal. Please reload the page and try again.\"\n );\n }\n } catch (err) {\n console.log(err);\n }\n }\n };\n\n _goBackDestination = async () => {\n const { location } = this.props;\n\n location.state &&\n (location.state.prevPath === \"/write\" ||\n location.state.prevPath === \"/edit\")\n ? this.props.history.push(\"/\")\n : this.props.history.goBack();\n };\n\n _renderSubNavUI = () => {\n const { journal, user } = this.props;\n const { journal_uid } = this.props.match.params;\n if (\n journal.currentJournal &&\n journal.currentJournal.author.id ===\n user.accountData.idToken.payload[\"cognito:username\"]\n ) {\n return (\n
    \n
  • \n \n Back\n \n
  • \n this.props.history.push(\"/edit/\" + journal_uid)}\n >\n \n \n
  • \n \n
  • \n
\n );\n }\n return (\n
    \n
  • \n \n Back\n \n
  • \n
\n );\n };\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n \n render() {\n const { stateUpdating, attemptJournal } = this.state;\n const { journal, user } = this.props;\n \n if (!journal.currentJournal && attemptJournal) {\n return ;\n }\n\n const loadJournalEntry = journal.journalLoading ? (\n \n ) : (\n \n );\n\n return (\n
\n {this._renderSubNavUI()}\n
\n {loadJournalEntry}\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getJournal,\n deleteJournal,\n getUserData\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(JournalEntry);\n","import React, { Component } from 'react';\nimport loadingIcon from '../assets/images/loading-dark.svg'\n\nclass CommentWrite extends Component{\n _commentSubmit = (e) => {\n e.preventDefault();\n const { commentCallback, commentValue, onChangeCommend } = this.props\n \n if(commentValue.length > 1){\n commentCallback(commentValue)\n onChangeCommend({target: {value: commentValue}})\n }else{\n console.log(\"Comment needs to be more than one character\")\n }\n }\n\n render() {\n const { showLoadingIcon, commentValue, onChangeCommend } = this.props\n return(\n
\n

Write a comment

\n
\n \n \n
\n
\n )\n }\n}\n\nexport default CommentWrite\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport { Link } from \"react-router-dom\";\nimport { withRouter } from 'react-router';\n\nimport ProfilePic from \"../utils/ProfilePic\";\n\nclass CommentListItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n editMode: false,\n commentCotent: props.comment.content,\n loveLoading: false\n };\n }\n\n _editComment = () => {\n this.setState({ editMode: true });\n };\n\n _cancelEditComment = () => {\n const { comment } = this.props;\n this.setState({\n editMode: false,\n commentCotent: comment.content\n });\n };\n\n _editCommentHandleChange = e => {\n this.setState({ commentCotent: e.target.value });\n };\n\n _editCommentSave = () => {\n const { comment, updateComment } = this.props;\n const { commentCotent } = this.state;\n\n if (comment.content === commentCotent) {\n this.setState({ editMode: false });\n } else {\n updateComment(comment, commentCotent);\n this.setState({ editMode: false });\n }\n };\n\n _deleteComment = e => {\n const { comment, deleteComment } = this.props;\n const ask = window.confirm(\"Delete this comment?\");\n if (ask) {\n deleteComment(comment.id);\n }\n };\n\n _userLovedComment = async () => {\n if (this.state.loveLoading) return\n const { loveComment, comment, currentUserID } = this.props;\n if(!currentUserID){\n this.props.history.push({\n pathname: \"/login\",\n state: { prevPath: this.props.location.pathname }\n });\n return;\n }\n this.setState({ loveLoading: true });\n await loveComment(comment, currentUserID);\n this.setState({ loveLoading: false });\n };\n\n _userUnlovedComment = async (comment) => {\n if (this.state.loveLoading) return\n const { unloveComment } = this.props;\n this.setState({ loveLoading: true });\n await unloveComment(comment);\n this.setState({ loveLoading: false });\n };\n\n render() {\n const { commentCotent, editMode, loveLoading } = this.state;\n const { comment, currentUserID } = this.props;\n\n const commentEditUI =\n comment.author.id === currentUserID ? (\n
\n Edit /{\" \"}\n Delete\n
\n ) : (\n \"\"\n );\n\n const editCommentFormBtns =\n comment.author.id === currentUserID ? (\n
\n Cancel  {\" \"}\n Save\n
\n ) : (\n \"\"\n );\n\n const editCommentForm = (\n
\n \n {editCommentFormBtns}\n \n );\n\n const lovedUI = comment.hasLoved ? (\n this._userUnlovedComment(comment)}\n key={comment.id}\n disabled={loveLoading}\n id=\"comment_unlove_button\"\n >\n \n \n ) : (\n \n \n \n );\n\n return (\n
\n
\n \n \n \n \n
\n {editMode ?
{editCommentForm}
:

{comment.content}

}\n
\n
\n {lovedUI} {comment.commentLovedCount > 0 ? {comment.commentLovedCount} : 0}\n
\n
{editMode ? \"\" : commentEditUI}
\n
\n
\n );\n }\n}\n\n\nexport default withRouter(CommentListItem);","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { withRouter } from 'react-router'\nimport {\n createComment,\n deleteComment,\n updateComment,\n getMoreComments,\n createUserLovedComment,\n deleteUserLovedComment,\n setJournal,\n isUserLovedComment,\n} from '../actions/journal'\nimport CommentWrite from '../components/CommentWrite'\nimport CommentListItem from '../components/CommentListItem'\nimport loadingIcon from '../assets/images/loading-dark.svg'\nimport UpgradePopup from '../components/UpgradePopup'\nimport isPaidUser from '../utils/isPaidUser'\n\nclass Comments extends Component {\n constructor(props) {\n super(props)\n this.state = {\n showLoadingIcon: false,\n showLoadingIconWriting: false,\n showUpgrade: false,\n writingContent: '',\n }\n }\n\n async componentDidMount() {\n const { currentUserID } = this.props\n const { currentJournal } = this.props.journal\n\n if (currentJournal.comments.items.length > 0) {\n currentJournal.comments.items.map(async (comment) => {\n const currentUserLovedComment = await this.props.isUserLovedComment(\n currentUserID,\n comment.id\n )\n if (\n currentUserLovedComment &&\n currentUserLovedComment.items.length > 0\n ) {\n comment['hasLoved'] = currentUserLovedComment.items[0].id\n this.props.setJournal(currentJournal)\n }\n })\n }\n }\n\n _addComment = async (commentPassed) => {\n const { currentJournal } = this.props.journal\n const { userData, currentUser } = this.props.user\n if (!userData) {\n this.props.history.push({\n pathname: '/login',\n state: { prevPath: this.props.location.pathname },\n })\n return\n }\n if (!isPaidUser(currentUser.attributes['custom:membership'])) {\n this.setState({ showUpgrade: true })\n return\n }\n try {\n this.setState({ showLoadingIconWriting: true })\n await this.props.createComment(\n {\n content: commentPassed,\n commentAuthorId: userData.id,\n commentJournalId: currentJournal.id,\n },\n currentJournal.author.id\n )\n this.setState({\n showLoadingIconWriting: false,\n writingContent: '',\n })\n } catch (err) {\n console.log(err)\n this.setState({ showLoadingIconWriting: false })\n }\n }\n\n _updateComment = async (comment, newComment) => {\n try {\n await this.props.updateComment(comment, newComment)\n } catch (err) {\n console.log(err)\n }\n }\n\n _deleteComment = async (commentId) => {\n try {\n await this.props.deleteComment({ id: commentId })\n } catch (err) {\n console.log(err)\n }\n }\n\n _loadMore = async () => {\n const { currentJournal } = this.props.journal\n const { currentUserID } = this.props\n const { userData } = this.props.user\n if (!userData) {\n this.props.history.push({\n pathname: '/login',\n state: { prevPath: this.props.location.pathname },\n })\n return\n }\n this.setState({ showLoadingIcon: true })\n try {\n const moreComment = await this.props.getMoreComments(\n currentJournal.id,\n currentJournal.comments.nextToken\n )\n // Set nextToken\n moreComment.nextToken\n ? (currentJournal.comments.nextToken = moreComment.nextToken)\n : (currentJournal.comments.nextToken = '')\n\n // TODO: optimize and improve(probably move it to Redux). Setting \"hasLoved\" to render Loved UI on comment properly.\n // Order by date.\n moreComment.items.map(async (comment) => {\n // Check if current user already loved comment or not\n const currentUserLovedComment = await this.props.isUserLovedComment(\n currentUserID,\n comment.id\n )\n if (currentUserLovedComment.items.length > 0) {\n comment['hasLoved'] = currentUserLovedComment.items[0].id\n currentJournal.comments.items =\n currentJournal.comments.items.concat(comment)\n // Remove duplicated comments from comment array. This can happen when user writes a comment without loading all comments on the journal.\n currentJournal.comments.items = currentJournal.comments.items.filter(\n (comment, index, self) =>\n index === self.findIndex((x) => x.id === comment.id)\n )\n // Sort by date\n currentJournal.comments.items = currentJournal.comments.items\n .slice()\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt))\n this.props.setJournal(currentJournal)\n } else {\n currentJournal.comments.items =\n currentJournal.comments.items.concat(comment)\n // Remove duplicated comments from comment array. This can happen when user writes a comment without loading all comments on the journal.\n currentJournal.comments.items = currentJournal.comments.items.filter(\n (comment, index, self) =>\n index === self.findIndex((x) => x.id === comment.id)\n )\n // Sort by date\n currentJournal.comments.items = currentJournal.comments.items\n .slice()\n .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt))\n this.props.setJournal(currentJournal)\n }\n })\n\n this.setState({ showLoadingIcon: false })\n } catch (err) {\n console.log(err)\n this.setState({ showLoadingIcon: false })\n }\n }\n\n _loveComment = async (comment, userLovedCommentUserId) => {\n const { currentJournal } = this.props.journal\n try {\n let foundIndex = currentJournal.comments.items.findIndex(\n (x) => x.id === comment.id\n )\n currentJournal.comments.items[foundIndex]['hasLoved'] = 'TEMP'\n currentJournal.comments.items[foundIndex].commentLovedCount =\n currentJournal.comments.items[foundIndex].commentLovedCount + 1\n const userLovedComment = await this.props.createUserLovedComment(\n comment,\n userLovedCommentUserId,\n currentJournal.id\n )\n currentJournal.comments.items[foundIndex]['hasLoved'] =\n userLovedComment.id\n this.props.setJournal(currentJournal)\n } catch (err) {\n console.log(err)\n }\n }\n\n _unloveComment = async (comment) => {\n const { currentJournal } = this.props.journal\n try {\n let foundIndex = currentJournal.comments.items.findIndex(\n (x) => x.id === comment.id\n )\n currentJournal.comments.items[foundIndex].commentLovedCount &&\n currentJournal.comments.items[foundIndex].commentLovedCount > 0\n ? (currentJournal.comments.items[foundIndex].commentLovedCount =\n currentJournal.comments.items[foundIndex].commentLovedCount - 1)\n : (currentJournal.comments.items[foundIndex].commentLovedCount = 0)\n await this.props.deleteUserLovedComment(comment)\n currentJournal.comments.items[foundIndex]['hasLoved'] = null\n this.props.setJournal(currentJournal)\n } catch (err) {\n console.log(err)\n }\n }\n\n _onWritingComment = (e) => {\n this.setState({ writingContent: e.target.value })\n }\n\n _popupControl = async (callback) => {\n this.setState({\n showUpgrade: callback,\n })\n }\n\n render() {\n const { currentUserID } = this.props\n const { localJournal } = this.props\n\n const {\n showLoadingIcon,\n showLoadingIconWriting,\n showUpgrade,\n writingContent,\n } = this.state\n\n const commentList = localJournal.comments\n ? localJournal.comments.items.map((comment, i) => (\n \n ))\n : ''\n\n return (\n \n {localJournal.commentCount > 0 ? (\n

\n {localJournal.commentCount +\n ' comment' +\n (localJournal.commentCount === 1 ? '' : 's')}\n

\n ) : (\n ''\n )}\n
\n {commentList}\n\n {localJournal.comments && localJournal.comments.nextToken ? (\n
\n {showLoadingIcon ? (\n \n ) : (\n \n )}\n
\n ) : (\n ''\n )}\n\n \n
\n \n \n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n createComment,\n deleteComment,\n updateComment,\n getMoreComments,\n createUserLovedComment,\n deleteUserLovedComment,\n setJournal,\n isUserLovedComment,\n },\n dispatch\n )\n}\n\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(Comments)\n)\n","import React, { Component } from 'react'\nimport { Link } from 'react-router-dom'\nimport QuillEditor from './QuillEditor'\n\nimport moment from 'moment'\n\nimport ProfilePic from '../utils/ProfilePic'\n\nclass PublicJournalEntryContent extends Component {\n _userLovedJournal = () => {\n const { journalEntry, loveJournal, userUid } = this.props\n loveJournal(journalEntry.id, userUid)\n }\n\n _userUnlovedJournal = (e) => {\n const { unloveJournal } = this.props\n unloveJournal(e.target.getAttribute('data-id'))\n }\n\n _renderLovedBtn = () => {\n const { stateUpdating, isUserLovedJournal } = this.props\n if (isUserLovedJournal.length > 0) {\n return (\n \n \n \n )\n } else {\n return (\n \n \n \n )\n }\n }\n\n _copyURL = () => {\n const ask = window.confirm('Copy URL to clipboard?')\n if (ask) {\n let dummy = document.createElement('input'),\n URLtoCopy = window.location.href\n document.body.appendChild(dummy)\n dummy.value = URLtoCopy\n\n let range, selection\n\n range = document.createRange()\n range.selectNodeContents(dummy)\n selection = window.getSelection()\n selection.removeAllRanges()\n selection.addRange(range)\n dummy.setSelectionRange(0, 999999)\n\n dummy.select()\n document.execCommand('copy')\n document.body.removeChild(dummy)\n }\n }\n\n render() {\n const { journalEntry } = this.props\n\n if (!journalEntry) return null\n\n const journalInteraction =\n journalEntry.privacy === 'PUBLIC' && !journalEntry.draft ? (\n
\n
\n {this._renderLovedBtn()} \n {journalEntry.lovedCount > 0 ? (\n \n {journalEntry.lovedCount}\n \n ) : (\n 0\n )}\n
\n \n
\n \n \n {'Share'}\n \n
\n
\n ) : (\n ''\n )\n\n return (\n
\n
\n
\n \n \n \n \n
\n

\n {journalEntry.book && (\n \n \n {journalEntry.book.book}\n \n \n )}{' '}\n {journalEntry.draft && (\n Draft\n )}{' '}\n {journalEntry.privacy === 'PRIVATE' && (\n Private\n )}\n

\n
\n \n {journalInteraction}\n
\n )\n }\n}\n\nexport default PublicJournalEntryContent\n","import React, { useState, useEffect } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport {\n deleteJournal,\n getPublicJournalEntry,\n createUserLovedJournal,\n deleteUserLovedJournal,\n setJournal,\n isUserLovedJournal,\n setEmptyCurrentJournal,\n} from '../actions/journal'\n\nimport { getUserData } from '../actions/user'\nimport LoadingCard from '../components/LoadingCard'\nimport Comments from './Comments'\nimport PublicJournalEntryContent from '../components/PublicJournalEntryContent'\nimport NoMatch from '../components/NoMatch'\n\nimport { Helmet } from 'react-helmet'\n\nfunction PublicJournalEntry(props) {\n const username = props.user.accountData\n ? props.user.accountData.idToken.payload['cognito:username']\n : ''\n const [isUserLovedJournal, setIsUserLovedJournal] = useState({})\n const [stateUpdating, setStateUpdating] = useState(true)\n const [localJournal, setLocalJournal] = useState({})\n\n useEffect(() => {\n let unmounted = false\n setStateUpdating(true)\n const currentJournalUid = props.match.params.journal_uid\n const getPublicJournals = async () => {\n const currentJournal = await props.getPublicJournalEntry(\n currentJournalUid\n )\n if (!unmounted) setLocalJournal(currentJournal)\n }\n getPublicJournals()\n\n if (username) {\n const checkIfUserLovedJournal = async () => {\n const isUserLovedJournal = await props.isUserLovedJournal(\n username,\n currentJournalUid\n )\n if (isUserLovedJournal && isUserLovedJournal.items.length > 0) {\n setIsUserLovedJournal(isUserLovedJournal.items)\n }\n }\n checkIfUserLovedJournal()\n }\n\n setStateUpdating(false)\n return () => {\n unmounted = true\n }\n }, [])\n\n const goBackDestination = async () => {\n const { location } = props\n\n location.state &&\n (location.state.prevPath === '/write' ||\n location.state.prevPath === '/edit')\n ? props.history.push('/')\n : props.history.goBack()\n }\n\n const deleteJournal = async () => {\n const { journal_uid } = props.match.params\n const ask = window.confirm(\n 'Do you want to permanently delete this journal?'\n )\n if (ask) {\n try {\n const deletedJournal = await props.deleteJournal(journal_uid)\n await props.getUserData(props.user.userData.id)\n if (deletedJournal.id === journal_uid) {\n props.history.push('/')\n } else {\n alert(\n 'Error deleting the journal. Please reload the page and try again.'\n )\n }\n } catch (err) {\n console.log(err)\n }\n }\n }\n\n const renderSubNavUI = () => {\n const { journal_uid } = props.match.params\n\n if (\n localJournal &&\n localJournal.author &&\n localJournal.author.id === username\n ) {\n return (\n
    \n
  • \n \n Back\n \n
  • \n props.history.push('/edit/' + journal_uid)}\n >\n \n \n \n \n \n
\n )\n } else {\n return (\n
    \n
  • \n \n Back\n \n
  • \n
  • \n
  • \n
\n )\n }\n }\n\n const loveJournal = async (\n userLovedJournalJournalId,\n userLovedJournalUserId\n ) => {\n const { journal_uid } = props.match.params\n\n if (!username) {\n props.history.push({\n pathname: '/login',\n state: { prevPath: props.location.pathname },\n })\n return\n }\n\n setStateUpdating(true)\n setIsUserLovedJournal([{ id: 'OptimasticUI_Tem_ID' }])\n\n localJournal.lovedCount >= 0 || localJournal.lovedCount === null\n ? (localJournal.lovedCount = localJournal.lovedCount + 1)\n : (localJournal.lovedCount = 0)\n props.setJournal(localJournal)\n\n try {\n await props.createUserLovedJournal(\n userLovedJournalJournalId,\n userLovedJournalUserId,\n localJournal.author.id\n )\n const isUserLovedJournal = await props.isUserLovedJournal(\n username,\n journal_uid\n )\n if (isUserLovedJournal.items.length > 0) {\n setIsUserLovedJournal(isUserLovedJournal.items)\n }\n setStateUpdating(false)\n } catch (err) {\n console.log(err)\n setStateUpdating(false)\n }\n }\n\n const unloveJournal = async (id) => {\n const { journal_uid } = props.match.params\n\n if (!username) {\n props.history.push({\n pathname: '/login',\n state: { prevPath: props.location.pathname },\n })\n return\n }\n\n setStateUpdating(true)\n setIsUserLovedJournal({})\n\n localJournal.lovedCount > 0\n ? (localJournal.lovedCount = localJournal.lovedCount - 1)\n : (localJournal.lovedCount = 0)\n props.setJournal(localJournal)\n\n try {\n await props.deleteUserLovedJournal(id)\n const isUserLovedJournal = await props.isUserLovedJournal(\n username,\n journal_uid\n )\n if (isUserLovedJournal.items.length === 0) {\n setIsUserLovedJournal(isUserLovedJournal.items)\n }\n setStateUpdating(false)\n } catch (err) {\n console.log(err)\n setStateUpdating(false)\n }\n }\n\n if (!localJournal) {\n return \n }\n\n const loadJournalEntry =\n Object.keys(localJournal).length > 0 ? (\n \n ) : (\n \n )\n\n return (\n
\n \n \n {Object.keys(localJournal).length > 0 &&\n localJournal.content.replace(/<(.|\\n)*?>/g, ' ').slice(0, 80) +\n (localJournal.content.replace(/<(.|\\n)*?>/g, ' ').length > 80 &&\n '...')}\n \n 0 &&\n localJournal.content.replace(/<(.|\\n)*?>/g, ' ').slice(0, 160) +\n (localJournal.content.replace(/<(.|\\n)*?>/g, ' ').length > 160 &&\n '...')\n }\n />\n \n {renderSubNavUI()}\n
\n {loadJournalEntry}\n {localJournal && localJournal.privacy === 'PUBLIC' && (\n \n )}\n
\n
\n )\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n deleteJournal,\n getPublicJournalEntry,\n createUserLovedJournal,\n deleteUserLovedJournal,\n setJournal,\n getUserData,\n isUserLovedJournal,\n setEmptyCurrentJournal,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PublicJournalEntry)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\n\nimport QuillEditor from '../components/QuillEditor'\nimport UpgradePopup from '../components/UpgradePopup'\nimport {\n getJournal,\n updateJournal,\n adjustBookJournalsCount,\n} from '../actions/journal'\nimport LoadingCard from '../components/LoadingCard'\nimport DateTimePicker from '../utils/DateTimePicker'\nimport isPaidUser from '../utils/isPaidUser'\n\nclass EditJournal extends Component {\n _isMounted = false\n\n constructor(props) {\n super(props)\n const { currentJournal } = props.journal\n this.state = {\n privacy: currentJournal ? currentJournal.privacy : 'PRIVATE',\n markedAs: currentJournal ? currentJournal.markedAs : null,\n journalUid: props.match.params.journal_uid,\n journalAuthorId:\n props.user.accountData.idToken.payload['cognito:username'],\n journalContent: currentJournal ? currentJournal.content : '',\n journalWordCount: currentJournal ? currentJournal.journalWordCount : 0,\n journalLovedCount: currentJournal ? currentJournal.lovedCount : 0,\n journalCommentCount: currentJournal ? currentJournal.commentCount : 0,\n journalWordCountBeforeEditing: currentJournal\n ? currentJournal.journalWordCount\n : 0,\n showUpgrade: false,\n journalBookId: currentJournal\n ? currentJournal.journalBookId || currentJournal.publicJournalBookId\n : '',\n bookChangedFromId: currentJournal\n ? currentJournal.journalBookId || currentJournal.publicJournalBookId\n : '',\n journalCreatedAt: currentJournal\n ? new Date(currentJournal.createdAt)\n : '',\n upgradePopUpMessage: {\n featureName: 'Publishing a public journal',\n ctaText: 'Publish it as a private journal',\n },\n isSavingJournal: false,\n }\n }\n\n async componentDidMount() {\n this._isMounted = true\n // TODO: check logged-in userID and journal author ID are match\n // if not this.props.history.goBack()\n\n // set focus to the bottom of the screen\n window.scrollBy(0, window.innerHeight + 100)\n\n const { journalUid } = this.state\n const { currentJournal } = this.props.journal\n if (currentJournal) return\n try {\n const journlReturned = await this.props.getJournal(journalUid)\n if (!journlReturned) {\n this.props.history.goBack()\n }\n if (!this._isMounted) return\n this.setState({\n privacy: journlReturned ? journlReturned.privacy : 'PRIVATE',\n markedAs: journlReturned ? journlReturned.markedAs : '',\n journalContent: journlReturned ? journlReturned.content : '',\n journalLovedCount: journlReturned ? journlReturned.lovedCount : 0,\n journalCommentCount: journlReturned ? journlReturned.commentCount : 0,\n journalWordCount: journlReturned ? journlReturned.journalWordCount : 0,\n journalWordCountBeforeEditing: journlReturned\n ? journlReturned.journalWordCount\n : 0,\n journalBookId: journlReturned\n ? journlReturned.journalBookId || journlReturned.publicJournalBookId\n : '',\n bookChangedFromId: journlReturned\n ? journlReturned.journalBookId || journlReturned.publicJournalBookId\n : '',\n journalCreatedAt: journlReturned\n ? new Date(journlReturned.createdAt)\n : '',\n })\n } catch (err) {\n console.log(err)\n }\n }\n\n _selectPrivacy = async (e) => {\n this.setState({\n privacy: e.target.value,\n })\n }\n\n _popupControl = async (callback) => {\n this.setState({\n showUpgrade: callback,\n })\n }\n\n _handleChange = async (textPassed, wordCount) => {\n const { currentJournal } = this.props.journal\n if (currentJournal !== textPassed) {\n this.setState({\n journalContent: textPassed,\n journalWordCount: wordCount,\n })\n\n const {\n privacy,\n journalUid,\n journalContent,\n journalAuthorId,\n journalWordCount,\n journalBookId,\n } = this.state\n const { user } = this.props\n let journalPrivacy = privacy\n if (!isPaidUser(user.currentUser.attributes['custom:membership'])) {\n journalPrivacy = 'PRIVATE'\n }\n\n if (journalContent.length > 4) {\n // if non-paid user, disable autosave and shows the warning message for the first time only\n // TODO: remove auto save warning message on next major update.\n if (!isPaidUser(user.currentUser.attributes['custom:membership'])) {\n if (localStorage.getItem('auto-save-for-paid-users') === 'true') {\n return\n } else {\n this.setState({\n showUpgrade: true,\n upgradePopUpMessage: {\n featureName: 'Autosave',\n ctaText: 'Close',\n },\n })\n localStorage.setItem('auto-save-for-paid-users', 'true')\n return\n }\n }\n try {\n await this.props.updateJournal({\n id: journalUid,\n journalAuthorId: journalAuthorId,\n privacy: journalPrivacy,\n draft: true,\n content: journalContent,\n journalWordCount: journalWordCount,\n journalBookId: journalBookId,\n })\n } catch (err) {\n console.log(err)\n }\n }\n }\n }\n\n _publishJournal = async () => {\n const { privacy } = this.state\n const { user } = this.props\n if (\n privacy === 'PUBLIC' &&\n !isPaidUser(user.currentUser.attributes['custom:membership'])\n ) {\n this.setState({\n showUpgrade: true,\n upgradePopUpMessage: {\n featureName: 'Publishing a public journal',\n ctaText: 'Publish it as a private journal',\n },\n })\n } else {\n this._updateJournal(privacy)\n }\n }\n\n _updateJournal = async (privacy) => {\n const {\n journalUid,\n journalAuthorId,\n markedAs,\n journalContent,\n journalLovedCount,\n journalCommentCount,\n journalWordCount,\n journalWordCountBeforeEditing,\n journalBookId,\n bookChangedFromId,\n journalCreatedAt,\n } = this.state\n this.setState({ isSavingJournal: true })\n if (journalUid) {\n try {\n await this.props.updateJournal({\n id: journalUid,\n privacy: privacy,\n journalAuthorId: journalAuthorId,\n draft: false,\n content: journalContent,\n markedAs: markedAs,\n lovedCount: journalLovedCount,\n commentCount: journalCommentCount,\n journalWordCount: journalWordCount,\n journalWordCountBeforeEditing: journalWordCountBeforeEditing,\n journalBookId: journalBookId,\n createdAt: journalCreatedAt.toISOString(),\n })\n // if user changes book from one to another, subtract total number of journals in the original book\n // or no book to book\n if (journalBookId !== bookChangedFromId) {\n bookChangedFromId &&\n (await this.props.adjustBookJournalsCount(bookChangedFromId, -1))\n journalBookId &&\n (await this.props.adjustBookJournalsCount(journalBookId, 1))\n }\n\n this.props.history.push({\n pathname:\n (privacy === 'PUBLIC' ? '/public-journal/' : '/journal/') +\n journalUid,\n state: { prevPath: '/edit' },\n })\n } catch (err) {\n console.log(err)\n this.setState({ isSavingJournal: false })\n }\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false\n }\n\n _selectBook = async (e) => {\n this.setState({\n journalBookId: e.target.value,\n })\n }\n\n _newJournalCreatedAt = (date) => {\n const { journalCreatedAt } = this.state\n const { user } = this.props\n if (!isPaidUser(user.currentUser.attributes['custom:membership'])) {\n this.setState({\n showUpgrade: true,\n journalCreatedAt: journalCreatedAt,\n upgradePopUpMessage: {\n featureName: 'Changing date and time',\n ctaText: 'Publish it with existing date and time',\n },\n })\n } else {\n this.setState({\n journalCreatedAt: date,\n })\n }\n }\n\n render() {\n const {\n privacy,\n showUpgrade,\n journalBookId,\n upgradePopUpMessage,\n journalCreatedAt,\n isSavingJournal,\n } = this.state\n const { currentJournal } = this.props.journal\n const { journal, user } = this.props\n\n const editJoural = !currentJournal ? (\n \n ) : (\n \n )\n\n const bookList =\n user && user.userBooks.length > 0 ? (\n \n \n {user.userBooks.map((book) => {\n return (\n \n )\n })}\n \n ) : (\n \n )\n\n return (\n
\n
    \n
  • \n this.props.history.goBack()}\n className=\"link-btn\"\n id=\"editJournal_cancel_edit\"\n >\n Cancel\n \n
  • \n
  • {bookList}
  • \n
  • \n {currentJournal ? (\n \n {journal.pendingCreate ||\n journal.pendingUpdate ||\n isSavingJournal\n ? 'Updating...'\n : 'Update'}\n \n ) : (\n ''\n )}\n
  • \n
\n
\n \n {currentJournal ? (\n \n \n Private\n \n \n Public\n \n \n ) : (\n ''\n )}\n
\n
{editJoural}
\n \n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n updateJournal,\n getJournal,\n adjustBookJournalsCount,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EditJournal)\n","import React, { Component } from 'react'\nimport { Link } from 'react-router-dom'\n\nimport moment from 'moment'\n\nimport ProfilePic from '../utils/ProfilePic'\nimport decodeHtml from '../utils/DecodeHtml'\n\nclass PublicJournalListItem extends Component {\n render() {\n const { journal, imageLoaded } = this.props\n let journalImage\n\n if (journal.content) {\n let tmp = document.createElement('div')\n tmp.innerHTML = journal.content\n journalImage =\n tmp.querySelector('img') &&\n !tmp\n .querySelector('img')\n .getAttribute('src')\n .includes('placeholder.gif') && // remove loading placeholder gif image\n tmp.querySelector('img').getAttribute('src')\n }\n\n return (\n
\n
\n \n \n {' '}\n \n
\n \n {journalImage && (\n
\n /g, '').slice(0, 60)}\n onLoad={imageLoaded}\n />\n
\n )}\n

\n {journal.publicJournalBookId && (\n \n \n \n )}\n {decodeHtml(\n journal.content.replace(/<(.|\\n)*?>/g, ' ').slice(0, 80)\n )}\n {journal.content.replace(/<(.|\\n)*?>/g, '').length > 80 && '...'}{' '}\n {journal.journalWordCount && (\n - {journal.journalWordCount} words\n )}\n

\n
\n
\n {' '}\n {journal.lovedCount ? journal.lovedCount : 0}\n
\n
\n {' '}\n {journal.commentCount ? journal.commentCount : 0}\n
\n
\n \n
\n )\n }\n}\n\nexport default PublicJournalListItem\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport Masonry from 'masonry-layout';\n\nimport PublicJournalListItem from \"../components/PublicJournalListItem\";\nimport { getPublicJournals, searchPublicJournals, setCommunityLimit } from \"../actions/journal\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport loadingIcon from \"../assets/images/loading-dark.svg\";\n\nclass Community extends Component {\n _isMounted = false;\n\n constructor(props) {\n super(props);\n this.state = {\n showSearch: false,\n publicJournals: {\n items: []\n },\n loadingJournals: false,\n showLoadingIcon: false,\n searchText: \"\"\n };\n\n this.showSearchUI = this.showSearchUI.bind(this);\n this.searchJournals = this.searchJournals.bind(this);\n }\n\n async componentDidMount() {\n this._isMounted = true;\n this.setState({ loadingJournals: true });\n const { getPublicJournals, journal } = this.props;\n\n try {\n const data = await getPublicJournals(journal.communityLimit)\n if (!this._isMounted) return\n this.setState({\n publicJournals: data,\n loadingJournals: false\n });\n } catch (err) {\n console.log(err);\n }\n }\n\n invokeMasonry() {\n let elem = document.querySelector('.masonry')\n new Masonry( elem, {\n itemSelector: '.journal-card',\n percentPosition: true\n });\n }\n\n invokeMasonryAgain = () => {\n this.invokeMasonry();\n }\n\n async searchJournals(event) {\n if (event.key === \"Enter\" || event.target.value === \"\") {\n const { searchPublicJournals, getPublicJournals } = this.props;\n this.setState({ loadingJournals: true, searchText: event.target.value });\n const { currentUser } = this.props.user;\n if(!currentUser){\n this.props.history.push({\n pathname: \"/login\",\n state: { prevPath: this.props.location.pathname }\n });\n return;\n }\n if (event.target.value !== \"\") {\n try {\n searchPublicJournals(event.target.value).then(data => {\n if (data) {\n this.setState({\n publicJournals: data,\n loadingJournals: false\n });\n } else {\n this.setState({\n publicJournals: { items: [] },\n loadingJournals: false\n });\n }\n });\n } catch (err) {\n console.log(err);\n }\n } else {\n try {\n getPublicJournals().then(data => {\n if (data) {\n this.setState({\n publicJournals: data,\n loadingJournals: false\n });\n } else {\n this.setState({\n publicJournals: { items: [] },\n loadingJournals: false\n });\n }\n });\n } catch (err) {\n console.log(err);\n }\n }\n }\n }\n\n showSearchUI() {\n this.setState({\n showSearch: !this.state.showSearch\n });\n }\n\n _loadMore = async () => {\n const { publicJournals, showSearch, searchText } = this.state;\n this.setState({ showLoadingIcon: true });\n let data;\n try {\n if (showSearch && searchText) {\n data = await this.props.searchPublicJournals(searchText, publicJournals.nextToken)\n } else {\n data = await this.props.getPublicJournals(30, publicJournals.nextToken)\n this.props.setCommunityLimit(publicJournals.items.length + 30)\n }\n this.setState({\n publicJournals: {\n items: [...publicJournals.items, ...data.items],\n nextToken: data.nextToken\n },\n showLoadingIcon: false\n });\n this.invokeMasonry();\n } catch (err) {\n console.log(err);\n this.setState({ showLoadingIcon: false });\n }\n };\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const {\n showSearch,\n publicJournals,\n loadingJournals,\n showLoadingIcon\n } = this.state;\n const { user } = this.props;\n // console.log(publicJournals)\n\n const jornalList = loadingJournals ? (\n
\n \n \n
\n ) : publicJournals && publicJournals.items.length > 0 ? (\n publicJournals.items.map(journal => (\n \n ))\n ) : (\n
\n

Nothing found 😅

\n

Please search with different keywords(case-sensitive) or reload the page.

\n
\n );\n\n return (\n
\n
\n

Community

\n
\n\n
\n {publicJournals && publicJournals.items.length} public journal\n {publicJournals && publicJournals.items.length > 1 ? \"s\" : \"\"} loaded\n \n
\n
\n this.searchJournals(event)}\n />\n
\n\n
\n
\n {jornalList}\n
\n {(publicJournals && publicJournals.nextToken) && (\n
\n {showLoadingIcon ? (\n \n ) : (\n \n )}\n
\n )}\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getPublicJournals,\n searchPublicJournals,\n setCommunityLimit\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Community);\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport profilePic from '../assets/images/profile-pic.svg'\n\nclass MemberListItem extends Component{\n render() {\n const { member } = this.props\n\n return(\n
\n
\n \"User \n\n
\n {member.userDisplayName ? member.userDisplayName : member.user}\n
\n {member.journalsPerMonth} journal{member.journalsPerMonth === 1 ? \"\" : \"s\"}{member.journalWordCountPerMonth ? \" \" + member.journalWordCountPerMonth.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + (member.journalWordCountPerMonth === 1 ? \" word\" : \" words\") : \"\"}\n
\n
\n
\n )\n }\n}\n\nexport default MemberListItem\n","import React, { Component } from 'react'\nimport moment from 'moment'\n\nlet weeklyChallengeCompleted = false\n\nclass WeeklyJournalChallenge extends Component {\n getWeeks = () => {\n const { user } = this.props\n function getMonday(d) {\n d = new Date(d)\n let day = d.getDay(),\n diff = d.getDate() - day + (day === 0 ? -6 : 1) // adjust when day is sunday\n return new Date(d.setDate(diff))\n }\n const weekStart = getMonday(new Date())\n\n let days = {}\n for (let i = 0; i <= 6; i++) {\n days[moment(weekStart).add(i, 'days').format('YYYY-MM-DD')] = moment(\n weekStart\n )\n .add(i, 'days')\n .format('ddd')\n }\n\n const userJournalThisMonth =\n user.userJournal[0] && user.userJournal[0].items.length > 0\n ? user.userJournal[0].items.filter(\n (m) =>\n m.month === moment(new Date()).format('MMM YYYY') ||\n m.month ===\n moment(new Date())\n .subtract(1, 'months')\n .endOf('month')\n .format('MMM YYYY')\n )\n : null\n\n const userWeeklyJournalCheck =\n userJournalThisMonth &&\n userJournalThisMonth.map((mj) => {\n let journalDays = {}\n const len = mj.data.length\n for (let i = 0; i < len; i++) {\n if (days[moment(mj.data[i].createdAt).format('YYYY-MM-DD')])\n journalDays[\n moment(mj.data[i].createdAt).format('YYYY-MM-DD')\n ] = true\n }\n return journalDays\n })\n\n if (\n userWeeklyJournalCheck &&\n userWeeklyJournalCheck.length > 0 &&\n Object.keys(userWeeklyJournalCheck[0]).length +\n (userWeeklyJournalCheck[1]\n ? Object.keys(userWeeklyJournalCheck[1]).length\n : 0) >=\n 7\n ) {\n weeklyChallengeCompleted = true\n } else {\n weeklyChallengeCompleted = false\n }\n\n const renderDays = Object.keys(days).map((d, i) => {\n return (\n 0 &&\n (userWeeklyJournalCheck[0][d] ||\n (userWeeklyJournalCheck[1] && userWeeklyJournalCheck[1][d]))\n ? 'completed'\n : 'incompleted'\n }\n key={i}\n >\n {days[d].charAt(0)}\n \n )\n })\n\n return renderDays\n }\n\n render() {\n return (\n
\n \n Progress this week
\n {weeklyChallengeCompleted && (\n \n Great job! Week completed!\n \n )}\n
\n
    {this.getWeeks()}
\n
\n )\n }\n}\n\nexport default WeeklyJournalChallenge\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport MemberListItem from \"../components/MemberListItem\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport { getChallengeData, setChallengeLimit, getUserData } from \"../actions/user\";\nimport moment from \"moment\";\nimport loadingIcon from \"../assets/images/loading-dark.svg\";\nimport WeeklyJournalChallenge from \"../components/WeeklyJournalChallenge\";\n\nclass Challenge extends Component {\n _isMounted = false;\n\n constructor(props) {\n super(props);\n this.state = {\n username: props.user.accountData.idToken.payload[\"cognito:username\"],\n memberList: [],\n myJournalThisMonth: \"\",\n isLoading: false,\n nextToken: null,\n isMoreLoading: false\n };\n }\n\n async componentDidMount() {\n this._isMounted = true;\n const { username } = this.state;\n const { journal, user } = this.props;\n this.setState({ isLoading: true });\n\n try {\n // TODO: optimize this. This can be done without calling 3 different requests\n const myChallenge = await this.props.getChallengeData(username);\n const listUsers = await this.props.getChallengeData('', journal.challengeLimit);\n if (user.isAuthenticated) await this.props.getUserData(username, journal.myJournalLimit);\n\n if (this._isMounted)\n this.setState({\n memberList: listUsers.items,\n myJournalThisMonth: myChallenge.items,\n isLoading: false,\n nextToken: listUsers.nextToken\n });\n } catch (err) {\n console.log(err);\n this.setState({ isLoading: false });\n }\n }\n\n loadMore = async () => {\n this.setState({ isMoreLoading: true });\n try {\n const listUsers = await this.props.getChallengeData('', 30, this.state.nextToken);\n this.props.setChallengeLimit(this.state.memberList.length + 30)\n this.setState({\n memberList: [...this.state.memberList, ...listUsers.items],\n nextToken: listUsers.nextToken,\n isMoreLoading: false\n });\n } catch (err) {\n console.log(err);\n this.setState({ isMoreLoading: false });\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n\n render() {\n const { memberList, myJournalThisMonth, isLoading, isMoreLoading } = this.state;\n const { user } = this.props\n const memberListRender = memberList.map(member => {\n return ;\n });\n\n return(\n
\n
\n

Challenge

\n
\n\n
\n

\n My progress\n

\n\n\n
\n \n {isLoading ?

...

:\n \n You wrote{\" \"}\n \n {myJournalThisMonth && myJournalThisMonth.length > 0 ? myJournalThisMonth[0].journalsPerMonth : 0}{\" \"}\n {myJournalThisMonth && myJournalThisMonth.length > 0 && myJournalThisMonth[0].journalsPerMonth <= 1\n ? \"journal\"\n : \"journals\"}\n {\" \"}\n this month.
\n {myJournalThisMonth && myJournalThisMonth.length > 0 ? \"Keep it up!\" : \"Write one today!\"}\n
}\n
\n\n

\n {moment(new Date()).format(\"MMM YYYY\")} - Journal challenge\n

\n {isLoading && }\n {!isLoading && memberListRender}\n {this.state.nextToken && (\n
\n {isMoreLoading && (\n \n )}\n {!isMoreLoading && (\n \n )}\n
\n )}\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getChallengeData,\n setChallengeLimit,\n getUserData\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Challenge);\n","import React from 'react';\nimport moment from 'moment';\n\nimport profilePlaceholder from '../assets/images/profile-pic.svg'\n\nfunction ChatRoomListItem(props) {\n\n const enterChatRoom = () => {\n props.history.push('/chat/' + props.chatRoom.id)\n\n if(!props.chatRoom.receiverHasRead && !currentUserSentLastMessage){\n props.userHasSeenTheLastMessage(props.chatRoom.id)\n }\n }\n\n const chatUsers = props.chatRoom.chatRoomUsers.items.map( user => {\n return user.user.id !== props.currentUser ? user.user : null\n }).filter(x => x)\n\n const chatUserNames = chatUsers.map( u => {\n return u.displayName || u.id\n }).join(\", \")\n\n const currentUserSentLastMessage = props.chatRoom.messages.items[0] ? props.chatRoom.messages.items[0].messageUserId === props.currentUser : false\n const renderLastMessage = props.chatRoom.messages.items[0] ? props.chatRoom.messages.items[0].content : \"\"\n const renderLastMessageTime = props.chatRoom.messages.items[0] ? moment(props.chatRoom.messages.items[0].createdAt).fromNow() : \"\"\n\n return(\n
\n
\n 0 ? (chatUsers[0].profileImage ? chatUsers[0].profileImage : profilePlaceholder) : profilePlaceholder} className=\"profile-pic\" alt=\"Chat profile icon\" />\n
\n
\n {chatUsers.length > 0 ? (chatUserNames.length > 24 ? chatUserNames.slice(0, 24) + \"...\" : chatUserNames) : \"User left a room\"} {!props.chatRoom.receiverHasRead && !currentUserSentLastMessage ? New : \"\"}
\n {renderLastMessage.length > 24 ? renderLastMessage.slice(0, 24) + \"...\" : renderLastMessage} • \n
\n
\n )\n}\n\nexport default ChatRoomListItem\n","import Amplify, { API, graphqlOperation } from 'aws-amplify';\nimport aws_exports from '../aws-exports';\nimport * as custom_queries from '../customgraphql/queries';\nimport * as custom_mutations from '../customgraphql/mutations';\nimport * as subscriptions from '../graphql/subscriptions'\nimport { createChatRoomCreatedNotification } from './notification';\n\nAmplify.configure(aws_exports);\n\n// Chat message subscription\n// -----------------------------------------------------------------------------\nexport function chatCreateMessageSubscriptions(callback, stop) {\n return async (dispatch, getState) => {\n const chatCreateSubscription = await API.graphql(graphqlOperation(subscriptions.onCreateMessage)).subscribe({\n next: (newChatData) => {\n callback(newChatData.value.data.onCreateMessage)\n if(getState().user.userData.chatRoomUser.items.map((r) => { return r.chatRoom.id }).indexOf(newChatData.value.data.onCreateMessage.chatRoom.id) > -1){\n getState().user.userData.chatRoomUser.items[getState().user.userData.chatRoomUser.items.map((r) => { return r.chatRoom.id }).indexOf(newChatData.value.data.onCreateMessage.chatRoom.id)].chatRoom.messages.items.unshift(newChatData.value.data.onCreateMessage)\n dispatch({ type: \"GET_USER_DATA\", userData: getState().user.userData })\n }\n }\n })\n return stop ? chatCreateSubscription.unsubscribe() : chatCreateSubscription // TODO: double check unsubscribe(). Don't think it's working now\n }\n}\n\nexport function chatDeleteMessageSubscriptions(callback, stop) {\n return async () => {\n const chatDeleteSubscription = await API.graphql(graphqlOperation(subscriptions.onDeleteMessage)).subscribe({\n next: (newChatData) => {\n callback(newChatData.value.data.onDeleteMessage)\n }\n })\n return stop ? chatDeleteSubscription.unsubscribe() : chatDeleteSubscription // TODO: double check unsubscribe(). Don't think it's working now\n }\n}\n\n// Check existing chat rooms by user\n// -----------------------------------------------------------------------------\nexport function checkExistingChatRoom(username, members) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.doesChatRoomExist, { \n chatRoomUserUserId: username, \n members: { eq: members } })\n );\n return data.data.doesChatRoomExist;\n } catch (err) {\n console.log(\"error checkExistingChatRoom: \", err);\n }\n };\n}\n\n// Create chat room\n// -----------------------------------------------------------------------------\nexport function createChatRoom(username) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createChatRoom, { input: { \n createdBy: username,\n receiverHasRead: false\n }})\n );\n return data.data.createChatRoom;\n } catch (err) {\n console.log(\"error create chat room: \", err);\n }\n };\n}\n\n// Create message for chat\n// -----------------------------------------------------------------------------\nexport function createChatMessage(username, chatRoomId, content) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createMessage, { input: { \n messageUserId: username,\n messageChatRoomId: chatRoomId, \n content: content\n }})\n );\n return data.data.createMessage;\n } catch (err) {\n console.log(\"error createChatMessage: \", err);\n }\n };\n}\n\n// Delete message for chat\n// -----------------------------------------------------------------------------\nexport function deleteChatMessage(chatMessageId) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.deleteMessage, { input: { \n id: chatMessageId\n }})\n );\n return data.data.deleteMessage;\n } catch (err) {\n console.log(\"error deleteChatMessage: \", err);\n }\n };\n}\n\n// Create Chat Room Users - 3rd table that allows group chat.\n// -----------------------------------------------------------------------------\nexport function createChatRoomUser(username, chatRoomId, members) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.createChatRoomUser, { input: { \n chatRoomUserUserId: username,\n chatRoomUserChatRoomId: chatRoomId, \n members: members\n }})\n );\n\n // Send notification to users in the chat room except for the creator.\n if(username !== getState().user.userData.id){\n createChatRoomCreatedNotification(username, chatRoomId, getState().user.userData)\n }\n return data.data.createChatRoomUser;\n } catch (err) {\n console.log(\"error createChatRoomUser: \", err);\n }\n };\n}\n\n// Remove Chat Room Users - User leaves a chat room\n// -----------------------------------------------------------------------------\nexport function deleteChatRoomUser(chatRoomId, username) {\n return async (dispatch, getState) => {\n try {\n const getChatRoomUserId = await API.graphql(\n graphqlOperation(custom_queries.chatRoomUserChatRoomIdAsKey, {\n chatRoomUserChatRoomId: chatRoomId, \n chatRoomUserUserId: {eq: username }\n })\n )\n\n if(getChatRoomUserId.data.chatRoomUserChatRoomIdAsKey.items.length > 0) {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.deleteChatRoomUser, { input: { \n id: getChatRoomUserId.data.chatRoomUserChatRoomIdAsKey.items[0].id\n }})\n );\n getState().user.userData.chatRoomUser.items = getState().user.userData.chatRoomUser.items.filter( cr => cr.id !== getChatRoomUserId.data.chatRoomUserChatRoomIdAsKey.items[0].id)\n dispatch({ type: \"GET_USER_DATA\", userData: getState().user.userData })\n return data.data.deleteChatRoomUser;\n } else {\n console.log(\"Can't remove chat room user data.\")\n return null\n }\n\n } catch (err) {\n console.log(\"error deleteChatRoomUser: \", err);\n }\n };\n}\n\n\n// Update Chat Room Users - to update updatedAt when there's new message in a chat room.\n// -----------------------------------------------------------------------------\nexport function updateChatRoomUser(chatRoomId, updatedTime) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.updateChatRoomUser, { input: { \n id: chatRoomId,\n updatedAt: updatedTime\n }})\n );\n return data.data.updateChatRoomUser;\n } catch (err) {\n console.log(\"error updateChatRoomUser: \", err);\n }\n };\n}\n\n\n// Get ChatRoomUser by chat room ID\n// -----------------------------------------------------------------------------\nexport function getChatRoomUsersByChatRoomId(chatRoomId) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.chatRoomUserChatRoomIdAsKey, {\n chatRoomUserChatRoomId: chatRoomId\n })\n )\n return data.data.chatRoomUserChatRoomIdAsKey;\n } catch (err) {\n console.log(\"error getting getChatRoomUsersByChatRoomId: \", err);\n }\n };\n}\n\n// Get chat room data\n// -----------------------------------------------------------------------------\nexport function getChatRoomData(chatRoomId, limit, token) {\n return async () => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_queries.getChatRoom, {\n id: chatRoomId,\n limit: limit,\n nextTokenMessage: token\n })\n )\n return data.data.getChatRoom;\n } catch (err) {\n console.log(\"error getting getChatRoomData: \", err);\n }\n };\n}\n\n// Update receiverHasRead in ChatRoom \n// -----------------------------------------------------------------------------\nexport function updateChatRoomRead(chatRoomId, read) {\n return async (dispatch, getState) => {\n try {\n const data = await API.graphql(\n graphqlOperation(custom_mutations.updateChatRoom, { input: { \n id: chatRoomId, \n receiverHasRead: read\n }})\n );\n\n // Update receiverHasRead value in local redux for chat room list\n if(read){\n getState().user.userData.chatRoomUser.items[getState().user.userData.chatRoomUser.items.map((r) => { return r.chatRoom.id }).indexOf(data.data.updateChatRoom.id)].chatRoom.receiverHasRead = data.data.updateChatRoom.receiverHasRead\n dispatch({ type: \"GET_USER_DATA\", userData: getState().user.userData })\n }\n return data.data.updateChatRoom;\n } catch (err) {\n console.log(\"error updateChatRoom: \", err);\n }\n };\n}\n\n// Get More ChatRoomUsers\n// -----------------------------------------------------------------------------\nexport function getMoreChatRoomUsers(username, nextTokenChatRoomUser) {\n return async (dispatch, getState) => {\n try { \n const data = await API.graphql(graphqlOperation(custom_queries.getUser, {id: username, nextTokenChatRoomUser: nextTokenChatRoomUser}))\n getState().user.userData.chatRoomUser.items = [...getState().user.userData.chatRoomUser.items, ...data.data.getUser.chatRoomUser.items]\n getState().user.userData.chatRoomUser.nextToken = data.data.getUser.chatRoomUser.nextToken\n dispatch({ type: \"GET_USER_DATA\", userData: getState().user.userData })\n } catch(err) {\n console.log('error getMoreChatRoomUsers: ', err)\n }\n }\n}\n\n","import React, { useState, useEffect } from 'react';\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\n\nimport ChatRoomListItem from \"../components/ChatRoomListItem\"\nimport LoadingCard from '../components/LoadingCard';\n\nimport { \n updateChatRoomRead, \n getMoreChatRoomUsers\n} from \"../actions/chat\"\n\nimport { getUserData } from \"../actions/user\";\n\nfunction Chat(props) {\n const [currentUsername, setCurrentUsername] = useState(null)\n const [nextToken, setNextToken] = useState(null)\n\n useEffect(() => {\n setCurrentUsername(props.user.accountData.idToken.payload[\"cognito:username\"])\n props.user.userData && setNextToken(props.user.userData.chatRoomUser.nextToken)\n })\n\n useEffect(() => {\n const getUserData = async () => {\n try {\n if (props.user.isAuthenticated)\n await props.getUserData(props.user.accountData.idToken.payload[\"cognito:username\"], props.journal.myJournalLimit);\n } catch (err) {\n console.log(err);\n }\n }\n getUserData()\n }, [])\n\n if (props.user.userData === null) {\n return (\n
\n
\n

Chat

\n
\n \n
\n )\n }\n \n const userHasSeenTheLastMessage = async (callback) => {\n await props.updateChatRoomRead(callback, true)\n }\n\n const loadMoreChatRooms = async () => {\n if(nextToken){\n await props.getMoreChatRoomUsers(currentUsername, nextToken)\n }\n }\n\n const renderChatList = props.user.userData.chatRoomUser.items.map( chat => {\n return \n })\n\n return (\n
\n
\n

Chat

\n
\n\n
\n {renderChatList.length > 0 ? \n renderChatList\n : \n
\n
\n

😅
No chats yet

\n

\n
\n
\n }\n {nextToken &&
}\n
\n\n
\n );\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n updateChatRoomRead,\n getMoreChatRoomUsers,\n getUserData\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Chat)\n","import React, { useState } from 'react';\nimport moment from 'moment';\nimport { Link } from \"react-router-dom\";\nimport loadingIcon from \"../assets/images/loading-dark.svg\";\n\nfunction ChatMessageItem(props) {\n const [showDeleteLink, setShowDeleteLink] = useState(false)\n\n const deleteMessageCallback = () => {\n props.removeChatMessage(props.chatMessage.id)\n }\n\n const onClickMessage = () => { \n setShowDeleteLink(!showDeleteLink)\n }\n\n const renderUsername = props.chatMessage.messageUserId === props.currentUser ? \n \n {props.chatMessage.user.displayName || props.chatMessage.user.id} · \n \n :\n \n \n {props.chatMessage.user.displayName || props.chatMessage.user.id} · \n \n\n return(\n
\n

\n {renderUsername}\n
\n {props.chatMessage.content}\n {props.chatMessage.messageUserId === props.currentUser && (props.deletingMessage ? \n \n : \n Remove)\n }\n

\n
\n )\n}\n\nexport default ChatMessageItem","import React, { useState, useEffect } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\n\nimport LoadingCard from '../components/LoadingCard'\nimport UpgradePopup from '../components/UpgradePopup'\nimport ChatMessageItem from '../components/ChatMessageItem'\nimport isPaidUser from '../utils/isPaidUser'\n\nimport loadingIcon from '../assets/images/loading-dark.svg'\n\nimport {\n checkExistingChatRoom,\n createChatRoom,\n createChatMessage,\n createChatRoomUser,\n getChatRoomData,\n chatCreateMessageSubscriptions,\n chatDeleteMessageSubscriptions,\n getChatRoomUsersByChatRoomId,\n updateChatRoomUser,\n updateChatRoomRead,\n deleteChatMessage,\n deleteChatRoomUser,\n} from '../actions/chat'\n\nfunction ChatRoom(props) {\n const [membership, checkMembership] = useState(null)\n const [currentUsername, setCurrentUsername] = useState(null)\n const [showUpgrade, setUpgradePopup] = useState(false)\n const [message, setMessage] = useState('')\n const [newChatRoom, setChatRoom] = useState(props.match.params)\n const [chatData, getChatData] = useState({})\n const [subscriptionChatData, setSubscriptionChatData] = useState()\n const [limit, setLimit] = useState(30)\n const [nextToken, setNextToken] = useState(null)\n const [loading, setLoading] = useState(false)\n const [stopScrollingToBottom, setStopScrollingToBottom] = useState(false)\n const [sendingMessage, setSendingMessage] = useState(false)\n const [deletingMessage, setDeletingMessage] = useState(false)\n\n useEffect(() => {\n const { user } = props\n setChatRoom(props.match.params)\n props.user.currentUser &&\n checkMembership(\n isPaidUser(user.currentUser.attributes['custom:membership'])\n )\n setCurrentUsername(\n props.user.accountData.idToken.payload['cognito:username']\n )\n\n document.getElementById('main_header').classList.add('sticky-main-header')\n return () =>\n document\n .getElementById('main_header')\n .classList.remove('sticky-main-header')\n }, [newChatRoom, props.user.currentUser, props.match.params])\n\n const scrollToBottom = () => {\n window.scrollTo(0, document.body.scrollHeight)\n }\n\n useEffect(() => {\n if (!stopScrollingToBottom) {\n scrollToBottom()\n }\n })\n\n const loadMoreMessages = () => {\n if (nextToken) {\n setStopScrollingToBottom(true)\n setLoading(true)\n const fetchMoreData = async () => {\n const loadMoreFetchChatData = await props.getChatRoomData(\n newChatRoom.chatRoom_uid,\n 30,\n nextToken\n )\n loadMoreFetchChatData.messages.items.reverse()\n setNextToken(loadMoreFetchChatData.messages.nextToken)\n setLimit(limit + 30)\n loadMoreFetchChatData.messages.items = [\n ...loadMoreFetchChatData.messages.items,\n ...chatData.messages.items,\n ]\n getChatData(loadMoreFetchChatData) // this does not update the front end right away.\n }\n fetchMoreData()\n setLoading(false)\n }\n }\n\n useEffect(() => {\n const fetchData = async () => {\n const fetchChatData = await props.getChatRoomData(\n newChatRoom.chatRoom_uid,\n limit\n )\n fetchChatData && fetchChatData.messages.items.reverse()\n fetchChatData && setNextToken(fetchChatData.messages.nextToken)\n fetchChatData && setLimit(limit + 1)\n getChatData(fetchChatData)\n }\n if (newChatRoom.chatRoom_uid && newChatRoom.chatRoom_uid !== 'new') {\n fetchData()\n }\n }, [subscriptionChatData, newChatRoom.chatRoom_uid])\n\n useEffect(() => {\n const subscribeChatData = async () => {\n await props.chatCreateMessageSubscriptions(setSubscriptionChatData, false)\n await props.chatDeleteMessageSubscriptions(setSubscriptionChatData, false)\n }\n subscribeChatData()\n setStopScrollingToBottom(false)\n\n // Unsubscribe Chat message\n return () => {\n props.chatCreateMessageSubscriptions(null, true)\n window.scrollTo(0, 0)\n }\n }, [])\n\n const setChatMessage = (e) => {\n setMessage(e.target.value)\n }\n\n const submitForm = (e) => {\n if ((window.e ? e.keyCode : e.which) === 13 && !e.shiftKey) {\n sendMessage(e)\n }\n }\n\n const sendMessage = async (e) => {\n e.preventDefault()\n setSendingMessage(true)\n\n // Don't send if there's no massage but spaces\n if (!message.replace(/\\s/g, '').length) {\n alert('Type something to send')\n return\n }\n\n // If non-member, show upgrade popup\n if (!membership) {\n setUpgradePopup(true)\n setMessage('')\n setSendingMessage(false)\n return\n }\n\n setStopScrollingToBottom(false)\n\n if (newChatRoom.chatRoom_uid && newChatRoom.chatRoom_uid === 'new') {\n if (\n !props.history.location.state &&\n !props.history.location.state.chatWith\n ) {\n //if no chatWith state is passed, no users to chat with\n alert('No user to chat with')\n return\n } else {\n // Create a ChatRoom, ChatRoomUser, and Message\n\n // TODO: Group Chat in the future\n // User will be able great a group chat with multiple users. Save all users to `allUsers` as String\n\n const allUsers = props.history.location.state.chatWith // const allUsers = \"currentUsername, user4, user3, user2, user1\"\n const sortedMembersToChatArray = allUsers.split(', ')\n const AllSortedMembersToChat = sortedMembersToChatArray\n .sort()\n .join(', ') // members must be sorted alphabetically\n const existingChatRooms = await props.checkExistingChatRoom(\n currentUsername,\n AllSortedMembersToChat\n )\n\n if (existingChatRooms.items.length === 0) {\n const chatRoomCreated = await props.createChatRoom(currentUsername)\n await props.createChatMessage(\n currentUsername,\n chatRoomCreated.id,\n message\n )\n sortedMembersToChatArray.map(async (user) => {\n return await props.createChatRoomUser(\n user,\n chatRoomCreated.id,\n AllSortedMembersToChat\n ) // All other users to chat with\n })\n\n props.history.push('/chat/' + chatRoomCreated.id)\n } else {\n props.history.push(\n '/chat/' + existingChatRooms.items[0].chatRoomUserChatRoomId\n )\n }\n }\n } else if (newChatRoom.chatRoom_uid && Object.keys(chatData).length > 0) {\n // Add message to existing chatRoom\n const messageCreated = await props.createChatMessage(\n currentUsername,\n newChatRoom.chatRoom_uid,\n message\n )\n\n // Updating updatedAt under ChatRoomUser table for all users(In order to query ChatRoomUser in chronological order)\n const ChatRoomUserIds = await props.getChatRoomUsersByChatRoomId(\n newChatRoom.chatRoom_uid\n )\n ChatRoomUserIds.items.map(async (row) => {\n return await props.updateChatRoomUser(row.id, messageCreated.createdAt)\n })\n\n // Update receiverHasRead to false when oher user send currentUsername a message\n const currentUserSentLastMessage = chatData.messages.items[\n chatData.messages.items.length - 1\n ]\n ? chatData.messages.items[chatData.messages.items.length - 1]\n .messageUserId === currentUsername\n : false\n if (!currentUserSentLastMessage) {\n await props.updateChatRoomRead(newChatRoom.chatRoom_uid, false)\n }\n } else {\n alert(\"You can't send message.\")\n }\n\n setMessage('')\n setSendingMessage(false)\n }\n\n const userClickedInput = async () => {\n // Check if the last message is from current user then update receiverHadRead value\n const currentUserSentLastMessage =\n newChatRoom.chatRoom_uid &&\n Object.keys(chatData).length > 0 &&\n (chatData.messages.items[chatData.messages.items.length - 1]\n ? chatData.messages.items[chatData.messages.items.length - 1]\n .messageUserId === currentUsername\n : false)\n if (chatData.receiverHasRead === false && !currentUserSentLastMessage) {\n await props.updateChatRoomRead(newChatRoom.chatRoom_uid, true)\n }\n }\n\n const popupControl = (callback) => {\n setUpgradePopup(callback)\n }\n\n const removeChatMessageByUser = async (messageId) => {\n const ask = window.confirm('Remove this message?')\n if (ask) {\n setDeletingMessage(true)\n await props.deleteChatMessage(messageId)\n setTimeout(() => {\n setDeletingMessage(false)\n }, 1000)\n }\n }\n\n const leaveChatRoom = async () => {\n const ask = window.confirm('Leave this chat room?')\n if (ask) {\n const leaveChatRoom = await props.deleteChatRoomUser(\n newChatRoom.chatRoom_uid,\n currentUsername\n )\n leaveChatRoom && props.history.push('/chat')\n }\n }\n\n // Show loading stage(I know it's weird but membership here is only used for the loading state)\n if (membership === null) {\n return (\n
\n \n
\n )\n }\n\n const renderChatUI =\n chatData &&\n Object.keys(chatData).length === 0 &&\n newChatRoom.chatRoom_uid !== 'new' ? (\n
\n \n
\n ) : chatData === null ? (\n
\n
\n

\n \n 😅\n \n
\n No chat found here\n

\n

\n props.history.goBack()}\n >\n Go back\n \n

\n
\n
\n ) : (\n \n \n

\n \n \n 🔔\n {' '}\n Only{' '}\n \n props.history.push({ pathname: '/my-account/billing' })\n }\n >\n members\n {' '}\n can send messages\n \n

\n {loading ? (\n
\n \n
\n ) : (\n nextToken && (\n
\n \n
\n )\n )}\n {Object.keys(chatData).length > 0 &&\n chatData.messages.items.map((m) => {\n return (\n \n )\n })}\n \n\n
\n {Object.keys(chatData).length > 0 &&\n chatData.chatRoomUsers.items.length <= 1 ? (\n
\n

\n \n 😅\n \n
\n User left chat room\n

\n

You can leave the room and create a new chat.

\n
\n ) : (\n
\n \n \n \n )}\n
\n
\n )\n\n // TODO: Show displayNames of users in the room except current user with the link\n const renderChatTitle =\n chatData && Object.keys(chatData).length !== 0\n ? chatData.chatRoomUsers.items\n .map((u) => (u.user.displayName ? u.user.displayName : u.user.id))\n .join(', ').length > 24\n ? chatData.chatRoomUsers.items\n .map((u) => (u.user.displayName ? u.user.displayName : u.user.id))\n .join(', ')\n .slice(0, 24) + '...'\n : chatData.chatRoomUsers.items\n .map((u) => (u.user.displayName ? u.user.displayName : u.user.id))\n .join(', ')\n : props.history.location.state &&\n props.history.location.state.chatWithDisplayname.length > 24\n ? props.history.location.state &&\n props.history.location.state.chatWithDisplayname.slice(0, 24) + '...'\n : props.history.location.state &&\n props.history.location.state.chatWithDisplayname\n\n return (\n
\n
\n
\n
    \n
  • \n props.history.goBack()}\n id=\"chatRoom_subNav_go_back\"\n >\n \n \n
  • \n
  • \n {renderChatTitle}\n
  • \n
  • \n {chatData &&\n Object.keys(chatData).length > 0 &&\n chatData.chatRoomUsers.items.length > 0 && (\n \n \n \n )}\n
  • \n
\n
\n\n {renderChatUI}\n
\n\n \n
\n )\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n checkExistingChatRoom,\n createChatRoom,\n createChatMessage,\n createChatRoomUser,\n getChatRoomData,\n chatCreateMessageSubscriptions,\n chatDeleteMessageSubscriptions,\n getChatRoomUsersByChatRoomId,\n updateChatRoomUser,\n updateChatRoomRead,\n deleteChatMessage,\n deleteChatRoomUser,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ChatRoom)\n","import React, { Component } from 'react';\n\nimport followIconNoProfilePic from '../assets/images/profile-pic.svg'\nimport moment from 'moment';\n\nclass NotificationListItem extends Component{\n readNotification = () => {\n const { notification, readNotification, history } = this.props\n if(!notification.read) {\n readNotification(notification.id)\n }\n history.push(notification.link) \n }\n\n render() {\n const { notification } = this.props\n\n return(\n
\n
\n \"Notification\n
\n
\n {notification.actionUser.displayName || notification.actionUser.userID} {notification.content}.\n
\n \n
\n
\n {notification.category}\n
\n
\n )\n }\n}\n\nexport default NotificationListItem\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport NotificationListItem from \"../components/NotificationListItem\";\nimport { readNotification, getMoreNotifications } from \"../actions/notification\";\nimport LoadingCard from '../components/LoadingCard';\n\nimport loadingIcon from '../assets/images/loading-dark.svg'\nimport noNotifications from '../assets/images/notification-loved.svg'\n\nclass Notification extends Component {\n constructor(props){\n super(props)\n this.state = {\n username: props.user.accountData.idToken.payload[\"cognito:username\"],\n showLoadingIcon: false,\n }\n this._loadMore = this._loadMore.bind(this)\n this._renderNotificationList = this._renderNotificationList.bind(this)\n }\n\n async _loadMore() {\n const { notification_nextToken } = this.props.user;\n const { username } = this.state\n this.setState({ showLoadingIcon: true })\n try {\n await this.props.getMoreNotifications(username, notification_nextToken)\n this.setState({ showLoadingIcon: false })\n } catch (err) {\n console.log(err)\n this.setState({ showLoadingIcon: false })\n }\n }\n\n _renderNotificationList() {\n const { notifications, notification_nextToken } = this.props.user;\n return (\n \n {notifications.map(notification => (\n \n ))}\n {notifications[notifications.length - 1] && notification_nextToken ? \n
\n {this.state.showLoadingIcon\n ? \"Loading\n : }\n
\n : ''\n }\n
\n )\n }\n\n render() {\n const { notifications, isFetchUserData } = this.props.user;\n\n return (\n
\n
\n

Notification

\n
\n {isFetchUserData && }\n {!isFetchUserData && notifications.length === 0 && \n
\n \"No\n

No notifications yet

\n
\n }\n {!isFetchUserData && notifications.length > 0 &&\n this._renderNotificationList()\n }\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({ readNotification, getMoreNotifications }, dispatch);\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withRouter(Notification));\n","export function isPaidMember(membership) {\n return membership === \"annual\" || membership === \"monthly\" || membership === \"canceled\";\n}","import React from \"react\";\n\nexport function MemberBadge({ isPaidMember }) {\n if (!isPaidMember) {\n return Free\n }\n\n return Member ❤️\n}","export default function abbrNum(number, decPlaces) {\n // 2 decimal places => 100, 3 => 1000, etc\n decPlaces = Math.pow(10,decPlaces);\n\n // Enumerate number abbreviations\n var abbrev = [ \"k\", \"m\", \"b\", \"t\" ];\n\n // Go through the array backwards, so we do the largest first\n for (var i=abbrev.length-1; i>=0; i--) {\n\n // Convert array index to \"1000\", \"1000000\", etc\n var size = Math.pow(10,(i+1)*3);\n\n // If the number is bigger or equal do the abbreviation\n if(size <= number) {\n // Here, we multiply by decPlaces, round, and then divide by decPlaces.\n // This gives us nice rounding to a particular decimal place.\n number = Math.round(number*decPlaces/size)/decPlaces;\n\n // Handle special case where we round up to the next abbreviation\n if((number === 1000) && (i < abbrev.length - 1)) {\n number = 1;\n i++;\n }\n\n // Add the letter for the abbreviation\n number += abbrev[i];\n\n // We are done... stop\n break;\n }\n }\n\n return number;\n}","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { Link } from \"react-router-dom\";\nimport moment from \"moment\";\n\nimport PublicJournalListItem from \"../components/PublicJournalListItem\";\nimport ProfilePic from \"../utils/ProfilePic\";\nimport heic2any from \"heic2any\";\nimport Masonry from 'masonry-layout';\nimport imageCompression from \"browser-image-compression\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport { isPaidMember } from \"../helper/isPaidMember\";\nimport { MemberBadge } from \"../components/shared/member-badge\";\n\nimport {\n updateProfilePic,\n getAuthorPublicJournalData,\n getAuthorData\n} from \"../actions/user\";\n\nimport abbrNum from \"../utils/AbbrNum\"\nimport uploadIcon from \"../assets/images/upload-img-icon.svg\";\nimport loadingIcon from \"../assets/images/loading-dark.svg\";\nimport community from \"../assets/images/community.svg\";\nimport avocado from \"../assets/images/avocado.svg\";\n\nclass MyAccount extends Component {\n _isMounted = false;\n\n constructor(props) {\n super(props);\n this.state = {\n username: props.user.accountData.idToken.payload[\"cognito:username\"],\n showProfilePicLoadingIcon: false,\n showLoadingIcon: false,\n publicJournals: {\n items: []\n },\n authorData: \"\",\n loadingAuthorData: false\n };\n this.convertHEICToAny = this.convertHEICToAny.bind(this);\n this.getCompressedImage = this.getCompressedImage.bind(this);\n }\n\n async componentDidMount() {\n const { username } = this.state;\n this._isMounted = true;\n this.setState({ loadingAuthorData: true });\n \n try {\n const authData = await this.props.getAuthorData(username)\n const journals = await this.props.getAuthorPublicJournalData(username);\n if (!this._isMounted) return\n this.setState({\n authorData: authData,\n publicJournals: journals,\n loadingAuthorData: false\n });\n } catch (err) {\n console.log(err);\n this.setState({ loadingAuthorData: false })\n }\n }\n\n invokeMasonry() {\n let elem = document.querySelector('.masonry')\n new Masonry( elem, {\n itemSelector: '.journal-card',\n percentPosition: true\n });\n }\n\n invokeMasonryAgain = () => {\n this.invokeMasonry() \n }\n\n async convertHEICToAny(file) {\n try {\n console.log(\"HEIC image is being converted...\");\n await heic2any({\n blob: file,\n toType: \"image/jpeg\",\n quality: 0.8\n }).then(result => (file = result));\n } catch (error) {\n console.warn(error);\n }\n if (/^image\\//.test(file.type)) {\n try {\n return file;\n } catch (err) {\n console.log(err);\n }\n } else {\n console.warn(\"Could not convert image at the moment, please try later.\");\n }\n }\n\n async getCompressedImage(imageFile) {\n var options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 2000,\n useWebWorker: false\n };\n try {\n console.log(\"Image is being compressed...\");\n let compressedFile = \"\";\n await imageCompression(imageFile, options).then(\n result => (compressedFile = result)\n );\n compressedFile.name = \"converted.jpeg\";\n return compressedFile;\n } catch (error) {\n console.warn(\"Image could not be compressed: \", error);\n return imageFile;\n }\n }\n\n _selectLocalImage = async () => {\n let temp = document.getElementById(\"journal-list\");\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"file\");\n input.style.cursor = \"pointer\";\n input.style.opacity = 0;\n input.style.position = \"absolute\";\n input.style.width = \"1px\";\n input.style.height = \"1px\";\n input.style.accept=\"image/*\";\n temp.appendChild(input);\n input.click();\n\n // Listen upload local image and save to server\n input.addEventListener(\"change\", async () => {\n let file = input.files[0];\n let iPhoneExtensions = this.props.user.iPhoneExtensions;\n this.setState({ showLoadingIcon: true });\n\n // file type is only image.\n if (iPhoneExtensions.includes(file.name.split(\".\")[1])) {\n try {\n await this.convertHEICToAny(file).then(result => (file = result));\n } catch {\n console.log(\"Converter not working.\");\n }\n }\n if (/^image\\//.test(file.type)) {\n try {\n await this.getCompressedImage(file).then(result => (file = result));\n console.log(\"Image is being uploaded...\");\n this.setState({ showProfilePicLoadingIcon: true });\n this.props\n .updateProfilePic(this.props.user.userData.id, file)\n .then(data => {\n if (data === \"SUCCESS\") {\n this.setState({ showProfilePicLoadingIcon: false });\n }\n });\n } catch (err) {\n console.log(err);\n this.setState({ showProfilePicLoadingIcon: false });\n }\n } else {\n console.warn(\"You could only upload images.\");\n this.setState({ showLoadingIcon: false });\n }\n });\n };\n\n _loadMore = async () => {\n const { publicJournals, username } = this.state;\n\n this.setState({ showLoadingIcon: true });\n try {\n const data = await this.props.getAuthorPublicJournalData(\n username,\n publicJournals.nextToken\n );\n this.setState({\n publicJournals: {\n items: [...publicJournals.items, ...data.items],\n nextToken: data.nextToken\n },\n showLoadingIcon: false\n });\n this.invokeMasonry();\n } catch (err) {\n console.log(err);\n this.setState({ showLoadingIcon: false });\n }\n };\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const {\n showProfilePicLoadingIcon,\n showLoadingIcon,\n publicJournals,\n authorData,\n loadingAuthorData\n } = this.state;\n const { userData, currentUser } = this.props.user;\n\n if (loadingAuthorData) {\n return (\n
\n

My account

\n \n
\n );\n }\n\n return (\n
\n
\n

My account

\n
\n
\n \n \n showProfilePicLoadingIcon\n ? alert(\"Image uploading...\")\n : this._selectLocalImage()\n }\n >\n {showProfilePicLoadingIcon ? (\n \n ) : (\n \"Upload\n )}\n
\n
\n
\n

\n {currentUser &&\n (currentUser.attributes.preferred_username ||\n currentUser.username)}{\" \"}\n \n

\n \n
\n
\n
\n {authorData && abbrNum(Math.floor(authorData.totalJournal/30), 2)} Avocado{authorData && Math.floor(authorData.totalJournal/30) > 1 ? \"s\" : \"\"}\n
\n
\n {\" \"}\n {(authorData && abbrNum(authorData.totalJournal, 2)) || 0}{\" \"}\n Journal{authorData && authorData.totalJournal > 1 ? \"s\" : \"\"}\n
\n
\n {\" \"}\n {\" \"}\n {(authorData && abbrNum(authorData.followerCount, 2)) || 0}{\" \"}\n Follower{authorData && authorData.followerCount > 1 ? \"s\" : \"\"}\n \n
\n
\n {\" \"}\n {\" \"}\n {(authorData && abbrNum(authorData.followingCount, 2)) || 0}{\" \"}\n Following{authorData && authorData.followingCount > 1 ? \"s\" : \"\"}\n \n
\n
\n
\n
\n
\n
\n
\n

My public journals

\n
\n {publicJournals.items.length === 0 && (\n \n \n

No public journals yet

\n
\n )}\n \n {publicJournals.items.length > 0 &&\n
\n {publicJournals.items.map(journal => (\n \n ))}\n
\n }\n\n {publicJournals.nextToken && (\n
\n {showLoadingIcon ? (\n \n ) : (\n \n )}\n
\n )}\n
\n \n \n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n updateProfilePic,\n getAuthorPublicJournalData,\n getAuthorData\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(MyAccount);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { Link } from \"react-router-dom\";\nimport moment from \"moment\";\nimport Masonry from 'masonry-layout';\n\nimport PublicJournalListItem from \"../components/PublicJournalListItem\";\nimport ProfilePic from \"../utils/ProfilePic\";\nimport NoMatch from \"../components/NoMatch\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport { MemberBadge } from \"../components/shared/member-badge\";\n\nimport { getAuthorData, getAuthorPublicJournalData, followAuthor, unfollowAuthor, doesSourceFollowTarget, getCurrentUserSession, adjustCounts } from \"../actions/user\";\nimport { checkExistingChatRoom } from \"../actions/chat\"\n\nimport { isPaidMember } from \"../helper/isPaidMember\";\nimport abbrNum from \"../utils/AbbrNum\";\n\nimport loadingIcon from \"../assets/images/loading-dark.svg\";\nimport community from \"../assets/images/community.svg\";\nimport avocado from \"../assets/images/avocado.svg\";\n\nclass Author extends Component {\n _isMounted = false;\n\n constructor(props) {\n super(props);\n this.state = {\n loadingAuthorData: true,\n showLoadingIcon: false,\n authorData: \"\",\n currentUserData: null,\n publicJournals: {\n items: []\n },\n showFollowBtn: true,\n followingInProgress: false,\n followingId: null,\n booksToRender: 6\n };\n }\n\n async componentDidMount() {\n const { author_uid } = this.props.match.params;\n const decodedAuthor_uid = decodeURIComponent(author_uid);\n let authenticatedUsername = this.props.user.accountData.idToken.payload[\n \"cognito:username\"\n ];\n this._isMounted = true;\n this.setState({ loadingAuthorData: true });\n let userData;\n\n try {\n const followData = await this.props.doesSourceFollowTarget(authenticatedUsername, decodedAuthor_uid)\n const authData = await this.props.getAuthorData(decodedAuthor_uid)\n if (decodedAuthor_uid !== authenticatedUsername) {\n userData = await this.props.getAuthorData(authenticatedUsername)\n }\n const journals = await this.props.getAuthorPublicJournalData(decodedAuthor_uid)\n if (!this._isMounted) return\n this.setState({\n showFollowBtn: !(followData.items.length > 0),\n followingId: followData.items[0] ? followData.items[0].id : null,\n authorData: authData,\n currentUserData: userData || authData,\n loadingAuthorData: false,\n publicJournals: journals\n });\n } catch (err) {\n console.log(err);\n this.setState({ loadingAuthorData: false });\n }\n }\n\n invokeMasonry() {\n let elem = document.querySelector('.masonry')\n new Masonry( elem, {\n itemSelector: '.journal-card',\n percentPosition: true\n });\n }\n\n invokeMasonryAgain = () => {\n this.invokeMasonry() \n }\n\n _loadMore = async () => {\n const { author_uid } = this.props.match.params;\n const decodedAuthor_uid = decodeURIComponent(author_uid);\n const { publicJournals } = this.state;\n\n this.setState({ showLoadingIcon: true });\n try {\n const data = await this.props.getAuthorPublicJournalData(\n decodedAuthor_uid,\n publicJournals.nextToken\n );\n this.setState({\n publicJournals: {\n items: [...publicJournals.items, ...data.items],\n nextToken: data.nextToken\n },\n showLoadingIcon: false\n });\n this.invokeMasonry();\n } catch (err) {\n console.log(err);\n this.setState({ showLoadingIcon: false });\n }\n };\n\n _followAuthor = async () => {\n const { authorData, currentUserData, followingInProgress } = this.state;\n if (followingInProgress) return;\n\n const stAuthorData = Object.assign({}, authorData)\n authorData.followerCount++;\n this.setState({\n followingInProgress: true,\n showFollowBtn: false,\n authorData\n });\n try {\n let followingObj = await this.props.followAuthor(\n stAuthorData,\n currentUserData\n );\n let response = await this.props.adjustCounts(\n stAuthorData,\n currentUserData,\n 1\n );\n this.setState({\n followingInProgress: false,\n followingId: followingObj.id,\n authorData: response.author,\n currentUserData: response.user\n });\n // increment the follower and following counts\n } catch (err) {\n console.log(err);\n this.setState({ followingInProgress: false });\n }\n };\n\n _unfollowAuthor = async () => {\n const { authorData, currentUserData, followingId, followingInProgress } = this.state;\n if (followingInProgress) return;\n\n const stAuthorData = Object.assign({}, authorData)\n authorData.followerCount = authorData.followerCount > 0 ? authorData.followerCount - 1 : 0\n this.setState({ \n followingInProgress: true,\n showFollowBtn: true,\n authorData\n });\n try {\n await this.props.unfollowAuthor(followingId);\n let response = await this.props.adjustCounts(\n stAuthorData,\n currentUserData,\n -1\n );\n this.setState({\n followingInProgress: false,\n authorData: response.author,\n currentUserData: response.user\n });\n } catch (err) {\n console.log(err);\n this.setState({ followingInProgress: false });\n }\n };\n\n _renderFollowingBtn = () => {\n const { authorData, showFollowBtn, followingInProgress } = this.state;\n const { accountData } = this.props.user\n if (accountData && accountData.idToken.payload[\"cognito:username\"] === authorData.id) return null\n if (showFollowBtn) {\n return (\n \n Follow\n \n )\n }\n return (\n \n
\n Following\n
\n \n )\n };\n\n checkExistingChatRooms = async (allUsersToChat) => {\n const currentUser = this.props.user.accountData.idToken.payload[\"cognito:username\"]\n\n // TODO: Group Chat in the future //allUsersToChat can contain multiple usernames as String for group chat\n const sortedMembersToChat = (allUsersToChat.id + \", \" + currentUser).split(\", \").sort().join(\", \"); // members must be sorted alphabetically\n const sortedMembersDisplayNameToChat = ((allUsersToChat.displayName ? allUsersToChat.displayName : allUsersToChat.id) + \", \" + currentUser).split(\", \").sort().join(\", \");\n try{\n const existingChatRooms = await this.props.checkExistingChatRoom(currentUser, sortedMembersToChat) \n\n if(existingChatRooms.items.length === 0 ) {\n // console.log(\"Redirect to /chat/new\")\n this.props.history.push({\n pathname: '/chat/new',\n state: { \n chatWith: sortedMembersToChat,\n chatWithDisplayname: sortedMembersDisplayNameToChat\n }\n })\n } else {\n // console.log(\"Redirect to existing chat room\", existingChatRooms.items[0].chatRoomUserChatRoomId)\n this.props.history.push(\"/chat/\" + existingChatRooms.items[0].chatRoomUserChatRoomId)\n }\n \n } catch(err) {\n console.log(err)\n }\n }\n\n _renderMessageBtn = () => {\n const { authorData } = this.state;\n const { accountData } = this.props.user\n if (accountData && accountData.idToken.payload[\"cognito:username\"] === authorData.id) return null\n // console.log(authorData)\n return (\n this.checkExistingChatRooms(authorData)}\n id=\"author_message_button\"\n >\n
\n Message\n
\n \n )\n };\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n _loadMoreBook = async () => {\n const { authorData, booksToRender } = this.state\n const totalJournal = authorData && authorData.books.items.length\n if(booksToRender >= totalJournal){\n this.setState({ booksToRender: totalJournal })\n } else {\n this.setState({ booksToRender: booksToRender + 6 })\n }\n }\n\n render() {\n const { showLoadingIcon, authorData, loadingAuthorData, publicJournals, booksToRender } = this.state;\n \n if (!authorData && !loadingAuthorData) {\n return ;\n }\n\n const newArray = authorData && authorData.books.items.length > 0 && authorData.books.items.slice(0, booksToRender)\n\n const listOfBooks = authorData && authorData.books.items.length > 0 ? \n newArray.map(book => {\n return
this.props.history.push('/book/' + book.id)} id={\"book_clicked_\" + book.id}>{book.book} ({book.bookJournalCount ? book.bookJournalCount : 0})
\n })\n : \n
No book created yet
\n\n return (\n
\n
    \n
  • \n this.props.history.goBack()} id=\"author_subNav_go_back\">\n Back\n \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n\n {loadingAuthorData ?\n
\n \n
\n :\n \n
\n
\n
\n \n
\n
\n

\n {authorData.displayName || authorData.id}{\" \"}\n \n

\n \n
\n {this._renderFollowingBtn()} {this._renderMessageBtn()}\n
\n
\n\n
\n
\n {authorData && abbrNum(Math.floor(authorData.totalJournal/30), 2)} Avocado{authorData && Math.floor(authorData.totalJournal/30) > 1 ? \"s\" : \"\"}\n
\n
\n {\" \"}\n {(authorData && abbrNum(authorData.totalJournal, 2)) || 0}{\" \"}\n Journal{authorData && authorData.totalJournal > 1 ? \"s\" : \"\"}\n
\n
\n {\" \"}\n {\" \"}\n {(authorData && abbrNum(authorData.followerCount, 2)) || 0}{\" \"}\n Follower{authorData.followerCount > 1 ? \"s\" : \"\"}\n \n
\n
\n {\" \"}\n {\" \"}\n {(authorData && abbrNum(authorData.followingCount, 2)) || 0}{\" \"}\n Following{authorData.followingCount > 1 ? \"s\" : \"\"}\n \n
\n
\n
\n
\n\n
\n

{authorData.displayName ? authorData.displayName : authorData.id}'s books

\n
\n {listOfBooks}\n {authorData && authorData.books.items.length > booksToRender &&
Load more
}\n
\n
\n\n
\n
\n

{authorData.displayName ? authorData.displayName : authorData.id}'s public journals

\n {publicJournals.items.length === 0 && (\n
\n \"No\n

No public journals yet

\n
\n )}\n\n {publicJournals.items.length > 0 &&\n
\n {publicJournals.items.map(journal => (\n \n ))}\n
\n }\n\n {publicJournals.nextToken && (\n
\n {showLoadingIcon ? (\n \n ) : (\n \n )}\n
\n )}\n
\n
\n
\n }\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getAuthorData,\n getAuthorPublicJournalData,\n getCurrentUserSession,\n followAuthor,\n unfollowAuthor,\n doesSourceFollowTarget,\n adjustCounts,\n checkExistingChatRoom\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Author);\n","import Amplify, { API, graphqlOperation } from 'aws-amplify';\nimport aws_exports from '../aws-exports';\nimport * as custom_queries from '../customgraphql/queries';\nimport * as custom_mutations from '../customgraphql/mutations';\n\nAmplify.configure(aws_exports);\n\n// Stripe create customer and subscribe annual plan\n// -----------------------------------------------------------------------------\nexport function stripeCreateMember(stripeData) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_mutations.gnjAmplifyStripeCreateMember, stripeData)\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyStripeCreateMember);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error Stripe user sign up: \", err);\n\t\t}\n\t};\n}\n\n// Stripe get customer information\n// -----------------------------------------------------------------------------\nexport function stripeGetCustomerInfo(stripeCustomerId) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_queries.gnjAmplifyStripeGetCustomerInfo, { stripeCustomerId: stripeCustomerId })\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyStripeGetCustomerInfo);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error Stripe get customer info: \", err);\n\t\t}\n\t};\n}\n\n// Stripe update customer credit card\n// -----------------------------------------------------------------------------\nexport function updateCustomerCreditCard(stripeCustomerId, stripeToken) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_mutations.gnjAmplifyupdateCustomerCreditCard, { stripeCustomerId: stripeCustomerId, stripeToken: stripeToken })\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyupdateCustomerCreditCard);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error Stripe update customer credit card: \", err);\n\t\t}\n\t};\n}\n\n// Stripe update customer information\n// -----------------------------------------------------------------------------\nexport function updateStripeCustomerInfo(customerData) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_mutations.gnjAmplifyStripeUpdateCustomer, customerData)\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyStripeUpdateCustomer);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error Stripe update customer credit card: \", err);\n\t\t}\n\t};\n}\n\n// Stripe retrieve coupon code\n// -----------------------------------------------------------------------------\nexport function stripeGetCouponCode(stripeCouponId) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_mutations.gnjAmplifyStripeGetCouponCode, { stripeCouponId: stripeCouponId })\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyStripeGetCouponCode);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error Stripe update customer credit card: \", err);\n\t\t\tconst errorMsg = (err && err.errors[0] && err.errors[0].message) || 'No coupon code found';\n\t\t\treturn {error: errorMsg};\n\t\t}\n\t};\n}\n\n// Stripe cancel membership\n// -----------------------------------------------------------------------------\nexport function stripeCancelMembership(stripeSubscriptionId, username, cancel, membershipPlan) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_mutations.gnjAmplifyStripeCancelMembership, { \n\t\t\t\t\tstripeSubscriptionId: stripeSubscriptionId, \n\t\t\t\t\tusername: username,\n\t\t\t\t\tcancel: cancel,\n\t\t\t\t\tmembershipPlan: membershipPlan\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyStripeCancelMembership);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error Stripe update cancellation status: \", err);\n\t\t}\n\t};\n}\n\n// User back up journals\n// -----------------------------------------------------------------------------\nexport function userBackUpJournals(username, deleteBackup) {\n\treturn async () => {\n\t\ttry {\n\t\t\tconst data = await API.graphql(\n\t\t\t\tgraphqlOperation(custom_queries.gnjAmplifyuserBackUpJournals, {username, deleteBackup})\n\t\t\t);\n\t\t\treturn JSON.parse(data.data.gnjAmplifyuserBackUpJournals);\n\t\t} catch (err) {\n\t\t\tconsole.log(\"error userBackUpJournals: \", err);\n\t\t}\n\t};\n}","import React, { Component } from 'react';\nimport loadingIcon from \"../assets/images/loading-dark.svg\";\n\nclass CouponForm extends Component {\n constructor(props) {\n super(props)\n this.state = {\n coupon: \"\"\n }\n }\n\n _getCouponCode = async (e) => {\n this.setState({ coupon: e.target.value })\n }\n\n _applyCouponCode = async (e) => {\n e.preventDefault();\n const { coupon } = this.state\n this.props.applyCouponCode(coupon)\n }\n\n render() {\n const { couponMsg, isCouponLoading } = this.props\n const { coupon } = this.state\n return (\n
\n
\n \n \n \n {couponMsg ?

{couponMsg}

: ''}\n
\n )\n }\n}\n\nexport default CouponForm","import React, { Component } from 'react';\nimport { CardElement } from 'react-stripe-elements';\nimport loadingIcon from \"../assets/images/loading.svg\";\n\nclass CreditCardForm extends Component {\n render() {\n const { ctaText, creditCardSubmitForm, error, isLoading } = this.props\n return (\n
\n \n {error ?

{error}

: ''}\n \n \n )\n }\n}\n\nexport default CreditCardForm","import React, { Component } from \"react\";\nimport { Link } from 'react-router-dom';\nimport { connect } from 'react-redux'\nimport moment from \"moment\";\n\nimport { isLegacyUser } from \"../helper/isLegacyUser\";\nimport LoadingCard from \"../components/LoadingCard\";\nimport CouponForm from \"../components/CouponForm\";\nimport CreditCardForm from \"../components/CreditCardForm\";\n\nimport loadingIcon from \"../assets/images/loading.svg\";\n\nfunction discountedPrice(price, discount) {\n let newPrice = price - price * (discount / 100);\n return Math.floor(newPrice * 100) / 100;\n}\n\nclass BillingSubscriptionInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n userSelectedPlan: \"annual\"\n };\n }\n \n _reactivateMembership = async () => {\n const ask = window.confirm(\"Reactivate my membership?\");\n if (ask) {\n this.props.reactivateMembership();\n }\n };\n\n getMembershipBadge = membership => {\n let membershipBadge;\n switch (membership) {\n case \"annual\":\n membershipBadge = \"Active\";\n break;\n case \"monthly\":\n membershipBadge = \"Active\";\n break;\n case \"canceled\":\n membershipBadge = \"Canceled\";\n break;\n default:\n membershipBadge = \"\";\n }\n return membershipBadge;\n };\n\n _onPlanChange = (e) => {\n this.setState({ userSelectedPlan: e.target.value })\n this.props.selectedMembershipPlan(e.target.value);\n }\n\n _renderFreeMember = () => {\n const {\n error,\n isLoading,\n creditCardSubmit,\n applyCouponCode,\n couponMsg,\n couponDiscount,\n isCouponLoading\n } = this.props;\n const { userSelectedPlan } = this.state\n\n // Show new plans for the new users who signed up after Jan 2nd, 2025\n const { user } = this.props;\n const legacySubscriptionPlan = { annual: 39.99, monthly: 4.99 };\n const newSubscriptionPlan = { annual: 49.99, monthly: 5.99 };\n const isCurrentUserLegacyUser = user.userData && isLegacyUser(user.userData.createdAt);\n const subscriptionPlan = isCurrentUserLegacyUser ? legacySubscriptionPlan : newSubscriptionPlan;\n\n return (\n
\n

\n Become a member to support the community and get full access to all features.{\" \"}\n \n Learn more.\n \n

\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n {/*If coupon applied, update the price below to the new price with the coupon */}\n

\n \n \n You will be charged for{\" \"}\n ${discountedPrice(userSelectedPlan ===\"annual\" ? subscriptionPlan.annual : subscriptionPlan.monthly, couponDiscount)} for the {userSelectedPlan ===\"annual\" ? \"annual\" : \"monthly\"} membership.\n \n \n

\n
\n \n
\n
\n );\n };\n\n _renderAnnualMember = () => {\n const {\n stripeCustomer,\n error,\n isLoading,\n creaditCardUpdate,\n showUpdateCreditCard,\n showUpdateCreditCardValue\n } = this.props;\n\n return (\n
\n

\n \n \n Next billing date:{\" \"}\n \n {stripeCustomer.customer &&\n stripeCustomer.customer.subscriptions.data.length > 0 &&\n moment\n .unix(\n stripeCustomer.customer.subscriptions.data[0]\n .current_period_end\n )\n .format(\"MMM DD, YYYY\")}\n
$\n {stripeCustomer.customer &&\n stripeCustomer.customer.subscriptions.data.length > 0 &&\n stripeCustomer.customer.subscriptions.data[0].plan.amount\n .toString()\n .slice(0, -2) +\n \".\" +\n stripeCustomer.customer.subscriptions.data[0].plan.amount\n .toString()\n .slice(-2)}{\" \"}\n will be charged on your{\" \"}\n {stripeCustomer.customer &&\n stripeCustomer.customer.subscriptions.data.length > 0 &&\n stripeCustomer.customer.sources.data[0].brand}{\" \"}\n card ending with{\" \"}\n {stripeCustomer.customer &&\n stripeCustomer.customer.subscriptions.data.length > 0 &&\n stripeCustomer.customer.sources.data[0].last4}{\" \"}\n on your next billing date.\n
\n
\n

\n

\n \n \n Update credit card\n \n \n

\n {showUpdateCreditCardValue && (\n
\n \n
\n )}\n
\n );\n };\n\n _renderNonAnnualMember = () => {\n const {\n stripeCustomer,\n error,\n isLoading,\n creaditCardUpdate,\n showUpdateCreditCardValue\n } = this.props;\n\n return (\n
\n

\n \n \n Your membership is canceled and will end on{\" \"}\n {stripeCustomer.customer &&\n moment\n .unix(\n stripeCustomer.customer.subscriptions.data[0]\n .current_period_end\n )\n .format(\"MMM DD, YYYY\")}\n . Your membership won't be renewed.\n \n \n

\n

Give us feedback to serve you better!

\n

You can reactivate your membership before your current membership expires.

\n {error &&

{error}

}\n \n {showUpdateCreditCardValue && (\n
\n \n
\n )}\n
\n );\n };\n\n _renderSubscriptionInfo = () => {\n const { stripeCustomer, stripeCustomerId, membership } = this.props;\n if (Object.keys(stripeCustomer).length > 0 && stripeCustomer.customer.deleted) return this._renderFreeMember();\n if (stripeCustomerId && membership && membership !== \"expired\") {\n if (Object.keys(stripeCustomer).length === 0) return ;\n if (membership === \"annual\" || membership === \"monthly\") return this._renderAnnualMember();\n else return this._renderNonAnnualMember();\n } else {\n return this._renderFreeMember();\n }\n };\n\n render() {\n const { membership } = this.props;\n\n return (\n
\n

\n Current plan:{\" \"}\n \n {membership && membership !== \"expired\"\n ? {membership} \n : \"Free \"}\n {membership && membership === \"expired\" && (\n Membership expired\n )}\n {membership && membership !== \"expired\" && (\n \n {this.getMembershipBadge(membership)}\n \n )}\n \n

\n {this._renderSubscriptionInfo()}\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n return state\n}\n\nexport default connect(mapStateToProps)(BillingSubscriptionInfo)","// Definition of a legacy user: a user who registered before Jan 2nd, 2025 UTC\n// As we added new subscription plans, we want to offer a discount to legacy users\n// Old plans: $39.99/year or $4.99/month\n// New plans: $49.99/year or $5.99/month\n\nexport function isLegacyUser(createdAt) {\n if(!createdAt) {\n return false;\n }\n\n const creationDate = new Date(createdAt);\n const targetDate = new Date(\"2025-01-02T00:00:00.000Z\"); // Jan 2nd, 2025 UTC\n\n return creationDate < targetDate;\n}","import React from 'react';\nimport moment from \"moment\";\n\nfunction ReceiptURL(url) {\n if(!url) {\n return\n }\n\n return \n}\n\nexport function BillingListItem({ billingList }) {\n const str = billingList.amount.toString()\n const amountCharged = str.slice(0, -2) + \".\"+ str.slice(-2)\n\n return (\n
\n \n {moment.unix(billingList.created).format('MMM DD, YYYY')} ${amountCharged} on {billingList.source.brand} card ending with {billingList.source.last4} {ReceiptURL(billingList.receipt_url)}\n \n
\n )\n}","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { Link } from \"react-router-dom\";\n\nimport { injectStripe } from \"react-stripe-elements\";\nimport { getCurrentUser } from \"../actions/user\";\n\nimport {\n stripeCreateMember,\n stripeGetCustomerInfo,\n updateStripeCustomerInfo,\n stripeGetCouponCode,\n stripeCancelMembership\n} from \"../actions/membership\";\n\nimport LoadingCard from \"../components/LoadingCard\";\nimport Footer from \"../components/Footer\";\nimport BillingSubscriptionInfo from \"../components/BillingSubscriptionInfo\";\nimport { BillingListItem } from \"../components/BillingListItem\";\n\nclass Billing extends Component {\n constructor(props) {\n super(props);\n this.state = {\n error: \"\",\n isLoading: false,\n stripeData: {},\n showUpdateCreditCardValue: false,\n couponMsg: \"\",\n couponDiscount: \"\",\n couponCode: \"\",\n isCouponLoading: false,\n membershipPlanSelected: \"annual\"\n };\n }\n\n async componentDidMount() {\n if (!this.props.user.currentUser) {\n await this.props.getCurrentUser();\n }\n\n const stripeCustomerId = this.props.user.currentUser.attributes[\"custom:stripeCustomerId\"];\n\n if (stripeCustomerId) {\n try {\n const stripeData = await this.props.stripeGetCustomerInfo(\n stripeCustomerId\n );\n if(stripeData.raw){\n window.confirm(stripeData.raw.message + \" Please reload the page.\");\n } else {\n this.setState({ stripeData });\n }\n } catch (err) {\n console.log(err);\n }\n }\n }\n\n _applyCouponcode = async (couponCodePassedForSubmit) => {\n this.setState({ isCouponLoading: true })\n const couponInfo = await this.props.stripeGetCouponCode(couponCodePassedForSubmit)\n\n if(couponInfo && couponInfo.id){\n this.setState({\n couponCode: couponInfo.id,\n couponMsg: couponInfo.name + \" applied successfully!\",\n couponDiscount: couponInfo.percent_off,\n isCouponLoading: false\n })\n } else {\n this.setState({\n couponMsg: couponInfo.error,\n couponDiscount: \"\",\n couponCode: \"\",\n isCouponLoading: false\n })\n }\n }\n\n _showUpdateCreditCard = async e => {\n this.setState({\n showUpdateCreditCardValue: !this.state.showUpdateCreditCardValue\n });\n };\n\n _creditCardSubmit = async e => {\n e.preventDefault();\n const { couponCode, membershipPlanSelected } = this.state\n const username = this.props.user.accountData.idToken.payload[\n \"cognito:username\"\n ];\n const email = this.props.user.currentUser.attributes.email;\n const uuid = this.props.user.accountData.idToken.payload.sub;\n const stripeCustomerId = this.props.user.currentUser.attributes[\"custom:stripeCustomerId\"];\n this.setState({ error: \"\", isLoading: true });\n\n const token = await this.props.stripe.createToken();\n if (token.error) {\n return this.setState({\n error: token.error.message,\n isLoading: false\n });\n } else {\n const userSubscribe = await this.props.stripeCreateMember({\n stripeToken: token.token.id,\n username: username,\n email: email,\n uuid: uuid,\n stripeCouponId: couponCode,\n stripeCustomerId: stripeCustomerId,\n membershipPlanSelected: membershipPlanSelected\n });\n if (userSubscribe.subscription) {\n await this.props.getCurrentUser();\n this.setState({\n error: \"\",\n isLoading: false,\n showUpdateCreditCardValue: false\n });\n // TODO: maybe use stripeCreateMember function's return data instead of call Stripe again\n const stripeData = await this.props.stripeGetCustomerInfo(userSubscribe.customer.id);\n if(stripeData.raw){\n window.confirm(stripeData.raw.message + \" Please reload the page.\");\n } else {\n this.setState({ stripeData });\n }\n } else {\n this.setState({ error: userSubscribe.raw.message, isLoading: false });\n }\n }\n };\n\n _creaditCardUpdate = async e => {\n e.preventDefault();\n const { stripeData } = this.state;\n const stripeCustomerId = this.props.user.currentUser.attributes[\"custom:stripeCustomerId\"];\n this.setState({ error: \"\", isLoading: true });\n const token = await this.props.stripe.createToken();\n if (token.error) {\n return this.setState({\n error: token.error.message,\n isLoading: false\n });\n } else {\n const updatedCreditCard = await this.props.updateStripeCustomerInfo({\n stripeCustomerId: stripeCustomerId, \n stripeToken: token.token.id \n });\n if(updatedCreditCard.raw){\n window.confirm(stripeData.raw.message + \" Please try again.\");\n } else {\n this.setState({\n stripeData: {\n customer: updatedCreditCard,\n charges: stripeData.charges\n },\n error: \"\",\n isLoading: false,\n showUpdateCreditCardValue: false\n });\n }\n }\n };\n\n _reactivateMembershipRequest = async () => {\n const { currentUser } = this.props.user\n const { stripeData } = this.state\n this.setState({ error: \"\", isLoading: true });\n const reactivateMembership = await this.props.stripeCancelMembership(\n currentUser.attributes[\"custom:stripeSubscriptionId\"],\n currentUser.username,\n false,\n stripeData.customer.subscriptions.data[0].plan.nickname.toLowerCase()\n )\n \n if(reactivateMembership.subscription){\n await this.props.getCurrentUser();\n this.setState({\n error: \"\",\n isLoading: false\n });\n // TODO: maybe use stripeCancelMembership function's return data instead of call Stripe again\n const stripeData = await this.props.stripeGetCustomerInfo(\n this.props.user.currentUser.attributes[\"custom:stripeCustomerId\"]\n );\n if(stripeData.raw){\n window.confirm(stripeData.raw.message + \" Please reload the page.\");\n } else {\n this.setState({ stripeData });\n }\n } else {\n this.setState({ error: \"Error occurred. Please try again.\", isLoading: false });\n }\n }\n\n _selectedMembershipPlan = async (plan) => {\n this.setState({ membershipPlanSelected: plan });\n }\n\n render() {\n const {\n error,\n isLoading,\n stripeData,\n showUpdateCreditCardValue,\n couponMsg,\n couponDiscount,\n isCouponLoading\n } = this.state;\n\n const { currentUser } = this.props.user;\n \n if (!currentUser) return
;\n\n const stripeCustomerId = currentUser.attributes[\"custom:stripeCustomerId\"];\n\n const membership = currentUser.attributes[\"custom:membership\"];\n const billingList = stripeData.charges ? (\n // Only show successful payment history\n stripeData.charges.data.filter((charge) => charge.status === \"succeeded\").map(billing => (\n \n ))\n ) : (\n \n );\n\n return (\n
\n

Billing

\n
\n

My membership

\n \n
\n\n {stripeCustomerId && \n
\n

Billing history

\n {billingList}\n
}\n\n\n {(membership === \"annual\" || membership === \"monthly\") && \n
\n

Cancel membership

\n
\n

\n By cancelling membership, you will lose access to all member's only features at the end of your current membership cycle.\n

\n \n Cancel my membership\n \n
\n
\n }\n\n
\n
\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n stripeCreateMember,\n getCurrentUser,\n stripeGetCustomerInfo,\n updateStripeCustomerInfo,\n stripeGetCouponCode,\n stripeCancelMembership\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(injectStripe(Billing));\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport loadingIcon from '../assets/images/loading-dark.svg'\nimport {\n getCurrentUser,\n updateUserSetting,\n gnjAmplifyadminDisableUser,\n} from '../actions/user'\nimport {\n updateStripeCustomerInfo,\n userBackUpJournals,\n} from '../actions/membership'\nimport { Auth } from 'aws-amplify'\nimport LoadingCard from '../components/LoadingCard'\nimport Footer from '../components/Footer'\nimport { Link } from 'react-router-dom'\n\nclass Setting extends Component {\n constructor(props) {\n super(props)\n this.state = {\n darkMode: false,\n username: '',\n displayName: '',\n email: '',\n verificationCode: '',\n emailVerified: false,\n isLoading: false,\n successMsg: '',\n errorMsg: '',\n currentPassword: '',\n newPassword: '',\n passwordSuccessMsg: '',\n passwordErrorMsg: '',\n isLoadingPassword: false,\n showDeleteMyAccount: false,\n backupProcessing: false,\n backupTimeout: false,\n userEmailNotification: 'off',\n }\n }\n\n async componentDidMount() {\n if (localStorage.getItem('darkmode') === 'true') {\n this.setState({ darkMode: true })\n }\n try {\n await this.props.getCurrentUser()\n const displayName = this.props.user.currentUser.attributes\n .preferred_username\n this.setState({\n username: this.props.user.currentUser.username,\n displayName: displayName || this.props.user.currentUser.username,\n email: this.props.user.currentUser.attributes.email,\n userEmailNotification: this.props.user.currentUser.attributes[\n 'custom:emailNotification'\n ],\n })\n } catch (err) {\n console.log(err)\n }\n }\n\n _onChange = async (e) => {\n const { name, value } = e.target\n this.setState({ [name]: value })\n }\n\n _updateUserSetting = async (e) => {\n e.preventDefault()\n const { displayName, email, verificationCode } = this.state\n const stripeCustomerId = this.props.user.currentUser.attributes[\n 'custom:stripeCustomerId'\n ]\n if (\n (displayName ===\n this.props.user.currentUser.attributes.preferred_username ||\n displayName === this.props.user.currentUser) &&\n email === this.props.user.currentUser.attributes.email &&\n !verificationCode\n )\n return\n\n this.setState({\n isLoading: true,\n emailVerified: false,\n successMsg: '',\n })\n if (verificationCode) {\n try {\n const data = await Auth.verifyCurrentUserAttributeSubmit(\n 'email',\n verificationCode\n )\n\n if (data === 'SUCCESS') {\n // if paid member, update email on Stripe as well\n if (stripeCustomerId) {\n await this.props.updateStripeCustomerInfo({\n stripeCustomerId: stripeCustomerId,\n email: email,\n })\n }\n this.setState({\n emailVerified: true,\n successMsg: 'Email verified!',\n errorMsg: '',\n verificationCode: '',\n isLoading: false,\n })\n }\n } catch (err) {\n this.setState({\n isLoading: false,\n errorMsg: err.message,\n successMsg: '',\n })\n }\n } else {\n try {\n await this.props.updateUserSetting({\n preferred_username: displayName,\n email: email,\n })\n this.setState({\n isLoading: false,\n errorMsg: '',\n successMsg: 'Updated successfully!',\n })\n } catch (err) {\n this.setState({\n isLoading: false,\n successMsg: '',\n errorMsg: 'Update failed. Please try again.',\n })\n }\n }\n }\n\n _resendVerificationCode = async () => {\n this.setState({ isLoading: true })\n Auth.verifyCurrentUserAttribute('email')\n .then((data) => {\n this.setState({\n errorMsg: '',\n successMsg: 'Verification code sent!',\n isLoading: false,\n })\n })\n .catch((err) => {\n this.setState({\n errorMsg: err.message,\n successMsg: '',\n isLoading: false,\n })\n })\n }\n\n _changePassword = async (e) => {\n e.preventDefault()\n const { currentPassword, newPassword } = this.state\n this.setState({ isLoadingPassword: true })\n\n Auth.currentAuthenticatedUser()\n .then((user) => {\n return Auth.changePassword(user, currentPassword, newPassword)\n })\n .then((data) => {\n this.setState({\n passwordSuccessMsg: 'Password updated successfully',\n passwordErrorMsg: '',\n isLoadingPassword: false,\n })\n })\n .catch((err) => {\n this.setState({\n passwordErrorMsg: err.message,\n passwordSuccessMsg: '',\n isLoadingPassword: false,\n })\n })\n }\n\n _darkTheme = () => {\n let d = document.getElementsByTagName('HTML')[0]\n\n if (d.classList.contains('dark-mode')) {\n d.classList.remove('dark-mode')\n localStorage.setItem('darkmode', 'false')\n this.setState({\n darkMode: false,\n })\n window.ReactNativeWebView &&\n window.ReactNativeWebView.postMessage('day-mode')\n } else {\n d.classList.add('dark-mode')\n localStorage.setItem('darkmode', 'true')\n this.setState({\n darkMode: true,\n })\n window.ReactNativeWebView &&\n window.ReactNativeWebView.postMessage('dark-mode')\n }\n }\n\n _renderThemeSetting = () => (\n
\n

Dark mode

\n \n
\n )\n\n // TODO: move this to notification action. Just to organize it better\n _setEmailNotificationSetting = async () => {\n const { userEmailNotification } = this.state\n const ask = window.confirm(\n userEmailNotification === 'off'\n ? 'Turn on email notification?'\n : 'Turn off email notification?'\n )\n if (ask) {\n let user = await Auth.currentAuthenticatedUser()\n if (userEmailNotification === 'off') {\n this.setState({ userEmailNotification: 'on' })\n await Auth.updateUserAttributes(user, {\n 'custom:emailNotification': 'on',\n })\n } else {\n this.setState({ userEmailNotification: 'off' })\n await Auth.updateUserAttributes(user, {\n 'custom:emailNotification': 'off',\n })\n }\n }\n }\n\n _renderEmailNotificationInfo = () => {\n const { userEmailNotification } = this.state\n const { currentUser } = this.props.user\n return (\n
\n
\n

Email notification

\n \n
\n
\n )\n }\n\n _renderAccountInfo = () => {\n const {\n displayName,\n email,\n verificationCode,\n emailVerified,\n isLoading,\n errorMsg,\n successMsg,\n username,\n } = this.state\n const { currentUser } = this.props.user\n\n if (!currentUser) return \n return (\n \n

\n \n Your username is {username}.\n \n

\n
\n
\n \n \n
\n
\n \n \n
\n {!currentUser.attributes.email_verified && !emailVerified && (\n
\n \n \n
\n \n Re-send verification code\n \n
\n )}\n

\n {successMsg || errorMsg}\n

\n \n {isLoading ? (\n \n ) : (\n 'Update account info'\n )}\n \n \n
\n )\n }\n\n _renderChangePassword = () => {\n const {\n currentPassword,\n newPassword,\n passwordSuccessMsg,\n passwordErrorMsg,\n isLoadingPassword,\n } = this.state\n const { currentUser } = this.props.user\n\n if (!currentUser) return null\n return (\n
\n
\n \n \n
\n
\n \n \n
\n

\n {passwordSuccessMsg || passwordErrorMsg}\n

\n \n {isLoadingPassword ? (\n \"Loading...\"\n ) : (\n 'Change password'\n )}\n \n \n )\n }\n\n _renderBackupJournals = () => {\n const { backupTimeout, backupProcessing } = this.state\n const { currentUser } = this.props.user\n\n if (!currentUser) return \n\n const membership = currentUser.attributes['custom:membership']\n if (!membership || membership === 'expired') {\n return (\n
\n

\n \n Backup my journals is a paid feature at the moment.{' '}\n Becoming a member will help\n us to build the community a better place and eventually offer more\n features for free to more people!\n \n

\n
\n )\n } else {\n if (backupTimeout) {\n return (\n
\n \n Downloaded successfully\n \n
\n )\n } else {\n return (\n
\n

\n Backup is compatible on laptops or desktops only.\n

\n \n {backupProcessing ? 'Downloading...' : 'Back up my journals'}\n \n
\n )\n }\n }\n }\n\n _backupMyJournals = async () => {\n const { currentUser } = this.props.user\n let askToConfirm = window.confirm('Backup all your journals?')\n if (askToConfirm) {\n this.setState({ backupProcessing: true })\n const requestBackup = await this.props.userBackUpJournals(\n currentUser.username\n )\n\n if (requestBackup.downloadUrl) {\n window.open(requestBackup.downloadUrl)\n\n setTimeout(async () => {\n try {\n await this.props.userBackUpJournals(currentUser.username, requestBackup.fileName);\n } catch (error) {\n console.error(\"Error during backup:\", error);\n } finally {\n this.setState({ backupTimeout: true, backupProcessing: false });\n }\n }, 5000);\n } else {\n this.setState({ backupTimeout: true, backupProcessing: false })\n }\n }\n }\n\n _deleteMyAccount = async () => {\n this.setState({ showDeleteMyAccount: !this.state.showDeleteMyAccount })\n }\n\n _deleteMyAccountRequest = async () => {\n const { currentUser } = this.props.user\n\n if (\n !currentUser.attributes['custom:membership'] ||\n currentUser.attributes['custom:membership'] === 'expired' ||\n currentUser.attributes['custom:membership'] === 'canceled'\n ) {\n let askToConfirm = prompt(\n 'Please enter \"I want to delete all my data\" to continue...'\n )\n\n if (askToConfirm === 'I want to delete all my data') {\n console.log('Removing username: ' + currentUser.username)\n await this.props.gnjAmplifyadminDisableUser(currentUser.username)\n }\n } else {\n alert(\n 'You need to cancel your memberhip first before deleting your account.'\n )\n this.props.history.push('/my-account/billing')\n }\n }\n\n render() {\n const { showDeleteMyAccount } = this.state\n\n const deleteMyAccountUI = showDeleteMyAccount ? (\n
\n

\n Are you sure? Deleting your account will delete all your data\n permanently and there's no way to bring them back.\n

\n \n Want to continue?\n \n
\n ) : (\n ''\n )\n\n return (\n
\n

Setting

\n
\n {this._renderThemeSetting()}\n {this._renderEmailNotificationInfo()}\n
\n
\n

Account information

\n {this._renderAccountInfo()}\n
\n
\n

Change password

\n {this._renderChangePassword()}\n
\n
\n

Backup my journals

\n {this._renderBackupJournals()}\n
\n
\n \n \n {showDeleteMyAccount ? 'Cancel' : 'Delete my account?'}\n \n \n {deleteMyAccountUI}\n
\n
\n
\n
\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getCurrentUser,\n updateUserSetting,\n updateStripeCustomerInfo,\n gnjAmplifyadminDisableUser,\n userBackUpJournals,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Setting)\n","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from \"redux\";\n\nimport { stripeCancelMembership } from \"../actions/membership\";\nimport { getCurrentUser } from \"../actions/user\";\n\nimport Footer from '../components/Footer'\nimport loadingIcon from \"../assets/images/loading-dark.svg\"\nimport community from \"../assets/images/community.svg\"\n\nclass CancelConfirm extends Component{\n constructor(props) {\n super(props);\n this.state = {\n error: \"\",\n isLoading: false\n };\n }\n\n _cancelMembership = async () => {\n const { currentUser } = this.props.user\n this.setState({ error: \"\", isLoading: true });\n const ask = window.confirm(\"Cancel my membership?\");\n if (ask) {\n const cancelMembership = await this.props.stripeCancelMembership(\n currentUser.attributes[\"custom:stripeSubscriptionId\"],\n currentUser.username,\n true\n )\n if(cancelMembership.subscription){\n await this.props.getCurrentUser();\n this.setState({\n error: \"\",\n isLoading: false\n });\n this.props.history.push(\"/my-account/billing\")\n } else {\n this.setState({ error: \"Error occurred. Please try again.\", isLoading: false });\n }\n }else{\n this.setState({\n error: \"\",\n isLoading: false\n });\n }\n }\n\n render() {\n const { error, isLoading } = this.state\n \n return(\n
\n
\n

Cancel membership

\n \n
\n

Are you sure you want to cancel your membership?

\n

You will lose access to all member-only features at the end of your current membership cycle.

\n\n
\n

\"Being

\n
\n\n

Your membership helps us out a lot! Your membership dues goes to running this app smoothly, to improving existing features, and in releasing new features that make writing a journal more enjoyable!

\n\n

Give us feedback to serve you better!

\n {error ?

{error}

: ''}\n
\n \n \n
\n
\n\n
\n
\n
\n
\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n stripeCancelMembership,\n getCurrentUser\n },\n dispatch\n );\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(CancelConfirm);","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\n\nimport profilePic from '../assets/images/profile-pic.svg'\n\nclass MemberLevel extends Component{\n render() {\n return(\n
\n
\n

Member levels

\n

Level up your account by writing journals and motivating others to do the same :)

\n
\n
\"No   Level 1
\n
Write 10 journals
\n
\n
\n
\"No   Level 2
\n
Write 30 journals
\n
\n
\n
\"No   Level 3
\n
Write 5 comments & like 5 journals
\n
\n
\n
\"No   Level 4
\n
Write 90 journals
\n
\n
\n
\"No   Level 5
\n
Write 10 comments & like 10 journals & follow 10 authors
\n
\n
\n
\"No   Level 6
\n
Write 365 journals & complete 1 month challenge
\n
\n
\n
\"No   Level 7
\n
Write 20 comments & like 20 journals & follow 20 authors
\n
\n
\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nexport default connect(mapStateToProps)(MemberLevel)\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { bindActionCreators } from 'redux';\nimport profilePic from '../assets/images/profile-pic.svg'\nimport { getUserFollowings, getAuthorData } from '../actions/user'\nimport loadingIcon from '../assets/images/loading-dark.svg'\nimport LoadingCard from '../components/LoadingCard';\nimport moment from 'moment';\n\nclass Following extends Component {\n _isMounted = false\n constructor(props) {\n super(props);\n this.state = {\n loadingFollowingData: false,\n loadingMore: false,\n followings: [],\n followingCount: 0,\n nextFollowingToken: null,\n authorData: null\n };\n }\n\n async componentDidMount() {\n this._isMounted = true\n const { author_uid } = this.props.match.params\n const decodedAuthor_uid = decodeURIComponent(author_uid);\n this.setState({ loadingFollowingData: true })\n try {\n let authorData = await this.props.getAuthorData(decodedAuthor_uid);\n let followingsObj = await this.props.getUserFollowings(decodedAuthor_uid);\n if (!this._isMounted) return\n this.setState({\n authorData: authorData,\n followings: followingsObj.items,\n nextFollowingToken: followingsObj.nextToken,\n loadingFollowingData: false\n })\n } catch (err) {\n console.log(err);\n this.setState({ loadingFollowingData: false })\n }\n }\n\n getFollowingData = (followings) => {\n let divs = []\n for (let i = 0; i < followings.length; i++) {\n let following = JSON.parse(followings[i].followingProfile);\n divs.push(\n
\n \n
\n {\" \"}\n {following.displayName || following.id}\n
\n {moment(followings[i].createdAt).fromNow()}\n
\n \n
\n );\n }\n return divs;\n }\n\n _loadMore = async () => {\n const { followings } = this.state\n const { author_uid } = this.props.match.params\n const decodedAuthor_uid = decodeURIComponent(author_uid);\n\n if(!this.state.nextFollowingToken) return\n this.setState({ loadingMore: true })\n try {\n let followingsObj = await this.props.getUserFollowings(decodedAuthor_uid, this.state.nextFollowingToken);\n this.setState({\n followings: [...followings, ...followingsObj.items],\n nextFollowingToken: followingsObj.nextToken\n });\n } catch (err) {\n console.log(err);\n } finally {\n this.setState({\n loadingMore: false,\n })\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const { followings, authorData, loadingFollowingData, nextFollowingToken, loadingMore } = this.state;\n\n const followingContent = !loadingFollowingData && authorData ?\n \n

Following {authorData.followingCount || 0} user{authorData.followingCount > 1 ? 's' : ''}

\n
\n {this.getFollowingData(followings)}\n {nextFollowingToken && (\n loadingMore \n ?
\"Loading
\n :
\n )}\n
\n
\n :\n \n \n return (\n
\n
    \n
  • \n this.props.history.goBack()} id=\"following_subNav_go_back\">\n Back\n \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n
\n {authorData && (authorData.followingCount === 0 || authorData.followingCount ? \n followingContent\n :\n \n {followingContent}\n
\n

🥰
Meet amazing people on Goodnight Journal

\n

Community and Callenge are great places to meet them!

\n
\n
\n )}\n
\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({\n getUserFollowings,\n getAuthorData\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Following)\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { bindActionCreators } from 'redux';\nimport profilePic from '../assets/images/profile-pic.svg'\nimport { getUserFollowers, getAuthorData } from '../actions/user'\nimport loadingIcon from '../assets/images/loading-dark.svg'\nimport LoadingCard from '../components/LoadingCard';\n\nimport moment from 'moment';\n\nclass Follower extends Component {\n _isMounted = false\n constructor(props) {\n super(props);\n this.state = {\n loadingFollowerData: false,\n loadingMore: false,\n followers: [],\n followersCount: 0,\n nextFollowerToken: null,\n authorData: null\n };\n }\n\n async componentDidMount() {\n this._isMounted = true\n const { author_uid } = this.props.match.params\n const decodedAuthor_uid = decodeURIComponent(author_uid);\n\n this.setState({ loadingFollowerData: true })\n try {\n let authorData = await this.props.getAuthorData(decodedAuthor_uid);\n let followersObj = await this.props.getUserFollowers(decodedAuthor_uid);\n if(!this._isMounted) return\n this.setState({\n authorData: authorData,\n followers: followersObj.items,\n nextFollowerToken: followersObj.nextToken,\n loadingFollowerData: false\n });\n } catch (err) {\n console.log(err);\n this.setState({ loadingFollowerData: false })\n }\n }\n\n getFollowerData = (followers) => {\n let divs = []\n for (let i = 0; i < followers.length; i++) {\n let follower = JSON.parse(followers[i].followerProfile);\n divs.push(\n
\n \n
\n {\" \"}\n {follower.displayName || follower.id}\n
\n {moment(followers[i].createdAt).fromNow()}\n
\n \n
\n );\n }\n return divs;\n }\n\n _loadMore = async () => {\n const { followers } = this.state\n const { author_uid } = this.props.match.params\n const decodedAuthor_uid = decodeURIComponent(author_uid);\n if(!this.state.nextFollowerToken) return\n this.setState({ loadingMore: true })\n try {\n let followersObj = await this.props.getUserFollowers(decodedAuthor_uid, this.state.nextFollowerToken);\n this.setState({\n followers: [...followers, ...followersObj.items],\n nextFollowerToken: followersObj.nextToken\n });\n } catch (err) {\n console.log(err);\n } finally {\n this.setState({\n loadingMore: false,\n })\n }\n\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const { followers, authorData, loadingFollowerData, nextFollowerToken, loadingMore } = this.state;\n\n const followerContent = !loadingFollowerData && authorData ?\n \n

Followed by {authorData.followerCount || 0} user{authorData.followerCount > 1 ? 's' : ''}

\n
\n {this.getFollowerData(followers)}\n {nextFollowerToken && (\n loadingMore \n ?
\"Loading
\n :
\n )}\n
\n
\n :\n \n \n return (\n
\n
    \n
  • \n this.props.history.goBack()} id=\"follower_subNav_go_back\">\n Back\n \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n
\n {followerContent}\n
\n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({\n getUserFollowers,\n getAuthorData\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Follower)\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport moment from 'moment';\nimport ProfilePic from \"../assets/images/profile-pic.svg\"\n\nclass LovedUsersListItem extends Component {\n render() {\n const { lovedUsers } = this.props;\n return (\n \n {lovedUsers.map(lovedUser => (\n
\n \n
\n \n {lovedUser.user.displayName || lovedUser.user.id}
\n
\n \n
\n ))}\n
\n );\n }\n}\n\nexport default LovedUsersListItem;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport LovedUsersListItem from \"../components/LovedUsersListItem\";\nimport {\n getLovedUsersFromComment,\n getLovedUsersFromJournal\n} from \"../actions/journal\";\nimport LoadingCard from '../components/LoadingCard';\nimport loadingIcon from '../assets/images/loading-dark.svg'\n\nclass LovedUsers extends Component {\n constructor(props){\n super(props)\n this.state = {\n showLoadingIcon: false,\n }\n this._loadMore = this._loadMore.bind(this)\n this._loadLovedUser = this._loadLovedUser.bind(this)\n }\n\n componentDidMount() {\n this._loadLovedUser(null)\n }\n\n async _loadMore() {\n const { nextToken } = this.props.lover;\n if (nextToken) {\n this.setState({ showLoadingIcon: true })\n await this._loadLovedUser(nextToken)\n this.setState({ showLoadingIcon: false })\n }\n }\n\n async _loadLovedUser(nextToken) {\n const id = this.props.match.params.journalOrComment_uid;\n const category = this.props.match.params.category;\n try {\n if (category === 'journal')\n await this.props.getLovedUsersFromJournal(id, nextToken)\n else\n await this.props.getLovedUsersFromComment(id, nextToken)\n } catch(err) {\n console.log(err)\n }\n }\n\n render() {\n const {loverLoading, lovedUsers, nextToken} = this.props.lover\n return (\n
\n
    \n
  • \n this.props.history.goBack()} id=\"follower_subNav_go_back\">\n Back\n \n
  • \n
  • \n
  • \n
  • \n
  • \n
\n
\n

Loved Users

\n
\n {loverLoading && }\n {!loverLoading && lovedUsers.length === 0 && (\n

There are no loved users

\n )}\n {!loverLoading && lovedUsers.length > 0 && (\n \n )}\n
\n {lovedUsers[lovedUsers.length - 1] && nextToken ? \n
\n {this.state.showLoadingIcon\n ? \"Loading\n : }\n
\n : ''\n }\n
\n
\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return state;\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators({\n getLovedUsersFromComment,\n getLovedUsersFromJournal\n }, dispatch);\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(LovedUsers);\n","import React, { Component } from 'react';\nimport Footer from \"./Footer\";\n\nclass Contact extends Component{\n render() {\n return(\n
\n
\n

Contact

\n

Please fill out the form below.

\n \n \n\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default Contact\n","import React, { Component } from 'react';\nimport Footer from \"./Footer\";\n\nclass UserFeedback extends Component{\n render() {\n return(\n
\n
\n

 

\n \n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default UserFeedback\n","import React from 'react'\n\nconst LoadingBook = () => (\n
\n
\n
\n
\n)\n\nexport default LoadingBook;","import React, { forwardRef } from 'react'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { useHistory } from 'react-router-dom'\n\nexport function Book(props) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({\n id: props.id,\n disabled: props.disabled,\n })\n\n const style = {\n opacity: isDragging ? 0.4 : 1,\n userSelect: isDragging ? 'none' : 'inherit',\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n \n )\n}\n\nexport const BookGrid = forwardRef((props, ref) => {\n const { bookCoverImg, id, book, bookJournalCount } = props.book\n const history = useHistory()\n\n return (\n history.push('/book/' + id)}\n id={'book_clicked_' + id}\n >\n \n {book} ({bookJournalCount ? bookJournalCount : 0})\n \n \n )\n})\n","import React, { useEffect, useState } from 'react'\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragOverlay,\n} from '@dnd-kit/core'\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n rectSortingStrategy,\n} from '@dnd-kit/sortable'\n\nimport { Book, BookGrid } from './Book'\n\nexport const SortableBooks = (props) => {\n const [activeId, setActiveId] = useState(null)\n const [items, setItems] = useState([])\n const { callbackNewOrder } = props\n\n useEffect(() => {\n setItems(props.books)\n }, [props.books])\n\n useEffect(() => {\n callbackNewOrder(items)\n }, [JSON.stringify(items)])\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const handleDragEnd = (event) => {\n const { active, over } = event\n\n if (active.id !== over.id) {\n setItems((items) => {\n const oldIndex = items.findIndex(({ id }) => id === active.id)\n const newIndex = items.findIndex(({ id }) => id === over.id)\n\n return arrayMove(items, oldIndex, newIndex)\n })\n }\n }\n\n const handleDragStart = (event) => {\n setActiveId(event.active.id)\n }\n\n return (\n \n \n {items.map((item) => {\n return (\n \n )\n })}\n \n\n \n {activeId ? (\n i.id === activeId)} />\n ) : null}\n \n \n )\n}\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { withRouter } from 'react-router'\n\nimport {\n createABook,\n getMoreUserBooks,\n getABookWithJournals,\n} from '../actions/journal'\nimport { updateUserBookOrder } from '../actions/user'\nimport { convertHEICToAny, getCompressedImage } from '../utils/ImageProcess'\nimport isPaidUser from '../utils/isPaidUser'\n\nimport AddBookPopup from '../components/AddBookPopup'\nimport UpgradePopup from '../components/UpgradePopup'\nimport LoadingBook from '../components/LoadingBook'\nimport { SortableBooks } from '../components/SortableBooks'\nclass MyBooks extends Component {\n constructor(props) {\n super(props)\n this.state = {\n showAddaBook: false,\n showUpgrade: false,\n bookUserId: props.user.accountData.idToken.payload['cognito:username'],\n error: '',\n isCreatingABook: false,\n selectedBook: '',\n reorderMode: false,\n upgradeMessage: '',\n }\n }\n\n _showAddaBookUI = () => {\n const { userBooks, currentUser } = this.props.user\n\n userBooks.length > 2 &&\n !isPaidUser(currentUser.attributes['custom:membership'])\n ? this.setState({\n showAddaBook: false,\n showUpgrade: true,\n upgradeMessage: 'Creating 3+ books',\n })\n : this.setState({\n showAddaBook: true,\n showUpgrade: false,\n })\n }\n\n _popupControl = async (callback) => {\n this.setState({\n showUpgrade: callback,\n })\n }\n\n _bookPopupControl = async (callback) => {\n this.setState({\n showAddaBook: callback,\n })\n if (!callback) {\n this.setState({\n error: '',\n })\n }\n }\n\n _createABook = async (bookData) => {\n const { bookUserId } = this.state\n this.setState({\n isCreatingABook: true,\n showAddaBook: true,\n })\n\n try {\n if (bookData.bookCoverImg) {\n let file = bookData.bookCoverImg\n let iPhoneExtensions = this.props.user.iPhoneExtensions\n\n // file type is only image.\n if (iPhoneExtensions.includes(file.name.split('.')[1])) {\n try {\n await convertHEICToAny(file).then((result) => (file = result))\n } catch {\n console.log('Converter not working.')\n }\n }\n if (/^image\\//.test(file.type)) {\n try {\n await getCompressedImage(file).then((result) => (file = result))\n console.log('Image is being uploaded...')\n bookData.bookCoverImg = file\n const bookCreated = await this.props.createABook(\n bookData,\n bookUserId\n )\n if (bookCreated && bookCreated.error) {\n this.setState({\n error: bookCreated.error,\n })\n } else {\n this.setState({\n showAddaBook: false,\n error: '',\n })\n }\n } catch (err) {\n console.log(err)\n }\n } else {\n console.warn('You can only upload image files.')\n }\n } else {\n const bookCreated = await this.props.createABook(bookData, bookUserId)\n if (bookCreated && bookCreated.error) {\n this.setState({\n error: bookCreated.error,\n })\n } else {\n this.setState({\n showAddaBook: false,\n error: '',\n })\n }\n }\n this.setState({ isCreatingABook: false })\n } catch (err) {\n console.log(err)\n this.setState({ error: err, isCreatingABook: false })\n }\n }\n\n reorderBooks = () => {\n const { reorderMode } = this.state\n this.setState({ reorderMode: !reorderMode })\n }\n\n getNewOrderofBooks = (newOrder) => {\n this.setState({ newBookOrder: newOrder })\n }\n\n saveNewBookOrder = async () => {\n const { newBookOrder } = this.state\n const { user, updateUserBookOrder } = this.props\n const { currentUser } = this.props.user\n\n if (!isPaidUser(currentUser.attributes['custom:membership'])) {\n this.setState({\n showUpgrade: true,\n upgradeMessage: 'Reordering books',\n })\n return\n }\n\n const newBookOrderIds =\n newBookOrder &&\n newBookOrder.map((book) => {\n return book.id\n })\n\n const exisitingBookOrderIds =\n user.userBooks &&\n user.userBooks.map((b) => {\n return b.id\n })\n\n let isOrderSame = newBookOrderIds.every((el, index) => {\n return el === exisitingBookOrderIds[index]\n })\n\n if (\n !isOrderSame &&\n newBookOrderIds.length === exisitingBookOrderIds.length\n ) {\n try {\n await updateUserBookOrder(JSON.stringify(newBookOrderIds))\n } catch (e) {\n console.log(e)\n }\n }\n }\n\n render() {\n const {\n showAddaBook,\n showUpgrade,\n error,\n isCreatingABook,\n reorderMode,\n upgradeMessage,\n } = this.state\n const { userBooks, isFetchUserData, currentUser } = this.props.user\n\n const listOfBooks =\n userBooks && userBooks.length > 0 ? (\n \n ) : (\n
\n \n \n \n \n Create your\n
\n first book!\n
\n
\n )\n\n return (\n \n
    \n
  • \n this.props.history.goBack()}\n id=\"mybooks_subNav_go_back\"\n >\n Back\n \n
  • \n
  • \n \n {reorderMode ? (\n \n ) : (\n \n )}\n \n
  • \n
  • \n \n \n \n
  • \n
\n
\n
\n

My books

\n

\n {reorderMode ? (\n !isPaidUser(currentUser.attributes['custom:membership']) ? (\n \n \n this.props.history.push({\n pathname: '/my-account/billing',\n })\n }\n >\n Become a member\n {' '}\n to save new book order.\n \n ) : (\n \n Drag and drop to re-order books then click the check mark\n icon to save\n \n )\n ) : (\n 'Organize your journals with books'\n )}\n

\n
\n\n {isFetchUserData ? (\n
\n \n \n \n \n
\n ) : (\n \n {listOfBooks}\n
\n )}\n\n \n\n \n \n
\n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n createABook,\n getMoreUserBooks,\n getABookWithJournals,\n updateUserBookOrder,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(MyBooks))\n","import React, { Component } from \"react\";\nimport ReactModal from \"react-modal\";\nimport loadingIcon from \"../assets/images/loading.svg\";\n\nclass EditBookPopup extends Component {\n constructor(props) {\n super(props)\n this.state = {\n book: props.book,\n bookCoverImg: props.bookCoverImg,\n removeImage: false\n }\n }\n\n _closeModal = () => {\n const { bookPopupControl } = this.props;\n bookPopupControl(false);\n }\n\n _editAbook = async (e) => {\n e.preventDefault()\n await this.props.editBook(this.state)\n }\n\n _onChange = async e => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n _coverImageSelect = async e => {\n this.setState({ bookCoverImg: e.target.files[0] })\n }\n \n _removeImage = (e) => {\n this.setState({ removeImage: e.target.checked })\n }\n \n render() {\n const { showAddaBook, error, isUpdatingABook } = this.props\n const { book, bookCoverImg } = this.state\n\n return (\n
\n \n\n
\n

Edit book

\n\n
\n \n \n
\n\n
\n \n \n
\n\n {bookCoverImg &&
\n \n
}\n\n {error &&

{error}

}\n \n
\n\n \n
\n );\n }\n}\n\nexport default EditBookPopup;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport moment from \"moment\";\nimport decodeHtml from \"../utils/DecodeHtml\";\n\nclass BookJournalListItem extends Component {\n render() {\n const { journal } = this.props;\n\n return (\n
\n \n
\n \n {journal.privacy === \"PRIVATE\" && Private}{\" \"}\n {journal.draft && Draft}\n
\n

\n {(journal.journalBookId || journal.publicJournalBookId) && }\n {decodeHtml(journal.content.replace(/<(.|\\n)*?>/g, \" \").slice(0, 80))}{\" \"}\n {journal.content.replace(/<(.|\\n)*?>/g, \"\").length > 80 && \"...\"} {journal.journalWordCount && - {journal.journalWordCount} words}\n

\n\n {journal.privacy === \"PUBLIC\" &&\n
\n
\n {\" \"}\n {journal.lovedCount ? journal.lovedCount : 0}\n
\n
\n {\" \"}\n {journal.commentCount ? journal.commentCount : 0}\n
\n
\n }\n \n
\n );\n }\n}\n\nexport default BookJournalListItem;\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\n\nimport {\n getABookWithJournals,\n deleteABook,\n updateABook,\n} from '../actions/journal'\nimport { convertHEICToAny, getCompressedImage } from '../utils/ImageProcess'\n\nimport EditBookPopup from '../components/EditBookPopup'\nimport LoadingCard from '../components/LoadingCard'\nimport LoadingBook from '../components/LoadingBook'\nimport BookJournalListItem from '../components/BookJournalListItem'\nimport loadingIcon from '../assets/images/loading-dark.svg'\n\nclass BookJournals extends Component {\n _isMounted = false\n\n constructor(props) {\n super(props)\n this.state = {\n book: null,\n fetchingJournals: false,\n currentUsername:\n props.user.accountData.idToken.payload['cognito:username'],\n showAddaBook: false,\n error: '',\n isUpdatingABook: false,\n newImage: false,\n bookJournalNextToken: '',\n showLoadingIcon: false,\n }\n }\n\n async componentDidMount() {\n this._isMounted = true\n this.setState({ fetchingJournals: true })\n const { book_uid } = this.props.match.params\n await this._getJournalsByBook(book_uid)\n this.setState({ fetchingJournals: false })\n }\n\n _loadMore = async () => {\n this.setState({ showLoadingIcon: true })\n const { book_uid } = this.props.match.params\n const { bookJournalNextToken } = this.state\n await this._getJournalsByBook(book_uid, bookJournalNextToken)\n this.setState({ showLoadingIcon: false })\n }\n\n _getJournalsByBook = async (bookID, bookJournalNextToken) => {\n const bookJournals = await this.props.getABookWithJournals(\n bookID,\n bookJournalNextToken\n )\n let newBookObj = bookJournals\n if (bookJournalNextToken) {\n let journalAdded = [\n ...this.state.book.journals.items,\n ...bookJournals.journals.items,\n ]\n newBookObj.journals.items = journalAdded\n }\n this.setState({\n book: newBookObj,\n bookJournalNextToken: bookJournals.journals.nextToken,\n })\n }\n\n _editPopUp = () => {\n this.setState({\n showAddaBook: true,\n })\n }\n\n _editBook = async (newData) => {\n const { book, currentUsername } = this.state\n this.setState({ isUpdatingABook: true })\n\n if (currentUsername === book.bookUserId) {\n if (newData.bookCoverImg !== book.bookCoverImg && !newData.removeImage) {\n let file = newData.bookCoverImg\n let iPhoneExtensions = this.props.user.iPhoneExtensions\n\n // file type is only image.\n if (iPhoneExtensions.includes(file.name.split('.')[1])) {\n try {\n await convertHEICToAny(file).then((result) => (file = result))\n } catch {\n console.log('Converter not working.')\n }\n }\n if (/^image\\//.test(file.type)) {\n try {\n await getCompressedImage(file).then((result) => (file = result))\n console.log('Image is being uploaded...')\n newData.bookCoverImg = file\n const updatedBook = await this.props.updateABook({\n id: book.id,\n book: newData.book,\n bookCoverImg: newData.removeImage ? null : newData.bookCoverImg,\n bookJournalCount: newData.bookJournalCount\n ? newData.bookJournalCount\n : book.bookJournalCount,\n newImage: true,\n })\n this.setState({\n book: updatedBook,\n isUpdatingABook: false,\n showAddaBook: false,\n error: '',\n })\n } catch (err) {\n console.log(err)\n this.setState({\n error: err,\n isUpdatingABook: false,\n })\n }\n } else {\n console.warn('You could only upload images.')\n this.setState({\n error: 'You could only upload images.',\n isUpdatingABook: false,\n })\n }\n } else {\n const updatedBook = await this.props.updateABook({\n id: book.id,\n book: newData.book,\n bookCoverImg: newData.removeImage ? null : newData.bookCoverImg,\n bookJournalCount: newData.bookJournalCount\n ? newData.bookJournalCount\n : book.bookJournalCount,\n newImage: false,\n })\n\n this.setState({\n book: updatedBook,\n isUpdatingABook: false,\n showAddaBook: false,\n error: '',\n })\n }\n }\n }\n\n _deleteBook = async () => {\n const { book, currentUsername } = this.state\n\n if (book && book.journals.items.length > 0) {\n alert('You must remove all journals from the book to delete.')\n return\n }\n\n const ask = window.confirm('Do you want to permanently delete this book?')\n\n if (ask) {\n try {\n if (currentUsername === book.bookUserId) {\n const deletedBook = this.props.deleteABook(book.id)\n deletedBook && this.props.history.push('/books')\n } else {\n alert(\n 'Error deleting the journal. Please reload the page and try again.'\n )\n }\n } catch (err) {\n console.log(err)\n }\n }\n }\n\n _bookPopupControl = async (callback) => {\n this.setState({\n showAddaBook: callback,\n })\n if (!callback) {\n this.setState({\n error: '',\n })\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false\n }\n\n render() {\n const {\n book,\n fetchingJournals,\n currentUsername,\n showAddaBook,\n isUpdatingABook,\n error,\n bookJournalNextToken,\n showLoadingIcon,\n } = this.state\n\n const noJournalMessage =\n book && currentUsername === book.bookUserId ? (\n \n \n this.props.history.push('/write?bookSelected=' + book.id)\n }\n className=\"btn-secondary track-it btn-secondary-cta\"\n >\n Write a first journal of this book{' '}\n \n ✌️\n \n \n \n ) : book && book.publicJournals.items.length > 0 ? (\n
\n
\n Showing public journals from this book\n
\n {book.publicJournals.items.map((journal) => (\n \n ))}\n
\n ) : (\n \n

\n \n No public journals added\n
\n to this book yet{' '}\n \n 😅\n \n
\n

\n \n )\n\n const editPopup = book && (\n \n )\n\n const bookPresent = book && (\n
\n {book && book.bookCoverImg ? (\n
\n ) : (\n
\n )}\n

{book.book}

\n

\n \n by{' '}\n \n this.props.history.push(\n '/author/' + encodeURIComponent(book.bookUserId)\n )\n }\n >\n {book.user.displayName ? book.user.displayName : book.bookUserId}\n {' '}\n / {book.bookJournalCount ? book.bookJournalCount : 0} journal\n {book.bookJournalCount > 1 && 's'}{' '}\n \n

\n \n )\n\n return (\n \n {/* Only show Edit and Delete UI to the owner */}\n {book && currentUsername === book.bookUserId ? (\n
    \n
  • \n this.props.history.goBack()}\n id=\"mybooks_subNav_go_back\"\n >\n Back\n \n
  • \n \n \n \n \n \n \n
\n ) : (\n
    \n
  • \n this.props.history.goBack()}\n id=\"mybooks_subNav_go_back\"\n >\n Back\n \n
  • \n
  • \n
  • \n
\n )}\n\n
\n {fetchingJournals ? (\n
\n \n \n
\n ) : (\n \n {bookPresent}\n
\n {book && book.journals.items.length > 0 ? (\n \n \n \n this.props.history.push(\n '/write?bookSelected=' + book.id\n )\n }\n className=\"btn-secondary track-it btn-secondary-cta\"\n >\n Write a journal in this book\n \n
\n {book.journals.items.map((journal) => (\n \n ))}\n {bookJournalNextToken && (\n
\n {showLoadingIcon ? (\n \n ) : (\n \n Load more\n \n )}\n
\n )}\n
\n ) : (\n noJournalMessage\n )}\n
\n
\n )}\n \n\n {editPopup}\n \n )\n }\n}\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getABookWithJournals,\n deleteABook,\n updateABook,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BookJournals)\n","import React, { Component } from 'react'\nimport {\n BrowserRouter as Router,\n Route,\n Switch,\n Redirect,\n} from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { bindActionCreators } from 'redux'\nimport { getCurrentUserSession } from './actions/user'\nimport LoadingCard from './components/LoadingCard'\n\nimport Navigation from './containers/Navigation'\nimport Login from './containers/Auth/Login'\nimport Signup from './containers/Auth/Signup'\nimport ConfirmAccount from './containers/Auth/ConfirmAccount'\nimport ResendVerificationCode from './containers/Auth/ResendVerificationCode'\nimport ForgotPassword from './containers/Auth/ForgotPassword'\nimport ForgotUsername from './containers/Auth/ForgotUsername'\nimport SetNewPassword from './containers/Auth/SetNewPassword'\n\nimport MyJournal from './containers/MyJournal'\nimport WriteJournal from './containers/WriteJournal'\nimport JournalEntry from './containers/JournalEntry'\nimport PublicJournalEntry from './containers/PublicJournalEntry'\nimport EditJournal from './containers/EditJournal'\nimport Community from './containers/Community'\nimport Challenge from './containers/Challenge'\nimport Chat from './containers/Chat'\nimport ChatRoom from './containers/ChatRoom'\nimport Notification from './containers/Notification'\nimport MyAccount from './containers/MyAccount'\nimport Author from './containers/Author'\nimport Billing from './containers/Billing'\nimport Setting from './containers/Setting'\nimport CancelConfirm from './containers/CancelConfirm'\nimport NoMatch from './components/NoMatch'\n\nimport MemberLevel from './components/MemberLevel'\nimport Following from './containers/Following'\nimport Follower from './containers/Follower'\nimport LovedUsers from './containers/LovedUsers'\nimport Contact from './components/Contact'\nimport UserFeedback from './components/UserFeedback'\n\nimport MyBooks from './containers/MyBooks'\nimport BookJournals from './containers/BookJournals'\n\nimport { createNotificationSubscription } from './actions/notification'\n\nimport gnjFav from './assets/images/favicon.svg'\n\nimport ReactGA from 'react-ga'\nReactGA.initialize('UA-37230984-1')\nReactGA.pageview(window.location.pathname + window.location.search)\n\nconst PrivateRoute = ({ component: Component, ...rest }) => {\n const loading = rest.auth.isFetchingCurrentUserSession\n if (loading) return \n return (\n \n rest.auth.isAuthenticated ? (\n \n ) : (\n \n )\n }\n />\n )\n}\n\nclass App extends Component {\n constructor(props) {\n super(props)\n // Dark mode\n let d = document.getElementsByTagName('HTML')[0],\n m = localStorage.getItem('darkmode')\n if (m === 'true') {\n d.classList.add('dark-mode')\n window.ReactNativeWebView &&\n window.ReactNativeWebView.postMessage('dark-mode')\n }\n }\n\n async componentDidMount() {\n // Get real time notification\n await this.props.createNotificationSubscription()\n // Get accountData and userData\n try {\n await this.props.getCurrentUserSession()\n } catch (err) {\n console.log(err)\n }\n\n // GA event tracking\n document\n .querySelectorAll('a, button, select, .trackit')\n .forEach(function (elem) {\n elem.addEventListener(\n 'click',\n function () {\n let myId = elem.id\n ReactGA.event({\n category: 'GoodnightJournal App', //TODO: Replace this with username\n action: 'click',\n label: myId,\n })\n },\n false\n )\n })\n }\n\n render() {\n const { user } = this.props\n\n if (user.isFetchingCurrentUserSession !== false) {\n return (\n
\n \n
\n )\n }\n\n return (\n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n
\n
\n )\n }\n}\n\nconst MyAccountPage = ({ match }) => (\n
\n \n \n \n \n
\n)\n\nfunction mapStateToProps(state) {\n return state\n}\n\nfunction mapDispatchToProps(dispatch) {\n return bindActionCreators(\n {\n getCurrentUserSession,\n createNotificationSubscription,\n },\n dispatch\n )\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(App)\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { createStore, applyMiddleware, compose } from 'redux'\nimport thunk from 'redux-thunk'\nimport { Provider } from 'react-redux'\nimport rootReducer from './reducers/rootReducer'\nimport './assets/App.css'\n\nimport App from './App'\nimport * as serviceWorker from './serviceWorker'\n\nimport { StripeProvider, Elements } from 'react-stripe-elements'\n\nconst composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\nconst store = createStore(rootReducer, composeEnhancer(applyMiddleware(thunk)))\n\nconst stripePublicKey = process.env.REACT_APP_STRIPE_PUBLIC_KEY;\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","module.exports = __webpack_public_path__ + \"static/media/gnj-logo.e2f76d16.svg\";","module.exports = __webpack_public_path__ + \"static/media/loading-dark.ca969cba.svg\";","module.exports = __webpack_public_path__ + \"static/media/loading.fc934ee7.svg\";","module.exports = __webpack_public_path__ + \"static/media/watermelon-icon.e6a1ac0b.svg\";","module.exports = __webpack_public_path__ + \"static/media/happy-logo-black.b70db03c.svg\";","module.exports = __webpack_public_path__ + \"static/media/profile-pic.0beed65c.svg\";","module.exports = __webpack_public_path__ + \"static/media/happy-logo-white.92684dde.svg\";","module.exports = __webpack_public_path__ + \"static/media/bible-logo-black.140227a9.svg\";","module.exports = __webpack_public_path__ + \"static/media/bible-logo-white.7069b5cd.svg\";","module.exports = __webpack_public_path__ + \"static/media/gnj-profile-pic.e2ee9f99.svg\";","module.exports = __webpack_public_path__ + \"static/media/members-only.0fa8ad37.svg\";","module.exports = __webpack_public_path__ + \"static/media/notification-loved.3aefb491.svg\";","module.exports = __webpack_public_path__ + \"static/media/upload-img-icon.c0851538.svg\";","module.exports = __webpack_public_path__ + \"static/media/favicon.cb494b89.svg\";","module.exports = __webpack_public_path__ + \"static/media/avocado.c11a9f71.svg\";","module.exports = __webpack_public_path__ + \"static/media/community.8bee3c0e.svg\";"],"sourceRoot":""}