{"version":3,"sources":["components/icons/images/rockporch-logo.svg","sharedUtils/postFunctions.js","../node_modules/typescript/lib sync","sharedUtils/productUtils.js","sharedUtils/validationUtils.js","components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","components/ActionButton.jsx","components/icons/GridIcon.jsx","components/icons/DoubleBarIcon.jsx","components/icons/PlusIconNav.jsx","components/icons/CloseIcon.jsx","stateManagement/reducers/feedLayoutReducer.js","stateManagement/reducers/modalReducer.js","sharedUtils/httpUtils.js","sharedUtils/notificationUtils.js","components/api-authorization/BrandLoginMenu.jsx","components/BrandNavLowerMenu.jsx","components/icons/NotificationDotIcon.jsx","sharedUtils/shareLinkPrefixes.js","components/BrandNavMenu.jsx","components/icons/InformationIcon.jsx","components/api-authorization/LoginMenu.js","components/NavMenu.jsx","stateManagement/reducers/brandNavReducer.js","components/ModalHeader.jsx","components/icons/VectorIcon.jsx","components/icons/ThreeDotsHorizontalIcon.jsx","components/FormInputField.jsx","views/Post/PostThreeDotMenu.jsx","components/Modal.jsx","components/LoadSpinner.jsx","components/icons/YoutubeIcon.jsx","components/ImageWrapper.jsx","sharedUtils/authUtils.js","components/icons/GreyTickIcon.jsx","components/icons/RatingIcon.jsx","components/icons/RatingIconHalf.jsx","components/icons/RatingIconEmpty.jsx","components/icons/SaleIcon.jsx","components/AddProduct/AddProductForm.jsx","icons/RockporchLogo.js","components/icons/RockporchMountainIcon.jsx","components/AddProduct/LookupProductUrlForm.jsx","components/icons/TwitterIcon.jsx","components/icons/FacebookIcon.jsx","components/icons/PhoneIcon.jsx","components/MobileShare.jsx","components/icons/MailIcon.jsx","components/Share/ShareBlock.jsx","components/ProfileInfoCard.jsx","components/icons/BlueTickIconXY.jsx","components/UserTileGeneral.jsx","components/ProductSlide.jsx","components/icons/LikeIcon.jsx","components/icons/RightArrowIcon.jsx","components/icons/LeftArrowIcon.jsx","components/Carousel.jsx","components/icons/CommentIcon.jsx","components/icons/BookmarkIcon.jsx","components/icons/PlusIcon.jsx","components/ProductReviewUsers/ProductReviewUsersList.jsx","components/BrowseProductDetailSection.jsx","components/ProductDetailSection.jsx","components/CommentForm.jsx","sharedUtils/markupUtils.js","sharedUtils/timeUtils.js","components/CommentTile.jsx","components/icons/RightArrowIconSmall.jsx","components/icons/ShareIosIcon.jsx","views/Account/MessageReply.jsx","views/Account/MessageDetails.jsx","components/SwipeableDiv.jsx","components/icons/ThumbsUpGeneric.jsx","components/icons/Tick.jsx","views/Product/ProductPage.jsx","views/Product/AddProductModal.jsx","components/MentionsInputWrappers/MentionsInputTextArea.jsx","components/api-social/clientRequest.jsx","components/Post/Create/Instagram.jsx","components/Post/Create/TikTok.jsx","components/Post/Create/Facebook.jsx","components/Post/Create/Youtube.jsx","components/Post/Create/Sources.jsx","components/PostBanner.jsx","components/FormTextArea.jsx","components/Post/Create/PreviewCard.jsx","components/Post/Create/ShareCard.jsx","components/icons/CameraIcon.jsx","components/Post/Create/CreateNativePost.jsx","components/icons/GearIcon.jsx","components/Post/Create/Coordinator.jsx","views/Post/Create.jsx","components/CreateLocker/CreateLockerForm.jsx","components/CreateLocker/CreateLockerModal.jsx","components/FollowersFollowing/FollowersFollowingRender.jsx","components/FollowersFollowing/FollowersFollowingList.jsx","components/FollowersFollowing/CreatorsList.jsx","components/FollowersFollowing/FollowersFollowingModal.jsx","components/icons/CommentIconPlusSign.jsx","components/PostPageProduct.jsx","sharedUtils/blankFeedPost.js","views/Post/PostPage.jsx","components/PostPageModal/PostPageModal.jsx","components/ProductSelectCard.jsx","components/UserMerchantProducts/ProductsSelectorForm.jsx","components/UserMerchantProducts/ProductSelectorModalHeader.jsx","components/UserMerchantProducts/ProductSelectorModalFooter.jsx","components/UserMerchantProducts/ProductsSelectorModal.jsx","views/Locker/DeleteProductConfirm.jsx","views/Locker/EditProductCommentForm.jsx","views/Blog/BlogPage.jsx","components/BlogPageModal/BlogPageModal.jsx","views/Locker/LockerPage.jsx","components/LockerPageModal/LockerPageModal.jsx","components/ProductPageModal/ProductPageModal.jsx","components/ShareABlog/ShareABlogLookupUrlForm.jsx","components/ShareABlog/ShareABlogPreview.jsx","components/ShareABlog/ShareABlogModal.jsx","components/ShareDeepLink/ShareDeepLinkModal.jsx","components/AddProductOrDeepLink/AddProductOrDeepLinkModal.jsx","components/Share/ShareModal.jsx","components/SignUpModal.jsx","components/icons/ThreeDotsVerticalIcon.jsx","components/AddToHomescreenIOS.jsx","components/Layout.jsx","components/api-authorization/AuthorizedLanding.jsx","components/api-authorization/AuthorizeRoute.js","components/api-authorization/AdminRoute.jsx","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","components/AccountBanner.jsx","components/icons/AnalyticsIcon.jsx","views/Account/Index.jsx","views/Account/CreatorDashboard.jsx","components/icons/PenIcon.jsx","views/CreatorDashboard/CreatorDashboardHeader.jsx","views/CreatorDashboard/CreatorSettings.jsx","components/icons/InstagramIcon.jsx","components/icons/FacebookIconNoLink.jsx","components/icons/TikTokIcon.jsx","components/icons/StravaIcon.jsx","views/CreatorDashboard/CreatorDashboardProfile.jsx","views/Account/MyProductsItemDropdown.jsx","icons/CheckIconBlack.js","icons/CheckIcon.js","icons/TrailingIcon.js","views/Account/ProductRowMobile.jsx","views/Account/AllProductsRowMobile.jsx","components/EditProductModal/EditProductModal.jsx","views/Account/AllProductsItemDropdown.jsx","components/LoadSpinnerOverlay.jsx","components/NoResults.jsx","views/Account/MyProducts.jsx","views/CreatorDashboard/CreatorDashboardContactUs.jsx","components/Share/MerchantShareBlock.jsx","sharedUtils/navUtils.js","views/Account/Brands.jsx","components/icons/PinIcon.jsx","components/Feed/BlogFeedPost.jsx","components/Feed/PostFeedPost.jsx","components/Feed/LockerFeedPost.jsx","components/Feed/CurrentDealFeedPost.jsx","components/Feed/FeedPost.jsx","components/Feed/BlogFeedPostGridItem.jsx","components/Feed/PostFeedPostGridItem.jsx","components/Feed/LockerFeedPostGridItem.jsx","components/Feed/CurrentDealFeedPostGridItem.jsx","components/Feed/FeedPostGridItem.jsx","sharedUtils/userSuggestion.js","components/ProfileInfoCardOnboarding.jsx","components/Feed/Feed.jsx","components/icons/NextIcon.jsx","components/icons/PreviousIcon.jsx","views/CreatorDashboard/CreatorDashboard.jsx","components/icons/GridIconAlternate.jsx","components/FeedFilterBar.jsx","components/Feed/ProductPost.jsx","components/Feed/ProductFeed.jsx","views/Account/Saves.jsx","components/icons/AvatarIconSmall.jsx","components/AccountSidebar.jsx","views/Account/EditProfile.jsx","components/CreatorApplication.jsx","views/Account/GoPro.jsx","components/CreatorAppProfile.jsx","views/Account/CreatorApp.jsx","views/Account/AccountSettings.jsx","views/Account/ProSettings.jsx","views/Account/Drafts.jsx","views/Account/CommunicationSettings.jsx","components/SiteMapSection.jsx","views/sitepaths.js","views/SiteMap/SiteMap.jsx","components/Notification/NotificationContent.jsx","views/Account/Notifications.jsx","views/Account/Messages.jsx","views/Account/NotificationsAndMessages.jsx","views/Embed/ProductPageEmbed.jsx","views/Embed/SwipeableProducts.jsx","views/Embed/ProductPageEmbedBrand.jsx","components/DisplayProducts/DraggablePhoto.jsx","components/DisplayProducts/Photo.jsx","components/DisplayProducts/SortablePhoto.jsx","components/DisplayProducts/Grid.jsx","components/DisplayProducts/DisplayProducts.jsx","views/Locker/NewLockerPage.jsx","components/PostAuthorBanner.jsx","views/Post/PostPageAuthor.jsx","views/Blog/NewBlogPage.jsx","views/Embed/PostPageEmbed.jsx","views/Embed/BlogPageEmbed.jsx","views/Embed/FeaturedContent.jsx","views/Embed/FeaturedProducts.jsx","components/icons/YoutubeIconLink.jsx","components/icons/WebsiteLinkIcon.jsx","views/Embed/ProfileHeaderEmbed.jsx","views/Embed/ProfileEmbed.jsx","views/Embed/FeaturedPostsAndProduct.jsx","views/Embed/FeaturedPostsAndProducts.jsx","views/Embed/PostPageEmbedBrand.jsx","views/Embed/LockerPageEmbed.jsx","views/Embed/LockerPageEmbedBrand.jsx","views/Product/ProductModal.jsx","views/Merchant/MerchantPage.jsx","components/FollowSuggestions.jsx","components/ProfileInfoCardHomeView.jsx","views/Home/Home.jsx","views/Explore/Explore.jsx","components/Feed/PeopleFeed.jsx","components/SearchFilterBar.jsx","views/Search/Search.jsx","views/Browse/BrowseProductPost.jsx","views/Browse/BrowsePostPageProduct.jsx","views/Browse/BrowseProductFeed.jsx","views/Browse/BrowseBar.jsx","views/Browse/Browse.jsx","views/Profile/ProfileFilterBar.jsx","views/Profile/ProfileHeader.jsx","views/Profile/ProfileAboutSection.jsx","views/Profile/Profile.jsx","views/Profile/Links.jsx","components/UserImageWrapper.jsx","views/Profile/UserHeader.jsx","components/Feed/UserFeedCarousel.jsx","components/Feed/UserFeed.jsx","views/Profile/User.jsx","views/ErrorPage.jsx","components/Dashboard/DashboardTile.jsx","views/Admin/AdminDashboard.jsx","views/Admin/CreatorApplicationActionDropdown.jsx","components/icons/DownloadIcon.jsx","views/Admin/CreatorApplications.jsx","views/Admin/CreateCommission.jsx","views/Admin/BrandSelectorForm.jsx","views/Admin/BrandApplications.jsx","views/Admin/Brands.jsx","components/Tables/BrandTable.jsx","views/Admin/Brand.jsx","views/Admin/AffiliateNetworks.jsx","views/Admin/AmazonCommissionUpload.jsx","views/Admin/AffiliateNetwork.jsx","views/Admin/Sectors.jsx","views/Admin/ResetPasswordForm.jsx","views/Admin/Users.jsx","views/Admin/CurrentDeals.jsx","views/Admin/FeaturedContent.jsx","views/Admin/FeaturedProducts.jsx","views/Admin/FeaturedCreators.jsx","views/Admin/Featured.jsx","views/Admin/PaymentRuns.jsx","views/Admin/CreatorPaymentRunTotals.jsx","views/Admin/PaymentRunDetails.jsx","components/CommissionOverrides/UserCommissionOverrides.jsx","components/CommissionOverrides/MerchantCommissionOverrides.jsx","components/CommissionOverrides/UserMerchantCommissionOverrides.jsx","views/Admin/CommissionOverrides.jsx","views/Admin/AddUserCommissionOverride.jsx","views/Admin/AddMerchantCommissionOverride.jsx","views/Admin/AddUserMerchantCommissionOverride.jsx","components/ItOperations/ProductNotFound.jsx","components/ItOperations/ProductFeeds.jsx","components/ItOperations/ProductUpdate.jsx","components/ItOperations/ElmahLogs.jsx","components/ItOperations/ElmahLog.jsx","views/Admin/ItOperations.jsx","components/CategoryCreation.jsx","components/CategoryProductAssignment.jsx","components/ProductsWithoutCategoriesExcel.jsx","components/UploadProductCategories.jsx","views/Admin/Category.jsx","components/BrandNames.jsx","views/Admin/ManageBrands.jsx","components/AnalyticsAggregateTable.jsx","components/AnalyticsChart.jsx","components/CommissionsChart.jsx","components/TransactionsChart.jsx","components/icons/ClickBurstIcon.jsx","views/Account/AnalyticsByProductRowMobile.jsx","components/AnalyticsByProductTable.jsx","views/Account/AnalyticsByMerchantRowMobile.jsx","components/AnalyticsByMerchantTable.jsx","components/AnalyticsByPerformance.jsx","components/icons/AnalyticsIconNew.jsx","components/icons/CommissionsIcon.jsx","components/icons/SpreadsheetIcon.jsx","components/icons/SpeedometerIcon.jsx","views/Admin/Analytics/Analytics.jsx","views/Account/Interests.jsx","views/Account/OnboardInterests.jsx","views/Account/OnboardUserType.jsx","views/Account/OnboardGoPro.jsx","views/Account/OnboardGettingStarted.jsx","views/Account/OnboardWhoToFollow.jsx","views/Account/Analytics.jsx","components/BrandAnalyticsChart.jsx","components/BrandCommissionsChart.jsx","views/Account/BrandAnalytics.jsx","views/Error.jsx","views/NotFound.jsx","components/ErrorBoundary.jsx","components/Post/Create/InstagramAuth.jsx","components/Post/Create/TikTokAuth.jsx","components/Contact.jsx","components/ChatBot.jsx","App.jsx","stateManagement/reducers/counterReducer.js","stateManagement/reducers/reducer.js","stateManagement/store.js","index.js"],"names":["module","exports","trimProductsArray","productItems","map","item","i","description","userMerchantProduct","product","imageUrl","merchantProductId","id","name","price","originalPrice","salePrice","sale","shareCode","coupon","approvedCreatorsOnly","url","user","comment","userDescription","userMerchantProductId","manufacturer","merchant","integrated","ordinal","creatorCount","productId","getProperties","properties","$values","property","role","value","width","height","title","userPost","getThumbnail","thumbnail","filter","parentId","length","webpackEmptyContext","req","e","Error","code","keys","resolve","currencyFormat","toFixed","replace","titleCase","sentence","split","toLowerCase","toUpperCase","slice","join","isValidUrl","allowNoPath","rx","isValid","test","isValidPassword","password","QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","IdentityLoginPath","authService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","getUser","profile","ensureUserManagerInitialized","userManager","access_token","state","signinSilent","createArguments","silentUser","updateState","success","signinPopup","popUpUser","message","error","signinRedirect","redirect","signinCallback","console","log","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","element","index","found","splice","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","fetch","ok","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","a","removeUser","ActionButton","props","useState","Math","floor","random","toString","buttonId","displayPrompt","showMessage","Popover","placement","isOpen","target","PopoverBody","messageText","isLoading","className","onClick","style","disabled","children","isDisabled","onMouseEnter","type","GridIcon","viewBox","fill","xmlns","opacity","d","fillOpacity","fillRule","clipRule","DoubleBarIcon","PlusIconNav","CloseIcon","browse","feedLayoutState","isGrid","toggleFeedLayout","modalState","showModal","showAddProductModal","showCreateLockerModal","showProductSelectModal","showShareModal","showSharePostModal","shareLink","followersFollowing","showFollowersFollowing","userId","fetchFollowing","postPageModal","showPostPageModal","post","loggedInUser","isCommenting","parentModal","parentState","blogPageModal","showBlogPageModal","lockerPageModal","showLockerPageModal","productPageModal","showProductPageModal","isBrowse","isSearch","addProductModal","stage","productUrl","shareBlogModal","showShareBlogModal","shareDeepLinkModal","showShareDeepLinkModal","addProductOrDeepLinkModal","showAddProductOrDeepLinkModal","resetState","newState","Object","forEach","stateKey","toggleBodyScroll","shouldHide","document","querySelector","overflow","closeAllModals","toggleSharePostModal","toggleAddProductModal","toggleShareBlogModal","toggleShareDeepLinkModal","toggleAddProductOrDeepLinkModal","toggleCreateLockerModal","toggleProductSelectModal","toggleFetchFollowing","toggleShareModal","payload","toggleFollowersFollowingModal","togglePostPageModal","setPost","toggleBlogPageModal","toggleLockerPageModal","toggleProductPageModal","setProduct","jsonref","require","getRequest","shouldReturnError","getAccessToken","token","headers","Authorization","fetchInit","fetchExcel","then","result","contentType","get","includes","blob","dispositionHeader","matches","exec","filename","window","URL","createObjectURL","link","createElement","href","setAttribute","click","revokeObjectURL","parse","scope","location","parsed","text","trim","startsWith","errorMessage","substring","catch","err","postRequest","stringify","authHeader","method","body","JSON","redirected","urlWithoutQueryString","newRedirectUrl","pathname","postSpreadsheet","formData","getMessageCount","unviewedOnly","messageCountUrl","getNotificationCount","notificationCountUrl","LoginMenu","displayLayoutToggleButton","to","preventDefault","feedLayout","togglePrompt","showPrompt","setState","mapAddIconDropdown","deviceSize","action","iconPath","infoPrompt","infoPromptId","menuItem","key","display","justifyContent","mapThreeDotIconDropdown","menu","path","proStatusId","userName","nestedItems","nestedPaths","nested","NavLink","tag","Link","populateState","isAuthenticated","setDefaultProfilePicture","userDetails","firstName","lastName","bio","tagLine","website","googleUsername","facebookUsername","instagramUsername","email","phoneNumber","address","city","postalCode","country","onboardingComplete","profileBannerUrl","quickStart","protocol","host","setLoggedInUser","searchInputHandle","event","toggleShowDropdown","searchValue","redirectValue","updateSearchInput","searchOptions","searchInputSubmit","keyCode","redirectSearch","getElementById","toggleModal","showProfilePicturePrompt","clickHandler","bind","dropDownIconRef","React","createRef","_subscription","subscribe","prevProps","prevState","addEventListener","stopPropagation","searchProp","resetSearchProp","unsubscribe","logoutPath","isSmallDevice","returnUrl","search","hash","creatorCentricView","NavItem","data-toggle","src","marginTop","screenWidth","alt","right","aria-labelledby","color","collapseMenu","getReferralShareLink","isAdmin","setShowTopNav","fontFamily","fontWeight","fontSize","searchInput","dropdownOptions","label","setDropdownOptions","option","history","profilePath","flexDirection","position","top","textAlign","borderRadius","padding","renderLoginDropdown","registerPath","loginPath","local","authenticatedView","anonymousView","Component","connect","storeState","componentProps","feedLayoutReducer","withRouter","BrandNavLowerMenu","brandNavLowerMenuRef","dropdownRef","componentDidUpdate","categories","cat","level","moreMenuItems","menuVisibleUnderMore","subcategories","navHover","prevHover","hoverDropdown","hover","handleTouchStartListener","closest","current","contains","stopImmediatePropagation","handleMouseEnter","indexOf","handleMouseLeave","handleMouseEnterDropdown","handleMouseLeaveDropdown","handleCloseDropdown","handleTouchStart","menuCategories","mapSubcategories","category","parentCategoryId","subC","subName","menuName","encodeURIComponent","Date","now","mapMoreMenuItems","categoryObj","subCategory","mapMenuItems","menuVisible","more","isHovering","zIndex","onTouchStart","onMouseLeave","aria-expanded","aria-hidden","version","ref","marginLeft","transform","borderTop","marginBottom","columns","categoryName","gap","showBlogPostsFlag","paddingBottom","typeId","left","backgroundColor","objectFit","flexGrow","passive","paddingTop","NotificationDotIcon","customClass","getPostShareLink","getLockerShareLink","getBlogShareLink","getProductShareLink","hostArr","getMerchantShareLink","urlFragment","NavMenu","totalHeight","componentDidMount","showMobileSearchBar","isMobile","innerWidth","documentElement","clientWidth","showDropdown","navLong","some","isSearchResults","collapsed","hamburgerOpen","toggleMenu","browseSearchMounted","resetSearchBar","handleResetSearchBar","handleMobileSearchOpen","handleSearchInputChange","submitSearch","populateSearch","brandMobileDropdown","mapCreatorMenu","mapNonCreatorMenu","toggleSearchBar","handleInputOnBlur","relatedTarget","classList","displayHamburgerMenu","redirectUrl","breakpointWidth","ButtonDropdown","toggle","toggleNavbar","margin","DropdownToggle","paddingRight","listStyle","marginRight","redirectToSearch","submenuOpen","showTopNav","dropdownStyle","lineHeight","boxShadow","border","Fragment","browseFilterOpen","borderBottom","Navbar","light","rel","rpLogo","embed","resetBrowseSearch","handleResetBrowseSearch","handleDropdownOptionClick","handleMobileDropdownClick","overflowX","placeholder","aria-label","onChange","onKeyUp","paddingLeft","bottom","listStyleType","displayName","modalReducer","InformationIcon","x","y","outline","nativeEvent","trigger","PopoverHeader","cursor","nonCreatorStyle","flexFlow","focus","NavbarBrand","initialState","brandNavState","ModalHeader","creatorApp","VectorIcon","ThreeDotsHorizontalIcon","FormInputField","FormGroup","formGroupClass","Label","Input","inputType","onInputChange","inputStyle","readOnly","smallText","smallTextStyle","showSmallText","PostThreeDotMenu","showReport","setShowReport","setComment","setShareLink","showCopiedTextPopover","togglePopover","isDeleting","setIsDeleting","performingDelete","setPerformingDelete","deletePost","reload","useEffect","getShareLink","submitReport","userPostId","showHeader","modalDialogCustomClass","handleInput","maxWidth","navigator","clipboard","writeText","setTimeout","renderReportLink","renderEditLink","clientIdText","clientId","showDotMenu","setShowDotMenu","toggleDotMenu","showThreeDotMenu","modalCustomClass","ignoreClickAway","currentTarget","centerModal","modalDialogStyle","transparent","modalHeader","hideOpenAsPage","modalHeaderRedirect","destinationState","modalHeaderClass","modalBodyCustomClass","modalFooter","LoadSpinner","innerClassName","isSmall","YoutubeIcon","hrefStyle","ImageWrapper","useLayoutEffect","video","genId","pause","currentTime","containerRef","useRef","script","async","appendChild","remove","setImageLoaded","c","crypto","getRandomValues","Uint8Array","emptyClick","isFeed","size","poster","preload","controls","controlsList","disablePictureInPicture","tikTokPadding","dangerouslySetInnerHTML","__html","lazy","onError","onLoad","loading","getAuthorizedUserData","ignoreRedirect","encodeURI","jsonData","GreyTickIcon","RatingIcon","RatingIconHalf","RatingIconEmpty","SaleIcon","data-name","AddProductForm","addInterestFromTag","sector","newInterests","interestTags","tagInput","addSectorsToProduct","selectedSectors","sectorIds","sectorId","addProductToLockers","selectedLockers","products","displayDropdownMenu","lockers","locker","toggleSelectLocker","findIndex","displaySectors","filtered","sectors","sectorInput","isSelected","sec","updatedSectors","displayStarRating","starCount","productRating","renderStarIcon","renderStarIconHalf","onStarClick","starClick","fetchLockers","fetchTags","sort","b","handleTagInput","mapTagSuggestions","removeInterest","updatedInterests","resetForm","productManufacturer","productName","productReview","nextValue","prevValue","submitProduct","productObject","MerchantProductId","UserDescription","Rating","advance","alert","selection","showLockerDropdown","vendor","commission","loaded","firstLetter","charAt","match","estimatedCommission","productImageColumnStyling","isModal","UncontrolledPopover","onSubmit","htmlFor","isClearable","isSearchable","blurInputOnSelect","captureMenuScroll","options","data-dismiss","cancel","closeWindow","minHeight","SvgRockporchLogo","RockporchMountainIcon","LookupProductUrlForm","showLearnMore","setLearnMore","showValidationMessage","setShowValidationMessage","inputRef","isMobileDevice","userAgent","advanceButtonDisabled","bookmarkOrigin","origin","displayValidationMessage","productNotFound","productNotFoundMessage","customStyle","shareBlockStyle","defaultValue","onKeyPress","onKeypress","background","TwitterIcon","clipPath","FacebookIcon","username","PhoneIcon","stroke","strokeWidth","MobileShare","share","handleOnClick","MailIcon","ShareBlock","showCopied","setCopiedText","showCopied2","setCopiedText2","showCopied3","setCopiedText3","showCopied4","setCopiedText4","setRenderDirect","postEmbedCode","setPostEmbedCode","lockerEmbedCode","setLockerEmbedCode","setProductEmbedCode","postEmbedBrandCode","setPostEmbedBrandCode","blogEmbedCode","setBlogEmbedCode","lockerEmbedBrandCode","setLockerEmbedBrandCode","productEmbedBrandCode","setProductEmbedBrandCode","profileEmbedCode","setProfileEmbedCode","referralShareCode","setReferralShareCode","setShareCode","shareType","setShareType","embedHost","parsedShareCode","isUserMerchant","lastIndexOf","embedUrl","brandUrl","iframe","brandIframe","addShareSubdomainMerchant","addShareSubdomainProduct","route","shareSubdomain","hostname","handleGoogleAnalytics4","gtag","send_to","event_category","event_label","port","renderCopiedText","renderCopiedText2","renderCopiedText4","verticalAlign","ProfileInfoCard","renderFollowButton","followAction","isFollowing","renderMessageButton","messageAction","noDiv","BlueTickIconXY","ownProps","brandNavReducer","subtitle","truncateUsername","useLargeAvatars","brandEmbed","originalImageUrl","open","tableLayout","textOverflow","whiteSpace","showCheckMark","prostatusId","brandNav","disableLink","blogSmall","params","content","class","visibility","renderPost","LikeIcon","strokeOpacity","RightArrowIcon","LeftArrowIcon","Carousel","data-ride","images","imgUrl","data-slide","carouselIcons","CommentIcon","BookmarkIcon","PlusIcon","ProductReviewUsersList","displayButtonText","displayRatings","ratings","smallSizes","userTileStyle","buttonClass","rating","buttonText","editing","unfollowUser","followUser","fetchRatings","ratingIndex","BrowseProductDetailSection","ratingCount","likes","collapsedContentStyle","maxHeight","expandedContentStyle","contentStyle","setContentStyle","merchantOverflow","setMerchantOverflow","showUserReviewList","setShowReviewList","contentRef","merchantRef","useCallback","node","offsetHeight","displayTableRows","showMerchant","referrer","buyAction","btnStyle","logoUrl","overflowWrap","handleGoogleAnalytics4BuyButton","displayManufacturer","concatMerchantProduct","loadingPartial","onStarHover","starHover","onStarHoverOut","starHoverOut","marginleft","toggleSignUpModal","renderThumbsUpOverlay","productInfo","ratingIcons","renderRatingIcons","ProductDetailSection","commissionable","loadingBuy","pointerEvents","renderBuy","CommentForm","debounceFunc","debounce","query","res","fetchUsers","commentsTextArea","commentText","allowSuggestionsAboveCursor","handleCommentInput","displayTransform","markup","renderSuggestion","entry","highlightedDisplay","focused","submittingComment","postComment","onTouch","handleHashtags","handleCommentMarkup","onlyText","newTab","fullMatch","replaceUrls","urlRegex","links","DateTime","convert","dateTime","relative","toUTC","getMonth","diff","fromISO","toISOString","seconds","toRelative","toLocaleString","getMinutesBetweenDates","startDate","endDate","getTime","getDaysBetweenDates","convertToLocaleDateTimeString","convertedDate","DATE_FULL","convertToAbbreviatedMonthAndDay","month","day","convertToAbbreviatedMonthAndDayAndTime","hour","minute","convertToNameOfWeekdayAndTime","weekday","convertToNumericMonthAndDay","convertToNumericMonthAndDayAndYear","year","locale","convertToNumericMonthAndDayAndYearAndTime","asDate","minus","millisecond","second","CommentTile","isReply","retVal","createdOn","alignItems","likeAction","commentKey","likedByUser","replyCount","replies","reply","postedBy","postedTime","profilePicture","renderReplies","RightArrowIconSmall","ShareIosIcon","enableBackground","MessageReply","divRef","checkLines","computedStyle","getComputedStyle","borderTopWidth","borderBottomWidth","handleTextMarkup","render","paddingClass","formattedDate","MessageDetails","sender","newMessage","messageDetails","initialLoad","replyStyle","sendButtonRef","refreshState","timer","setInterval","messageDetailsUrl","conversationId","scrollIntoView","handleMessageInput","scrollHeight","onKeyDownMessageInput","ctrlKey","onClickSend","receiverId","renderMessageThread","showDate","createdDate","onClickBack","resize","onKeyDown","rows","clearInterval","SwipeableDiv","handlers","useSwipeable","onSwiped","eventData","onSwipedLeft","onSwipedRight","onSwipedUp","onSwipedDown","onSwiping","onTap","preventDefaultTouchmoveEvent","trackMouse","xmlnsXlink","xmlSpace","Tick","ProductPage","noCommission","loadingComments","loadingNextLinkedPosts","loadingPrevLinkedPosts","commentInput","linkedPostPage","lastLinkedPostPage","userDescriptionPage","userDescriptions","userRating","displayRating","referalLink","savedByUser","comments","linkedPosts","modalOpen","showMessageDetails","hidePageExtras","displayAddedToInventoryPrompt","redirectOccurred","showRecommendedFlag","fetchProduct","addProductToInventory","addModel","updatedProductInfo","inUserInventory","onClickMessage","newModalOpen","getInUserInventory","prod","getLikes","count","getRating","average","likeCommentAction","like","getSavedByUser","saveAction","newLike","likeCount","parseInt","likeByUser","totalCount","concat","loadPreviousComments","skip","take","renderLoadPreviousComments","renderComments","loadUserDescriptions","loadLinkedPosts","pageNumber","ceil","totalLinkedPosts","prevUserDescriptionPage","nextUserDescriptionPage","renderUserDescriptionPagination","renderLinkedPostsPreviousPage","prevPage","nextPage","renderLinkedPostsPageCount","renderLinkedPostsNextPage","renderLinkedPosts","renderPostComment","renderBookmarkOverlay","renderShareOverlay","toggleCreatorsModal","displayAddToInventory","onTouchEnd","getPageTitle","productPageRedirectGoogleAnalytics4Tracking","decodeURIComponent","URLSearchParams","search2","showBrandNav","populateData","forRedirect","baseUrl","hasOwnProperty","ratingAverage","ogTitle","ogDescription","ogImage","Helmet","renderModal","expandDialog","interactionState","interactionReducer","AddProductModal","advanceStage","newStage","fetchProductInformation","productDetails","close","finishedCreating","fullProduct","productShareCode","addedProductDetails","localStorage","setItem","Event","dispatchEvent","localUrl","encoded","inputUrl","renderForm","decodedUrl","modalUseCase","MentionsInputTextArea","instance","axios","create","setDelay","clientRequest","delay","Promise","reject","request","ClientRequest","endpoint","InstagramAuthApi","appId","_appId","_authorization","_authHeader","authorize","doAuthorize","doInitAsync","doGetAuthorizationTicket","authorization","authorizationST","_authApi","s","screen","l","t","features","handleLoad","popup","interval","closed","qs","authResponse","nvp","onload","sessionAuthorization","instagramSession","isAuthorized","removeItem","getItem","InstagramClientApi","accessToken","_accessToken","criteria","fields","handleResolved","handleRejected","after","ALL_MEDIA_FIELDS","limit","_clientApi","_clientHandle","InstagramClient","_headers","init","login","logout","getChannelsFor","getPostsFor","getUserProfile","userProfile","channel","promise","posts","paging","cursors","clientApi","getUserMedia","val","targetModelFrom","sourceModel","targetModel","caption","permalink","media","platformName","publishedOn","timestamp","raw","sourceMediaModel","targetMediaModel","duration","imageLink","isExternalReference","thumbnailLink","videoLink","media_type","media_url","thumbnail_url","childModel","getMe","isInitializing","api","isInitialized","authApi","elements","tasks","args","getAttribute","task","html","innerHTML","pop","instgrm","Embeds","process","doEmbed","instagramClient","TikTokAuthApi","redirect_uri","startIndex","endIndex","decodeURI","auth","TikTokClientApi","max_count","TikTokClient","_open_id","open_id","embedHtml","embed_html","embedWidth","tempWidth","Number","isInteger","video_description","cover_image_url","embedLink","create_time","videos","has_more","initialVal","display_name","avatar_url","tikTokClient","_userProfile","getFB","FB","fjs","querySelectorAll","js","parentNode","insertBefore","facebookApi","requiredPermissions","handleAuthStatusChange","grantedScopes","handlePermissionsResponse","permission","perm","FacebookClient","channels","handleError","handleResponse","next","pretty","permalink_url","created_time","attachments","sourceAttachmentModel","targetAttachmentModel","source","image","subattachments","sourceSubattachmentModel","img","include_hidden","show_expired","handleMeReply","picture","cookie","xfbml","p","getLoginStatus","ex","return_scopes","enable_profile_selector","XFBML","facebookClient","ytAuth","setAuthorization","setUserProfileInternal","getYoutubeClient","google","getAuthInstance","accounts","oauth2","initCodeClient","client_id","ux_mode","setYtAuthNull","error_callback","setUserData","id_token","encodedPayload","atob","sub","YoutubeClient","sourceItem","item_snippet","snippet","contentDetails","relatedPlaylists","uploads","videoCount","statistics","items","nextPageToken","isFullyLoaded","resourceId","videoId","publishedAt","playlistItem","updateModels","videoModel","player","widthStartIndex","widthEndIndex","heightStartIndex","heightEndIndex","thumbnails","default","medium","high","standard","maxres","filteredThumbs","child","videoIds","model","handleInnerResolved","apiKey","client","requestCode","checkVariable","revoke","onReady","YT","Player","youtubeClient","SvgFacebook","SvgFile","SvgInstagram","SvgUnauthorized","SvgYoutube","SvgTikTok","SourceItem","isActive","sourceIcon","authorizeIcon","onSourceSelected","onLogout","onLogin","handleLinkClick","idAttr","$","parents","attr","isReady","loginComplete","Sources","onSourceChanged","authIcons","icons","context","selectedIndex","isEnabled","PostBanner","currentMedia","setMedia","mediaPageHandlers","nextMedia","prevMedia","blogEmbed","imageStyle","pic","FormTextArea","PreviewCard","setMediaIndex","captionInput","setCaptionInput","handleMounted","postImages","values","blog","handleContentInput","ShareCard","onSelected","mediaIndex","postState","setPostState","defaultThumbnail","setImageLink","altImageLink","setAltImageLink","postId","setPostId","handleSelected","currentImage","CameraIcon","CreateNativePost","fetchSectors","activateFileInput","sectorIsSelected","selectedClass","sectorFilterInput","removeSector","addSector","displayBanner","setNativePostCaption","selectMediaToUpload","urls","files","urlDetails","setNativePostMedia","setNativePostMediaUrls","selectedFilesRaw","selectedFilesUrls","currentDisplayImageIndex","whiteBg","accept","multiple","GearIcon","enable-background","_coordinatorLoadStatus","Coordinator","onModalClosed","isPreviewMode","setPreviewMode","setReady","setError","useHistory","sources","componentDidUpdateRef","postCaption","setPostCaption","nativePostMedia","nativePostSectors","setNativePostSectors","nativePostMediaUrls","setLoading","showRemoveAccess","setShowRemoveAccess","doLoad","config","igResult","instagramInit","instagram","fbResult","facebookInit","facebook","ytResult","youtubeInit","youtube","ttResult","tiktokInit","tiktok","tikTok","clientKey","doLoadChannelsAsync","activeSource","getSelectedSource","targetList","targetData","sourceData","doSelectChannelAsync","doLoadPostsAsync","activeChannel","getSelectedChannel","modelString","stack","doLoginAsync","doLogoutAsync","handleRevokeAccess","handleLogoutAsync","doClearPostSelection","j","doSelectPost","activePost","getSelectedPost","doSelectSourceAsync","selectedChannel","selectedUserProfile","getSelectedUserProfile","selectedPost","selectedSource","sourceIndex","handleLoadPostsAsync","handleLoginAsync","handleSelectSourceAsync","handleModalClosed","handleSavePost","embeddedHtml","justCreated","handleSaveNativePost","sectorModels","createdPost","FormData","append","mediaUploadUrl","handleSelectChannelAsync","handleSelectPostAsync","handleTogglePreview","removeNativePostSector","updated","addNativePostSector","handleSelectNativePostMedia","activeUserProfile","hideModal","searchClientId","previewClientId","channelsData","renderPostCards","postData","renderPosts","postsData","shareCards","dataLength","hasMore","scrollableTarget","shareCard","renderShareCards","nativePostCaption","isSocialPost","mediaItems","postPreviewData","captionValue","renderPreviewPost","ModalFooter","Button","renderPreviewModal","modalClassName","scrollable","aria-haspopup","renderChannels","renderGear","ModalBody","renderSearchModal","hideArrow","Create","setShowModal","CreateLocker","interests","formState","setFormState","setTagInput","tagSuggestions","setTagSuggestions","setFinishedCreating","lockerShareCode","setLockerShareCode","isCreatingLocker","setIsCreatingLocker","lockerCreateMessage","setLockerCreateMessage","userSectorModels","platformTypeId","tags","mappedResults","input","createButtonDisabled","suggestion","alreadySelected","interest","newTags","newFormState","removeTag","addTag","mapTagSuggestionsAlternate","closeModal","mapDispatch","CreateLockerForm","FollowersFollowingRender","follow","followUnfollow","followersOrFollowing","users","isFollowingChange","setUsers","mapUsers","heading","followingFollowersCreatorsLength","finishedFetching","fetchMore","FollowersFollowingList","fetchFollowers","followers","following","finishedFetchingFollowers","finishedFetchingFollowing","isFollowers","isCreators","CreatorsList","fetchCreators","creators","finishedFetchingCreators","CommentIconPlusSign","saleIconNever","renderSaleOverlay","isBrandSmall","aboveTheFold","showDescription","productKey","displayIcon","blankFeedPost","postedOn","merchantProducts","productCode","merchantProductCode","commentCount","$type","$id","$ref","reference","flags","PostPage","bioRef","titleRef","picRef","userTileRef","editPostButtonRef","notOverflowedContentStyle","removeCommentUsername","fetchIsFollowing","fetchLikes","fetchPost","fetchComments","likePost","num","newLikes","newPost","likeComment","requestObject","savePost","reqBody","dataToPost","setSeconds","getSeconds","dummyComment","page","productPage","renderProductPagination","toTitleCase","string","renderInfoOverlay","renderProductImages","toggleDescriptionModal","productIndex","newModalState","showDescriptionModal","selectedProduct","renderDescriptionModal","renderCommentForm","renderCommentSectionHeading","totalComments","renderSectors","contentSection","contentOverflowed","contentSectionSmall","scrollOptions","behavior","lockerNotFound","scrollTo","trackBaseUrl","picHeight","userTileHeight","editButtonHeight","contentHeight","titleHeight","largeScreenContentHeight","str","substr","toggleProductModal","paramProps","ProductSelectCard","isExisting","select","displayCheckBox","ProductsSelectorForm","setProducts","filteredProducts","setFilteredProducts","setUser","loadingMore","setLoadingMore","setSearchProp","finishedFetchingProducts","setFinishedFetchingProducts","loadData","searchFilter","loadSearch","fetchProductsForSearch","fetchUser","fetchProducts","totalProducts","handleSelect","selectProduct","isProductExisting","existingProducts","find","loader","arrayKey","selectedProducts","mapProducts","ProductSelectorModalHeader","searchHandle","ProductSelectorModalFooter","isAdding","setIsAdding","displayCount","addToLocker","postShareCode","postForProductSelection","hidScrollBar","setHidScrollBar","setSearchFilter","setSearchFilterProp","newProducts","exists","DeleteProductConfirm","showDeletePrompt","cancelDelete","confirmDelete","EditProductCommentForm","productComment","formInput","setFormInput","isSaving","setIsSaving","save","BlogPage","blogTitleRef","blogPageRef","updatePosition","contentRect","getBoundingClientRect","componentRect","elementToPosition","addProductsToLocker","productMap","userMerchantProductIds","getPageData","displayProductImages","isEditingProducts","deletingProduct","isEditing","displayComments","displayCommentForm","displayCommentSectionHeading","displayEditLockerLink","saveLocker","displayProductEditButtons","modal","displayTags","likeLocker","newLocker","today","refreshLocker","removeProductFromLocker","updatedLocker","saveDescriptionChange","userPostProductItemTypeId","isAddingProducts","bioHeight","removeEventListener","messageUser","LockerPage","imageSrc","setIsAddingProducts","handleAddProducts","toggleLockerModal","togglePostModal","modalDialogExpanded","setDialogExpanded","productModalClass","ShareABlogLookupUrlForm","urlInput","setUrlInput","invalidUrl","setInvalidUrl","setIsLoading","showError","setShowError","validUrl","fetchLinkPreview","linkPreview","handleUrlSubmit","handleSubmit","handleOnChange","ShareABlogPreview","reduceLevel","actionLevel","handleNext","blankPost","resourceLink","setValidUrl","setActionLevel","advanceLevel","lp","merchantExists","setMerchantExists","merchantId","setMerchantId","setRedirectUrl","resetParams","fetchMerchantByUrl","handleDeepLinkChange","autoFocus","minWidth","resultType","setResultType","loadingManualProductCreation","setLoadingManualProductCreation","doManualProductCreation","setDoManualProductCreation","manualProductCreationFailed","setManualProductCreationFailed","setManufacturer","setName","setDescription","setPrice","setProductCode","setImageUrl","invalidPrice","setInvalidPrice","resetUrlInput","handleLogic","handleGoogleAnalytics4Bookmark","fetchProductOrDeepLinkByUrl","requestData","productOrDeepLinkResult","returnType","renderManualProductCreation","reloadCreatorDashboardAnalyticsData","displayMerchantNotIntegratedMessage","displayProductAddedMessage","parseAndValidatePrice","numericValue","parseFloat","isNaN","submitManualProductCreation","manualProduct","MerchantProductCode","displayProductData","alignSelf","renderAddManualProductCreation","shareUrl","SignUpModal","backgroundImage","backgroundPosition","ThreeDotsVerticalIcon","AddToHomeScreenIOS","closePrompt","backdrop","isIOS","Layout","toggleShowModal","newModal","setBrandNavState","BrandNavMenu","mobileSearchOpen","showSignUpModal","AuthorizedLanding","AuthorizeRoute","handleAuthPopupRedirect","authPopup","component","jsx","popUpAuthentication","finished","jsxVal","ready","authenticated","authenticationChanged","populateAuthenticationState","launchAuthPopup","navRedirect","rest","AdminRoute","renderLoggingIn","getReturnUrl","processLoginCallback","redirectToProfile","redirectToRegister","signIn","setIsLoggedInCookie","navigateToReturnUrl","todayEpoch","todayDate","exDate","getFullYear","getDay","domain","completeSignIn","fromQuery","redirectToApiAuthorizationPath","apiAuthorizationPath","Logout","renderLoggedOut","showLogin","processLogoutCallback","signOut","completeSignOut","ApiAuthorizationRoutes","loginAction","logoutAction","AccountBanner","creatorCentric","breadCrumbList","breadcrumb","active","aria-current","showBreadcrumb","AnalyticsIcon","AccountIndex","renderGoPro","CreatorDashboard","renderProducts","renderPartners","renderProSettings","renderDrafts","PenIcon","CreatorDashboardHeader","profilePicUpdate","profilePicUploadError","uploadingImage","setSelectedFile","file","profilePicUpdated","uploadProfilePicUrl","onClickImageUpload","avatarStyle","hidden","renderCalendly","CreatorSettings","parseUserInfo","fetchUserCommunicationPreference","paymentEmail","userInformation","updateUserInformation","cancelEdit","persistentPaymentEmail","resetCancelEdit","isLoadingSaleMade","ucp","updateSettings","ucpInit","ucpObject","salesEmail","checkEmailCriteria","validEmail","formKey","newData","updatePaymentEmail","onUcpInputChange","propsUserInformation","persistanceUpdated","persistentUserInformation","editMode","paymentEmailPopover","hideDisplay","toast","icon","savePaymentEmail","isSavingPaymentEmail","Form","CustomInput","checked","InstagramIcon","y2","x2","y1","x1","offset","stopColor","gradientUnits","gradientTransform","xlinkHref","FacebookIconNoLink","TikTokIcon","StravaIcon","CreatorDashboardProfile","getSectors","setPersistentSectors","persistentSectors","stillAvailableSectors","allSectors","allSector","addUserSector","updateSectors","deleteUserSector","tikTokUsername","stravaUsername","userSectors","activeSectors","fetchingSectors","toggleAdditionalCategories","setSectors","saveBasicSettings","downwardChevron","upwardChevron","renderEditSectors","overflowY","textDecoration","normalizedInstagram","urlPrefix","userInformationField","social","displaySocials","MyProductsItemDropdown","setIsOpen","Dropdown","forMobile","caret","DropdownMenu","DropdownItem","editClick","hideClick","SvgCheckIconBlack","SvgCheckIcon","fillColor","SvgTrailingIcon","ProductRowMobile","isLoadingShareCode","setIsLoadingShareCode","pstyle","handleGetLink","analytics","addUserMerchantProductIfNotAddedAlreadyAndGetLink","commissionId","getLinkUrl","flex","AllProductsRowMobile","isAdded","setIsAdded","addedProduct","updatedProduct","handleAdd","handleShare","showAdd","Collapse","EditProductModal","sectorFilter","setSectorFilter","setProductRating","saving","setSaving","productSectors","secId","saveDescription","saveSectorChanges","submitRating","AllProductsItemDropdown","LoadSpinnerOverlay","NoResults","MyProducts","tab","updateProducts","fetchAllProducts","reset","allProductsClearFilter","searchIcon","mostRecentSearch","updatedProducts","allProducts","searchingAllProducts","results","finishedFetchingAllProducts","searchingAllProductsMore","hide","isHidden","handleGoogleAnalytics4GetLinkButton","addingProduct","added","displayTableHeader","header","wordWrap","displayShareModal","toggleProductShareModal","showEditProduct","productToEditIndex","displayAllProductsRows","showAllProducts","showProductsMobile","fetchMoreProducts","displayProductsMobile","edit","displayAllProductsMobile","showAllProductsMobile","fetchCounts","productCountUrl","productCount","basePath","saveProductSectors","updateProductDescription","updateProductRating","productIndexInProducts","productIndexInFilteredProducts","updatedFilteredProducts","updateProductSectors","onAllProductsInputKeydown","onInputKeydown","resetFilter","displayGetLinkModal","getLinkPopover","onTabChange","creatorDashboard","productDescription","searchAllProducts","CreatorDashboardContactUs","handleContactClick","mailtoLink","MerchantShareBlock","queryString","Proxy","searchParams","prop","paramName","Array","from","showbrandnav","getQueryStringParams","Brands","all","getPartners","getPartnerSectors","getCurrentDeals","filterPartners","currentDealsInitial","partners","currentDeals","addMerchantNameAndLogoToDeals","dealsWithOrdinal","deal","dealsWithoutOrdinal","sortedDealsWithOrdinal","finalCurrentDeals","deals","merchants","setHours","correspondingMerchant","merchantName","merchantLogoUrl","filteredPartners","partnerSectors","bounce","shareProps","partner","featuredCount","redirectToMerchatUrl","thirtyDaysPriorToToday","setDate","getDate","newLabel","integratedDate","featuredLabel","shareBtn","commissionPercentage","roundedCommissionPercentage","endsWith","handleSortSelect","selectOptions","currentValue","finalFilteredPartners","partnersWithOrdinal","partnersWithoutOrdinal","filteredArray","fa","sortedPartnersWithOrdinal","partnersFilteredBySectors","partnerSector","v","filteredPartnerSector","saveUser","serializedUser","recentlyAdded","largeScreen","redirectToMerchantUrl","lastCard","lastRowIndex","dateString","toLocaleDateString","dealStyle","isMulti","renderDeals","PinIcon","iconSrc","isFilled","fillBackground","currentDisplayedMedia","setProductPage","productPageHandlers","nextPicture","prevPicture","setContentOverflowed","offsetWidth","scrollWidth","renderProductCount","newMedia","renderDotMenu","showPins","disablePointerClass","pinnedDate","togglePinned","displayPin","formattedContent","displayTextContent","mapProductImages","setCollapsed","dateObject","showUserTile","disableRedirects","renderUserTile","FeedPost","expanded","setTitleOverFlowed","pRef","trimmedProducts","trimmedProperties","isOverflowing","isAbsolute","radius","renderTitle","noProductsExist","renderContent","hideItemCount","FeedPostGridItem","isPictureAndProducts","fetchUserSuggestions","blankUserSuggestion","setWhoToFollows","getData","whoToFollows","suggestions","populated","setWhoToFollowsPopulated","onFollowClick","whoToFollow","newWhoToFollows","renderUserDetails","renderWhoToFollow","mapImages","Feed","postsCopy","locationToDelete","updatedPosts","updateParent","postRef","update","updateObj","mapPosts","isPopulated","whoToFollowsPopulated","finishedLoading","displaySuggestions","textAalign","clickable","showFollowSuggestions","NextIcon","points","PreviousIcon","CustomSingleValue","handleInfoClick","toggleDropdown","SingleValue","infoTab","menuIsOpen","mobile","sharePath","handleDragLeave","updatePersistantUserInformation","getCreatorDashboardAnalytics","selectedOption","selectContentOptions","handleContentSelect","queryTaskActions","fetchTaskList","getPaymentEmail","fetchActivityFeed","activeIndex","selectOption","toggleDisplay","basic","creatorDisplay","basicDisplay","screenX","dateRange","getDateRange","updateQueryString","fromWhere","tagName","forceUpdate","newSearch","getAnalyticsUrl","toSQL","includeOffset","analyticsLoading","paymentEmailObject","updateBasicUserInformation","basicUserInformation","updateCreatorSettingsInformation","creatorSettingsInformation","profileBanner","rpManagerUserId","setActionId","hideTasks","queryStringTasks","initialCall","taskList","taskListWithNoUserId","userTaskId","taskActionId","hideTaskActions","postTaskItemCompleted","taskItem","upload","taskName","handleChevronClick","selectToggle","arrayCount","previous","infoNext","activeInfoIndex","infoPrevious","goToIndex","goToInfoIndex","renderAnalytics","actionType","linkText","money","goToSavedLinks","itemStyles","lastItemStyles","borderRight","itemsPerSlide","menuChunks","menuRender","chunk","CarouselItem","totalSales","totalCommissions","commissionableLinksCreated","totalClicks","lockersCreated","keyboard","CarouselIndicators","onClickHandler","handleTaskActionClick","contentMenuElement","block","nextTask","actionId","taskAction","previousTask","finishTasks","renderTaskOrderingIcon","character","selected","renderTasks","actionTaskId","handleTaskHeaderClick","renderTaskActions","taskId","toggleGrid","newIsGrid","sum","reduce","lockerCount","userPostTypeId","postCount","lockerIds","postIds","lockersToAdd","postsToAdd","activityFeed","finishedFetchingActivity","finishedFetchingPosts","finishedFetchingLockers","fullProducts","productList","postResults","fetchPosts","tabIndex","isSavingBasicSettings","selectedSectorIds","saveCreatorSettings","isSavingCreatorSettings","creatorSettingsEditMode","profilePageRedirect","addLockerModal","createCommissionableLink","toggleEditMode","cancelCreatorSettingsEdit","resetCancelCreatorSettingsEdit","editCreatorSettingsRedirect","o","contentMenu","editPaypalEmail","paymentEmailElement","redirectToCalendly","popupWindow","toggleShowLearnMore","learnMore","displayContent","screenHeight","updates","multiplesNumber","redirectToCreateCommissionableLinkVideo","redirectToShareLinkVideo","redirectToBookmarkVideo","redirectToCreateFirstLockerVideo","redirectToCreateStoriesVideo","redirectToExplore","whereFrom","buttonStyle","draggable","seeMore","toggleProfileShareModal","resetInfoIcon","renderInfoIcon","tab1Items","float","renderOption","last24Hours","days","last7Days","plus","last30Days","last90Days","yearToDate","lastYear","uploadingProfileBanner","selectedFile","selectedFileUrl","uploadingBackground","selectedCase","borderLeft","borderColor","components","Option","styles","control","provided","outerHeight","container","indicatorSeparator","indicatorContainer","valueContainer","singleValue","GridIconAlternate","FeedFilterBar","toggleAction","showFullContent","setShowFullContent","showAddedToInventoryPrompt","setAddedPrompt","ratingsUserMerchantProductId","setRatingUserMerchantProduct","renderRatingsModal","addToInventory","showRecommendations","displayStarRatings","renderProductDetails","cropText","ProductFeed","loc","likeProduct","productsCopy","saveProduct","saved","singleColumn","renderAddProductOverlay","displayUserReviewList","Saves","fetchSavedPosts","postTypes","postType","fullUrl","fetchSavedProducts","displayToggleButtons","case","fetchMorePostsOrLockers","postsToChange","newPosts","displayFeed","postsToShow","updatePosts","AvatarIconSmall","AccountSidebar","readOnlyFields","userFormData","profileUrl","strava","EditProfile","setFormData","profilePicUrl","setProfilePicUrl","profilePic","setProfilePic","savingProfile","setSavingProfile","setProfilePicUpdated","setUploadingImage","showSavedProfile","setShowSavedProfile","setProfilePicUploadError","convertToFormData","mapInputFields","field","prepend","maxLength","submitDisabled","renderSubmit","CreatorApplication","spinner","referralUserIdFlag","upcomingInput","showPlatformUserNameMounted","upcomingProjects","showPlatformUserName","platform","selectedPlatform","renderNext","hearAboutUsRendered","referralUserId","audienceNotUsOrUsPlusState","audience","usState","mediaPermission","realName","phone","platformUsername","hearAboutUs","renderBackApply","apply","renderStates","renderPage0","defaultCountry","onInputChangePhone","handleHearAboutUsChange","handleFileChange","handleUpload","renderPage1","renderPage2","savedFileNames","fileInput","renderSavedFileNames","renderPage","fileName","formattedFileName","postFrequency","timeCommitment","GoPro","setModalOpen","CreatorAppProfile","anonymous","onInputAdditionalPlatformsChange","additionalPlatforms","renderAdditionalPlatforms","platformObj","addAdditionalPlatform","isAdditionalPlatformAddable","deleteAdditionalPlatform","isReadyToApply","emailExists","validPassword","validUserName","usernameExists","confirmedPassword","confirmedEmail","agreeToTerms","howWillUseRockporch","interested_in_product_seeding_campaigns","platforms","platformUserName","submitWithUnansweredRequiredFields","highlightRequiredFields","countryId","stateId","referredByFriendSelected","onNewUserNameInputChange","placeHolder","countryid","whyRockporchToday","handleAgreeToTerms","for","CreatorApp","debounceNewUserNameInputChange","checkPasswordCriteria","hasUpperCase","hasLowerCase","hasDigit","debounceEmailInputChange","checkUserNameExists","checkEmailExists","affiliateMarketingExperience","convertToUserModel","onUserRelatedInputChange","updatedObject","renderConfirmationModal","userIsCreator","tempObject","newPlatformWithId","waitForModalClose","checkModalOpen","createNewUser","userModel","excelError","postingExcel","userI","readonly","uploadedFileNames","link1","link2","crossOrigin","link3","head","linkElements","Image","removeChild","defer","AccountSettings","minLengthMessage","doesNotMatchMessage","requiredCharactersMessage","debounceEmailLookup","enableEmailSubmit","emailMessageStyle","emailMessage","newPassword","confirmPassword","formkey","passwordMessageStyle","passwordMessage","onEmailSubmit","renderPasswordSubmit","renderEmailSubmit","onEmailChange","renderEmail","renderPassword","ProSettings","formEmail","onInputChangeEmail","savingEmail","enabled","renderPersonalInfo","renderPaymentInfo","Drafts","fetchDrafts","finishedFetchingDrafts","fetchMoreDrafts","moreDrafts","uniquePosts","updateFeed","CommunicationSettings","userCommunicationPreference","setUserCommunicationPreference","SiteMapSection","Title","Paths","Name","Path","SiteMap","renderPaths","paths","locations","NotificationContent","notification","notificationType","userNotificationTypeId","isCommentMentionNotification","isCommentNotification","commentingUserName","postingUserName","isCommentingOn","Notifications","notifications","notificationsPerPage","notificationCount","pagingControls","getNotifications","snapshot","notificationsUrl","renderHeaderLine","onClickNotification","n","userNotificationId","viewedDate","UTC","onClickPost","userPostShareCode","onClickProduct","userMerchantProductCoupon","renderNotification","userMerchantProductCommentText","userPostCommentText","userPostContent","renderNotifications","onClickPage","renderPagingControls","pageCount","Messages","messages","messagesPerPage","messageCount","getMessages","setOnSelected","messagesUrl","renderMessages","m","NotificationsAndMessages","notificationsSelected","onMessagesSelected","unviewedMessageCount","unviewedNotificationCount","messagesSelected","setOnMessagesSelected","func","clicked","setNotificationsSelected","unlisten","listen","ProductPageEmbed","onlyIntegrated","brand","ProductPageEmbedBrand","manufacturerRef","redirectToProductPage","dummyProductData","messageTotalHeight","messageObj","messageString","parent","postMessage","productInFeedStyle","borderWidth","DraggablePhoto","Photo","forwardRef","dimensionsRef","productItem","faded","inlineStyles","backgroundSize","backgroundRepeat","touchAction","listeners","SortablePhoto","useSortable","attributes","isDragging","setNodeRef","transition","CSS","Transform","Grid","DisplayProducts","setItems","prevItems","setPrevItems","startPosition","setStartPosition","endPosition","setEndPosition","setId","activeUrl","setActiveUrl","setUpdated","setHover","sensors","useSensors","useSensor","MouseSensor","TouchSensor","activationConstraint","distance","setHeight","setWidth","saveProductsReorder","saveOridinalsModel","max","min","finalOrdinal","reorderProductsInPost","collisionDetection","closestCorners","onDragStart","onDragOver","over","onDragEnd","onDragCancel","strategy","removeProductFromPost","activeIdentity","overId","oldIndex","newIndex","arrayMove","NewLockerPage","bannerImage","deletedLocker","unsortedLocker","lockerNameChange","lockerContentChange","mentionSuggestions","publishingChanges","publishButtonMessage","savingChanges","selectedFiles","selectedImagePreviews","refreshingProducts","isForEdit","calledEditPost","draftRedirect","addSectorToLocker","lockerCopy","postSector","removeSectorFromLocker","sectorSelected","cancelChanges","displayEditNavButtons","disabledPublishButton","disabledButtonClassName","saveChanges","publish","displayProducts","displayProductDescriptionModal","saveProductDescription","fetchLocker","mappedUsers","statusId","published","payload2","verifyAndSetLocker","uploadMedia","updateLockerContent","newProperties","reorderedItems","newValues","productGridRowClass","PostAuthorBanner","PostPageAuthor","isPublished","isPublishing","postText","notAuthorized","postContentChange","currentMediaItemIndex","deletedPost","showReminder","seenReminder","addProductsToPost","reverse","addSectorToPost","postCopy","removeSectorFromPost","displayLoadSpinner","displayEditBannerOrImage","getPostCount","updatedPost","saveContent","saveSectors","toggleIsEditing","newIsEditing","toggleIsPublished","newIsPublished","NewBlogPage","postTitleChange","PostPageEmbed","componentWillUnmount","checkHeight","redirectToPostPage","lastTotalHeight","viewTracked","BlogPageEmbed","bannerRef","bannerWidth","numberOfLines","redirectToLockerPage","postPage","setPostPage","setPosts","itemsPerPage","setItemsPerPage","intervalId","setIntervalId","setLastTotalHeight","getHeightMessage","setCheckHeight","resetInterval","newIntervalId","postPageHandlers","productsPage","setProductsPage","productsPageHandlers","onSale","YoutubeIconLink","WebsiteLinkIcon","ProfileHeaderEmbed","displayShareButton","profileRedirect","ProfileEmbed","fetchUserInformation","brandUsername","FeaturedPostsAndProduct","postsProductsPage","setPostsProductsPage","postsProducts","setPostsProducts","isLoaded","setIsLoaded","featuredData","featuredContent","postsProductsPageHandlers","postsProduct","outerDivStyle","userImage","userText","onTouchMove","handleCarouselActive","flexWrap","encodedSector","setActiveIndex","animating","setAnimating","setFeaturedData","carouselActive","setCarouselActive","sendHeight","nextIndex","slides","onExiting","onExited","ride","CarouselControl","direction","directionText","PostPageEmbedBrand","LockerPageEmbed","productCountBanner","LockerPageEmbedBrand","blankProductData","ProductModal","productData","setProductData","resetModal","MerchantPage","merchantPageRedirectGoogleAnalytics4Tracking","objUrlParams","creatorUserId","redirecturl","currentDeal","clickerUserId","FollowSuggestions","profilePictureUrl","profileBio","Home","mount","fetchLoggedInUser","userData","fetchSuggestions","displayInstallPrompt","showInstallPrompt","AddToHomescreenIOS","handleCloseInstallPrompt","fetchMoreSuggestions","finishedFetchingSuggestions","followSuggestion","deferredPrompt","handleInstallPrompt","installPrompt","lastPromptTime","time","optOut","promptCount","updatedPrompt","countForward","intervalDays","Interval","fromDateTimes","renderFollowSuggestions","toggleColumns","newColumnState","isIosDevice","ProfileInfoCardHomeView","firstNameLastName","Explore","isSearching","lockerSearchResults","productSearchResults","postSearchResults","peopleSearchResults","PeopleFeed","followOrUnfollow","person","personIndex","people","mapPeople","displayFollowButton","SearchFilterBar","buttonSelected","caseNumber","fetchResults","hideToggleAction","renderToggleIcon","Search","searchString","resultCase","searching","resultCases","1","urlPath","stateName","2","3","viewOrder","skipIfEmpty","updateCaseNumber","completedLoop","nextCase","jumpToNextCase","nextUrl","setResults","finishedFetchingPeople","currentCase","caseOrder","currentCaseIndex","toggleLayout","newLayout","displayPostTypeResults","postsArray","displayPeopleResults","displayResults","filterStyle","containerAppendClass","BrowseProductFeed","BrowseBar","setCategories","breadCrumbCategories","setBreadCrumbCategories","filterOpen","setFilterOpen","filterRef","selectedCategory","categoryArray","currentCategory","unshift","resetCloseFilter","closeFilter","handleBreadCrumbs","mapBreadCrumbCategories","aria-controls","renderFilterIcon","Browse","brands","sortBy","sortByQuery","categoryToggle","bestUsesToggle","priceToggle","ratingToggle","sortByToggle","sideFilterFetch","mobileLocationBarOpen","searchInputInit","mounted","skipFetch","bestUses","searchBar","asideRef","animationFrameId","handleSearchReset","resetSearch","getLastSegmentFromPath","segments","handleResize","cancelAnimationFrame","requestAnimationFrame","updateMobileLocationBarOpen","handleSortFilterReset","catReset","initializeSearchStringAndQueryParams","searchPath","subcategory","sortby","onsale","subCategoryObj","getMerchants","merchantArrObj","sortArray","fetchCategories","doReturn","merchantUrl","thirdLevelSub","createCategoryAncestry","handleSearchForBestUses","ancestryArray","originalAncestryArray","firstCategory","secondCategory","firstMatch","secondMatchArray","secondMatch","rootMatch","lowestLevelName","lowestLevelId","topLevelCategoryId","shift","handleCloseFilter","starClickFetch","sortByFetch","sortByArr","onSaleFetch","onSaleCurrent","handlePriceRange","newValue","handlePriceRangeFetch","onCategoryInputChangeFetch","displayProductResults","formatter","Intl","NumberFormat","currency","sortCategories","menuVisibleWithMore","handleInputChangeFetch","isChecked","handleInputBestUses","parseCategoriesByParentCategoryId","renderFilterCategories","renderBestUses","handleAsideVisibility","asideElement","add","setBrowseFilterOpen","abs","innerHeight","asideStyle","divStyle","data-target","priceTogglepriceToggle","Slider","getAriaLabel","onChangeCommitted","format","ProfileFilterBar","readMoreRef","setIsRendered","readMore","setReadMore","showReadMore","setShowReadMore","readMoreHeight","setReadMoreHeight","displayEditOrMessageButtons","displaySmall","isLoggedInUser","buttonSymbol","buttons","fetchAbout","button","selectedCaseClass","smallSizeClass","mapToggleButtons","setFetchingSectors","selectedFileTempUrl","uploadBackroundImage","uploadImageResponse","trackingUrl","prevIsFollowing","newCount","displayFilterBar","handleFetchLockersTab","showFollowersOrFollowing","hamOpen","setToggleMenu","setHomeFeedSaveUser","setExploreSaveUser","addTitle","addLinkUrl","Links","savingLink","setSavingLink","setLinks","deleteIndex","setDeleteIndex","ownerUsername","viewerUserId","trackUrl","getLinks","linksUrl","updateLinks","ordinanceLinks","linkUrl","ordinance","createdBy","modifiedDate","modifiedBy","trackUserLinkClick","userLinkId","createUserLinkUrl","newLink","editLink","deleteLink","newLinks","formattedLinkUrl","linkUrlStyle","renderButtons","redirectToLink","mapInputFieldsPublic","UserImageWrapper","UserHeader","followersFollowingSection","addedStyles","CheckIcon","UserFeedCarousel","data-slide-to","renderCarouselIndicators","UserFeed","User","ErrorPage","DashboardTile","AdminDashboard","adminLinks","_","displayAdminLinks","adminLink","CreatorApplicationActionDropdown","approveApplication","application","rejectApplication","deletedTab","unDeleteApplication","deleteApplication","DownloadIcon","CreatorApplications","fetchApplications","applications","handleMouseDown","startX","clientX","scrollLeft","scrollContainer","handleMouseMove","handleMouseUp","walk","fetchApprovedOrDeniedApplications","isApproved","fetchAllApplications","updateApplication","forDelete","app","approved","jsonApplication","renderUpcomingProjects","descriptionUrlObjectArray","appliedPreviously","platformUsernameAsLink","noMargin","referralUserName","handleDateSort","sortedApplications","ascending","dateAsc","dateA","dateB","applicationsAll","onMouseDown","CreateCommission","campaignFilter","filteredCampaignPartners","merchantValue","campaignMerchantValue","selectedMerchant","selectedCampaignMerchant","selectedUser","show","isLoadingMerchants","saleAmount","transactionDate","isSubmitting","showMerchantInput","commissionRate","creatorCommission","popover","popoverMessage","zeroSaleAmountCheck","hundredPercentCommissionRate","partnersUrl","onInputChangeQuery","onInputChangeCampaignMerchantQuery","setSelectedMerchant","setSelectedCampaignMerchant","setSelected","onCommissionInputChange","onDateInputChange","merchantHostname","apmId","affiliateProgramManagerId","date","getTimezoneOffset","zeroSaleAmount","campaignMerchantHostname","commissionInfo","commissionAmount","onChangeDummy","handlePopover","setsState","onChangeZeroSaleAmountCheck","onChangeHundredPercentCommissionRate","enableSubmit","labelKey","defaultSelected","clearButton","onSearch","BrandSelectorForm","cleanUp","submit","setMerchantUser","submitting","BrandApplications","Email","Phone","CompanyName","Website","AffiliateNetwork","OtherAffiliateNetwork","Relationship","RelationshipDetails","merchantHomePage","merchantHomepage","CheckIconBlack","onRefreshYes","refreshMerchants","overlay","WebkitOverflowScrolling","onRequestClose","BrandTable","apm","setIntegratedOff","onActiveChanged","apms","deleted","lastRowClasses","affiliateProgramManagerName","refreshStatus","feedLastProcessed","dateLastRefreshed","internalId","Modal","setAppElement","Brand","filteredSectors","oldIntegratedDate","affiliateProgramManagers","homepage","merchantSectors","mapMerchantFields","FormText","onSectorClick","deepLinkOnly","brandPresent","manualProductCreation","renderInterests","renderAffiliateProgramManagers","updateMerchant","managerObj","diplay","AffiliateNetworks","affiliateNetworks","newApmName","newApmUrl","commissionRuns","commissionStatusByApm","addNewApm","networks","newApm","apiUrl","displayHeaders","calculateCommissionRunStatus","cr","isSaS","affiliate","dateNow","utc","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","currentUtc","commissionRunHours","commissionStatus","calculateMerchantSynchronizationDate","updatedNetworks","network","merchantSynchDate","merchantSynchDateLocal","merchantSynchDateDifferenceInHours","msdStatus","nw","merchantSynchStatus","displayRows","statusObj","fetchAffiliateNetworks","fetchCommissionRuns","AmazonCommissionUpload","affiliateProgramManager","nameChange","apiUrlChange","affiliateTracking","modalType","createEditTracking","isSubmittingTracking","fetchAffiliateProgramManager","fetchTracking","tracking","handleTrackingSubmit","requestBody","postTrackingError","resetTrackingState","getModalTitle","openTableRowModal","newMerchantTracking","onAbort","Sectors","sectorCreateInput","sectorName","checkIfSectorExists","handleSectorInput","ResetPasswordForm","submitPassword","newPasswordConfirmed","passwordsMatch","displaySubmitButton","newPasswordValidation","newPasswordConfirmedValidation","displayValidation","Users","subaffiliates","rpManagerOptions","isLoadingReferral","isLoadingRPManagerUsers","isCheckingUserName","selectedProStatusId","showChangePasswordForm","amazonSubaffiliate","savingAmazonSub","subaffiliatesFetched","newUserName","referrerUserId","newUserNameAvailable","referralEntity","rpManagerEntity","proStatusIds","confirmEmail","updateEmail","onAmazonSubaffiliateInputChange","onSelectedProStatusId","fetchReferralUsers","referralOptions","fetchRPManagerUsers","fetchUserByReferralUserId","fetchUserByRPManagerUserId","usersCheck","displayChangePasswordForm","displayResetPasswordButton","setSelectedReferral","setSelectedRPManager","getSubaffiliates","rPManagerUserId","affiliateName","amazonSubaffiliateObject","subaffiliateID","postAmazonSubaffiliate","subaffiliateObject","CurrentDeals","isValidDate","isFetching","stateChange","CurrentDealsTable","setCellProps","wordBreak","customBodyRender","tableMeta","updateValue","selectableRows","onRowClick","rowData","rowMeta","getTheme","createTheme","overrides","MUIDataTable","root","paper","MUIDataTableBodyRow","MUIDataTableBodyCell","addMerchantNameToDeals","fetchMerchants","fetchCurrentDeals","noShow","handleUrl","handleOrdinal","handleDescription","handleStartDate","handleEndDate","validateDate","submitUrl","confirm","handleDelete","handleCreateCurrentDealButton","startTimestamp","endTimestamp","currentTimestamp","ThemeProvider","theme","FeaturedContent","addShareCode","addSubmitError","deleteError","topContentFromDb","FeaturedContentTable","String","customToolbarSelect","sortOrder","selectedRows","displayData","setSelectedRows","confirmPublishSelected","fetchFeaturedContent","tc","createContentForDatatable","creatorUserName","featuredPublished","getType","handleAddContentButton","handleShareCode","postsWithAdd","confirmPublishAll","handlePublish","selectedRowsData","row","publishUrl","publishedPosts","publishError","postsWithDelete","FeaturedProducts","featuredProductsFromDb","FeaturedProductsTable","fetchFeaturedProducts","handleAddProductButton","umps","FeaturedCreators","selectedEditFeaturedCreatorId","addUserName","addUserText","addUserImage","addPostProduct","newPostProductType","newPostProductShareCode","topCreatorsFromDb","FeaturedCreatorTable","selectedEditFeaturedCreator","topContent","sectorsArray","fetchFeaturedCreators","featuredCreatorIds","deleteUrl","handleUserName","handleUserText","handleUserImage","handleAddSector","handlePostProductTypeChange","handlePostProductShareCodeChange","addPostProductToState","newPostProduct","addSectorToSectors","removePostProduct","handleEditSubmit","clearButtonProps","postProduct","Featured","PaymentRuns","toISO","last180Days","last365Days","creatingNewPaymentRun","paymentRunInfos","getPaymentRunInfos","orderBy","handleCreateNewPaymentRun","runPaymentsResponse","paymentRunId","paymentRunDetailRecordCount","paymentRunInfo","paymentRun","paymentRunDetailCount","pendingCount","pendingAmount","skippedCount","skippedAmount","rejectedCount","rejectedAmount","noPaymentEmailCount","noPaymentEmailAmount","approvedCount","approvedAmount","paidCount","paidAmount","paymentRunStatus","colSpan","CreatorPaymentRunTotals","paymentRunDetailInfos","creatorPaymentRunTotals","reversingPayments","affiliateTable","customBodyRenderLite","dataIndex","rowIndex","amount","handlePaymentReversal","affiliateDetailTableWrapperRef","affiliateDetailTableMessageTextboxRef","processCreatorPaymentRunTotals","totals","payment","userPaymentEmail","commissionIds","creatorData","filteredData","creator","creatorUserNames","creatorSubmissionArray","fd","creatorCommissions","handlePaymentReversalToast","reversedCreators","resultSuccess","reversedCreatorsCount","reversedCreatorsString","lastCreator","creatorsJoined","prev","curr","PaymentRunDetails","rockPorchCommissions","onRowsSelect","curRowSelected","allRowsSelected","dataIndecies","selectedAffiliateProgramManagers","affiliateDetailTableData","selectedAffiliateProgramManagerIds","paymentRunDetail","paymentRunDetailId","paymentRunDetailStatusName","campaignMerchantId","campaignMerchantName","userDisplayName","userEmail","userCreatedDate","merchantCommissionRate","actualCommissionRate","totalAmount","userShare","affiliateDetailTable","inline","handleChangeStatus","affiliateDetailTableMessageTextboxEnabled","AddMessageCheckbox","withStyles","Checkbox","processPaymentRunDetails","getPaymentRunDetailInfo","affiliateTableData","getAffiliateTableData","totalRecords","removePaymentRunDetails","paymentRunDetailIds","updatedPaymentRunDetails","statusName","alreadyPaidRecordCount","msg","paymentRunDetailStatus","affiliateDetailTableDataItem","paymentRunDetailInfoItem","paymentRunDetailStatusId","shouldUpdateMessage","finalizePaymentRun","paymentRunStatusId","createPaymentFile","form","UserCommissionOverrides","useMockData","userCommissionOverridesLoading","userCommissionOverridesSummaryTable","toFormat","TextField","InputLabelProps","shrink","table","handleUpdateEndDate","getUserCommissionOverrideHistoryByUserId","userCommissionOverridesHistoryTable","userCommissionOverridesHistoryTableWrapperRef","getUserCommissionOverrides","r","userCommissionOverrides","getMockUserCommissionOverrides","getUserCommissionOverridesUrl","userCommissionOverrideHistoryByUserIdRecords","getMockUserCommissionOverrideHistoryByUserId","getUserCommissionOverrideHistoryByUserIdUrl","updateUserCommissionOverrideEndDate","userCommissionOverrideHistoryIds","updatedUserCommissionOverrides","getRandomDateBetweenDates","effectiveDate","recordCount","tableData","updateData","recordsUpdatedCount","updatedData","updatedRecords","updatedRecord","parsedDate","isDateTime","isoEndDate","toJSDate","alreadyHasEndDateCount","updatedSummaryData","updatedHistoryData","MerchantCommissionOverrides","merchantCommissionOverridesLoading","merchantCommissionOverridesSummaryTable","handleMerchantUpdateEndDate","merchantAffiliateProgramManagerId","getMerchantCommissionOverrideHistory","merchantCommissionOverridesHistoryTable","merchantCommissionOverridesHistoryTableWrapperRef","getMerchantCommissionOverrides","merchantCommissionOverrides","getMockMerchantCommissionOverrides","getCurrentMerchantAffiliateProgramManagerOverrides","merchantCommissionOverrideHistoryRecords","getMockMerchantCommissionOverrideHistory","getMerchantCommissionOverrideHistoryUrl","updateMerchantCommissionOverrideEndDate","ids","merchantAffiliateProgramManagerOverrideHistoryIds","updatedmerchantCommissionOverrides","UserMerchantCommissionOverrides","userMerchantCommissionOverridesLoading","userMerchantCommissionOverridesSummaryTable","handleUserMerchantUpdateEndDate","getUserMerchantCommissionOverrideHistory","userMerchantCommissionOverridesHistoryTable","userMerchantCommissionOverridesHistoryTableWrapperRef","getUserMerchantCommissionOverrides","userMerchantCommissionOverrides","getCurrentUserMerchantCommissionOverrides","userMerchantCommissionOverrideHistoryRecords","getUserMerchantCommissionOverrideHistoryUrl","updateUserMerchantCommissionOverrideEndDate","userMerchantCommissionOverrideHistoryIds","updatedUserMerchantCommissionOverrides","usreMerchantCommissionOverridesLoading","CommissionOverrides","userCommissionOverridesBreadCrumbList","merchantCommissionOverridesBreadCrumbList","userMerchantCommissionOverridesBreadCrumbList","AddUserCommissionOverride","userCommissionOverrideHistoryRecords","recordsWithoutEndDate","records","InputProps","endAdornment","InputAdornment","inputProps","AddMerchantCommissionOverride","filteredOptions","integratedCheckbox","MerchantSelectAutocomplete","showSavedMerchant","getUrl","FormControlLabel","labelPlacement","Autocomplete","freeSolo","getOptionLabel","renderInput","variant","AddUserMerchantCommissionOverride","filteredMerchants","getUserMerchantCommissionOverrideHistoryByUserId","getUserMerchantCommissionOverrideHistoryByUserIdUrl","ProductNotFound","getProductNotFoundData","productNotFoundTable","productNotFoundDataLoading","updateProductNotFound","updateProductsNotFoundUrl","productNotFoundData","getStatusSelectOption","selectStatusOptions","productSearchWorking","productNotInFeed","merchantNotIntegrated","actionRequired","none","updateProductNotFoundStatus","updateProductNotFoundStatusUrl","handleStatusSelect","rowStatus","ProductFeeds","productFeeds","updateLegacyStatus","copyProductFeeds","feed","productFeedsLoading","productFeedsTable","ResponseScroll","ProductUpdate","submitImageUrl","tempProduct","Description","Url","ImageUrl","Price","onImageUrlInputChange","onSearchInputChange","fetchProductByShareCode","intMerchantProductId","handleProduct","formatProduct","ElmahLogs","getErrorLogData","updateErrorLogs","errorLogsLoading","errorLogs","toggleErrorLog","errorLogsTable","thisLog","errorId","getHours","ErrorLog","setLog","timeUtc","dayNum","apiName","allXml","detail","serverVariables","ItOperations","productNotFoundBreadCrumbList","productFeedsBreadCrumbList","productUpdateBreadCrumbList","elmahLogsBreadCrumbList","ElmahLog","CategoryCreation","selectedCategories","handleCategoryTableClick","displayBreadcrumbs","arr","handleBreadcrumbClick","handleCategoryName","saveCategory","savingCategory","CategoryProductAssignment","displayCategoryTableHeader","displayCategoryTableRows","handleProductCategoryTableClick","span","displayProductTableHeader","displayProductTableRows","handleProductPageModalClick","handleProductsTableClick","saveProductCategory","savingProductCategory","ProductsWithoutCategoriesExcel","getProductsWithoutCategoriesExcel","UploadProductCategories","Category","levelPC","selectedCategoriesPC","fetchingExcel","postExcelError","categoryCreationBreadCrumbList","categoryToProductBreadCrumbList","productsWithoutCategoriesExcelBreadCrumbList","fetchProductsWithoutCategories","validProductId","productCategory","validCategoryId","categoryId","productCategorySaving","productCategoryValidProductId","productCategoryValidCategoryId","handleBreadcrumbClickPC","BrandNames","noButtons","borders","displayDetailsTable","selectedBrandName","displayBrandDetailRows","tableType","handleBrandClick","handleBrandNamesClick","handleBrandProductsClick","infiniteScrollTableRender","finishedFetchingBrands","selectedOriginalBrand","selectedNewBrand","saveBrandAssociations","savingBrandAssociations","brandsReset","brandsLoading","handleSearch","searchBrands","ManageBrands","showProducts","selectedBrandNameLoading","selectedBrandProducts","brandNamesBreadCrumbList","brandProductBreadCrumbList","fetchBrands","manufacturerName","manufacturerId","newBrands","renderBuyLogic","newManufacturerId","newManufacturerName","oldManufacturerId","displayProductsDetailsTable","displayProductsBrandDetailRows","AnalyticsAggregateTable","analyticsData","productClicks","salesCount","commissionEarned","AnalyticsChart","getAnalytics","aggregateChanged","commissionsEarned","displayTotalRow","totalProductClicks","merchantRedirects","productViews","infoIcon","start","end","dt","displayChart","labels","postViews","formattedLabelDate","analytic","series","chart","toolbar","markers","xaxis","yaxis","seriesName","opposite","userChanged","browseChanged","CommissionsChart","getCommissions","commissionReassignModal","modalCommissionId","toggleCommissionId","openAccordianCommissionIds","obj","commissionDetailItems","fetchCommissionDetailItemsByCommissionId","updatedCommissionIds","existingItem","getLinkError","updatedCommissionDetailItems","detailItem","lastItem","renderCommissionDetailItems","cdiObject","noProductInfo","numberOfItemsWithProductInfo","commissions","mayDisplay","purchaseAmount","returnAmount","qualifiedCommissionAmount","paymentDate","colspan","displaySummaryTableHeader","displaySummaryTableRows","commissionsByStatus","reassignLoading","reassignCreateMessage","onCommissionReassignClick","modalUserId","reassignLogic","userBlank","reassignCommissionUrl","copyCheck","userOptions","onChangeCopyCheck","zoom","dataLabels","isEqual","commissionsLoading","TransactionsChart","transactions","total","previousBalance","currentBalance","runningBalance","getTransactions","transactionsLoading","ClickBurstIcon","svgStyle","marker","fixedWidthStyle","clicks","sortDescending","handleClicksClick","sales","conversionRate","AnalyticsByProductTable","resetPerformanceTabs","clearSourceSort","getAnalyticsPerformanceSourceByUserMerchantProduct","hoverRow","handleSourceClicksSort","handleSourceReferrerClick","handleSourceReferrerSort","displayProductClicksTable","performanceSourceUserMerchantProduct","sourceSortAscending","sourceSortReferrer","displayProductsClickRows","months","startOf","analyticsPerformanceSourceByUserMerchantProductLoading","MerchantRowMobile","AnalyticsByMerchantTable","getMerchantAnalytics","clearPerformance","displayMerchantMobile","merchantAnalytics","handleMerchantSortSelect","merchantSortDescending","merchantSelectOptions","getAnalyticsPerformanceSourceByMerchant","displayMerchantClicksTable","performanceSourceMerchant","displayMerchantsClickRows","analyticsPerformanceSourceByMerchantLoading","AnalyticsByPerformance","dateError","handleTabSortSelect","tabSelectOptions","handleStartDateChange","handleEndDateChange","handleWeekToDate","weeks","handleMonthToDate","handleYearToDate","years","toISODate","productUserChanged","merchantAnalyticsLoading","analyticsByMerchantLoading","merchantUserChanged","AnalyticsIconNew","fillClass","CommissionsIcon","SpreadsheetIcon","AdminAnalytics","analyticsByProductDatas","sortedAnalytics","compareFunction","comparison","getComparisonValue","tieComparisons","column","filteredTieComparisons","localeCompare","analyticsByMerchant","getMerchantComparisonValue","getCommissionsUrl","aggregateCheck","getTransactionsUrl","getMockAnalytics","mockAnalytics","salesConversionPercentage","getAnalyticsByProductData","browseCheck","analyticsByProductLoading","getAnalyticsByMerchant","urlParams","SpeedometerIcon","onChangeAggregateCheck","onChangeBrowseCheck","Interests","setFilter","setFilteredSectors","sects","OnboardInterests","getUserSectors","pendingMerchantUser","onSubmitClick","OnboardUserType","continueUrl","mapInputFieldsSocial","mapInputFieldsPersonal","OnboardGoPro","applyForPro","OnboardGettingStarted","altText","CarouselCaption","captionText","captionHeader","OnboardWhoToFollow","Analytics","AnalyticsPerformanceSourceByMerchantLoading","AnalyticsPerformanceSourceByUserMerchantProductLoading","BrandAnalyticsChart","aggregated","dataPoint","el","displayTotals","totalAnalytics","enabledOnSeries","BrandCommissionsChart","BrandAnalytics","ErrorTest","errorTesting","NotFound","ErrorBoundary","hasError","errorInfo","StackTrace","fromError","InstagramAuth","TikTokAuth","Contact","ChatBot","inputText","scrollToBottomOnTyping","scrollPosition","currentIndex","addBotMessage","observer","MutationObserver","handleMutation","observe","messageContainerRef","childList","subtree","scrollToLastMessage","adjustTextareaHeight","disconnect","handleScroll","messageContainer","scrollTop","atBottom","clientHeight","upwardScroll","mutationsList","mutation","newDivHeight","lastDivHeight","formatBotMessage","formattedMessage","lastMessageRef","scrollToInput","handleInputChange","textarea","textareaRef","handleSendMessage","textResponse","referralLinkReplacements","replacement","regex","RegExp","replacementCode","anchorTag","imgElement","setErrorMessage","renderBotMessage","messageHtml","onScroll","App","homeFeedSaveUser","exploreSaveUser","productPageOnly","setSignUpInterval","signUpTimer","refreshSignUp","trackPage","allowFullPageLoadEnabledForUrl","loadAddToHomescreenCssAndJs","loadCssAndJs","bootstrapCssLink","integrity","googleFontLink","fontAwesomeCssLink","cssLink","sizes","windowSize","windowHeight","selectUserToFetchFollowersFollowing","redirectToOnboarding","profilePicSrc","displayAdminRoutes","standardViewProps","exact","AdminBrands","clearTimeout","page_path","page_search","page_hash","followersFollowingForUser","NewCreatorDashboard","AccountSaves","AddProductOrDeepLinkModal","HomeFeed","setBrowseSearch","routeProps","reducer","combineReducers","counterReducer","newShowModal","changes","newFetchFollowing","myRefStore","composedEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","getState","setLocker","getElementsByTagName","rootElement","ReactDOM","basename"],"mappings":"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","file":"static/js/main.e3be6944.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/rockporch-logo.7bb28abc.svg\";","\r\n\r\n/**\r\n * @description: Accepts an array of products that come in as part of the result of an api call to get posts. It then trims them and returns a leaner object. productItems found in `post.productItems.$values`\r\n * @param {[{\r\n * id:Number, \r\n * ordinal:Number, \r\n * type:Number, \r\n * userMerchantProduct:{\r\n * id:Number,\r\n * coupon:string,\r\n * product:{\r\n * id:Number,\r\n * description:string,\r\n * imageUrl:string,\r\n * price:number,\r\n * merchant:{},\r\n * product:{}\r\n * }\r\n * }\r\n * }]} productItems \r\n * @returns {[{id:Number,coupon:string,imageUrl:string,name:string,type:Number}]} An array of trimmed product objects containing the id,type,coupon code, imageUrl and product name.\r\n */\r\nfunction trimProductsArray(productItems) {\r\n\r\n let leanItems = productItems?.map((item, i) => {\r\n return {\r\n description: item.userMerchantProduct.product.description,\r\n imageUrl: item.userMerchantProduct.product.imageUrl,\r\n merchantProductId: item.userMerchantProduct.product.id,\r\n name: item.userMerchantProduct.product.name,\r\n price: item.userMerchantProduct.product.price,\r\n originalPrice: item.userMerchantProduct.product.originalPrice,\r\n salePrice: item.userMerchantProduct.product.salePrice,\r\n sale: item.userMerchantProduct.product.sale,\r\n shareCode: item.userMerchantProduct.coupon,\r\n approvedCreatorsOnly: item.userMerchantProduct.product.approvedCreatorsOnly,\r\n url: item.userMerchantProduct.product.url,\r\n user: item.userMerchantProduct.user,\r\n comment: item.comment,\r\n userDescription: item.userMerchantProduct.userDescription,\r\n userMerchantProductId: item.userMerchantProduct.id,\r\n manufacturer: item.userMerchantProduct.product.product.manufacturer.name,\r\n merchant: item.userMerchantProduct.product.merchant.name,\r\n integrated: item.userMerchantProduct.product.merchant.integrated,\r\n ordinal: item.ordinal,\r\n id: item.id,\r\n creatorCount: item.userMerchantProduct.product.creatorCount,\r\n productId: item.userMerchantProduct.product.product.id,\r\n };\r\n })\r\n return leanItems;\r\n}\r\n\r\n/**\r\n * @description Traverses Properties object from posts, cleans it up, and returns an object with the id, role and reference. The reference is a media item\r\n * @param {{$type:string,$values:[{$id:string,reference:string,id:Number,role:number}]}} properties Available in `post.properties`\r\n * @returns {[{id:Number, role:any , reference:string}]} filtered properties\r\n */\r\nfunction getPropertiesFromPost(properties) {\r\n let postProperties = properties?.$values?.map((property, i) => {\r\n return { id: property.id, role: property.role, value: property.value, width: property.width, height: property.height, title: property.userPost?.title }\r\n })\r\n\r\n return postProperties\r\n}\r\n\r\nfunction getThumbnail(properties, id) {\r\n let thumbnail = properties?.$values && properties?.$values.filter(property => property.parentId === id);\r\n if (thumbnail?.length > 0) {\r\n return thumbnail[0].value;\r\n }\r\n return \"\";\r\n}\r\n\r\nmodule.exports = {\r\n trimProductsArray,\r\n getProperties: getPropertiesFromPost,\r\n getThumbnail\r\n}\r\n\r\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 322;","\r\n\r\n/**\r\n * \r\n * @param {Number} price\r\n */\r\nfunction currencyFormat(price) {\r\n return '$' + price.toFixed(2).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')\r\n}\r\n\r\nfunction titleCase(title) {\r\n //console.log(\"titleCase called...\")\r\n var sentence = title.split(\" \");\r\n for (var i = 0; i < sentence.length; i++) {\r\n if (sentence[i].toLowerCase() === 'ii' || sentence[i].toLowerCase() === 'iii' || sentence[i].toLowerCase() === 'iv' ||\r\n sentence[i].toLowerCase() === 'vi' || sentence[i].toLowerCase() === 'vii' || sentence[i].toLowerCase() === 'viii'\r\n || sentence[i].toLowerCase() === 'xi' || sentence[i].toLowerCase() === 'xii') {\r\n\r\n sentence[i] = sentence[i].toUpperCase();\r\n } else {\r\n sentence[i] = sentence[i][0]?.toUpperCase() + sentence[i]?.slice(1);\r\n }\r\n }\r\n\r\n var updatedSentence = sentence.join(\" \");\r\n //console.log(\"sentence: \" + updatedSentence);\r\n\r\n return updatedSentence\r\n\r\n}\r\n\r\nmodule.exports = {\r\n currencyFormat,\r\n titleCase\r\n}","\r\n\r\n/**\r\n * \r\n * @param {string} url\r\n */\r\nfunction isValidUrl(url, allowNoPath = false) {\r\n\r\n //source : https://regexr.com/3ouav\r\n let rx = allowNoPath ? /^(https?:\\/\\/)([\\da-z.-]+)\\.([a-z]{2,6}).*/g : /(https?:\\/\\/)([\\da-z\\.-]+)\\.([a-z]{2,6})((\\/([\\.-\\w])+)+|\\/?\\?[\\.-\\w])+/g;\r\n let isValid = rx.test(url);\r\n\r\n return isValid;\r\n}\r\n\r\nfunction isValidPassword(password) {\r\n var rx = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{3,}$/g;\r\n var isValid = rx.test(password);\r\n\r\n return isValid;\r\n}\r\nmodule.exports = {\r\n isValidUrl,\r\n isValidPassword\r\n}","export const ApplicationName = 'EvolvedOutdoors.UI.Web';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: '/Identity/Account/Register',\r\n IdentityManagePath: '/Identity/Account/Manage',\r\n IdentityLoginPath: '/Identity/Account/Login'\r\n};\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { Popover, PopoverBody } from \"reactstrap\"\r\n\r\n/**\r\n * \r\n * @param {{\r\n * onClick:Function,\r\n * isLoading:boolean,\r\n * isDisabled:boolean?,\r\n * notification:string,\r\n * className:string,\r\n * onMouseEnter:Function,\r\n * message:{showMessage:boolean, messageText:string}\r\n * }} props\r\n * @description A wrapper for buttons that would need to indicate that an action is being performed i.e fetching and posting data.\r\n */\r\nconst ActionButton = (props) => {\r\n\r\n let [buttonId] = useState(`actionButton_` + Math.floor(Math.random() * 100).toString());\r\n\r\n function displayPrompt() {\r\n if (props?.message?.showMessage === true) {\r\n return (\r\n \r\n \r\n {props.message.messageText}\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n if (props.isLoading === true) {\r\n return (\r\n <>\r\n \r\n {displayPrompt()}\r\n \r\n )\r\n }\r\n else if (props.isDisabled === true) {\r\n return (\r\n <>\r\n \r\n {displayPrompt()}\r\n \r\n )\r\n }\r\n else if (!!(props.type)) {\r\n return (\r\n <>\r\n \r\n {displayPrompt()}\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n <>\r\n \r\n {displayPrompt()}\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\n\r\nexport default ActionButton;","import React from \"react\"\r\n\r\nconst GridIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GridIcon;","import React from \"react\"\r\n\r\n\r\nconst DoubleBarIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default DoubleBarIcon;","import React from \"react\";\r\n\r\nconst PlusIconNav = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PlusIconNav;","import React from \"react\"\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,opacity:Number}} props\r\n */\r\nconst CloseIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default CloseIcon;","const feedLayoutState = {\r\n isGrid: false\r\n}\r\n\r\n\r\nconst TOGGLE_FEED_LAYOUT = \"TOGGLE_FEED_LAYOUT\"\r\n\r\nexport function toggleFeedLayout() {\r\n return { type: TOGGLE_FEED_LAYOUT }\r\n}\r\n\r\nexport default function feedLayoutReducer(state = feedLayoutState,action) {\r\n switch (action.type) {\r\n case TOGGLE_FEED_LAYOUT: {\r\n let newIsGrid = !state.isGrid;\r\n return { ...state, isGrid: newIsGrid }\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { func } from \"prop-types\";\r\n\r\nconst modalState = {\r\n showModal: false,\r\n showAddProductModal: false,\r\n showCreateLockerModal: false,\r\n showProductSelectModal: false,\r\n showShareModal: false,\r\n showSharePostModal: false,\r\n shareLink: \"\",\r\n followersFollowing: {\r\n showFollowersFollowing: false,\r\n userId: null,\r\n followersFollowing: \"\",\r\n productId: null,\r\n },\r\n fetchFollowing: false,\r\n postPageModal: {\r\n showPostPageModal: false,\r\n post: null,\r\n loggedInUser: null,\r\n isCommenting: false,\r\n parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState: null\r\n }\r\n },\r\n blogPageModal: {\r\n showBlogPageModal: false,\r\n post: null,\r\n loggedInUser: null,\r\n isCommenting: false,\r\n parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState: null\r\n }\r\n },\r\n lockerPageModal: {\r\n showLockerPageModal: false,\r\n post: null,\r\n loggedInUser: null,\r\n isCommenting: false,\r\n parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState: null\r\n },\r\n \r\n },\r\n productPageModal: {\r\n showProductPageModal: false,\r\n product: null,\r\n loggedInUser: null,\r\n isCommenting: false,\r\n parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState:null\r\n },\r\n isBrowse: false,\r\n isSearch: false,\r\n },\r\n addProductModal: {\r\n stage: 1,\r\n productUrl: \"\",\r\n isLoading: false\r\n },\r\n shareBlogModal: {\r\n showShareBlogModal: false,\r\n },\r\n shareDeepLinkModal: {\r\n showShareDeepLinkModal: false,\r\n },\r\n addProductOrDeepLinkModal: {\r\n showAddProductOrDeepLinkModal: false,\r\n },\r\n //modalCase: \r\n}\r\n\r\nconst TOGGLE_MODAL = \"TOGGLE_MODAL\";\r\nconst TOGGLE_ADD_PRODUCT_MODAL = \"TOGGLE_ADD_PRODUCT_MODAL\";\r\nconst TOGGLE_SHARE_BLOG_MODAL = \"TOGGLE_SHARE_BLOG_MODAL\";\r\nconst TOGGLE_SHARE_DEEP_LINK_MODAL = \"TOGGLE_SHARE_DEEP_LINK_MODAL\";\r\nconst TOGGLE_ADD_PRODUCT_OR_DEEP_LINK_MODAL = \"TOGGLE_ADD_PRODUCT_OR_DEEP_LINK_MODAL\";\r\nconst TOGGLE_CREATE_LOCKER_MODAL = \"TOGGLE_CREATE_LOCKER_MODAL\";\r\nconst TOGGLE_PRODUCTS_SELECTOR = \"TOGGLE_PRODUCTS_SELECTOR\";\r\nconst TOGGLE_SHARE_MODAL = \"TOGGLE_SHARE_MODAL\";\r\nconst TOGGLE_FOLLOWING_MODAL = \"TOGGLE_FOLLOWING_MODAL\";\r\nconst TOGGLE_FETCH_FOLLOWING = \"TOGGLE_FETCH_FOLLOWING\";\r\nconst TOGGLE_POST_PAGE_MODAL = \"TOGGLE_POST_PAGE_MODAL\";\r\nconst TOGGLE_LOCKER_PAGE_MODAL = \"TOGGLE_LOCKER_PAGE_MODAL\";\r\nconst TOGGLE_BLOG_PAGE_MODAL = \"TOGGLE_BLOG_PAGE_MODAL\";\r\nconst TOGGLE_PRODUCT_PAGE_MODAL = \"TOGGLE_PRODUCT_PAGE_MODAL\";\r\nconst TOGGLE_SHARE_POST_MODAL = \"TOGGLE_SHARE_POST_MODAL\";\r\nconst CLOSE_ALL_MODALS = \"CLOSE_ALL_MODALS\";\r\n\r\nconst resetState = () => {\r\n let newState = { ...modalState };\r\n let keys = Object.keys(newState);\r\n keys.forEach((stateKey) => {\r\n if (stateKey === \"shareLink\" || stateKey === \"postForProductSelection\") {\r\n newState[stateKey] = \"\"\r\n } else if (stateKey === \"followersFollowing\") {\r\n newState[stateKey] = { showFollowersFollowing: false, userId: null, followersFollowing: \"\" };\r\n } else if (stateKey === \"postPageModal\") {\r\n newState[stateKey] = {\r\n showPostPageModal: false, post: null, loggedInUser: null, isCommenting: false, parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState: null\r\n }\r\n }\r\n } else if (stateKey === \"blogPageModal\") {\r\n newState[stateKey] = {\r\n showBlogPageModal: false, post: null, loggedInUser: null, isCommenting: false, parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState: null\r\n }\r\n }\r\n } else if (stateKey === \"lockerPageModal\") {\r\n newState[stateKey] = {\r\n showLockerPageModal: false, shareCode: \"\", isCommenting: false, parentModal: {\r\n type: null,\r\n shareCode: null,\r\n parentState: null\r\n }\r\n }\r\n } else if (stateKey === \"productPageModal\") {\r\n newState[stateKey] = {\r\n showProductPageModal: false, shareCode: \"\", isCommenting: false, parentModal: { type: null, shareCode: null, parentState: null }, isBrowse: false, isSearch: false,\r\n }\r\n } else if (stateKey === \"addProductModal\") {\r\n newState[stateKey] = { showAddProductModal: false, stage: 1, productUrl: \"\", isLoading: false }\r\n } else if (stateKey === 'shareBlogModal') {\r\n newState[stateKey] = { showShareBlogModal: false }\r\n } else if (stateKey === 'shareDeepLinkModal') {\r\n newState[stateKey] = { showShareDeepLinkModal: false }\r\n } else if (stateKey === 'addProductOrDeepLinkModal') {\r\n newState[stateKey] = { showAddProductOrDeepLinkModal: false }\r\n } else {\r\n newState[stateKey] = false;\r\n }\r\n\r\n })\r\n return newState;\r\n}\r\n\r\nfunction toggleBodyScroll(shouldHide) {\r\n var current = document.querySelector(\"body\").style.overflow;\r\n\r\n if (shouldHide === true) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\"\r\n }\r\n}\r\n\r\nexport function closeAllModals() {\r\n return { type: CLOSE_ALL_MODALS }\r\n}\r\n\r\nexport function toggleSharePostModal() {\r\n return { type: TOGGLE_SHARE_POST_MODAL }\r\n}\r\n\r\nexport function toggle() {\r\n return { type: TOGGLE_MODAL }\r\n}\r\n\r\nexport function toggleAddProductModal() {\r\n return { type: TOGGLE_ADD_PRODUCT_MODAL }\r\n}\r\n\r\nexport function toggleShareBlogModal() {\r\n return { type: TOGGLE_SHARE_BLOG_MODAL }\r\n}\r\n\r\nexport function toggleShareDeepLinkModal() {\r\n return { type: TOGGLE_SHARE_DEEP_LINK_MODAL }\r\n}\r\n\r\nexport function toggleAddProductOrDeepLinkModal() {\r\n return { type: TOGGLE_ADD_PRODUCT_OR_DEEP_LINK_MODAL }\r\n}\r\n\r\nexport function toggleCreateLockerModal() {\r\n return { type: TOGGLE_CREATE_LOCKER_MODAL }\r\n}\r\n\r\nexport function toggleProductSelectModal() {\r\n return { type: TOGGLE_PRODUCTS_SELECTOR }\r\n}\r\n\r\nexport function toggleFetchFollowing() {\r\n return { type: TOGGLE_FETCH_FOLLOWING }\r\n}\r\n\r\nexport function toggleShareModal(shareLink) {\r\n return { type: TOGGLE_SHARE_MODAL, payload: shareLink }\r\n}\r\n\r\nexport function toggleFollowersFollowingModal(userId, followersFollowing, productId) {\r\n return {\r\n type: TOGGLE_FOLLOWING_MODAL, payload: { userId, followersFollowing, productId }\r\n }\r\n}\r\n\r\nexport function togglePostPageModal(post, loggedInUser, isCommenting, setPost,parentModal) {\r\n return {\r\n type: TOGGLE_POST_PAGE_MODAL,\r\n payload: { post, loggedInUser, isCommenting, setPost,parentModal }\r\n }\r\n}\r\n\r\nexport function toggleBlogPageModal(post, loggedInUser, isCommenting, setPost, parentModal) {\r\n return {\r\n type: TOGGLE_BLOG_PAGE_MODAL,\r\n payload: { post, loggedInUser, isCommenting, setPost, parentModal }\r\n }\r\n}\r\n\r\nexport function toggleLockerPageModal(post, loggedInUser, isCommenting, setPost,parentModal) {\r\n return {\r\n type: TOGGLE_LOCKER_PAGE_MODAL,\r\n payload: { post, loggedInUser, isCommenting, setPost,parentModal }\r\n }\r\n}\r\n\r\nexport function toggleProductPageModal(product, loggedInUser, isCommenting, setProduct,parentModal, isBrowse, isSearch) {\r\n return {\r\n type: TOGGLE_PRODUCT_PAGE_MODAL,\r\n payload: { product, loggedInUser, isCommenting, setProduct,parentModal, isBrowse, isSearch }\r\n }\r\n}\r\n\r\nexport default function modalReducer(state = modalState, action) {\r\n switch (action.type) {\r\n case TOGGLE_MODAL: {\r\n let newShowModal = !state.showModal;\r\n return { ...state, showModal: newShowModal }\r\n }\r\n case TOGGLE_ADD_PRODUCT_MODAL: {\r\n let newState = resetState();\r\n let changes = { showAddProductModal: !state.showAddProductModal };\r\n toggleBodyScroll(changes.showAddProductModal)\r\n return { ...newState, ...changes }\r\n }\r\n case TOGGLE_SHARE_BLOG_MODAL: {\r\n let newState = resetState();\r\n let changes = {\r\n shareBlogModal: {\r\n showShareBlogModal: !state.shareBlogModal.showShareBlogModal,\r\n }\r\n }\r\n toggleBodyScroll(changes.shareBlogModal.showShareBlogModal)\r\n return { ...newState, ...changes }\r\n }\r\n\r\n case TOGGLE_SHARE_DEEP_LINK_MODAL: {\r\n let newState = resetState();\r\n let changes = {\r\n shareDeepLinkModal: {\r\n showShareDeepLinkModal: !state.shareDeepLinkModal.showShareDeepLinkModal,\r\n }\r\n }\r\n toggleBodyScroll(changes.shareDeepLinkModal.showShareDeepLinkModal)\r\n\r\n return { ...newState, ...changes }\r\n }\r\n\r\n case TOGGLE_ADD_PRODUCT_OR_DEEP_LINK_MODAL: {\r\n let newState = resetState();\r\n let changes = {\r\n addProductOrDeepLinkModal: {\r\n showAddProductOrDeepLinkModal: !state.addProductOrDeepLinkModal.showAddProductOrDeepLinkModal,\r\n }\r\n }\r\n toggleBodyScroll(changes.addProductOrDeepLinkModal.showAddProductOrDeepLinkModal)\r\n return { ...newState, ...changes }\r\n }\r\n case TOGGLE_CREATE_LOCKER_MODAL: {\r\n let newState = resetState();\r\n let changes = { showCreateLockerModal: !state.showCreateLockerModal }\r\n toggleBodyScroll(changes.showCreateLockerModal)\r\n return { ...newState, ...changes };\r\n }\r\n case TOGGLE_PRODUCTS_SELECTOR: {\r\n let newState = resetState();\r\n let changes = { showProductSelectModal: !state.showProductSelectModal };\r\n toggleBodyScroll(changes.showProductSelectModal)\r\n return { ...newState, ...changes };\r\n }\r\n case TOGGLE_SHARE_MODAL: {\r\n let newState = resetState();\r\n let changes = { showShareModal: !state.showShareModal, shareLink: action.payload };\r\n toggleBodyScroll(changes.showShareModal)\r\n return { ...newState, ...changes }\r\n }\r\n case TOGGLE_FOLLOWING_MODAL: {\r\n let newState = resetState();\r\n let changes = {\r\n followersFollowing: {\r\n showFollowersFollowing: !state.followersFollowing.showFollowersFollowing,\r\n userId: action.payload.userId,\r\n followersFollowing: action.payload.followersFollowing,\r\n productId: action.payload.productId,\r\n }\r\n }\r\n toggleBodyScroll(changes.followersFollowing.showFollowersFollowing)\r\n return {...newState,...changes}\r\n }\r\n\r\n case TOGGLE_FETCH_FOLLOWING: {\r\n let newFetchFollowing = !state.fetchFollowing;\r\n return {...state, fetchFollowing: newFetchFollowing }\r\n }\r\n\r\n case TOGGLE_POST_PAGE_MODAL: {\r\n let newState = resetState();\r\n \r\n let changes = {\r\n postPageModal: {\r\n showPostPageModal: !state.postPageModal.showPostPageModal,\r\n post: action.payload.post,\r\n loggedInUser: action.payload.loggedInUser,\r\n isCommenting: action.payload.isCommenting,\r\n parentModal : action.payload.parentModal\r\n } \r\n }\r\n toggleBodyScroll(changes.postPageModal.showPostPageModal);\r\n return { ...newState,...changes }\r\n }\r\n\r\n case TOGGLE_BLOG_PAGE_MODAL: {\r\n let newState = resetState();\r\n\r\n let changes = {\r\n blogPageModal: {\r\n showBlogPageModal: !state.blogPageModal.showBlogPageModal,\r\n post: action.payload.post,\r\n loggedInUser: action.payload.loggedInUser,\r\n isCommenting: action.payload.isCommenting,\r\n parentModal: action.payload.parentModal\r\n }\r\n }\r\n toggleBodyScroll(changes.blogPageModal.showBlogPageModal);\r\n return { ...newState, ...changes }\r\n }\r\n\r\n case TOGGLE_LOCKER_PAGE_MODAL: {\r\n let newState = resetState();\r\n \r\n let changes = {\r\n lockerPageModal: {\r\n showLockerPageModal: !state.lockerPageModal.showLockerPageModal,\r\n post: action.payload.post,\r\n loggedInUser: action.payload.loggedInUser,\r\n isCommenting: action.payload.isCommenting,\r\n parentModal: action.payload?.parentModal\r\n }\r\n }\r\n toggleBodyScroll(changes.lockerPageModal.showLockerPageModal);\r\n return { ...newState,...changes }\r\n }\r\n\r\n case TOGGLE_PRODUCT_PAGE_MODAL: {\r\n let newState = resetState();\r\n \r\n let changes = {\r\n productPageModal: {\r\n showProductPageModal: !state.productPageModal.showProductPageModal,\r\n product: action.payload.product,\r\n loggedInUser: action.payload.loggedInUser,\r\n isCommenting: action.payload?.isCommenting || false,\r\n parentModal: action.payload?.parentModal,\r\n isBrowse: action.payload?.isBrowse || false,\r\n isSearch: action.payload?.isSearch || false\r\n }\r\n \r\n }\r\n toggleBodyScroll(changes.productPageModal.showProductPageModal);\r\n return { ...newState, ...changes }\r\n }\r\n case TOGGLE_SHARE_POST_MODAL: {\r\n let newState = resetState();\r\n let changes = {\r\n showSharePostModal: !state.showSharePostModal\r\n } \r\n return { ...newState, ...changes }\r\n }\r\n case CLOSE_ALL_MODALS: {\r\n let newState = resetState();\r\n document.querySelector(\"body\").style.overflow = \"\"\r\n return { ...newState };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import authService from \"components/api-authorization/AuthorizeService\";\r\n\r\nvar jsonref = require('jsonref');\r\n\r\n\r\n/**\r\n * @description Accepts a url and makes a get request, adding the authorization bearer token and parsing the response json\r\n * @param {string} url\r\n * @param {boolean} shouldReturnError\r\n */\r\nexport async function getRequest(url, shouldReturnError = false, access_token = null) {\r\n const token = access_token || await authService.getAccessToken();\r\n\r\n const headers = token ? { Authorization: `Bearer ${token}` } : {};\r\n\r\n const fetchInit = {\r\n headers: headers,\r\n };\r\n\r\n let fetchExcel = false;\r\n\r\n const response = await fetch(url, fetchInit).then(async (result) => {\r\n if (result.status === 200) {\r\n const contentType = result.headers.get('content-type');\r\n if (contentType && contentType.includes('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')) {\r\n fetchExcel = true;\r\n // Handle file download\r\n const blob = await result.blob();\r\n const dispositionHeader = result.headers.get('content-disposition');\r\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\r\n const matches = filenameRegex.exec(dispositionHeader);\r\n const filename = matches && matches[1] ? matches[1].replace(/['\"]/g, '') : 'ProductsWithoutCategories.xlsx';\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', filename);\r\n link.click();\r\n window.URL.revokeObjectURL(url);\r\n return null;\r\n } else {\r\n const json = await result.json();\r\n if (typeof json !== 'object') {\r\n return json;\r\n }\r\n const parsed = await jsonref.parse(json, { scope: window.location });\r\n return parsed;\r\n }\r\n } else {\r\n const error = await result.text();\r\n if (shouldReturnError && error && error.length > 0) {\r\n if (error.trim().startsWith('System')) {\r\n return { errorMessage: 'There was an issue looking up the product' };\r\n }\r\n return { errorMessage: error.substring(0, 150) };\r\n }\r\n }\r\n return null;\r\n }).catch(async (err) => { });\r\n\r\n return fetchExcel ? true : response;\r\n}\r\n\r\n\r\n\r\n/**\r\n * @description Makes a post request accepting the url and payload as arguments\r\n * @param {string} url\r\n * @param {object} payload\r\n */\r\nexport async function postRequest(url, payload, contentType = \"application/json\", stringify = true, token = null) {\r\n token = token == null ? await authService.getAccessToken() : token;\r\n\r\n let authHeader = !token ? {} : {\r\n Authorization: `Bearer ${token}`\r\n }\r\n\r\n if (contentType !== null) {\r\n authHeader[\"Content-Type\"] = contentType;\r\n }\r\n\r\n let fetchInit = {\r\n headers: authHeader,\r\n method: \"POST\",\r\n }\r\n\r\n if (contentType !== null) {\r\n fetchInit.contentType = contentType;\r\n }\r\n\r\n if (payload !== null ) {\r\n fetchInit.body = stringify ? JSON.stringify(payload) : payload;\r\n }\r\n\r\n let response = await fetch(url, fetchInit).then(async result => {\r\n\r\n // Handle redirects which occur when trying to POST to an API without being signed in\r\n if (result.redirected) {\r\n if (result.url.toLowerCase().includes('?returnurl=')) {\r\n var urlWithoutQueryString = result.url.split('?')[0];\r\n var newRedirectUrl = `${urlWithoutQueryString}?returnUrl=${window.location.pathname}`;\r\n window.location.href = newRedirectUrl;\r\n } else {\r\n window.location.href = result.url;\r\n }\r\n }\r\n\r\n let json = await result.json(); \r\n\r\n if (typeof (json) !== \"object\") {\r\n return json;\r\n }\r\n\r\n let parsed = await jsonref.parse(json, { scope: window.location });\r\n return parsed;\r\n \r\n }).catch(err => {\r\n console.log(err);\r\n });\r\n \r\n return response;\r\n}\r\n\r\nexport async function postSpreadsheet(url, formData) {\r\n let token = await authService.getAccessToken();\r\n\r\n let authHeader = !token ? {} : {\r\n Authorization: `Bearer ${token}`\r\n };\r\n\r\n let fetchInit = {\r\n headers: authHeader,\r\n method: \"POST\",\r\n body: formData\r\n };\r\n\r\n try {\r\n const response = await fetch(url, fetchInit);\r\n\r\n if (response.ok) {\r\n const json = await response.json();\r\n return json;\r\n } else {\r\n const errorMessage = await response.text();\r\n throw new Error(errorMessage);\r\n }\r\n } catch (error) {\r\n return null;\r\n }\r\n}\r\n\r\n\r\nexport function getQueryVariable(query, variable) {\r\n let vars = (query[0] === '?' ? query.substr(1) : query).split('&');\r\n for (let i = 0; i < vars.length; i++) {\r\n let pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) === variable) {\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n}\r\n","import { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\nexport let getMessageCount = async (unviewedOnly) => {\r\n let messageCountUrl = `/api/Account/GetMessageCount?unviewedOnly=${unviewedOnly}`;\r\n return await getRequest(messageCountUrl);\r\n}\r\n\r\nexport let getNotificationCount = async (unviewedOnly) => {\r\n let notificationCountUrl = `/api/Account/GetNotificationCount?unviewedOnly=${unviewedOnly}`;\r\n return await getRequest(notificationCountUrl);\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\nimport { NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport authService from './AuthorizeService';\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants';\r\n\r\nimport GridIcon from \"components/icons/GridIcon\";\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\nimport PlusIconNav from \"components/icons/PlusIconNav\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\n\r\nimport { toggleFeedLayout } from \"stateManagement/reducers/feedLayoutReducer\";\r\nimport { toggleAddProductModal, toggleCreateLockerModal, toggleShareModal, toggleSharePostModal, toggleShareBlogModal, toggleShareDeepLinkModal, toggleAddProductOrDeepLinkModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport { postRequest } from '../../sharedUtils/httpUtils';\r\nimport { getMessageCount, getNotificationCount } from \"sharedUtils/notificationUtils\";\r\n\r\nclass LoginMenu extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n showSharePostModal: false,\r\n searchValue: \"\",\r\n redirectValue: \"\",\r\n redirectSearch: false,\r\n showProfilePicturePrompt: false,\r\n showPrompt: {},\r\n };\r\n\r\n this.clickHandler = this.clickHandler.bind(this);\r\n this.dropDownIconRef = React.createRef();\r\n }\r\n\r\n async componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n await this.populateState();\r\n\r\n if (this.props.loggedInUser?.imageUrl === null || this.props.loggedInUser?.imageUrl === undefined) {\r\n this.setState({ showProfilePicturePrompt: true });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n let element = document.getElementById('createLockerPrompt')\r\n if (element) {\r\n element.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n element = document.getElementById('sharePostPrompt')\r\n if (element) {\r\n element.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n element = document.getElementById('shareBlogPrompt')\r\n if (element) {\r\n element.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n element = document.getElementById('shareDeepLinkPrompt')\r\n if (element) {\r\n element.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n\r\n if (this.state.redirectSearch === true) {\r\n this.setState({ redirectSearch: false })\r\n }\r\n\r\n if (!!(this.props.searchProp) && this.props.searchProp.length > 0 && this.props.searchProp !== this.state.searchValue) {\r\n const searchValue = this.props.searchProp.includes(\"*&^reset\") ? \"\" : this.props.searchProp;\r\n this.props.resetSearchProp(!!(searchValue) ? true : false);\r\n this.setState({ searchValue });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n clickHandler(e) {\r\n e.preventDefault();\r\n this.toggleModal();\r\n }\r\n\r\n displayLayoutToggleButton = () => {\r\n\r\n return (\r\n {\r\n e.preventDefault();\r\n this.props.toggleFeedLayout();\r\n }}\r\n >\r\n {this.props.feedLayout.isGrid === true ? : }\r\n \r\n )\r\n }\r\n\r\n togglePrompt = (id) => {\r\n let showPrompt = { ...this.state.showPrompt };\r\n showPrompt[id] = !showPrompt[id];\r\n\r\n this.setState({ showPrompt });\r\n }\r\n\r\n mapAddIconDropdown = () => {\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n\r\n let menu = [\r\n {\r\n title: \"Create a Commissionable Link\",\r\n action: this.props.toggleAddProductOrDeepLinkModal,\r\n iconPath: \"images/Thunder.svg\",\r\n },\r\n {\r\n title: \"Create a Locker\",\r\n action: this.props.toggleCreateLockerModal,\r\n iconPath: \"images/Difference.svg\",\r\n infoPrompt: \"Lockers are pursuit or destination specific gear lists\",\r\n infoPromptId: \"createLockerPrompt\"\r\n },\r\n {\r\n title: \"Share a Post\",\r\n action: this.props.toggleSharePostModal,\r\n iconPath: \"images/Picture.svg\",\r\n infoPrompt: \"Integrate your social accounts to repost content and tag products\",\r\n infoPromptId: \"sharePostPrompt\"\r\n },\r\n {\r\n title: \"Share a Blog Article\",\r\n action: this.props.toggleShareBlogModal,\r\n iconPath: \"images/Blog.svg\",\r\n infoPrompt: \"Share a blog article and tag products\",\r\n infoPromptId: \"shareBlogPrompt\"\r\n },\r\n ]\r\n\r\n return menu.map((menuItem, i) => {\r\n const blog = menuItem.title === \"Share a Blog Article\";\r\n const deepLink = menuItem.title === \"Share a Deep Link\";\r\n\r\n return (\r\n
  • \r\n {\r\n e.preventDefault();\r\n menuItem.action();\r\n }}\r\n >\r\n {menuItem.title}\r\n \r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapThreeDotIconDropdown = () => {\r\n let menu = [\r\n { title: \"Explore\", path: \"/nav/Explore?showbrandNav=true\" },\r\n { title: \"My Feed\", path: \"/HomeFeed\" },\r\n { title: \"About\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n { title: \"Terms of Service\", path: \"https://www.rockporch.com/terms/\", target: \"blank_\" },\r\n { title: \"Privacy Policy\", path: \"https://www.rockporch.com/privacy-policy/\", target: \"blank_\" },\r\n { title: \"Contact\", path: \"/Contact\" },\r\n ]\r\n\r\n if (this.props.loggedInUser?.proStatusId === 1) {\r\n menu = [\r\n { title: \"Profile\", path: `/Profile/${this.props?.loggedInUser?.userName}` },\r\n { title: \"Explore\", path: \"/nav/Explore?showBrandNav=true\" },\r\n { title: \"My Feed\", path: \"/HomeFeed\" },\r\n { title: \"FAQ\", path: \"https://www.rockporch.com/faq/\", target: \"blank_\" },\r\n { title: \"About\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n { title: \"Terms of Service\", path: \"https://www.rockporch.com/terms/\", target: \"blank_\" },\r\n { title: \"Privacy Policy\", path: \"https://www.rockporch.com/privacy-policy/\", target: \"blank_\" },\r\n { title: \"Contact\", path: \"/Contact\" },\r\n ];\r\n }\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n e.preventDefault()}>{nested.title}\r\n
  • \r\n )\r\n })\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n {menuItem.title}\r\n :\r\n {menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n populateState = async () => {\r\n const isAuthenticated = await authService.isAuthenticated();\r\n this.setState({\r\n isAuthenticated: isAuthenticated\r\n }, () => {\r\n if (isAuthenticated) {\r\n }\r\n });\r\n }\r\n\r\n redirect = () => {\r\n return <>;\r\n // return \r\n }\r\n\r\n renderLoginDropdown(logoutPath) {\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const link = document.location;\r\n const returnUrl = `${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${returnUrl}`;\r\n\r\n if (this.props.loggedInUser?.proStatusId === 1 && this.props.creatorCentricView) {\r\n return (\r\n <>\r\n \r\n \r\n {/*{*/}\r\n {/* isSmallDevice ? */}\r\n {/* */}\r\n {/* :*/}\r\n {/* this.props?.loggedInUser?.imageUrl ? (< img id=\"profilePicId\" src={this.props.loggedInUser.imageUrl} alt=\"\">) : < img id=\"profilePicId\" src=\"/images/avatar2.svg\" alt=\"\">*/}\r\n {/*}*/}\r\n\r\n {this.props?.loggedInUser?.imageUrl ? (< img id=\"profilePicId\" src={this.props.loggedInUser.imageUrl} style={{ marginTop: this.props.screenWidth > 991 ? \"2px\" : \"-11px\" }} alt=\"\">) : < img id=\"profilePicId\" src=\"/images/avatar2.svg\" style={{ marginTop: \"2px\" }} alt=\"\">}\r\n\r\n \r\n\r\n \r\n \r\n { this.props.loggedInUser.userName }\r\n \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }\r\n\r\n setDefaultProfilePicture = async () => {\r\n let { props } = this;\r\n let userDetails = {\r\n name: props.loggedInUser.name,\r\n firstName: props.loggedInUser.firstName,\r\n lastName: props.loggedInUser.lastName,\r\n bio: props.loggedInUser.bio,\r\n tagLine: props.loggedInUser.tagLine,\r\n website: props.loggedInUser.website,\r\n googleUsername: props.loggedInUser.googleUsername,\r\n facebookUsername: props.loggedInUser.facebookUsername,\r\n instagramUsername: props.loggedInUser.instagramUsername,\r\n userName: props.loggedInUser.userName,\r\n email: props.loggedInUser.email,\r\n\r\n phoneNumber: props.loggedInUser.phoneNumber,\r\n proStatusId: props.loggedInUser.proStatusId,\r\n address: props.loggedInUser.address,\r\n city: props.loggedInUser.city,\r\n state: props.loggedInUser.state,\r\n postalCode: props.loggedInUser.postalCode,\r\n country: props.loggedInUser.country,\r\n\r\n onboardingComplete: props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: props.loggedInUser.profileBannerUrl,\r\n\r\n quickStart: props.loggedInUser.quickStart\r\n };\r\n userDetails.imageUrl = document.location.protocol + '//' + document.location.host + '/images/avatar.png';\r\n\r\n let postUserUrl = \"api/Account/PostUser\";\r\n let user = await postRequest(postUserUrl, userDetails);\r\n\r\n await this.props.setLoggedInUser(user);\r\n }\r\n\r\n searchOptions(searchInput) {\r\n const dropdownOptions = [\r\n {\r\n label: `Most Endorsed Products`,\r\n path: `/Browse?search=${searchInput}`,\r\n },\r\n {\r\n label: `Lockers (Gear Lists)`,\r\n path: `/SearchResults/${searchInput}?tab=locker&showBrandNav=true`,\r\n },\r\n {\r\n label: `Related Social Posts and Videos`,\r\n path: `/SearchResults/${searchInput}?tab=posts&showBrandNav=true`,\r\n },\r\n {\r\n label: `Relevant Creators`,\r\n path: `/SearchResults/${searchInput}?tab=people&showBrandNav=true`,\r\n },\r\n ];\r\n this.props.setDropdownOptions(dropdownOptions);\r\n }\r\n\r\n searchInputHandle = (event) => {\r\n this.props.toggleShowDropdown(true)\r\n this.setState({ searchValue: event.target.value, redirectValue: event.target.value });\r\n this.props.updateSearchInput(event.target.value);\r\n\r\n this.searchOptions(event.target.value);\r\n }\r\n\r\n searchInputSubmit = (e) => {\r\n if (e.keyCode === 13 && this.state.redirectValue.length > 1) {\r\n this.setState({ redirectSearch: true });\r\n document.getElementById(\"redirectLink\").click();\r\n this.setState({ redirectSearch: false });\r\n }\r\n }\r\n\r\n toggleModal = () => {\r\n this.setState({ showSharePostModal: !this.state.showSharePostModal });\r\n }\r\n\r\n handleDropdownOptionClick(option) {\r\n this.props.toggleShowDropdown(false);\r\n this.props.history.push(option.path);\r\n }\r\n\r\n authenticatedView(user, profilePath, logoutPath) {\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n\r\n return (\r\n \r\n
    \r\n\r\n {this.props?.loggedInUser?.proStatusId === 1 ? (\r\n <>\r\n
    \r\n Creator Dashboard\r\n
    \r\n \r\n \r\n \r\n\r\n \r\n\r\n
      \r\n {this.mapAddIconDropdown()}\r\n
    \r\n\r\n
    \r\n \r\n ) : (\r\n\r\n /* Ensures that the navbar logo stays centered on mobile for non-creators by adding an empty span with the same width as a Creators + button */\r\n // \r\n
    \r\n )\r\n }\r\n {this.renderLoginDropdown(logoutPath)}\r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n anonymousView(registerPath, loginPath) {\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n\r\n return (\r\n
    \r\n Login\r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n const { isAuthenticated } = this.state;\r\n if (!isAuthenticated) {\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n return this.anonymousView(registerPath, loginPath);\r\n } else {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`, state: { local: true }\r\n };\r\n return this.authenticatedView(this.props.loggedInUser, profilePath, logoutPath);\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer };\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFeedLayout, toggleAddProductModal, toggleCreateLockerModal, toggleShareModal, toggleSharePostModal, toggleShareBlogModal, toggleShareDeepLinkModal, toggleAddProductOrDeepLinkModal })(withRouter(LoginMenu));","import React, { createRef } from \"react\";\r\nimport { NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nclass BrandNavLowerMenu extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n hover: \"\",\r\n hoverDropdown: false,\r\n prevHover: \"\",\r\n categories: (!!this.props.categories) ? this.props.categories.filter(cat => cat.level === 1) : [],\r\n moreMenuItems: (!!this.props.categories) ? this.props.categories.filter(cat => cat.menuVisibleUnderMore === true) : [],\r\n subcategories: (!!this.props.categories) ? this.props.categories.filter(cat => cat.level === 2) : [],\r\n };\r\n }\r\n\r\n brandNavLowerMenuRef = createRef();\r\n dropdownRef = createRef();\r\n\r\n async componentDidMount() {\r\n document.addEventListener(\"touchstart\", this.handleTouchStartListener, { passive: false });\r\n this.setState({ categories: this.props.categories?.filter(cat => cat.level === 1), moreMenuItems: this.props.categories?.filter(cat => cat.menuVisibleUnderMore === true), subcategories: this.props.categories?.filter(cat => cat.level === 2) });\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevProps.categories !== this.props.categories) {\r\n this.setState({ categories: this.props.categories.filter(cat => cat.level === 1), moreMenuItems: this.props.categories.filter(cat => cat.menuVisibleUnderMore === true), subcategories: this.props.categories.filter(cat => cat.level === 2) });\r\n }\r\n if (this.props.navHover && this.state.prevHover !== \"\" && this.state.hoverDropdown && !this.props.hover) {\r\n this.setState({ prevHover: \"\", hoverDropdown: false });\r\n }\r\n\r\n }\r\n\r\n handleTouchStartListener = (e) => {\r\n if (!e.target.closest(`.dropdown`) && this.brandNavLowerMenuRef.current && this.state.hover !== e.target.id.slice(\"mouse-\".length) && this.state.hoverDropdown && !this.brandNavLowerMenuRef.current.contains(e.target)) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n this.setState({ hoverDropdown: false, hover: \"\", prevHover: \"\" });\r\n }\r\n }\r\n\r\n handleMouseEnter = (e) => {\r\n if (this.state.hover !== \"mouse-\" + e.target.id && !e.target.className.includes(\"mouse-\")) {\r\n let hover = e.target.id?.length > \"mouse-\".length ? e.target.id?.slice(\"mouse-\".length) : e.target.id;\r\n this.setState({ hover, prevHover: hover, hoverDropdown: true });\r\n } else if (\r\n e.target.className.includes(\"mouse-\") &&\r\n (!e.target.className.includes(\"mouse-\" + this.state.hover) || this.state.hover === \"\")\r\n ) {\r\n const substring = e.target.className.substring(e.target.className.indexOf(\"mouse-\") + \"mouse-\".length);\r\n const hover = substring.length > 0 ? substring : e.target.id;\r\n this.setState({ hover, prevHover: hover, hoverDropdown: true });\r\n }\r\n }\r\n\r\n handleMouseLeave = (e) => {\r\n if (this.state.hover !== \"\") {\r\n this.setState({ hover: \"\" });\r\n }\r\n }\r\n\r\n handleMouseEnterDropdown = (e) => {\r\n if (this.state.hoverDropdown !== true) {\r\n this.setState({ hoverDropdown: true });\r\n }\r\n }\r\n\r\n handleMouseLeaveDropdown = (e) => {\r\n if (this.state.hoverDropdown !== false && this.state.hover === \"\") {\r\n this.setState({ hoverDropdown: false });\r\n }\r\n }\r\n\r\n handleCloseDropdown = () => {\r\n if (this.state.hoverDropdown) {\r\n this.setState({ hoverDropdown: false });\r\n }\r\n }\r\n\r\n handleTouchStart = (e) => {\r\n if (this.state.hover !== \"\" && e.target.id?.includes(this.state.hover)) {\r\n this.setState({ hover: this.state.hoverDropdown ? \"\" : this.state.hover, hoverDropdown: !this.state.hoverDropdown, prevHover: \"\" });\r\n } else {\r\n this.setState({ hover: e.target.id.slice(\"mouse-\".length), hoverDropdown: !this.state.hoverDropdown })\r\n }\r\n }\r\n\r\n menuCategories = [\"Camp\", \"Climb\", \"Cycle\", \"Run\", \"Snow\", \"Water\", \"Fish/Hunt\", \"Travel\", \"Men\", \"Women\", \"Kids\", \"More\"];\r\n\r\n mapSubcategories = (id) => {\r\n const category = this.state.categories.filter(cat => cat.id === id)[0].name;\r\n const subcategories = this.state.subcategories.filter(cat => cat.parentCategoryId === id);\r\n return subcategories.map((subC, i) => {\r\n const subName = !!(subC.menuName) && subC.menuName.length > 0 ? subC.menuName : subC.name;\r\n return (\r\n {subName}\r\n // {subC.name}\r\n );\r\n });\r\n };\r\n\r\n mapMoreMenuItems = () => {\r\n return this.state.moreMenuItems.map( (item, i) => {\r\n const categoryObj = item.level === 1 ? null : this.props.categories.filter(cat => cat.id === item.parentCategoryId)[0];\r\n const category = !!(categoryObj) ? categoryObj.name : item.name;\r\n const subCategory = item.level === 1 ? null : item.name;\r\n return (\r\n {!!(item.menuName) ? item.menuName : item.name}\r\n \r\n );\r\n });\r\n }\r\n\r\n mapMenuItems = () => {\r\n const categories = !!(this.state.categories) && this.state.categories.length > 0 ? [...this.state.categories.filter(cat => cat.level === 1 && cat.menuVisible === true), { more: \"More\" }] : [];\r\n \r\n return categories.map((cat, i) => { \r\n if (i === categories.length - 1) {\r\n const more = cat.more;\r\n const isHovering = !this.props.navHover && more === this.state.hover || (!this.props.navHover && more === this.state.prevHover && this.state.hoverDropdown);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n More\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    990? \"translate3d(-4px, 22px, 0px)\" : !!(this.props.loggedInUser) && this.props.loggedInUser?.proStatusId === 0 ? \"translate3d(-4px, 22px, 0px)\" : this.props.screenWidth < 756 ? \"translate3d(-4px, 46px, 0px)\" : this.props.screenWidth < 850 ? \"translate3d(-4px, 22px, 0px)\" : \"translate3d(-4px,22px, 0px)\", zIndex: -1 }}>\r\n
    \r\n\r\n
    Categories
    \r\n
    \r\n
    \r\n {this.mapMoreMenuItems()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n const categoryName = !!(cat.menuName) && cat.menuName.length > 0 ? cat.menuName : cat.name;\r\n const category = cat.name;\r\n const isHovering = !this.props.navHover && category === this.state.hover || (!this.props.navHover && category === this.state.prevHover && this.state.hoverDropdown);\r\n return (\r\n
    \r\n
    \r\n \r\n {categoryName}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    991 ? \"translate3d(-4px, 22px, 0px)\" : !!(this.props.loggedInUser) && this.props.loggedInUser?.proStatusId === 0 ? \"translate3d(-4px, 22px, 0px)\" : this.props.screenWidth < 756 ? \"translate3d(-4px, 46px, 0px)\" : this.props.screenWidth < 850 ? \"translate3d(-4px,22px, 0px)\" : \"translate3d(-4px,22px, 0px)\", zIndex: -1 }}>\r\n
    \r\n
    \r\n {this.props.deviceSize === \"sm\" ?\r\n
    \r\n
    \r\n
    Related Post
    \r\n
    \r\n
    576 ? \"220px\" : \"150px\", height: this.props.showBlogPostsFlag ? \"150px\" : \"130px\", paddingBottom: this.props.screenWidth > 576 ? 0 : \"75%\", position: \"relative\", borderRadius: \"12px\", overflow: \"hidden\" }}>\r\n \r\n {`Related\r\n \r\n
    \r\n
    \r\n
    \r\n
    Featured
    \r\n
    \r\n\r\n Most Endorsed Products\r\n Lockers (Gear Lists)\r\n Related Social Posts & Videos\r\n Relevant Creators\r\n {\r\n this.props.showBlogPostsFlag ?\r\n\r\n Blog Posts & Expert Advice\r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n :\r\n <>\r\n
    \r\n
    Related Post
    \r\n
    \r\n
    \r\n \r\n {`Related\r\n \r\n
    \r\n
    \r\n
    \r\n
    Featured
    \r\n
    \r\n\r\n Most Endorsed Products\r\n Lockers (Gear Lists)\r\n Related Social Posts & Videos\r\n Relevant Creators\r\n {\r\n this.props.showBlogPostsFlag ?\r\n\r\n Blog Posts & Expert Advice\r\n :\r\n <>\r\n }\r\n
    \r\n \r\n }\r\n\r\n
    \r\n
    Categories
    \r\n
    \r\n
    \r\n {this.mapSubcategories(cat.id)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n });\r\n }\r\n\r\n\r\n render() {\r\n\r\n\r\n return (\r\n
    385 && this.props.screenWidth < 991 ? \"0 20px\" : this.props.screenWidth <= 385 ?\"0 10px\" : \"\" }}>\r\n {this.mapMenuItems()}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default BrandNavLowerMenu;","import React from \"react\";\r\n\r\n/**\r\n *\r\n * @param {{customClass:string} props\r\n */\r\nconst NotificationDotIcon = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default NotificationDotIcon;","import { getRequest } from \"../sharedUtils/httpUtils\";\r\n\r\n// Updated function to return shortened URL without an API call regardless of localhost, dev, or app sites in use\r\nexport const getPostShareLink = shareCode => {\r\n const host = window.location.host;\r\n\r\n if (host.includes(\"localhost\")) {\r\n return \"https://\" + host + \"/plink/\" + shareCode;\r\n }\r\n\r\n const hostArr = host.split(\".\");\r\n return \"https://\" + hostArr[0] + \".rockporch.com/plink/\" + shareCode;\r\n}\r\n\r\nexport const getLockerShareLink = shareCode => {\r\n const host = window.location.host;\r\n\r\n if (host.includes(\"localhost\")) {\r\n return \"https://\" + host + \"/llink/\" + shareCode;\r\n }\r\n\r\n const hostArr = host.split(\".\");\r\n return \"https://\" + hostArr[0] + \".rockporch.com/llink/\" + shareCode;\r\n}\r\n\r\nexport const getBlogShareLink = shareCode => {\r\n const host = window.location.host;\r\n\r\n if (host.includes(\"localhost\")) {\r\n return \"https://\" + host + \"/blink/\" + shareCode;\r\n }\r\n\r\n const hostArr = host.split(\".\");\r\n return \"https://\" + hostArr[0] + \".rockporch.com/blink/\" + shareCode;\r\n}\r\n\r\nexport const getProductShareLink = (shareCode, isBrowse = false) => {\r\n const host = window.location.host;\r\n const browse = isBrowse ? \"?b=1\" : \"\";\r\n if (host.includes(\"localhost\")) {\r\n return \"https://\" + host + \"/prdlink/\" + shareCode + browse;\r\n }\r\n\r\n const hostArr = host.split(\".\");\r\n return \"https://\" + hostArr[0] + \".rockporch.com/prdlink/\" + shareCode + browse;\r\n}\r\n\r\nexport const getMerchantShareLink = urlFragment => {\r\n const host = window.location.host;\r\n\r\n if (host.includes(\"localhost\")) {\r\n return \"https://\" + host + urlFragment;\r\n }\r\n\r\n const hostArr = host.split(\".\");\r\n return \"https://\" + hostArr[0] + \".rockporch.com\" + urlFragment;\r\n}\r\n\r\nexport const getReferralShareLink = urlFragment => {\r\n const host = window.location.host;\r\n\r\n if (host.includes(\"localhost\")) {\r\n return \"https://\" + host + '/Identity/Account/Register?returnUrl=/Account/CreatorApp&ReferralUser=' + urlFragment;\r\n }\r\n\r\n const hostArr = host.split(\".\");\r\n return \"https://\" + hostArr[0] + \".rockporch.com\" + '/Identity/Account/Register?returnUrl=/Account/CreatorApp&ReferralUser=' + urlFragment;\r\n}\r\n\r\n// OLD API CALLS THAT ARE NOT CURRENTLY USED\r\n\r\nexport async function getPostShareLinkOld(shareCode) {\r\n let request = await getRequest(\"/api/Post/GetShortenedUrl\");\r\n let shareLink = request.url + (request.url.endsWith('/') ? \"\" : \"/\") + `${shareCode}`;\r\n return shareLink\r\n}\r\n\r\nexport async function getLockerShareLinkOld(shareCode) {\r\n let request = await getRequest(\"/api/Locker/GetShortenedUrl\");\r\n let shareLink = request.url + (request.url.endsWith('/') ? \"\" : \"/\") + `${shareCode}`;\r\n return shareLink\r\n}\r\n\r\nexport async function getProductShareLinkOld(shareCode) {\r\n let request = await getRequest(\"/Products/GetShortenedUrl\");\r\n let shareLink = request.url + (request.url.endsWith('/') ? \"\" : \"/\") + `${shareCode}`;\r\n return shareLink\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { Navbar, NavbarBrand, NavItem } from 'reactstrap';\r\nimport { ButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\r\nimport { Link, NavLink, withRouter } from 'react-router-dom';\r\nimport LoginMenu from './api-authorization/BrandLoginMenu';\r\nimport BrandNavLowerMenu from './BrandNavLowerMenu';\r\nimport './NavMenu.css';\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport { ApplicationPaths, QueryParameterNames } from './api-authorization/ApiAuthorizationConstants';\r\nimport NotificationDotIcon from './icons/NotificationDotIcon';\r\nimport { toggleShareModal, toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getReferralShareLink } from \"../sharedUtils/shareLinkPrefixes\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport rpLogo from \"./icons/images/rockporch-logo.svg\";\r\n\r\nclass NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n totalHeight = React.createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n collapsed: true,\r\n showMobileSearchBar: false,\r\n searchInput: \"\",\r\n searchProp: \"\",\r\n redirectToSearch: false,\r\n submenuOpen: true,\r\n hover: false,\r\n isMobile: false,\r\n showBlogPostsFlag: false,\r\n pathname: window.location.pathname,\r\n browseSearchMounted: false,\r\n navLong: [\"browse\", \"explore\", \"homefeed\", \"profile\"].some(item => window.location.pathname.toLowerCase().includes(item)),\r\n isSearchResults: [\"searchresults\"].some(item => window.location.pathname.toLowerCase().includes(item)),\r\n dropdownOptions: [],\r\n showDropdown: false,\r\n creatorCentricView: [\"/creatordashboard\", \"/account/drafts\", \"/account/analytics\"].some(item => window.location.pathname.toLowerCase().includes(item)),\r\n };\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.collapseMenu = this.collapseMenu.bind(this);\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.setState({ searchInput: this.props.searchInput, searchProp: this.props.searchInput, showMobileSearchBar: (this.props.location.pathname.toLowerCase().startsWith(\"/browse\") && (!!(this.props.searchInput) && this.props.searchInput.length > 0)) || this.props.location.pathname.toLowerCase().startsWith(\"/searchresults\"), isMobile: window.innerWidth - document.documentElement.clientWidth < 5 });\r\n if (!!(this.props.searchInput) && this.props.searchInput.length > 0) {\r\n this.searchOptions(this.props.searchInput);\r\n this.setState({ showDropdown: true })\r\n }\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (window.location.pathname !== this.state.pathname) {\r\n this.setState({\r\n pathname: window.location.pathname, navLong: [\"browse\", \"explore\", \"homefeed\", \"profile\"].some(item => window.location.pathname.toLowerCase().includes(item)),\r\n isSearchResults: [\"searchresults\"].some(item => window.location.pathname.toLowerCase().includes(item)),\r\n creatorCentricView: [\"/creatordashboard\", \"/account/drafts\", \"/account/analytics\"].some(item => window.location.pathname.toLowerCase().includes(item)),\r\n });\r\n }\r\n if (prevState.collapsed !== this.state.collapsed) {\r\n this.props.hamburgerOpen(!this.state.collapsed);\r\n }\r\n if (this.props.toggleMenu != undefined && this.props.toggleMenu != null && prevProps.toggleMenu !== this.props.toggleMenu) {\r\n this.setState({ collapsed: false });\r\n }\r\n if (!this.state.browseSearchMounted && !!(this.props.searchInput) && this.props.searchInput.length > 0 && this.state.searchInput !== this.props.searchInput) {\r\n this.setState({ searchInput: this.props.searchInput, browseSearchMounted: true });\r\n }\r\n if (prevProps.screenWidth !== this.props.screenWidth) {\r\n const isMobile = window.innerWidth - document.documentElement.clientWidth < 5;\r\n this.setState({ isMobile });\r\n }\r\n if (!!(this.props.searchInput) && prevProps.searchInput !== this.props.searchInput && this.state.searchInput !== this.props.searchInput) {\r\n this.setState({ searchInput: this.props.searchInput, searchProp: this.props.searchInput, showMobileSearchBar: true });\r\n this.searchOptions(this.props.searchInput);\r\n }\r\n if (this.props.resetSearchBar) {\r\n this.props.handleResetSearchBar(false);\r\n this.setState({ searchInput: \"\", searchProp: \"*&^reset\", showMobileSearchBar: false, showDropdown: false })\r\n }\r\n if (prevState.showMobileSearchBar !== this.state.showMobileSearchBar) {\r\n this.props.handleMobileSearchOpen(this.state.showMobileSearchBar);\r\n }\r\n }\r\n\r\n resetSearchProp = (resetSearchInput = false) => {\r\n if (this.state.searchProp.length > 0) {\r\n this.setState({ searchProp: \"\" });\r\n //if (resetSearchInput) {\r\n // this.setState({ searchValue: \"\", searchInput: \"\" })\r\n //}\r\n }\r\n }\r\n\r\n updateSearchInput = (searchInput) => {\r\n this.setState({ searchInput });\r\n }\r\n\r\n handleSearchInputChange = (event) => {\r\n this.setState({ showDropdown: true });\r\n\r\n const searchInput = event.target.value;\r\n this.setState({ searchInput });\r\n this.searchOptions(searchInput);\r\n }\r\n\r\n searchOptions(searchInput) {\r\n const dropdownOptions = [\r\n {\r\n label: `Most Endorsed Products`,\r\n path: `/Browse?search=${searchInput}`,\r\n },\r\n {\r\n label: `Lockers (Gear Lists)`,\r\n path: `/SearchResults/${searchInput}?tab=locker&showBrandNav=true`,\r\n },\r\n {\r\n label: `Related Social Posts and Videos`,\r\n path: `/SearchResults/${searchInput}?tab=posts&showBrandNav=true`,\r\n },\r\n {\r\n label: `Relevant Creators`,\r\n path: `/SearchResults/${searchInput}?tab=people&showBrandNav=true`,\r\n },\r\n ];\r\n this.setState({ dropdownOptions });\r\n }\r\n\r\n setDropdownOptions = (dropdownOptions) => {\r\n this.setState({ dropdownOptions });\r\n }\r\n\r\n handleDropdownOptionClick(option) {\r\n this.setState({ showDropdown: false });\r\n this.props.history.push(option.path);\r\n }\r\n\r\n submitSearch = (e) => {\r\n if (e.keyCode === 13 && this.state.searchInput.length > 1) {\r\n this.setState({ showDropdown: false });\r\n\r\n this.props.populateSearch(this.state.searchInput);\r\n //this.setState({ searchProp: this.state.searchInput });\r\n document.getElementById(\"searchSubmitMobile\").click();\r\n\r\n }\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed,\r\n });\r\n }\r\n\r\n collapseMenu() {\r\n this.setState({\r\n collapsed: true\r\n });\r\n }\r\n\r\n brandMobileDropdown = () => {\r\n let menu = !(this.props.loggedInUser) ? [\r\n { title: \"Shop\", path: \"/Browse\" },\r\n { title: \"Resource\", path: \"https://www.rockporch.com/CREATOR-RESOURCES/\", target: \"blank_\" },\r\n ] :\r\n [\r\n { title: \"Shop\", path: \"/Browse\" },\r\n { title: \"Resource\", path: \"https://www.rockporch.com/CREATOR-RESOURCES/\", target: \"blank_\" },\r\n ];\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }} href={nested.path}>{nested.title}\r\n
  • \r\n )\r\n })\r\n if (menuItem.title === \"Explore\" || menuItem.title === \"Shop\") {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{menuItem.title}\r\n
  • \r\n );\r\n }\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n
    \r\n { this.collapseMenu() }} target={menuItem.target}>{menuItem.title}\r\n
    \r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapThreeDotIconDropdown = () => {\r\n let menu = !(this.props.loggedInUser) ? [,\r\n { title: \"Explore\", path: \"/Nav/Explore?showBrandNav=true\" },\r\n { title: \"Home\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n { title: \"Become a Creator\", path: \"https://\" + window.location.host + '/Identity/Account/Register?returnUrl=/Account/CreatorApp', target: \"blank_\" },\r\n ] :\r\n [,\r\n { title: \"Explore\", path: \"/Nav/Explore?showBrandNav=true\" },\r\n { title: \"Home\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n ];\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }} href={nested.path}>{nested.title}\r\n
  • \r\n )\r\n })\r\n if (menuItem.title === \"Explore\") {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{menuItem.title}\r\n
  • \r\n );\r\n }\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n { this.collapseMenu() }} target={menuItem.target}>{menuItem.title}\r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapCreatorMenu = () => {\r\n let menu = [\r\n { title: \"Referral Link\", path: \"\" },\r\n { title: \"My Feed\", path: \"/Nav/HomeFeed\" },\r\n { title: \"My Saves\", path: \"/Account/Saves\" },\r\n { title: \"Account Settings\", path: \"/Account/AccountSettings\" },\r\n ];\r\n\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{nested.title}\r\n
  • \r\n )\r\n })\r\n\r\n if (menuItem.title === \"Referral Link\") {\r\n return (\r\n
  • 991 ? \"none\" : \"\" }}>\r\n \r\n onClick={(e) => {\r\n e.preventDefault();\r\n this.collapseMenu();\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n }}\r\n >{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n { this.collapseMenu() }}>{menuItem.title}\r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapNonCreatorMenu = () => {\r\n let menu = [];\r\n\r\n if (this.props?.loggedInUser?.proStatusId === 1) {\r\n menu = [\r\n { title: \"Referral Link\", path: \"\" },\r\n { title: \"My Feed\", path: \"/Nav/HomeFeed\" },\r\n { title: \"My Saves\", path: \"/Account/Saves\" },\r\n { title: \"My Creators\", path: \"/\" },\r\n { title: \"Account Settings\", path: \"/Account/AccountSettings\" },\r\n ];\r\n } else {\r\n\r\n menu = [\r\n { title: \"My Feed\", path: \"/Nav/HomeFeed\" },\r\n { title: \"My Saves\", path: \"/Account/Saves\" },\r\n { title: \"Account Settings\", path: \"/Account/AccountSettings\" },\r\n { title: \"My Creators\", path: \"/\" }\r\n ];\r\n }\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{nested.title}\r\n
  • \r\n )\r\n })\r\n\r\n if (menuItem.title === \"My Creators\") {\r\n return (\r\n
  • \r\n {\r\n e.preventDefault();\r\n this.collapseMenu();\r\n this.showFollowersFollowing(\"following\");\r\n }}\r\n >{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n if (menuItem.title === \"Referral Link\") {\r\n return (\r\n
  • 991 ? \"none\" : \"\" }}>\r\n {\r\n e.preventDefault();\r\n this.collapseMenu();\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n }}\r\n >Refer A Creator\r\n
  • \r\n )\r\n }\r\n\r\n if (menuItem.title === \"My Feed\") {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n { this.collapseMenu() }}>{menuItem.title}\r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n showFollowersFollowing = (followersFollowing) => {\r\n this.props.toggleFollowersFollowingModal(this.props.loggedInUser.id, followersFollowing, null);\r\n }\r\n\r\n handleMouseEnter = (e) => {\r\n if (this.state.hover !== true) {\r\n this.setState({ hover: true });\r\n }\r\n }\r\n\r\n handleMouseLeave = (e) => {\r\n if (this.state.hover !== false) {\r\n this.setState({ hover: false });\r\n }\r\n }\r\n\r\n toggleSearchBar = () => {\r\n this.setState({ showMobileSearchBar: !this.state.showMobileSearchBar });\r\n }\r\n\r\n handleInputOnBlur = (e) => {\r\n if (!!(e.relatedTarget) && !e.relatedTarget.classList.contains(\"search-dropdown\")) {\r\n this.setState({ showDropdown: false })\r\n }\r\n }\r\n\r\n toggleShowDropdown = (isOpen = false) => {\r\n this.setState({ showDropdown: isOpen })\r\n }\r\n\r\n displayHamburgerMenu = () => {\r\n let showMobileSearchBar = ([\"sm\", \"md\"].includes(this.props.deviceSize) && this.state.showMobileSearchBar === true);\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`, state: { local: true }\r\n };\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const link = document.location;\r\n const returnUrl = `${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${returnUrl}`;\r\n const showSubmenu = { listStyle: \"none\", position: \"relative\", right: \"20%\", marginTop: \"3px\", marginRight: \"-40px\", marginLeft: \"25px\" };\r\n const breakpointWidth = this.props.screenWidth < 991;\r\n\r\n return (\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n\r\n
      \r\n\r\n {\r\n breakpointWidth ?\r\n <>\r\n {this.brandMobileDropdown()}\r\n
    • \r\n
      \r\n
    • \r\n :\r\n <>\r\n\r\n }\r\n\r\n {this.mapThreeDotIconDropdown()}\r\n\r\n\r\n {this.props?.loggedInUser == null || this.props?.loggedInUser == undefined ?\r\n <> :\r\n <>\r\n
    • \r\n
      \r\n
    • \r\n\r\n
    • \r\n \r\n {this.props?.loggedInUser?.userName == null || this.props?.loggedInUser?.userName == undefined ?\r\n this.props?.loggedInUser?.email : this.props?.loggedInUser?.userName}\r\n \r\n
        \r\n {this.mapNonCreatorMenu()}\r\n
      \r\n
    • \r\n\r\n \r\n }\r\n\r\n
    • \r\n
      \r\n
    • \r\n\r\n {\r\n this.props?.loggedInUser?.isAdmin === true ? (\r\n
    • \r\n { this.collapseMenu() }}>Admin\r\n
    • \r\n ) : \r\n }\r\n\r\n
    • \r\n { this.collapseMenu() }} href=\"https://www.rockporch.com/terms/\" target=\"blank_\">Terms of Service\r\n
    • \r\n
    • \r\n { this.collapseMenu() }} href=\"https://www.rockporch.com/privacy-policy/\" target=\"blank_\">Privacy Policy\r\n
    • \r\n\r\n {this.props?.loggedInUser == null || this.props?.loggedInUser == undefined ?\r\n <> :\r\n <>\r\n
    • \r\n { this.collapseMenu() }}>Contact\r\n
    • \r\n\r\n
    • \r\n { this.props.setShowTopNav(false) }}>Log Out\r\n
    • \r\n \r\n }\r\n\r\n {this.props?.loggedInUser?.proStatusId === 0 ?\r\n
    • \r\n { this.collapseMenu() }}>Apply as Creator\r\n
    • :\r\n <>\r\n }\r\n\r\n {this.props?.loggedInUser == null || this.props?.loggedInUser == undefined ?\r\n
      \r\n
    • \r\n Login\r\n
    • \r\n
      :\r\n <>\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n \r\n render() {\r\n if (!this.props.showTopNav) {\r\n return <>;\r\n }\r\n\r\n\r\n let showMobileSearchBar = ([\"sm\", \"md\"].includes(this.props.deviceSize) && this.state.showMobileSearchBar === true);\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`, state: { local: true }\r\n };\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const link = document.location;\r\n const returnUrl = `${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${returnUrl}`;\r\n const showSubmenu = { listStyle: \"none\", position: \"relative\", right: \"20%\", marginTop: \"3px\", marginRight: \"-40px\", marginLeft: \"25px\" };\r\n const breakpointWidth = this.props.screenWidth < 991;\r\n const anonymousRpLogoStyle = { position: \"absolute\", top: 2, left: \"50%\", transform: \"translate(-53%, 0)\" }\r\n\r\n const dropdownStyle = {\r\n zIndex: 99999,\r\n lineHeight: \"1.4rem\",\r\n boxShadow: \"rgba(229, 89, 52, 0.4) 0px 5px 15px\",\r\n border: \"1px solid lightgray\",\r\n borderRadius: \"15px\",\r\n padding: \"20px\",\r\n backgroundColor: \"white\",\r\n top: \"30\",\r\n width: this.props.screenWidth < 991 ? \"87%\" : \"70%\",\r\n margin: \"0 auto\",\r\n padding: \"20px\",\r\n position: \"fixed\",\r\n cursor: \"pointer\",\r\n transform: this.props.screenWidth < 991 ? \"translate(9%, -10px)\" : \"translate(22%, -10px)\",\r\n };\r\n return (\r\n \r\n {/*
    991 ? 36 : !(this.props.loggedInUser) && this.state.pathname.toLowerCase().includes(\"/searchresults\") && this.props.screenWidth < 991 ? 28 : (this.state.pathname.toLowerCase().includes(\"/searchresults\") || this.state.pathname.toLowerCase().includes(\"/account/saves\")) && this.props.screenWidth > 991 ? 42 : (this.state.pathname.toLowerCase().includes(\"/searchresults\") || this.state.pathname.toLowerCase().includes(\"/account/saves\")) && this.props.screenWidth < 991 ? 34 : [\"/browse\"].includes(this.state.pathname.toLowerCase()) && !(this.props.loggedInUser) && this.props.screenWidth < 756 ? 101 : [\"/browse\"].includes(this.state.pathname.toLowerCase()) && this.props.screenWidth < 756 ? 103 : [\"/browse\"].includes(this.state.pathname.toLowerCase()) && this.props.screenWidth > 991 ? 90 : !(this.props.loggedInUser) && this.state.pathname.toLowerCase().includes(\"/browse\") && this.props.screenWidth < 991 ? 77 : [\"/browse\"].includes(this.state.pathname.toLowerCase()) ? 79 : this.props.screenWidth < 991 && (!(this.props.loggedInUser) || this.props.loggedInUser?.proStatusId !== 1) ? 53 : this.props.screenWidth > 991 ? 63 : !(this.props.loggedInUser) ? 58 : 53 } : { display: \"none\" }}>*/}\r\n
    \r\n\r\n {/*
    991 ? \"90px\" : this.state.pathname.toLowerCase().includes(\"/browse\") ? \"56px\" : this.props.screenWidth < 991 && (!(this.props.loggedInUser) || this.props.loggedInUser?.proStatusId !== 1) ? \"53px\" : \"58px\", paddingRight: !this.state.isMobile && this.props.browseFilterOpen && this.props.screenWidth <= 991 ? \"17px\" : \"\", borderBottom: 0, paddingTop: this.props.screenWidth > 991 ? \"2px\" : \"\", width: \"100%\", zIndex: 1000 }} ref={this.totalHeight}>*/}\r\n
    991 ? \"66px\" : this.state.creatorCentricView ? \"55px\" : this.props.screenWidth < 991 ? \"59px\" :\"63px\", paddingRight: !this.state.isMobile && this.props.browseFilterOpen && this.props.screenWidth <= 991 ? \"17px\" : \"\", borderBottom: this.state.creatorCentricView ? \"1px solid lightgray\" : 0, paddingTop: this.props.screenWidth > 991 ? \"2px\" : \"\", width: \"100%\", zIndex: 997 }} ref={this.totalHeight}>\r\n\r\n \r\n
    \r\n {this.displayHamburgerMenu()} \r\n {(this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\") ?\r\n
    \r\n \r\n \r\n \r\n
    :\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n {\r\n !this.state.creatorCentricView ? (\r\n <>\r\n {/*style={*/}\r\n {/* {*/}\r\n {/* height: \"53px\", overflowX: \"hidden\", position: \"sticky\", top: [\"/browse\"].includes(this.state.pathname.toLowerCase()) && this.props.screenWidth < 756 ? 101 : this.props.screenWidth < 754 && this.state.pathname.toLowerCase().includes(\"/browse\") ? 103 : !(this.props.loggedInUser) && this.state.pathname.toLowerCase().includes(\"/browse\") && this.props.screenWidth < 991 ? 77 : this.state.pathname.toLowerCase().includes(\"/browse\") && this.props.screenWidth < 991 ? 53 : this.state.pathname.toLowerCase().includes(\"/browse\") && (!!(this.props.loggedInUser) || this.props.loggedInUser?.proStatusId !== 1) ? 90 : this.state.pathname.toLowerCase().includes(\"/browse\") ? 87 : this.props.screenWidth < 991 && (!(this.props.loggedInUser) || this.props.loggedInUser?.proStatusId !== 1) ? 53 : 58, zIndex: 999, backgroundColor: \"#fff\", paddingTop: \"5px !important\", paddingBottom: \"5px !important\", display: this.state.collapsed === true ? \"block\" : \"none\"*/}\r\n {/* }*/}\r\n\r\n
    \r\n
    \r\n \"Search\"\r\n
    \r\n this.setState({ showDropdown: !this.state.showDropdown })}\r\n onKeyUp={(e) => this.submitSearch(e)}\r\n style={{\r\n display: \"inline\",\r\n backgroundColor: \"#e9ecef\",\r\n border: \"none\",\r\n paddingLeft: \"40px\",\r\n paddingBottom: \"7px\",\r\n borderRadius: \"30px\",\r\n width: this.props.screenWidth < 991 ? \"87%\" : \"70%\",\r\n marginLeft: \"1.5%\",\r\n marginTop: \"5px\",\r\n marginBottom: \"5px\",\r\n zIndex: \"1\",\r\n }}\r\n />\r\n \r\n\r\n \r\n
    \r\n {(this.state.searchInput.length > 0 && this.state.dropdownOptions?.length > 0 && this.state.showDropdown) && (\r\n
      \r\n {this.state.dropdownOptions.map((option, index) => (\r\n this.handleDropdownOptionClick(option)}\r\n style={{ listStyleType: \"none\", fontFamily: \"'Archivo', sans-serif\" }}\r\n >\r\n
      {`${this.state.searchInput}`}
      \r\n
      {`in ${option.label}`}
      \r\n {index < this.state.dropdownOptions.length - 1 &&
      }\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n ) : \r\n }\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer, fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, { toggleShareModal, toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing })(NavMenu));","import React from \"react\";\r\n\r\nconst InformationIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default InformationIcon;","import React, { Component, Fragment } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\nimport { NavItem, NavLink, UncontrolledPopover, Popover, PopoverBody, PopoverHeader, Toast, ToastBody, ToastHeader, UncontrolledButtonDropdown, DropdownMenu, DropdownItem, DropdownToggle } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport authService from './AuthorizeService';\r\n\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants';\r\n\r\nimport GridIcon from \"components/icons/GridIcon\";\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\nimport PlusIconNav from \"components/icons/PlusIconNav\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\n\r\nimport { toggleFeedLayout } from \"stateManagement/reducers/feedLayoutReducer\";\r\nimport { toggleAddProductModal, toggleCreateLockerModal, toggleShareModal, toggleSharePostModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport { postRequest } from '../../sharedUtils/httpUtils';\r\nimport { getMessageCount, getNotificationCount } from \"sharedUtils/notificationUtils\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\n\r\n\r\nclass LoginMenu extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n showSharePostModal: false,\r\n searchValue: \"\",\r\n redirectValue: \"\",\r\n redirectSearch: false,\r\n showProfilePicturePrompt: false,\r\n showPrompt: { }\r\n };\r\n\r\n this.clickHandler = this.clickHandler.bind(this);\r\n this.dropDownIconRef = React.createRef();\r\n }\r\n\r\n async componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n await this.populateState();\r\n\r\n if (this.props.loggedInUser?.imageUrl === null || this.props.loggedInUser?.imageUrl === undefined) {\r\n this.setState({ showProfilePicturePrompt: true });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n let element = document.getElementById('createLockerPrompt')\r\n if (element) {\r\n element.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n element = document.getElementById('sharePostPrompt')\r\n if (element) {\r\n element.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n if (this.state.redirectSearch === true) {\r\n this.setState({ redirectSearch: false })\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n clickHandler(e) {\r\n e.preventDefault();\r\n this.toggleModal();\r\n }\r\n\r\n displayLayoutToggleButton = () => {\r\n\r\n return (\r\n {\r\n e.preventDefault();\r\n this.props.toggleFeedLayout();\r\n }}\r\n >\r\n {this.props.feedLayout.isGrid === true ? : }\r\n \r\n )\r\n }\r\n\r\n togglePrompt = (id) => {\r\n let showPrompt = { ...this.state.showPrompt };\r\n showPrompt[id] = !showPrompt[id];\r\n\r\n this.setState({ showPrompt });\r\n }\r\n\r\n mapAddIconDropdown = () => {\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n\r\n let menu = [\r\n {\r\n title: \"Add a Product\",\r\n action: this.props.toggleAddProductModal,\r\n iconPath: \"images/Thunder.svg\",\r\n },\r\n {\r\n title: \"Create a Locker\",\r\n action: this.props.toggleCreateLockerModal,\r\n iconPath: \"images/Difference.svg\",\r\n infoPrompt: \"Lockers are pursuit or destination specific gear lists\",\r\n infoPromptId: \"createLockerPrompt\"\r\n },\r\n {\r\n title: \"Share a Post\",\r\n action: this.props.toggleSharePostModal,\r\n iconPath: \"images/Picture.svg\",\r\n infoPrompt: \"Integrate your social accounts to repost content and tag products\",\r\n infoPromptId: \"sharePostPrompt\"\r\n }\r\n ]\r\n\r\n return menu.map((menuItem, i) => {\r\n return (\r\n
  • \r\n {\r\n e.preventDefault();\r\n menuItem.action();\r\n }}\r\n >\r\n \"\"\r\n

    \r\n {menuItem.title}\r\n

    \r\n \r\n {menuItem.infoPromptId ?\r\n <>\r\n \r\n { this.togglePrompt(menuItem.infoPromptId) }}\r\n trigger=\"legacy\">\r\n \r\n {menuItem.infoPrompt}\r\n \r\n \r\n : null\r\n }\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapThreeDotIconDropdown = () => {\r\n let menu = [\r\n { title: \"Explore\", path: \"/Explore\" },\r\n { title: \"My Feed\", path: \"/HomeFeed\" },\r\n { title: \"About\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n { title: \"Terms of Service\", path: \"https://www.rockporch.com/terms/\", target: \"blank_\" },\r\n { title: \"Privacy Policy\", path: \"https://www.rockporch.com/privacy-policy/\", target: \"blank_\" },\r\n { title: \"Contact\", path: \"/Contact\" },\r\n ]\r\n\r\n if (this.props.loggedInUser?.proStatusId === 1) {\r\n menu = [\r\n { title: \"Profile\", path: `/Profile/${this.props?.loggedInUser?.userName}` },\r\n { title: \"Explore\", path: \"/Explore\" },\r\n { title: \"My Feed\", path: \"/HomeFeed\" },\r\n { title: \"FAQ\", path: \"https://www.rockporch.com/faq/\", target: \"blank_\" },\r\n { title: \"About\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n { title: \"Terms of Service\", path: \"https://www.rockporch.com/terms/\", target: \"blank_\" },\r\n { title: \"Privacy Policy\", path: \"https://www.rockporch.com/privacy-policy/\", target: \"blank_\" },\r\n { title: \"Contact\", path: \"/Contact\" },\r\n ];\r\n }\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n e.preventDefault()}>{nested.title}\r\n
  • \r\n )\r\n })\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n {menuItem.title}\r\n :\r\n {menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n populateState = async () => {\r\n const isAuthenticated = await authService.isAuthenticated();\r\n this.setState({\r\n isAuthenticated: isAuthenticated\r\n }, () => {\r\n if (isAuthenticated) {\r\n }\r\n });\r\n }\r\n\r\n redirect = () => {\r\n return \r\n }\r\n\r\n renderLoginDropdown(logoutPath) {\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n if (this.props.loggedInUser?.proStatusId === 1) {\r\n return (\r\n <>\r\n \r\n \r\n {\r\n this.props?.loggedInUser?.imageUrl ? (< img id=\"profilePicId\" src={this.props.loggedInUser.imageUrl} alt=\"\">) : < img id=\"profilePicId\" src=\"/images/avatar2.svg\" alt=\"\">\r\n }\r\n \r\n\r\n
      \r\n
    • \r\n My Profile\r\n
    • \r\n {this.props?.loggedInUser?.proStatusId === 1 ?\r\n
    • \r\n My Products\r\n
    • : <>}\r\n {this.props?.loggedInUser?.proStatusId === 1 ?\r\n
    • \r\n Merchant Partners\r\n
    • : <>}\r\n {this.props?.loggedInUser?.proStatusId === 1 ?\r\n
    • \r\n Creator Dashboard\r\n
    • : <>}\r\n\r\n
    \r\n
    \r\n\r\n {\r\n this.props.loggedInUser && this.props.loggedInUser.onboardingComplete && (this.props.loggedInUser?.imageUrl === null || this.props.loggedInUser?.imageUrl === undefined) ? (\r\n { if (this.state.showProfilePicturePrompt) { await this.setDefaultProfilePicture() } }}\r\n >\r\n Update Your Profile\r\n \r\n
    {\r\n await this.setDefaultProfilePicture();\r\n this.props.history.push('/Account/EditProfile');\r\n }}>\r\n Edit
    \r\n
    {\r\n this.setDefaultProfilePicture();\r\n }}>\r\n Skip\r\n
    \r\n
    \r\n \r\n ) : \r\n }\r\n \r\n );\r\n } else {\r\n return <>\r\n }\r\n }\r\n\r\n setDefaultProfilePicture = async () => {\r\n let { props } = this;\r\n let userDetails = {\r\n name: props.loggedInUser.name,\r\n bio: props.loggedInUser.bio,\r\n tagLine: props.loggedInUser.tagLine,\r\n website: props.loggedInUser.website,\r\n googleUsername: props.loggedInUser.googleUsername,\r\n facebookUsername: props.loggedInUser.facebookUsername,\r\n instagramUsername: props.loggedInUser.instagramUsername,\r\n userName: props.loggedInUser.userName,\r\n email: props.loggedInUser.email,\r\n\r\n phoneNumber: props.loggedInUser.phoneNumber,\r\n proStatusId: props.loggedInUser.proStatusId,\r\n address: props.loggedInUser.address,\r\n city: props.loggedInUser.city,\r\n state: props.loggedInUser.state,\r\n postalCode: props.loggedInUser.postalCode,\r\n country: props.loggedInUser.country,\r\n\r\n onboardingComplete: props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: props.loggedInUser.profileBannerUrl,\r\n\r\n quickStart: props.loggedInUser.quickStart\r\n };\r\n userDetails.imageUrl = document.location.protocol + '//' + document.location.host + '/images/avatar.png';\r\n\r\n let postUserUrl = \"api/Account/PostUser\";\r\n let user = await postRequest(postUserUrl, userDetails);\r\n\r\n await this.props.setLoggedInUser(user);\r\n }\r\n\r\n searchInputHandle = (event) => {\r\n this.setState({ searchValue: event.target.value, redirectValue: event.target.value })\r\n }\r\n\r\n searchInputSubmit = (e) => {\r\n\r\n if (e.keyCode === 13 && this.state.redirectValue.length > 1) {\r\n this.setState({ redirectSearch: true });\r\n document.getElementById(\"redirectLink\").click();\r\n this.setState({ redirectSearch: false });\r\n }\r\n }\r\n\r\n toggleModal = () => {\r\n this.setState({ showSharePostModal: !this.state.showSharePostModal });\r\n }\r\n\r\n authenticatedView(user, profilePath, logoutPath) {\r\n if (this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\") {\r\n return (\r\n \r\n {this.redirect()}\r\n\r\n
    \r\n\r\n {this.props?.loggedInUser?.proStatusId === 1 ? (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n\r\n
      \r\n {this.mapAddIconDropdown()}\r\n
    \r\n\r\n
    \r\n \r\n ) : (\r\n\r\n /* Ensures that the navbar logo stays centered on mobile for non-creators by adding an empty span with the same width as a Creators + button */\r\n \r\n )\r\n }\r\n {this.renderLoginDropdown(logoutPath)}\r\n
    \r\n\r\n
    \r\n )\r\n } else {\r\n const nonCreatorStyle = this.props?.loggedInUser?.proStatusId === 1 ? { width: \"80%\", marginLeft: \"12.5%\", marginRight: \"-3.5%\" } : { width: \"80%\", position: \"relative\", left: \"-15% !important\" };\r\n return (\r\n \r\n {this.redirect()}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n this.searchInputHandle(e)}\r\n value={this.state.searchValue}\r\n onKeyUp={(e) => this.searchInputSubmit(e)}\r\n />\r\n\r\n \r\n\r\n 1 ? `/SearchResults/${this.state.searchValue}` : \"\"}>\r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
      \r\n\r\n {this.props?.loggedInUser?.proStatusId === 1 ?\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n
        \r\n {this.mapAddIconDropdown()}\r\n
      \r\n
      : <>}\r\n {this.renderLoginDropdown(logoutPath)}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n\r\n }\r\n\r\n anonymousView(registerPath, loginPath) {\r\n\r\n let isSmallDevice = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\";\r\n\r\n const link = document.location;\r\n\r\n if (isSmallDevice) {\r\n return (\r\n
    \r\n Login\r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n {this.redirect()}\r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n this.searchInputHandle(e)}\r\n value={this.state.searchValue}\r\n onKeyUp={(e) => this.searchInputSubmit(e)}\r\n />\r\n\r\n \r\n\r\n 1 ? `/SearchResults/${this.state.searchValue}` : \"\"}>\r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n \r\n }\r\n\r\n render() {\r\n const { isAuthenticated } = this.state;\r\n if (!isAuthenticated) {\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n return this.anonymousView(registerPath, loginPath);\r\n } else {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`, state: { local: true }\r\n };\r\n return this.authenticatedView(this.props.loggedInUser, profilePath, logoutPath);\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer };\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFeedLayout, toggleAddProductModal, toggleCreateLockerModal, toggleShareModal, toggleSharePostModal })(withRouter(LoginMenu));","import React, { Component } from 'react';\r\nimport { Navbar, NavbarBrand, NavItem } from 'reactstrap';\r\nimport { ButtonDropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\r\nimport { Link, NavLink, withRouter } from 'react-router-dom';\r\nimport LoginMenu from './api-authorization/LoginMenu';\r\nimport './NavMenu.css';\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport { ApplicationPaths, QueryParameterNames } from './api-authorization/ApiAuthorizationConstants';\r\nimport NotificationDotIcon from './icons/NotificationDotIcon';\r\n\r\nimport { toggleShareModal, toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getReferralShareLink } from \"../sharedUtils/shareLinkPrefixes\"\r\n\r\nimport rpLogo from \"./icons/images/rockporch-logo.svg\";\r\n\r\nclass NavMenu extends Component {\r\n static displayName = NavMenu.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n collapsed: true,\r\n showMobileSearchBar: false,\r\n searchInput: \"\",\r\n redirectToSearch: false,\r\n submenuOpen: true,\r\n };\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.collapseMenu = this.collapseMenu.bind(this);\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.setState({ showMobileSearchBar: this.props.location.pathname.toLowerCase().startsWith(\"/searchresults\") });\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.collapsed !== this.state.collapsed) {\r\n this.props.hamburgerOpen(!this.state.collapsed);\r\n }\r\n if (this.props.toggleMenu != undefined && this.props.toggleMenu != null && prevProps.toggleMenu !== this.props.toggleMenu) {\r\n this.setState({ collapsed: false });\r\n }\r\n }\r\n\r\n submitSearch = (e) => {\r\n if (e.keyCode === 13 && this.state.searchInput.length > 1) {\r\n document.getElementById(\"searchSubmitMobile\").click();\r\n\r\n // This code changes the focus to the search icon in order to force mobile keyboards to close\r\n document.getElementById(\"search-button\").focus();\r\n }\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed,\r\n });\r\n }\r\n\r\n collapseMenu() {\r\n this.setState({\r\n collapsed: true\r\n });\r\n }\r\n\r\n mapThreeDotIconDropdown = () => {\r\n let menu = [,\r\n { title: \"Explore\", path: \"/Explore\" },\r\n { title: \"Home\", path: \"https://www.rockporch.com/home\", target: \"blank_\" },\r\n ];\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }} href={nested.path}>{nested.title}\r\n
  • \r\n )\r\n })\r\n if (menuItem.title === \"Explore\") {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{menuItem.title}\r\n
  • \r\n );\r\n }\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n { this.collapseMenu() }} target={menuItem.target}>{menuItem.title}\r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapCreatorMenu = () => {\r\n let menu = [\r\n { title: \"Referral Link\", path: \"\" },\r\n { title: \"My Feed\", path: \"/Nav/HomeFeed\" },\r\n { title: \"My Saves\", path: \"/Account/Saves\" },\r\n { title: \"Account Settings\", path: \"/Account/AccountSettings\" },\r\n { title: \"Messages\", path: \"/Account/NotificationsAndMessages\" }\r\n ];\r\n\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{nested.title}\r\n
  • \r\n )\r\n })\r\n\r\n if (menuItem.title === \"Referral Link\") {\r\n return (\r\n
  • \r\n {\r\n e.preventDefault();\r\n this.collapseMenu();\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n }}\r\n >{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n { this.collapseMenu() }}>{menuItem.title}\r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n mapNonCreatorMenu = () => {\r\n let menu = [];\r\n\r\n if (this.props?.loggedInUser?.proStatusId === 1) {\r\n menu = [\r\n { title: \"Referral Link\", path: \"\" },\r\n { title: \"My Feed\", path: \"/Nav/HomeFeed\" },\r\n { title: \"My Saves\", path: \"/Account/Saves\" },\r\n { title: \"Account Settings\", path: \"/Account/AccountSettings\" },\r\n { title: \"My Creators\", path: \"/\" }\r\n ];\r\n } else {\r\n menu = [\r\n { title: \"My Feed\", path: \"/Nav/HomeFeed\" },\r\n { title: \"My Saves\", path: \"/Account/Saves\" },\r\n { title: \"Account Settings\", path: \"/Account/AccountSettings\" },\r\n { title: \"My Creators\", path: \"/\" }\r\n ];\r\n }\r\n\r\n return menu.map((menuItem, i) => {\r\n let nestedItems = menuItem?.nestedPaths?.map((nested, i) => {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{nested.title}\r\n
  • \r\n )\r\n })\r\n\r\n if (menuItem.title === \"My Creators\") {\r\n return (\r\n
  • \r\n {\r\n e.preventDefault();\r\n this.collapseMenu();\r\n this.showFollowersFollowing(\"following\");\r\n }}\r\n >{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n if (menuItem.title === \"Referral Link\") {\r\n return (\r\n
  • \r\n {\r\n e.preventDefault();\r\n this.collapseMenu();\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n }}\r\n >{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n if (menuItem.title === \"My Feed\") {\r\n return (\r\n
  • \r\n { this.collapseMenu() }}>{menuItem.title}\r\n
  • \r\n )\r\n }\r\n\r\n return (\r\n
  • \r\n {\r\n menuItem.target ?\r\n { this.collapseMenu() }}>{menuItem.title}\r\n :\r\n { this.collapseMenu() }}>{menuItem.title}\r\n }\r\n {menuItem?.nestedPaths !== undefined ? (\r\n
      \r\n {nestedItems}\r\n
    \r\n ) : null}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n showFollowersFollowing = (followersFollowing) => {\r\n this.props.toggleFollowersFollowingModal(this.props.loggedInUser.id, followersFollowing, null);\r\n }\r\n\r\n render() {\r\n let showMobileSearchBar = ([\"sm\", \"md\"].includes(this.props.deviceSize) && this.state.showMobileSearchBar === true);\r\n const logoutPath = {\r\n pathname: `${ApplicationPaths.LogOut}`, state: { local: true }\r\n };\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const link = document.location;\r\n const returnUrl = `${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${returnUrl}`;\r\n const showSubmenu = { listStyle: \"none\", position: \"relative\", right: \"20%\", marginTop: \"3px\", marginRight: \"-40px\", marginLeft: \"25px\" };\r\n\r\n return (\r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n\r\n
      \r\n\r\n {this.mapThreeDotIconDropdown()}\r\n\r\n\r\n {this.props?.loggedInUser == null || this.props?.loggedInUser == undefined ?\r\n <> :\r\n <>\r\n
    • \r\n
      \r\n
    • \r\n\r\n
    • \r\n \r\n {this.props?.loggedInUser?.userName == null || this.props?.loggedInUser?.userName == undefined ?\r\n this.props?.loggedInUser?.email : this.props?.loggedInUser?.userName}\r\n \r\n
        \r\n {this.mapNonCreatorMenu()}\r\n
      \r\n
    • \r\n\r\n \r\n }\r\n\r\n
    • \r\n
      \r\n
    • \r\n\r\n {\r\n this.props?.loggedInUser?.isAdmin === true ? (\r\n
    • \r\n { this.collapseMenu() }}>Admin\r\n
    • \r\n ) : \r\n }\r\n\r\n
    • \r\n { this.collapseMenu() }} href=\"https://www.rockporch.com/terms/\" target=\"blank_\">Terms of Service\r\n
    • \r\n
    • \r\n { this.collapseMenu() }} href=\"https://www.rockporch.com/privacy-policy/\" target=\"blank_\">Privacy Policy\r\n
    • \r\n\r\n {this.props?.loggedInUser == null || this.props?.loggedInUser == undefined ?\r\n <> :\r\n <>\r\n
    • \r\n { this.collapseMenu() }}>Contact\r\n
    • \r\n\r\n
    • \r\n { this.props.setShowTopNav(false) }}>Log Out\r\n
    • \r\n \r\n }\r\n\r\n {this.props?.loggedInUser?.proStatusId === 0 ?\r\n
    • \r\n { this.collapseMenu() }}>Apply as Creator\r\n
    • :\r\n <>\r\n }\r\n\r\n {this.props?.loggedInUser == null || this.props?.loggedInUser == undefined ?\r\n
      \r\n
    • \r\n Login\r\n
    • \r\n
      :\r\n <>\r\n }\r\n\r\n
    \r\n
    \r\n\r\n\r\n {\r\n [\"sm\", \"md\"].includes(this.props.deviceSize) ? (\r\n\r\n <>\r\n \r\n\r\n\r\n \r\n\r\n ) : \r\n }\r\n
    \r\n {(this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\") ?\r\n
    \r\n \r\n \r\n \r\n
    :\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n\r\n \r\n\r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n {\r\n showMobileSearchBar === true ? (\r\n\r\n
    \r\n
    \r\n \"Search\"\r\n
    \r\n this.setState({ searchInput: e.target.value })}\r\n value={this.state.searchInput}\r\n onKeyUp={(e) => this.submitSearch(e)}\r\n style={{\r\n display: \"inline\",\r\n backgroundColor: \"#e9ecef\",\r\n border: \"none\",\r\n paddingLeft: \"40px\",\r\n paddingBottom: \"7px\",\r\n borderRadius: \"30px\",\r\n width: \"97%\",\r\n marginLeft: \"1.5%\",\r\n marginTop: \"5px\",\r\n marginBottom: \"5px\"\r\n }}\r\n />\r\n \r\n\r\n \r\n
    \r\n\r\n ) : \r\n }\r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer, fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, { toggleShareModal, toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing })(NavMenu));","// brandNavReducer.js\r\n\r\nconst initialState = {\r\n brandNavState: false,\r\n};\r\n\r\nconst SET_BRAND_NAV_STATE = \"SET_BRAND_NAV_STATE\";\r\n\r\nexport function setBrandNavState(brandNavState) {\r\n return { type: SET_BRAND_NAV_STATE, payload: brandNavState };\r\n}\r\n\r\nexport default function brandNavReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case SET_BRAND_NAV_STATE: {\r\n return { ...state, brandNavState: action.payload };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\n\r\nconst ModalHeader = (props) => {\r\n return (\r\n
    \r\n {props.children}\r\n
    \r\n )\r\n}\r\n\r\nexport default ModalHeader;","import React from \"react\";\r\n\r\nconst VectorIcon = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default VectorIcon;","import React from \"react\"\r\n\r\n/**\r\n * \r\n * @param {{width:number; height:number}} props\r\n */\r\nconst ThreeDotsHorizontalIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ThreeDotsHorizontalIcon;","import React from \"react\";\r\nimport { FormGroup, Label, Input } from \"reactstrap\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{name:string, \r\n * title:string, \r\n * inputType:string, \r\n * onInputChange:Function, \r\n * smallText:string?, \r\n * value:any, \r\n * inputStyle:object, \r\n * placeholder:string,\r\n * id:string, \r\n * formGroupClass:string\r\n * }} props\r\n */\r\nconst FormInputField = (props) => {\r\n let showSmallText = () => {\r\n if (props.smallText != null) {\r\n return {props.smallText}\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n props.onInputChange(e)}\r\n value={props.value || \"\"}\r\n style={props.inputStyle}\r\n placeholder={props.placeholder}\r\n readOnly={props.readOnly || \"\"}\r\n />\r\n {showSmallText()}\r\n \r\n )\r\n}\r\n\r\nexport default FormInputField;","import React, { useState} from \"react\";\r\nimport Modal from \"components/Modal\"\r\nimport { Link } from \"react-router-dom\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport { postRequest } from \"../../sharedUtils/httpUtils\";\r\nimport { getPostShareLink, getLockerShareLink, getBlogShareLink} from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport { Popover, PopoverHeader, PopoverBody } from \"reactstrap\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object,post:object,deletePost:Function, toggleMenu:Function}} props\r\n */\r\nconst PostThreeDotMenu = (props) => {\r\n const [showReport, setShowReport] = React.useState(false);\r\n const [comment, setComment] = React.useState(\"\");\r\n const [shareLink, setShareLink] = React.useState(\"\"); \r\n const [showCopiedTextPopover, togglePopover] = useState(false);\r\n const [isDeleting, setIsDeleting] = useState(false);\r\n\r\n const [performingDelete, setPerformingDelete] = useState(false);\r\n\r\n React.useEffect(() => {\r\n async function getShareLink() { \r\n let shareLink = props.post?.type === 2 ? await getLockerShareLink(props.post?.shareCode) : props.post?.type === 4 ? getBlogShareLink(props.post?.shareCode) : await getPostShareLink(props.post?.shareCode);\r\n setShareLink(shareLink);\r\n };\r\n getShareLink();\r\n }, []);\r\n\r\n function copyTextToClipBoard(text) {\r\n navigator.clipboard.writeText(text)\r\n togglePopover(true);\r\n setTimeout(() => togglePopover(false),2500)\r\n }\r\n\r\n async function deletePost() {\r\n setPerformingDelete(true);\r\n let url = `/api/Locker/DeleteLocker`;\r\n let payload = {\r\n user: {\r\n id: props.post.user.id\r\n },\r\n type: 2,\r\n shareCode: props.post.shareCode,\r\n id: props.post.id\r\n }\r\n await postRequest(url, payload);\r\n\r\n setPerformingDelete(false);\r\n props.toggleMenu();\r\n if (props.deletePost) {\r\n props.deletePost(props.post.shareCode);\r\n } else {\r\n window.location.reload();\r\n } \r\n }\r\n\r\n const renderReportLink = () => {\r\n if (props.loggedInUser?.id !== props.post?.user?.id) {\r\n return (\r\n
    \r\n { e.preventDefault(); props.toggleMenu(); setShowReport(true); }}>\r\n Report\r\n \r\n { e.preventDefault(); copyTextToClipBoard(shareLink); }}>\r\n Copy link\r\n \r\n togglePopover(false)}>\r\n \r\n Copied link to clipboard : { shareLink }\r\n \r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n const renderEditLink = () => {\r\n if (props.loggedInUser?.id === props.post?.user?.id) {\r\n let redirect = props.post?.type === 2 ? `/Locker/NewLockerPage/${props.post?.shareCode}` : props.post?.type === 4 ? `/Blog/EditBlog/${props.post?.shareCode}` : `/Post/EditPost/${props.post?.shareCode}`;\r\n\r\n return (\r\n <>\r\n
    \r\n { props.toggleMenu() }}\r\n style={{ color: \"black\" }} to={{\r\n pathname: redirect,\r\n state: { post: props.post } \r\n }}>Edit\r\n
    \r\n
    \r\n { setIsDeleting(true) }}>Delete\r\n
    \r\n \r\n )\r\n }\r\n }\r\n\r\n const handleInput = (e) => {\r\n setComment(e.target.value);\r\n }\r\n\r\n const submitReport = async () => {\r\n\r\n await postRequest('/api/Post/ReportPost/', { userPostId: props.post.id, comment: comment });\r\n\r\n setComment(\"\");\r\n setShowReport(false);\r\n }\r\n\r\n const renderReport = () => {\r\n return
    \r\n
    \r\n
    Report
    \r\n
    Please let us know why this post may be inappropriate
    \r\n\r\n
    \r\n handleInput(e)}\r\n value={comment} />\r\n\r\n
    \r\n {comment.length > 0 ?\r\n \r\n : }\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n const toggleShowReport = () => {\r\n setComment(\"\");\r\n setShowReport(!showReport);\r\n }\r\n\r\n if (showReport) {\r\n return (\r\n \r\n {renderReport()}\r\n \r\n );\r\n\r\n }\r\n return (\r\n \r\n
    \r\n {renderReportLink()}\r\n {renderEditLink()}\r\n\r\n {\r\n isDeleting === true ? (\r\n
    \r\n Are you sure you want to delete this?
    \r\n \r\n\r\n \r\n Delete\r\n \r\n
    \r\n ): \r\n }\r\n
    \r\n
    );\r\n}\r\n\r\nexport default PostThreeDotMenu;","import React, { useState } from \"react\"\r\nimport PropTypes from \"prop-types\";\r\nimport ModalHeader from \"./ModalHeader\";\r\nimport VectorIcon from \"./icons/VectorIcon\";\r\nimport CloseIcon from \"./icons/CloseIcon\";\r\nimport ThreeDotsHorizontalIcon from \"./icons/ThreeDotsHorizontalIcon\";\r\nimport PostThreeDotMenu from \"../views/Post/PostThreeDotMenu\";\r\nimport { Modal as RSModal } from \"reactstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport {closeAllModals} from \"stateManagement/reducers/modalReducer\"\r\nimport {connect} from \"react-redux\"\r\n\r\n/**\r\n *\r\n * @param {{\r\n * id:string,\r\n * isOpen:boolean,\r\n * toggleModal:Function,\r\n * modalUseCase:string,\r\n * allowOverflow:boolean,\r\n * showHeader:boolean,\r\n * modalCustomClass:string,\r\n * modalDialogCustomClass:string,\r\n * modalBodyCustomClass:string,\r\n * modalHeaderRedirect:string,\r\n * modalFooter:import(\"typescript\").JsxElement\r\n * modalHeader:import(\"typescript\").JsxElement\r\n * }} props\r\n */\r\nconst Modal = (props) => {\r\n\r\n let clientIdText = !(props && props.id) ? 'myModal' : 'props.id';\r\n let [clientId, setClientId] = useState(clientIdText);\r\n const [showDotMenu, setShowDotMenu] = useState(false);\r\n\r\n const toggleDotMenu = () => {\r\n setShowDotMenu(!showDotMenu);\r\n }\r\n\r\n function showHeader() {\r\n let transparent = { backgroundColor: \"transparent\", border: \"0px\" };\r\n let { toggleModal } = props;\r\n if (props.modalHeader) {\r\n return props.modalHeader\r\n }\r\n else {\r\n if (props.showHeader === true) {\r\n return (\r\n \r\n
    \r\n {\r\n props.hideOpenAsPage ? <> :\r\n \r\n \r\n \r\n }\r\n \r\n {props.showThreeDotMenu ?\r\n : null}\r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n }\r\n\r\n function showModal() {\r\n if (props.isOpen === true) {\r\n return (\r\n\r\n
    {\r\n if ((props.ignoreClickAway == null || props.ignoreClickAway === false) && e.target === e.currentTarget) {\r\n props.toggleModal()\r\n }\r\n }}\r\n >\r\n\r\n
    \r\n\r\n
    \r\n\r\n {showHeader()}\r\n\r\n
    \r\n {/*
    */}\r\n\r\n {props.children}\r\n {/*
    */}\r\n
    \r\n\r\n {props.modalFooter ? props.modalFooter : null}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n )\r\n }\r\n }\r\n\r\n\r\n return (\r\n <>\r\n {props.showThreeDotMenu ? : null}\r\n {showModal()}\r\n \r\n )\r\n\r\n}\r\n\r\nModal.propTypes = {\r\n id: PropTypes.string,\r\n isOpen: PropTypes.bool,\r\n modalUseCase: PropTypes.string\r\n};\r\n\r\nexport default connect(null, {closeAllModals})(Modal);\r\n\r\n","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{isSmall:boolean, style:object}} props\r\n */\r\nconst LoadSpinner = (props) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default LoadSpinner;","import React from \"react\";\r\n\r\n\r\nconst YoutubeIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default YoutubeIcon;","import React, { useState, useEffect, useLayoutEffect } from \"react\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport YoutubeIcon from \"components/icons/YoutubeIcon\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\n/**\r\n * \r\n * @param {{src:string, alt:string, style:object, className:string, role:Number, onClick:Function, videoWidth:Number}} props\r\n */\r\nconst ImageWrapper = (props) => {\r\n\r\n function uuidv4() {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n };\r\n\r\n useLayoutEffect(() => {\r\n\r\n //new window.YT.Player('player' + genId, {\r\n //events: {\r\n //'onStateChange': (event) => {\r\n //if (event.data === 1) {\r\n //if (props.onClick) { event.target.stopVideo(); props.onClick(); }\r\n //}\r\n //}\r\n //}\r\n //});\r\n\r\n return () => {\r\n let video = document.getElementById(genId);\r\n\r\n if (video) {\r\n video.pause();\r\n video.currentTime = 0;\r\n }\r\n }\r\n }, []);\r\n\r\n const [html, setHtml] = useState(null);\r\n const containerRef = React.useRef(null);\r\n\r\n useEffect(() => {\r\n if (props.src?.includes(\"blockquote\") && !!(containerRef.current)) {\r\n const script = document.createElement('script');\r\n script.async = true;\r\n script.src = 'https://www.tiktok.com/embed.js?20230131';\r\n containerRef.current.appendChild(script);\r\n return () => {\r\n script.remove();\r\n };\r\n }\r\n }, []);\r\n \r\n let [imageLoaded, setImageLoaded] = useState(false);\r\n let [genId, setGenId] = useState(uuidv4());\r\n\r\n let emptyClick = (e) => e.preventDefault\r\n let isFeed = (props.size) && [\"Profile\", \"Product\", \"ProductGrid\", \"Post\"].includes(props.size);\r\n\r\n const resizeImages = url => {\r\n getRequest(url);\r\n }\r\n\r\n if (props.role && props.role === 1) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.onClick === undefined) {\r\n emptyClick(e)\r\n } else {\r\n document.getElementById(genId).pause();\r\n props.onClick()\r\n }\r\n }}\r\n className={props.className}\r\n poster={props.poster}\r\n preload=\"metadata\"\r\n controls\r\n controlsList=\"nodownload\"\r\n disablePictureInPicture\r\n >\r\n \r\n \r\n )\r\n }\r\n else if (props.role === 3) {\r\n let paddingTop = 9 / 16 * 100 + '%';\r\n const tikTokPadding = props.src.toLowerCase().includes(\"tiktok\");\r\n if (!!props.width && !!props.height) {\r\n if (props.width < props.height) {\r\n paddingTop = props.width / props.height * 100 + '%';\r\n } else {\r\n paddingTop = props.height / props.width * 100 + '%';\r\n }\r\n }\r\n\r\n if (props.src.includes(\"blockquote\")) {\r\n return (\r\n
    \r\n {/*
    {!!(html) ? html : <>}
    */}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }else {\r\n let overlayStyle = { position: \"absolute\", width: \"100%\", height: \"100%\", zIndex: 3, padding: \"47%\", cursor:\"pointer\" };\r\n if (props.lazy != null && props.lazy === false) {\r\n return (\r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }}\r\n onLoad={(e) => {\r\n setImageLoaded(true)\r\n }}\r\n alt={props.alt || \"\"}\r\n style={props.style || {}}\r\n className={props.className || \"\"}\r\n onClick={props.onClick || emptyClick}\r\n />\r\n )\r\n }\r\n return (\r\n <>\r\n {props.role === 8 ?
    : null}\r\n {\r\n e.target.onError = null\r\n if (isFeed) {\r\n if (props.size === \"Profile\") {\r\n e.target.src = `images/avatar2.svg`\r\n } else {\r\n e.target.src = \"images/blank-banner.png\"\r\n }\r\n } else {\r\n e.target.src = \"images/blank-banner.png\"\r\n }\r\n }}\r\n onLoad={(e) => {\r\n setImageLoaded(true)\r\n }}\r\n alt={props.alt || \"\"}\r\n style={props.style || {}}\r\n className={props.className || \"\"}\r\n onClick={props.onClick || emptyClick}\r\n loading={props.lazy != null && props.lazy == false ? \"\" : \"lazy\"}\r\n />\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\n\r\nexport default ImageWrapper;","import { QueryParameterNames, ApplicationPaths } from '../components/api-authorization/ApiAuthorizationConstants';\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nvar jsonref = require(\"jsonref\");\r\n\r\n\r\n\r\n/**\r\n * @Description checks to see if a user is authorized and returns the authorized user data\r\n * @returns {object}\r\n * */\r\nexport async function getAuthorizedUserData(ignoreRedirect = false) {\r\n\r\n let token = await authService.getAccessToken();\r\n let authUser = await authService.getUser();\r\n\r\n if (authUser) {\r\n let response = await fetch(\"/api/Account/GetUser\",\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n redirect: 'manual'\r\n });\r\n\r\n if (response.type === \"opaqueredirect\") {\r\n if (ignoreRedirect) {\r\n return null;\r\n }\r\n\r\n const link = document.location;\r\n const returnUrl = `${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.IdentityLoginPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(returnUrl)}`;\r\n\r\n window.location = redirectUrl;\r\n return;\r\n }\r\n\r\n let jsonData = await response.json();\r\n return await jsonref.parse(jsonData, { scope: window.location }).then(result => result);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * \r\n * @param {any} userId\r\n * @returns {boolean} \r\n */\r\nexport async function getIsFollowing(userId) {\r\n let token = await authService.getAccessToken();\r\n const isFollowing = await fetch(\"/api/Account/IsFollowing?id=\" + userId,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n let data = await isFollowing.text();\r\n return data === \"true\";\r\n}\r\n","import React from \"react\"\r\n\r\nconst GreyTickIcon = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GreyTickIcon;","import React from \"react\"\r\n\r\nconst RatingIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RatingIcon;","import React from \"react\"\r\n\r\nconst RatingIconHalf = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RatingIconHalf;","import React from \"react\"\r\n\r\nconst RatingIconEmpty = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RatingIconEmpty;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{fill:string}} props\r\n */\r\nconst SaleIcon = (props) => {\r\n return (\r\n \r\n sale-tag\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SaleIcon;","import React from \"react\"\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport FormInputFieldTags from \"components/FormInputFieldTags\";\r\nimport FormDropdown from \"components/FormDropdown\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport GreyTickIcon from \"components/icons/GreyTickIcon\";\r\nimport { WithContext as ReactTags } from \"react-tag-input\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\n\r\nimport Select from 'react-select'\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\nimport { Link } from \"react-router-dom\";\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\n\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\n\r\nclass AddProductForm extends React.Component {\r\n\r\n /**\r\n * \r\n * @param {advance:Function, cancel:Function,isModal:boolean} props\r\n */\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showLockerDropdown: false,\r\n manufacturer: \"\",\r\n name: \"\",\r\n productReview: \"\",\r\n interestTags: [],\r\n selectedLockers: [],\r\n selectedSectors: [],\r\n imageUrl: \"\",\r\n price: 0,\r\n vendor: \"\",\r\n commission: 0,\r\n merchantProductId: \"\",\r\n loggedInUser: {},\r\n sectors: [],\r\n sectorInput: \"\",\r\n tagInput: \"\",\r\n lockers: [],\r\n userMerchantProduct: {},\r\n isLoading: false,\r\n productRating: null,\r\n loaded: false,\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n let { name, price, manufacturer, commission, imageUrl, merchantProductId } = this.props.product;\r\n\r\n if (name.indexOf(manufacturer) === 0) {\r\n name = name.slice(manufacturer.length - name.length).trim().trim(\"-\").trim();\r\n\r\n const firstLetter = name.charAt(0);\r\n if (name.length > 0 && !firstLetter.match(/[a-zA-Z0-9]/i)) name = name.slice(1).trim();\r\n }\r\n\r\n let loggedInUser = await getAuthorizedUserData();\r\n this.setState({\r\n name: titleCase(name),\r\n manufacturer: manufacturer,\r\n imageUrl: imageUrl,\r\n price: price,\r\n commission: this.props.product.estimatedCommission,\r\n merchantProductId,\r\n loggedInUser,\r\n vendor: this.props.product.merchant,\r\n });\r\n await this.fetchTags();\r\n await this.fetchLockers();\r\n this.setState({ loaded: true });\r\n }\r\n\r\n addInterestFromTag = (sector) => {\r\n let newInterests = [...this.state.interestTags];\r\n newInterests.push(sector);\r\n this.setState({ interestTags: newInterests, tagInput: \"\" })\r\n }\r\n\r\n addSectorsToProduct = async (userMerchantProductId) => {\r\n if (this.state.selectedSectors.length > 0) {\r\n let sectorIds = this.state.selectedSectors.map((sector) => sector.sectorId);\r\n let url = `/Products/AddUserMerchantProductSectors?userMerchantProductId=${userMerchantProductId}`;\r\n let response = await postRequest(url, sectorIds);\r\n }\r\n }\r\n\r\n addProductToLockers = async (userMerchantProductId) => {\r\n let { selectedLockers } = this.state;\r\n if (selectedLockers?.length > 0) {\r\n for (let i = 0; i < selectedLockers.length; i++) {\r\n let url = `/api/Post/addPostProducts?shareCode=${selectedLockers[i].shareCode}`;\r\n let products = [userMerchantProductId];\r\n let response = await postRequest(url, products);\r\n }\r\n }\r\n }\r\n\r\n displayDropdownMenu = () => {\r\n let lockerIsSelected = (shareCode) => {\r\n let location = this.state.selectedLockers.findIndex((locker) => locker.shareCode === shareCode)\r\n\r\n return location > -1\r\n }\r\n return this.state.lockers?.map((locker, i) => {\r\n return (\r\n\r\n
  • this.toggleSelectLocker(i)}>\r\n {lockerIsSelected(locker.shareCode) ? : null}\r\n \r\n {locker.title}\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n displaySectors = () => {\r\n let filtered = this.state.sectors?.filter((sector) => sector.name.toLowerCase().includes(this.state.sectorInput.toLowerCase()))\r\n return filtered?.map((sector, i) => {\r\n let isSelected = this.state.selectedSectors.findIndex(sec => sec.sectorId === sector.sectorId);\r\n if (isSelected >= 0) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n\r\n })\r\n }\r\n\r\n displayStarRating = () => {\r\n return ( {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={this.starClick}\r\n />)\r\n }\r\n\r\n fetchLockers = async () => {\r\n let url = `/api/Locker/getLockersByUser?publishedOnly=false`;\r\n let lockers = await getRequest(url);\r\n this.setState({ lockers })\r\n }\r\n\r\n fetchTags = async () => {\r\n let sectors = await getRequest(`/api/Sector/GetSectors`);\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n this.setState({ sectors });\r\n }\r\n\r\n handleInput = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n handleTagInput = (e) => this.setState({ tagInput: e.target.value })\r\n\r\n mapTagSuggestions = () => {\r\n if (this.state.sectors?.length > 0) {\r\n let filtered = this.state.sectors?.filter(sector => sector.name.toLowerCase().includes(this.state.tagInput.toLowerCase()));\r\n return filtered.map((sector, i) => {\r\n return { id: sector.sectorId.toString(), text: sector.name }\r\n {/* return (\r\n \r\n )*/}\r\n })\r\n }\r\n }\r\n\r\n removeInterest = (location) => {\r\n let updatedInterests = [...this.state.interestTags];\r\n updatedInterests.splice(location, 1);\r\n this.setState({ interestTags: updatedInterests })\r\n }\r\n\r\n resetForm = () => {\r\n let blankForm = { productManufacturer: \"\", productName: \"\", productReview: \"\" };\r\n this.setState(blankForm);\r\n }\r\n\r\n starClick = async (nextValue, prevValue, name) => {\r\n this.setState({ productRating: nextValue });\r\n }\r\n\r\n submitProduct = async () => {\r\n this.setState({ isLoading: true });\r\n\r\n let productObject = {\r\n MerchantProductId: this.state.merchantProductId,\r\n UserDescription: this.state.productReview,\r\n Rating: this.state.productRating\r\n };\r\n let result = await postRequest(`/Products/AddProduct`, productObject);\r\n await this.setState({ userMerchantProduct: result })\r\n let addedSectors = await this.addSectorsToProduct(result.userMerchantProductId);\r\n let addedToLockers = await this.addProductToLockers(result.userMerchantProductId)\r\n this.resetForm();\r\n this.setState({ productManufacturer: \"\", productName: \"\", productReview: \"\", isLoading: false });\r\n\r\n if (result !== null || result !== undefined) {\r\n this.props.advance(result)\r\n }\r\n else {\r\n alert(\"there seems to be an issue adding that product\");\r\n }\r\n\r\n }\r\n\r\n toggleSelectLocker = (selection) => {\r\n if (selection == null) {\r\n this.setState({ selectedLockers: [] })\r\n } else {\r\n this.setState({ selectedLockers: [this.state.lockers[selection.value]] })\r\n }\r\n }\r\n\r\n render() {\r\n let productImageColumnStyling = this.props.isModal === true ? \"py-3 py-md-5\" : \"pb-3 pb-md-5\"\r\n if (!this.state.loaded) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }} />\r\n
    \r\n
    \r\n\r\n
    \r\n Merchant\r\n

    {this.state.vendor}

    \r\n\r\n Retail price{this.props.product?.sale && !!(this.props.product?.salePrice) ? : <>}\r\n

    {currencyFormat(this.state.price)}{this.props.product?.sale && !!(this.props.product?.salePrice) && !!(this.props.product?.originalPrice) ? currencyFormat(this.props.product?.originalPrice) : <>}

    \r\n\r\n \r\n Estimated Commission\r\n \r\n \r\n \r\n\r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\r\n \r\n\r\n \r\n

    {currencyFormat(this.props.product?.estimatedCommission || 0)}

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    Add Product
    \r\n
    e.preventDefault()}>\r\n
    \r\n {\r\n this.state.manufacturer.length > 0 ? (\r\n \r\n ): \r\n }\r\n \r\n\r\n \r\n\r\n {this.displayStarRating()}\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n {this.displaySectors()}\r\n
    \r\n\r\n
    \r\n \r\n { this.toggleSelectLocker(i) }}\r\n options={this.state.lockers?.map((locker, i) => {\r\n return { value: i, label: locker.title };\r\n })} />\r\n
    \r\n\r\n
    \r\n\r\n {\r\n this.props.isModal === true ? (\r\n \r\n ) : \r\n }\r\n\r\n\r\n\r\n\r\n {\r\n this.props.success === true && this.props.isModal === false ? (\r\n\r\n \r\n Close\r\n \r\n\r\n ) :\r\n (\r\n\r\n \r\n Add Product\r\n \r\n )\r\n }\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default AddProductForm;","import * as React from \"react\";\r\n\r\nfunction SvgRockporchLogo(props) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgRockporchLogo;\r\n","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{height:number,width:number}} props\r\n */\r\nconst RockporchMountainIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RockporchMountainIcon;","import React, { useState } from \"react\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { Link } from \"react-router-dom\";\r\nimport RockporchLogo from \"icons/RockporchLogo\";\r\nimport RockporchMountainIcon from \"components/icons/RockporchMountainIcon\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { Popover, PopoverBody, PopoverHeader } from \"reactstrap\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport { useCallback } from \"react\";\r\nimport { useEffect, useRef } from \"react\";\r\n/**\r\n * \r\n * @param {{advance:Function,productUrl:string,handleInput:Function, isLoading:boolean, productNotFound:boolean, isModal:boolean}} props \r\n */\r\nconst LookupProductUrlForm = (props) => {\r\n\r\n let [showLearnMore, setLearnMore] = useState(false);\r\n let [showValidationMessage, setShowValidationMessage] = useState(false);\r\n\r\n const inputRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (inputRef && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n let isValid = isValidUrl(props.productUrl);\r\n if (props.productUrl.length > 3 && (isValid === false)) {\r\n setShowValidationMessage(true);\r\n }\r\n else {\r\n setShowValidationMessage(false);\r\n }\r\n }, [props.productUrl])\r\n\r\n let isMobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\n let buttonStyle = {\r\n background: \"#D2E3E0\"\r\n }\r\n\r\n function toggleShowLearnMore() {\r\n setLearnMore(true);\r\n setTimeout(() => {\r\n setLearnMore(false)\r\n }, 5000);\r\n }\r\n\r\n const advanceButtonDisabled = (url) => (isValidUrl(url) === false);\r\n\r\n let bookmarkUrl = `${window.location.origin}/addProductTool/addProductTool.js`;\r\n let bookmarkOrigin = window.location.origin;\r\n\r\n const displayValidationMessage = () => {\r\n if (showValidationMessage && advanceButtonDisabled) {\r\n return (\r\n

    \r\n\r\n Sorry, that doesn't look like a product URL.
    \r\n Copy and paste the URL of the product you're trying to add.
    \r\n Example: https://www.example.com/...\r\n\r\n

    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n const onClickValidationCheck = () => {\r\n if (isValidUrl(props.url) !== false) props.advance();\r\n }\r\n\r\n const keypressValidationCheck = (e) => {\r\n if (isValidUrl(props.url) !== false) props.onKeypress(e);\r\n }\r\n\r\n if (props.isModal === false) {\r\n return (\r\n
    \r\n {\r\n props.isLoading === true ? (\r\n <>\r\n \r\n

    Looking up product ...

    \r\n \r\n ): \r\n }\r\n\r\n {\r\n showValidationMessage === true ? (\r\n\r\n displayValidationMessage()\r\n \r\n ):\r\n }\r\n \r\n\r\n {\r\n props.productNotFound === true ? (\r\n <>\r\n

    \r\n {props.productNotFoundMessage !== \"\" ? \"Sorry!\" : \"\"}
    \r\n {props.productNotFoundMessage}\r\n

    \r\n
    Click HERE for a list of Integrated Merchants
    \r\n \r\n ) : \r\n }\r\n
    \r\n )\r\n }\r\n\r\n \r\n else {\r\n return (\r\n
    \r\n
    \r\n {/**/}\r\n\r\n\r\n
    \r\n
    Add Product
    \r\n
    Paste product URL here. All product URLs must be from a Merchant Partner
    \r\n\r\n
    \r\n\r\n {/**/}\r\n \r\n Add Product\r\n
    \r\n\r\n\r\n\r\n
    \r\n\r\n {\r\n showValidationMessage === true ? (\r\n\r\n displayValidationMessage()\r\n\r\n ) : \r\n }\r\n\r\n {\r\n props.productNotFound === true ? (\r\n <>\r\n \r\n Sorry!
    \r\n {props.productNotFoundMessage}\r\n
    \r\n

     

    \r\n
    Click HERE for a list of Merchant Partners
    \r\n \r\n ) : \r\n }\r\n\r\n
    \r\n {\r\n props?.isModal !== false ?\r\n isMobileDevice ?\r\n (
    \r\n

    \r\n PRO TIP: When adding several products to your inventory, the process moves much faster on a desktop!\r\n

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

    \r\n Drag the button below to your browser's bookmark bar. When on a merchant partner's product page, click the RockPorch bookmark to add the product to your Inventory.\r\n {\r\n e.preventDefault();\r\n toggleShowLearnMore();\r\n }}>\r\n Learn more\r\n \r\n\r\n setLearnMore(false)}\r\n >\r\n \r\n You must be on an individual product page to add the product. The tool will not work if multiple products are on the current page.\r\n \r\n \r\n

    \r\n\r\n e.preventDefault()}\r\n >\r\n +Add to RockPorch\r\n \r\n\r\n
    ) : \r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport default LookupProductUrlForm;","import React from \"react\";\r\n\r\nconst TwitterIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default TwitterIcon;","import React from \"react\"\r\n\r\nconst FacebookIcon = (props) => {\r\n const link = props.username == null || props.username == undefined ?\r\n \"https://www.facebook.com/sharer/sharer.php?u=\" + encodeURI(props.shareCode) :\r\n \"https://www.facebook.com/\" + props.username;\r\n\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport default FacebookIcon;","import React from \"react\"\r\n\r\nconst PhoneIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n ;\r\n );\r\n}\r\n\r\nexport default PhoneIcon;","import React from \"react\"\r\n\r\nimport PhoneIcon from \"components/icons/PhoneIcon\";\r\n\r\nconst MobileShare = (props) => {\r\n const handleOnClick = (e) => {\r\n e.preventDefault();\r\n if (navigator.share) {\r\n navigator\r\n .share({\r\n title: `RockPorch`,\r\n text: `Check out what I found on RockPorch: `,\r\n url: `${ props.shareCode }`,\r\n })\r\n .then(() => {\r\n })\r\n .catch(error => {\r\n console.error('Something went wrong sharing the blog', error);\r\n });\r\n }\r\n };\r\n\r\n if (navigator.share) {\r\n return (\r\n handleOnClick(e)}>\r\n \r\n \r\n );\r\n }\r\n return null;\r\n}\r\n\r\nexport default MobileShare;","import React from \"react\"\r\n\r\nconst MailIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default MailIcon;","import React from \"react\"\r\nimport { useState, useEffect } from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport TwitterIcon from \"components/icons/TwitterIcon\";\r\nimport FacebookIcon from \"components/icons/FacebookIcon\";\r\nimport MobileShare from \"components/MobileShare\";\r\nimport MailIcon from 'components/icons/MailIcon';\r\n\r\n\r\n/** \r\n * @param {{loggedInUser: Object, title:string, shareCode:string?, customStyle:Object, shareBlockStyle:Object}} props \r\n */\r\nconst ShareBlock = (props) => {\r\n\r\n const [showCopied, setCopiedText] = useState(false);\r\n const [showCopied2, setCopiedText2] = useState(false);\r\n const [showCopied3, setCopiedText3] = useState(false);\r\n const [showCopied4, setCopiedText4] = useState(false);\r\n const [renderDirect, setRenderDirect] = useState(false);\r\n\r\n const [postEmbedCode, setPostEmbedCode] = useState(null);\r\n const [lockerEmbedCode, setLockerEmbedCode] = useState(null);\r\n const [productEmbedCode, setProductEmbedCode] = useState(null);\r\n const [postEmbedBrandCode, setPostEmbedBrandCode] = useState(null);\r\n const [blogEmbedCode, setBlogEmbedCode] = useState(null);\r\n const [lockerEmbedBrandCode, setLockerEmbedBrandCode] = useState(null);\r\n const [productEmbedBrandCode, setProductEmbedBrandCode] = useState(null);\r\n const [profileEmbedCode, setProfileEmbedCode] = useState(null);\r\n const [referralShareCode, setReferralShareCode] = useState(null);\r\n const [shareCode, setShareCode] = useState(null);\r\n const [shareType, setShareType] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setShareCode(props.shareCode);\r\n const isBrowse = !!(props.shareCode) && props.shareCode.toLowerCase().includes(\"b=1\");\r\n const isReferral = !!(props.shareCode) && props.shareCode.toLowerCase().includes(\"referraluser\");\r\n\r\n if (isReferral) {\r\n setReferralShareCode(props.shareCode)\r\n }\r\n\r\n let embedHost;\r\n let parsedShareCode;\r\n\r\n if (props.isUserMerchant) setRenderDirect(props.isUserMerchant);\r\n if (props.shareCode.includes(\".ch/\")) {\r\n embedHost = props.shareCode.slice(0, props.shareCode.indexOf(\".ch/\") + \".ch/\".length)\r\n } else if (props.shareCode.includes(\".com/\")) {\r\n embedHost = props.shareCode.slice(0, props.shareCode.indexOf(\".com/\") + \".com/\".length)\r\n } else if (props.shareCode.includes(\"44334/\")) {\r\n embedHost = props.shareCode.slice(0, props.shareCode.indexOf(\"44334/\") + \"44334/\".length)\r\n }\r\n\r\n parsedShareCode = props.shareCode.slice(props.shareCode.lastIndexOf(\"/\") + 1);\r\n if (parsedShareCode.includes(\"?\")) {\r\n parsedShareCode = parsedShareCode.slice(0, parsedShareCode.indexOf(\"?\"));\r\n }\r\n\r\n if (props.shareCode?.toLowerCase().includes(\"/p/\") || props.shareCode?.toLowerCase().includes(\"/plink/\")) {\r\n setShareType(\"Post\");\r\n\r\n let index = props.shareCode.toLowerCase().includes(\"/p/\") ? props.shareCode.toLowerCase().indexOf(\"/p/\") : props.shareCode.toLowerCase().indexOf(\"/plink/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n let brandUrl = embedUrl.slice(0, embedUrl.indexOf(\"/embed\") + \"/embed\".length) + \"/brand\" + embedUrl.slice(embedUrl.indexOf(\"/embed\") + \"/embed\".length);\r\n let iframe = ``;\r\n let brandIframe = ``;\r\n setPostEmbedCode(iframe);\r\n setPostEmbedBrandCode(brandIframe);\r\n } else if (props.shareCode?.toLowerCase().includes(\"/b/\") || props.shareCode?.toLowerCase().includes(\"/blink/\")) {\r\n setShareType(\"Blog\");\r\n\r\n let index = props.shareCode.toLowerCase().includes(\"/b/\") ? props.shareCode.toLowerCase().indexOf(\"/b/\") : props.shareCode.toLowerCase().indexOf(\"/blink/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n let iframe = ``;\r\n setBlogEmbedCode(iframe);\r\n } else if (props.shareCode?.toLowerCase().includes(\"/l/\") || props.shareCode?.toLowerCase().includes(\"/llink/\")) {\r\n setShareType(\"Locker\");\r\n\r\n let index = props.shareCode.toLowerCase().includes(\"/l/\") ? props.shareCode.toLowerCase().indexOf(\"/l/\") : props.shareCode.toLowerCase().indexOf(\"/llink/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n let brandUrl = embedUrl.slice(0, embedUrl.indexOf(\"/embed\") + \"/embed\".length) + \"/brand\" + embedUrl.slice(embedUrl.indexOf(\"/embed\") + \"/embed\".length);\r\n let iframe = ``;\r\n let brandIframe = ``;\r\n setLockerEmbedCode(iframe);\r\n setLockerEmbedBrandCode(brandIframe);\r\n } else if (props.shareCode?.toLowerCase().includes(\"/m/\") || props.shareCode?.toLowerCase().includes(\"/mlink/\")) {\r\n setShareType(\"Merchant\");\r\n\r\n addShareSubdomainMerchant(parsedShareCode)\r\n } else if (props.shareCode?.toLowerCase().includes(\"/prd/\")) {\r\n setShareType(\"Product\");\r\n\r\n addShareSubdomainProduct(parsedShareCode);\r\n let index = props.shareCode.toLowerCase().indexOf(\"/prd/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n\r\n let brandUrl = embedUrl.slice(0, embedUrl.indexOf(\"/embed\") + \"/embed\".length) + \"/brand\" + embedUrl.slice(embedUrl.indexOf(\"/embed\") + \"/embed\".length);\r\n let iframe = ``\r\n let brandIframe = ``;\r\n setProductEmbedCode(iframe);\r\n setProductEmbedBrandCode(brandIframe);\r\n } else if (props.shareCode?.toLowerCase().includes(\"/prdlink/\")) {\r\n setShareType(\"Product\");\r\n\r\n addShareSubdomainProduct(parsedShareCode);\r\n let index = props.shareCode.toLowerCase().indexOf(\"/prdlink/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n embedUrl = embedUrl.replace(\"/prdlink/\", \"/prd/\");\r\n\r\n let brandUrl = embedUrl.slice(0, embedUrl.indexOf(\"/embed\") + \"/embed\".length) + \"/brand\" + embedUrl.slice(embedUrl.indexOf(\"/embed\") + \"/embed\".length);\r\n let iframe = ``\r\n let brandIframe = ``;\r\n setProductEmbedCode(iframe);\r\n setProductEmbedBrandCode(brandIframe);\r\n }\r\n\r\n }, []);\r\n\r\n useEffect(() => {\r\n setShareCode(props.shareCode);\r\n\r\n if (props.shareCode?.toLowerCase().includes(\"/prf/\")) {\r\n setShareType(\"Profile\");\r\n\r\n let index = props.shareCode.toLowerCase().indexOf(\"/prf/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n let iframe = ``\r\n setProfileEmbedCode(iframe);\r\n }\r\n if (props.shareCode?.toLowerCase().includes(\"/prflink/\")) {\r\n setShareType(\"Profile\");\r\n\r\n let index = props.shareCode.toLowerCase().indexOf(\"/prflink/\");\r\n let embedUrl = props.shareCode.slice(0, index) + \"/embed\" + props.shareCode.slice(index);\r\n embedUrl = embedUrl.replace(\"/prflink/\", \"/prf/\");\r\n\r\n let iframe = ``\r\n setProfileEmbedCode(iframe);\r\n }\r\n }, [props.shareCode]);\r\n\r\n const addShareSubdomainMerchant = async (id) => {\r\n let route = '/api/Merchant/GetMerchant?id=' + id;\r\n\r\n let merchant = await getRequest(route);\r\n\r\n if (!!(merchant) && window.location.host.toLowerCase().includes(\"app.rockp\") && !!(merchant.shareSubdomain)) {\r\n let url = new URL(props.shareCode);\r\n url.hostname = `${merchant.shareSubdomain}.rockporch.com`;\r\n setShareCode(url.toString());\r\n }\r\n };\r\n\r\n const handleGoogleAnalytics4 = () => {\r\n window.gtag('event', 'Share_Modal_' + shareType, {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Share Modal ` + shareType,\r\n });\r\n console.log(\"Share Modal \" + shareType)\r\n }\r\n\r\n const addShareSubdomainProduct = async (shareCode) => {\r\n let route = '/api/Merchant/GetMerchantByProductShareCode?shareCode=' + shareCode;\r\n\r\n let merchant = await getRequest(route);\r\n\r\n if (!!(merchant) && window.location.host.toLowerCase().includes(\"app.rockp\") && !!(merchant.shareSubdomain)) {\r\n let url = new URL(props.shareCode);\r\n url.port = \"\";\r\n url.hostname = `${merchant.shareSubdomain}.rockporch.com`;\r\n setShareCode(url.toString());\r\n }\r\n }\r\n\r\n let renderCopiedText = () => {\r\n if (showCopied) {\r\n setTimeout(() => { setCopiedText(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n let renderCopiedText2 = () => {\r\n if (showCopied2) {\r\n setTimeout(() => { setCopiedText2(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n let renderCopiedText3 = () => {\r\n if (showCopied3) {\r\n setTimeout(() => { setCopiedText3(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n let renderCopiedText4 = () => {\r\n if (showCopied4) {\r\n setTimeout(() => { setCopiedText4(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n if (!!(referralShareCode)) {\r\n return (\r\n\r\n
    \r\n
    \r\n\r\n\r\n
    Copy and Send the Personalized Link Below to Refer your Creator Friends to RockPorch
    \r\n
    Get paid for referring new Creators!
    \r\n\r\n

    \r\n When you refer a fellow passion-driven Creator to RockPorch, we'll pay you 2.5% of the sales they generate through RockPorch for 12 MONTHS \r\n
    \r\n (don't worry... it doesn't come out of their commissions!)\r\n

    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n return (\r\n\r\n
    \r\n
    \r\n\r\n\r\n
    Share it with the world!
    \r\n {\r\n postEmbedCode != null || lockerEmbedCode != null ?\r\n
    Link
    \r\n : <>\r\n }\r\n
    \r\n null} />\r\n \r\n
    \r\n\r\n {props.children}\r\n\r\n {\r\n postEmbedCode != null ?\r\n <>\r\n
    Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n\r\n {\r\n props.loggedInUser?.isAdmin && postEmbedBrandCode != null ?\r\n <>\r\n
    ADMIN Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n\r\n {\r\n blogEmbedCode != null ?\r\n <>\r\n
    Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n\r\n {\r\n lockerEmbedCode != null ?\r\n <>\r\n
    Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n\r\n {\r\n props.loggedInUser?.isAdmin && lockerEmbedBrandCode != null ?\r\n <>\r\n
    ADMIN Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n\r\n {\r\n productEmbedBrandCode != null ?\r\n <>\r\n
    Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n\r\n {\r\n props.loggedInUser?.isAdmin && profileEmbedCode != null ?\r\n <>\r\n
    ADMIN Embed Code
    \r\n\r\n
    \r\n null} />\r\n \r\n
    \r\n : <>\r\n }\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n )\r\n}\r\n\r\nexport default ShareBlock;","import React from \"react\";\r\nimport BlueTickIcon from \"./icons/BlueTickIcon\";\r\nimport { Link } from \"react-router-dom\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * user:object,\r\n * followAction:function, \r\n * messageAction:function, \r\n * loggedInUser:object\r\n * isFollowing:boolean\r\n * tags:[]\r\n * }} props \r\n */\r\n\r\nconst ProfileInfoCard = (props) => {\r\n let renderFollowButton = () => {\r\n if (props.loggedInUser && props.followAction && props.user.id !== props.loggedInUser.id) {\r\n if (props.isFollowing) {\r\n return (\r\n \r\n )\r\n } else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n let renderMessageButton = () => {\r\n if (props.loggedInUser && props.messageAction && props.loggedInUser.id !== props.user.id) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n if (props.noDiv) {\r\n return (\r\n <>\r\n \r\n {\r\n props.user?.imageUrl ? : \r\n }\r\n

    \r\n {props.user?.userName}\r\n

    \r\n \r\n\r\n
    {props.user?.tagLine}
    \r\n\r\n
    \r\n {renderFollowButton()}\r\n {renderMessageButton()}\r\n
    \r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {\r\n props.user?.imageUrl ? : \r\n }\r\n

    \r\n {props.user?.userName}\r\n

    \r\n \r\n\r\n
    {props.user?.tagLine}
    \r\n\r\n
    \r\n {renderFollowButton()}\r\n {renderMessageButton()}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default ProfileInfoCard;\r\n\r\n","import React from \"react\"\r\n\r\n/**\r\n * \r\n * @param {{proStatusId:Number}} props \r\n */\r\nconst BlueTickIconXY = (props) => {\r\n if (props.proStatusId > 0) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n}\r\n\r\nexport default BlueTickIconXY;","import React, { useState } from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport BlueTickIconXY from \"components/icons/BlueTickIconXY\";\r\nimport { connect } from \"react-redux\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{user:object,subtitle:any, showCheckMark:boolean, truncateUsername:boolean, style: object}} props\r\n */\r\nconst UserTileGeneral = (props) => {\r\n\r\n let { subtitle, truncateUsername } = props;\r\n\r\n let displayUserName = (userName) => {\r\n if (truncateUsername === true) {\r\n return userName.length > 13 ? userName.substring(0, 13) + \"..\" : userName;\r\n }\r\n else {\r\n return userName;\r\n }\r\n \r\n }\r\n\r\n const disableLink = (e) => {\r\n if (!!(props.disableLink)) {\r\n e.preventDefault();\r\n }\r\n }\r\n //let imageUrl = \"https://evolvedoutdoorsdev.blob.core.windows.net:443/users/100054/Profile/1fab44af-2b75-4c6a-b8ab-72a9d8ccd6e1.jpg\";\r\n\r\n return (\r\n
    \r\n
    \r\n { e.preventDefault(); window.open(`/Profile/${props.user?.userName}?showBrandNav=true`, '_blank'); } : ()=>{} }\r\n />\r\n
    \r\n {\r\n props.brandNavState || props.brandEmbed ?\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.user?.userName}\r\n
    \r\n
    \r\n {\r\n (props?.showCheckMark === true && (props.user?.proStatusId === 1 || props.user?.prostatusId === 2)) ? (\r\n \r\n \r\n \r\n ) : null\r\n }\r\n
    \r\n
    \r\n
    \r\n :\r\n props.brandNav ?\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.user?.userName}\r\n
    \r\n
    \r\n {\r\n (props?.showCheckMark === true && (props.user?.proStatusId === 1 || props.user?.prostatusId === 2)) ? (\r\n \r\n \r\n \r\n ) : null\r\n }\r\n
    \r\n
    \r\n
    \r\n :\r\n disableLink(e)}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.user?.userName}\r\n
    \r\n
    {\r\n (props?.showCheckMark === true && (props.user?.proStatusId === 1 || props.user?.prostatusId === 2)) ? (\r\n \r\n \r\n \r\n ) : null\r\n }\r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n {(subtitle || props.user?.name || props.user?.displayName) ? (subtitle || props.user?.name || props.user?.displayName) + \" \" : \"\" }\r\n
    \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { brandNavState: storeState.brandNavReducer.brandNavState }\r\n}\r\n\r\n\r\nexport default connect(mapStateToProps)(UserTileGeneral);","import React from \"react\"\r\nimport BlueTickIcon from \"./icons/BlueTickIcon\";\r\n//import ThreeDotsHorizontalIcon from \"./icons/ThreeDotsHorizontalIcon\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { connect } from \"react-redux\";\r\nimport {togglePostPageModal,toggleLockerPageModal, toggleBlogPageModal } from \"stateManagement/reducers/modalReducer\";\r\n/**\r\n * \r\n * @param {{post:Object,className:string,parentModal:{type:string,shareCode:string,parentState:object}}} props\r\n */\r\nconst ProductSlide = (props) => {\r\n\r\n let renderPost = () => {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.post.type === 2) {\r\n props.toggleLockerPageModal(props.post, props.loggedInUser, false, null, props.parentModal)\r\n } else if (props.post.type === 4) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, false, null, props.parentModal)\r\n }\r\n else {\r\n props.togglePostPageModal(props.post, props.loggedInUser, false, null, props.parentModal);\r\n }\r\n }}\r\n >\r\n
    \r\n {props.content && props.content.length > 0 &&\r\n props.content.some(property => property.role === 0 || property.role === 8) ?\r\n property?.role === 0 || property?.role === 8)[0].value} alt = \"\" />\r\n : props.content && props.content.length > 0 &&\r\n props.content.some(property => property?.role === 1) ?\r\n \r\n : }\r\n {props.post.type === 2 || props.post.type === 4 ?\r\n <>\r\n
    {props.post.title}
    \r\n

    \r\n Read more\r\n

    \r\n {props.post.productItems?.$values.length} product{props.post.productItems?.$values?.length > 1 ? \"s\" : \"\"}\r\n \r\n :\r\n <>\r\n}\r\n
    \r\n \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {renderPost()}\r\n {props.deviceSize === \"lg\" || props.deviceSize === \"xl\" || props.deviceSize === \"md\" ?\r\n : <>}\r\n
    \r\n {\r\n /*\r\n * \r\n\r\n *
    \r\n \r\n \"\"\r\n
    \r\n {props.post.user.userName.substring(0,15)} \r\n
    \r\n \r\n
    \r\n \r\n */\r\n\r\n }\r\n \r\n\r\n {renderContentCount(props.post.properties.$values.length)}\r\n
    \r\n\r\n )\r\n}\r\n\r\n\r\nfunction renderContentCount(count) {\r\n /*\r\n if (count > 1) {\r\n return (\r\n <>\r\n 1/{count}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n */\r\n}\r\nexport default connect(null, { togglePostPageModal, toggleLockerPageModal, toggleBlogPageModal })(ProductSlide)","import React from \"react\"\r\n\r\n/**\r\n *\r\n * @param {{fill:string, width:string, height:string}} props\r\n */\r\nconst LikeIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default LikeIcon;","import React from \"react\";\r\n\r\nconst RightArrowIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RightArrowIcon;","import React from \"react\";\r\n\r\nconst LeftArrowIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default LeftArrowIcon;","import React from \"react\";\r\nimport RightArrowIcon from './icons/RightArrowIcon';\r\nimport LeftArrowIcon from './icons/LeftArrowIcon';\r\n\r\n/**\r\n * \r\n * @param {{images:string[]}} props \r\n */\r\nconst Carousel = (props) => {\r\n const mapImages = () => {\r\n return props.images.map((imgUrl, i) => {\r\n return (\r\n
    \r\n \"product\"\r\n
    \r\n )\r\n })\r\n }\r\n\r\n const carouselIcons = () => {\r\n if (props.images.length > 1) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n Previous\r\n \r\n\r\n \r\n \r\n \r\n \r\n Next\r\n \r\n \r\n )\r\n }\r\n }\r\n return (\r\n
    \r\n
    \r\n {mapImages()}\r\n
    \r\n {carouselIcons()}\r\n
    \r\n )\r\n}\r\n\r\nexport default Carousel;","import React from \"react\";\r\n\r\nconst CommentIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CommentIcon;","import React from \"react\"\r\n\r\n/**\r\n * \r\n * @param {{fill:string}} props\r\n */\r\nconst BookmarkIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default BookmarkIcon;","import React from \"react\"\r\n\r\n\r\n/**\r\n * \r\n * @param {{width:string,height:string, fill:string}} props\r\n */\r\nconst PlusIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PlusIcon","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport StarRatingComponent from \"react-star-rating-component\";\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\nclass ProductReviewUsersList extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ratings: [],\r\n isLoading:true\r\n }\r\n }\r\n \r\n\r\n async componentDidMount() {\r\n let ratings = await this.fetchRatings();\r\n this.setState({ ratings, isLoading:false });\r\n }\r\n\r\n displayButtonText = (isFollowing) => {\r\n let smallDevices = [\"xs\", \"sm\"]\r\n if (smallDevices.includes(this.props.deviceSize)) {\r\n if (isFollowing) {\r\n return \"-\"\r\n }\r\n else {\r\n return \"+\"\r\n }\r\n }\r\n else {\r\n if (isFollowing) {\r\n return \"Unfollow -\"\r\n }\r\n else {\r\n return \"Follow +\"\r\n }\r\n }\r\n }\r\n\r\n displayRatings = () => {\r\n if (this.state.isLoading) {\r\n return \r\n }\r\n else if (this.state.ratings?.length > 0) {\r\n let smallSizes = [\"sm\"];\r\n let userTileStyle = smallSizes.includes(this.props.deviceSize) ? { width: \"53%\" } : { width: \"45%\" };\r\n let buttonClass = smallSizes.includes(this.props.deviceSize) ? \"\" : \"btn \";\r\n return this.state.ratings.map((rating, i) => {\r\n let buttonText = this.displayButtonText(rating.isFollowing);\r\n return (\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n {this.props.deviceSize === \"sm\" ?\r\n \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n editing={false}\r\n />\r\n\r\n :\r\n \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n editing={false}\r\n />\r\n\r\n }\r\n\r\n\r\n {\r\n rating.userId !== this.props.loggedInUser.id ? (\r\n {\r\n if (rating.isFollowing) {\r\n //unfollow\r\n this.unfollowUser(rating.userId, i);\r\n }\r\n else {\r\n this.followUser(rating.userId, i);\r\n //follow\r\n }\r\n }}\r\n >\r\n {buttonText}\r\n \r\n \r\n ):null\r\n }\r\n \r\n\r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n fetchRatings = async () => {\r\n let ratings = await getRequest(`/Products/GetUserRatings?userMerchantProductId=${this.props.merchantProductId}`);\r\n return ratings\r\n }\r\n\r\n followUser = async (userId, ratingIndex) => {\r\n let ratings = [...this.state.ratings];\r\n ratings[ratingIndex].isFollowing = !ratings[ratingIndex].isFollowing;\r\n\r\n this.setState({ ratings });\r\n let url = `api/Account/follow?id=${userId}`;\r\n await getRequest(url);\r\n \r\n }\r\n\r\n unfollowUser =async (userId,ratingIndex) => {\r\n\r\n let ratings = [...this.state.ratings];\r\n ratings[ratingIndex].isFollowing = !ratings[ratingIndex].isFollowing;\r\n\r\n this.setState({ ratings });\r\n\r\n let url = `api/Account/unfollow?id=${userId}`;\r\n await getRequest(url);\r\n \r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n
    Ratings
    \r\n {this.displayRatings()}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nProductReviewUsersList.propTypes = {\r\n merchantProductId: PropTypes.number,\r\n loggedInUser: PropTypes.object\r\n}\r\n\r\nexport default ProductReviewUsersList;","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport LikeIcon from \"./icons/LikeIcon\";\r\nimport Carousel from \"./Carousel\";\r\nimport { Link } from \"react-router-dom\";\r\nimport CommentIcon from \"./icons/CommentIcon\";\r\nimport ShareIcon from \"./icons/ShareIcon\";\r\nimport BookmarkIcon from \"./icons/BookmarkIcon\";\r\nimport RatingIcon from \"./icons/RatingIcon\";\r\nimport RatingIconHalf from \"./icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"./icons/RatingIconEmpty\";\r\nimport SaleIcon from \"./icons/SaleIcon\";\r\n\r\nimport ShareBar from \"components/Share/ShareBar\";\r\nimport ProductReviewUsersList from \"components/ProductReviewUsers/ProductReviewUsersList\";\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\n\r\nimport StarRatingComponent from 'react-star-rating-component';\r\n//import { Modal, ModalBody, ModalHeader } from \"reactstrap\";\r\n\r\nimport Modal from \"components/Modal\";\r\n\r\nimport AnchorLink from 'react-anchor-link-smooth-scroll'\r\nimport { TextareaAutosize } from \"@material-ui/core\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * product:object \r\n * rating:number, \r\n * loggedInUser:object,\r\n * starHover:Function,\r\n * starHoverOut:Function,\r\n * starClick:Function,\r\n * deviceSize:string,\r\n * buyAction:Function}} props\r\n */\r\nconst BrowseProductDetailSection = (props) => {\r\n let { imageUrl, manufacturer, merchant, name, ratingCount, likes, price, description } = props.product;\r\n\r\n const collapsedContentStyle = { textAlign: \"left\", marginTop: \"0em\", marginBottom: \"0px\", maxHeight: \"10rem\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"left\", marginTop: \"0em\", marginBottom: \"0px\" };\r\n\r\n const [contentStyle, setContentStyle] = useState(expandedContentStyle);\r\n const [merchantOverflow, setMerchantOverflow] = useState(false);\r\n const [showUserReviewList, setShowReviewList] = useState(false);\r\n\r\n const contentRef = React.createRef();\r\n\r\n const merchantRef = useCallback(node => {\r\n if (node !== null && !!(node.offsetHeight) && node.offsetHeight > 20) {\r\n setMerchantOverflow(true);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.collapsed) {\r\n setContentStyle(collapsedContentStyle);\r\n } else {\r\n setContentStyle(expandedContentStyle);\r\n }\r\n }, [props.collapsed]);\r\n\r\n let renderRatingIcons = () => {\r\n if (props.loadingPartial) {\r\n return
    \r\n Loading...\r\n
    \r\n }\r\n if (props.loggedInUser) {\r\n return (\r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarHover={props.starHover}\r\n onStarHoverOut={props.starHoverOut}\r\n onStarClick={props.starClick}\r\n />\r\n\r\n \r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser) {\r\n setShowReviewList(true);\r\n }\r\n else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }}>\r\n\r\n {!props.loadingPartial && ratingCount > 0 ? `(${ratingCount})` : null}\r\n\r\n \r\n \r\n {props.renderThumbsUpOverlay(props.productInfo, true)}\r\n
    \r\n \r\n )\r\n } else {\r\n let ratingIcons = [];\r\n let { rating } = props;\r\n for (let i = 0; i < 5; i++) {\r\n if (rating - i >= 1) {\r\n ratingIcons.push();\r\n }\r\n else if (rating - i <= 1 && rating - i > 0) {\r\n ratingIcons.push();\r\n }\r\n else {\r\n ratingIcons.push()\r\n }\r\n }\r\n return ratingIcons;\r\n }\r\n }\r\n\r\n let buyAction = shareCode => {\r\n let url = props.loggedInUser ? \"/Products/BuyAuthorized\" : \"/Products/Buy\";\r\n url += \"?shareCode=\" + shareCode + \"&referrer=\" + document.referrer + \"&browse=true\";\r\n return url;\r\n }\r\n\r\n const renderSaleOverlay = (sale) => {\r\n let deviceSize = [\"sm\", \"md\"].includes(props.deviceSize);\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let displayTableRows = () => {\r\n if (!!(props.products) && props.products.length > 0) {\r\n const showMerchant = props.products.length > 1;\r\n return props.products.map((product, i) => {\r\n let url = buyAction(product.shareCode);\r\n let sale = product.sale && !!(product.salePrice);\r\n let btnStyle = props.deviceSize === \"sm\" ? { maxWidth: \"70px\", fontSize: \"12px\" } : { maxWidth: \"80px\", maxHeight: \"40px\", fontSize: \"12px\" }\r\n return (\r\n
    \r\n
    \r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }} />\r\n
    \r\n \r\n {product.merchant}\r\n {product.sale && !!product.salePrice && }\r\n \r\n
    \r\n {product.sale && !!(product.salePrice) ? : \"\"}\r\n
    \r\n
    {currencyFormat(product.sale && !!(product.salePrice) && !!(product.originalPrice)? product.originalPrice : product.price)}
    \r\n
    \r\n
    \r\n {product.sale && !!(product.salePrice) ?
    ${product.salePrice.toFixed(2)}
    : <>}\r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n });\r\n }\r\n }\r\n\r\n let concatMerchantProduct = (manufacturer, merchant, name) => {\r\n if (manufacturer && manufacturer.toLowerCase() === merchant.toLowerCase()) {\r\n if (name.toLowerCase().indexOf(manufacturer.toLowerCase()) === 0) {\r\n return name.slice(manufacturer.length - name.length).trim();\r\n }\r\n return name;\r\n } else {\r\n if (manufacturer && name.toLowerCase().indexOf(manufacturer.toLowerCase()) === 0) {\r\n return name;\r\n }\r\n return name;\r\n //return (manufacturer + ' ' + name).trimStart();\r\n }\r\n }\r\n\r\n let displayManufacturer = (manufacturer) => {\r\n if (manufacturer?.toLowerCase().includes(\"rcktemp_\")) {\r\n return \"\";\r\n }\r\n return manufacturer;\r\n }\r\n\r\n let displayUserReviewList = () => {\r\n return (\r\n setShowReviewList(!showUserReviewList)}\r\n >\r\n\r\n \r\n\r\n \r\n )\r\n\r\n }\r\n\r\n return (\r\n
    \r\n {displayUserReviewList()}\r\n
    \r\n
    \r\n
    \r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }} />\r\n \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n
    \r\n
    {displayManufacturer(manufacturer)}
    \r\n

    {titleCase(concatMerchantProduct(manufacturer, merchant, name)).toUpperCase()}

    \r\n
    \r\n {renderRatingIcons()}\r\n
    \r\n \r\n {\r\n props.deviceSize !== \"sm\" && description?.toLowerCase() !== name?.toLowerCase() ? (\r\n <>\r\n
    \r\n {displayTableRows()}\r\n
    \r\n

    \r\n {description}\r\n

    \r\n \r\n ) : null\r\n }\r\n
    \r\n\r\n {\r\n props.deviceSize === \"sm\" && description?.toLowerCase() !== name?.toLowerCase() ? (\r\n <>\r\n
    \r\n {displayTableRows()}\r\n
    \r\n
    \r\n

    \r\n {description}\r\n

    \r\n
    \r\n \r\n ) : null\r\n }\r\n
    \r\n\r\n
    \r\n )\r\n}\r\n\r\nexport default BrowseProductDetailSection","import React, { useState, useEffect } from \"react\";\r\nimport LikeIcon from \"./icons/LikeIcon\";\r\nimport Carousel from \"./Carousel\";\r\nimport { Link } from \"react-router-dom\";\r\nimport CommentIcon from \"./icons/CommentIcon\";\r\nimport ShareIcon from \"./icons/ShareIcon\";\r\nimport BookmarkIcon from \"./icons/BookmarkIcon\";\r\nimport RatingIcon from \"./icons/RatingIcon\";\r\nimport RatingIconHalf from \"./icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"./icons/RatingIconEmpty\";\r\nimport SaleIcon from \"./icons/SaleIcon\";\r\n\r\nimport ShareBar from \"components/Share/ShareBar\";\r\nimport ProductReviewUsersList from \"components/ProductReviewUsers/ProductReviewUsersList\";\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\n\r\nimport StarRatingComponent from 'react-star-rating-component';\r\n//import { Modal, ModalBody, ModalHeader } from \"reactstrap\";\r\n\r\nimport Modal from \"components/Modal\";\r\n\r\nimport AnchorLink from 'react-anchor-link-smooth-scroll'\r\n\r\n/**\r\n * \r\n * @param {{\r\n * product:object \r\n * rating:number, \r\n * loggedInUser:object,\r\n * starHover:Function,\r\n * starHoverOut:Function,\r\n * starClick:Function,\r\n * deviceSize:string,\r\n * buyAction:Function}} props\r\n */\r\nconst ProductDetailSection = (props) => {\r\n let { imageUrl, manufacturer, merchant, name, ratingCount, likes, price, description } = props.product;\r\n\r\n const collapsedContentStyle = { textAlign: \"left\", marginTop: \"0em\", marginBottom: \"0px\", maxHeight: \"10rem\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"left\", marginTop: \"0em\", marginBottom: \"0px\" };\r\n\r\n const [contentStyle, setContentStyle] = useState(expandedContentStyle);\r\n const [showBuy, setShowBuy] = useState(false);\r\n const [showUserReviewList, setShowReviewList] = useState(false);\r\n\r\n const contentRef = React.createRef();\r\n\r\n useEffect(() => {\r\n if (props.collapsed) {\r\n setContentStyle(collapsedContentStyle);\r\n } else {\r\n setContentStyle(expandedContentStyle);\r\n }\r\n }, [props.collapsed]);\r\n\r\n let renderRatingIcons = () => {\r\n if (props.loadingPartial) {\r\n return
    \r\n Loading...\r\n
    \r\n }\r\n if (props.loggedInUser) {\r\n return (\r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarHover={props.starHover}\r\n onStarHoverOut={props.starHoverOut}\r\n onStarClick={props.starClick}\r\n />\r\n \r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser) {\r\n setShowReviewList(true);\r\n }\r\n else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }}>\r\n\r\n {!props.loadingPartial && ratingCount > 0 ? `(${ratingCount})` : null}\r\n\r\n \r\n \r\n {props.renderThumbsUpOverlay(props.productInfo)}\r\n\r\n
    \r\n )\r\n } else {\r\n let ratingIcons = [];\r\n let { rating } = props;\r\n for (let i = 0; i < 5; i++) {\r\n if (rating - i >= 1) {\r\n ratingIcons.push();\r\n }\r\n else if (rating - i <= 1 && rating - i > 0) {\r\n ratingIcons.push();\r\n }\r\n else {\r\n ratingIcons.push()\r\n }\r\n }\r\n return ratingIcons;\r\n }\r\n }\r\n\r\n let renderBuy = () => {\r\n const commissionable = !!(props.product.commission);\r\n\r\n if (props.loadingBuy) {\r\n let today = Date.now().toString();\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n if (commissionable && props.product.integrated) {\r\n return (\r\n <>\r\n props.handleGoogleAnalytics4BuyButton(false)} target={props.product.merchant + Date.now().toString()}>\r\n \r\n \r\n e.preventDefault()}>Commissionable link\r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n let concatMerchantProduct = (manufacturer, merchant, name) => {\r\n if (manufacturer && manufacturer.toLowerCase() === merchant.toLowerCase()) {\r\n if (name.toLowerCase().indexOf(manufacturer.toLowerCase()) === 0) {\r\n return name.slice(manufacturer.length - name.length).trim();\r\n }\r\n return name;\r\n } else {\r\n if (manufacturer && name.toLowerCase().indexOf(manufacturer.toLowerCase()) === 0) {\r\n return name;\r\n }\r\n return name;\r\n //return (manufacturer + ' ' + name).trimStart();\r\n }\r\n }\r\n\r\n let displayManufacturer = (manufacturer) => {\r\n if (manufacturer?.toLowerCase().includes(\"rcktemp_\")) {\r\n return \"\";\r\n }\r\n return manufacturer;\r\n }\r\n\r\n let displayUserReviewList = () => {\r\n return (\r\n setShowReviewList(!showUserReviewList)}\r\n >\r\n\r\n \r\n\r\n \r\n )\r\n\r\n }\r\n\r\n let deviceSize = [\"sm\", \"md\"].includes(props.deviceSize);\r\n\r\n return (\r\n
    \r\n {displayUserReviewList()}\r\n
    \r\n
    \r\n
    \r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }} />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    {displayManufacturer(manufacturer)}
    \r\n
    \r\n

    {titleCase(concatMerchantProduct(manufacturer, merchant, name)).toUpperCase()}{props.product.sale ? : <>}

    \r\n
    \r\n {props.product.sale && !!(props.product.salePrice) ? \"$\" + props.product.salePrice.toFixed(2) : <>}\r\n {currencyFormat(props.product.sale && !!(props.product.salePrice) && !!(props.product.originalPrice) ? props.product.originalPrice : props.product.price)}\r\n
    \r\n
    \r\n {renderRatingIcons()}\r\n
    \r\n\r\n {renderBuy()}\r\n {\r\n props.deviceSize !== \"sm\" && description?.toLowerCase() !== name?.toLowerCase() ? (\r\n

    \r\n {description}\r\n

    \r\n ) : null\r\n }\r\n
    \r\n\r\n {\r\n props.deviceSize === \"sm\" && description?.toLowerCase() !== name?.toLowerCase() ? (\r\n
    \r\n

    \r\n {description}\r\n

    \r\n
    \r\n ) : null\r\n } \r\n
    \r\n\r\n
    \r\n )\r\n}\r\n\r\nexport default ProductDetailSection","import React from \"react\";\r\nimport { MentionsInput, Mention } from \"react-mentions\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { debounce } from \"throttle-debounce\"\r\n\r\n/**\r\n * @description: Component for posting comments\r\n * @param {{postComment:Function?,user: object, handleCommentInput:Function, commentText:string}} props\r\n */\r\nconst CommentForm = (props) => {\r\n\r\n const debounceFunc = React.useCallback(debounce(300, (query, callback) => fetchUsers(query, callback)), []);\r\n\r\n let renderButton = () => {\r\n if (props.commentText.length > 0 && !props.submittingComment) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }\r\n\r\n function fetchUsers (query, callback) {\r\n if (!query || query.length < 1) {\r\n return;\r\n }\r\n\r\n getRequest(`/api/Account/GetUserSuggestionsByUsername?username=${query}`)\r\n .then(res =>\r\n res?.map(user => ({ display: user.userName, id: user.id, name: user.name }))\r\n )\r\n .then(callback)\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n { props.handleCommentInput(e); }}>\r\n\r\n `@${display}`}\r\n markup=\"#!^(__id__)%~@(((__display__)))\"\r\n renderSuggestion={(entry, search, highlightedDisplay, index, focused) => {\r\n return @{entry.display}
    {entry.name}
    \r\n }}\r\n />\r\n \r\n
    \r\n
    \r\n {renderButton()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n}\r\n\r\nexport default CommentForm;","import React from \"react\";\r\n\r\nexport let handleHashtags = (text) => {\r\n let hashTagCount = 0;\r\n\r\n if (typeof text === \"string\") {\r\n for (let i = 1; i < text.length; ++i) {\r\n if (text[i] === '#' && (text[i - 1] != '#' && text[i - 1] !== ' ' && text[i - 1] !== '\\n' && text[i - 1] != '\\r')) {\r\n ++hashTagCount;\r\n text = text.substring(0, i) + \" \" + text.substring(i);\r\n ++i;\r\n }\r\n }\r\n }\r\n return text;\r\n}\r\n\r\nexport let handleCommentMarkup = (text, onlyText = false, newTab = false) => {\r\n // This initial loop is to reformat \"dummy text\" from new comments that isn't being formatted server-side\r\n while (text?.match(/#!\\^\\(([^\\s]+?)\\)%~@\\(\\(\\((.*?)\\)\\)\\)/) != null) {\r\n const fullMatch = text?.match(/#!\\^\\(([^\\s]+?)\\)%~@\\(\\(\\((.*?)\\)\\)\\)/);\r\n const username = fullMatch[2];\r\n text = text.slice(0, fullMatch.index) + `#!^(` + username + `)%~@ ` + text.slice(fullMatch.index + fullMatch[0].length);\r\n }\r\n\r\n let result = [];\r\n let userName = [];\r\n\r\n let i = 0;\r\n while (userName = text?.match(/#!\\^\\(([^\\s]+?)\\)%~@/)) {\r\n ++i;\r\n if (userName.index > 0) {\r\n result.push(text?.slice(0, userName.index));\r\n }\r\n\r\n if (newTab) {\r\n result.push({\"@\" + userName[1]})\r\n } else {\r\n result.push({\"@\" + userName[1]})\r\n }\r\n text = text.slice(userName.index + userName[0].length);\r\n }\r\n\r\n result.push(handleHashtags(text));\r\n\r\n if (onlyText === true) {\r\n return result;\r\n } else {\r\n return (\r\n

    \r\n {result}\r\n

    \r\n );\r\n }\r\n \r\n}\r\n\r\n\r\n/**\r\n * \r\n * @param {string} text\r\n */\r\nexport const replaceUrls = (text) => {\r\n let urlRegex = /(https?:\\/\\/)([\\da-z\\.-]+)\\.([a-z]{2,6})([\\/\\w\\.-]*)*\\/?/\r\n let links = [];\r\n let result = [];\r\n\r\n let i = 0;\r\n\r\n while (links = text?.match(urlRegex)) {\r\n ++i;\r\n if (links.index > 0) {\r\n result.push(text?.slice(0, links.index));\r\n }\r\n\r\n result.push(\r\n {links[0]}\r\n )\r\n\r\n text = text.slice(links.index + links[0].length); \r\n }\r\n\r\n result.push(text);\r\n return result;\r\n}","const { DateTime } = require(\"luxon\");\r\n\r\nfunction convert(dateTime, relative, options) {\r\n let now = DateTime.now().toUTC();\r\n\r\n if (typeof dateTime.getMonth === 'function') {\r\n if (relative) {\r\n let diff = now.diff(DateTime.fromISO(dateTime.toISOString()), \"second\");\r\n if (diff.seconds <= 1) {\r\n return \"now\";\r\n }\r\n return DateTime.fromISO(dateTime.toISOString()).toRelative();\r\n }\r\n return DateTime.fromISO(dateTime.toISOString()).toLocaleString(options);\r\n }\r\n\r\n // e.g. \"20210424T19:35:45.96\"\r\n if (!dateTime.includes(\"Z\") && !dateTime.includes(\"+\") && !dateTime.includes(\"-\")) {\r\n dateTime += \"Z\";\r\n }\r\n // e.g. \"2021-04-24T19:35:45.96\"\r\n else if (!dateTime.includes(\"Z\") && !dateTime.includes(\"+\") && dateTime.includes(\"-\") && dateTime.includes(\"T\")) {\r\n dateTime += \"Z\";\r\n }\r\n\r\n if (relative) {\r\n let diff = now.diff(DateTime.fromISO(dateTime), \"second\");\r\n if (diff.seconds <= 1) {\r\n return \"now\";\r\n }\r\n return DateTime.fromISO(dateTime).toRelative();\r\n }\r\n return DateTime.fromISO(dateTime).toLocaleString(options);\r\n}\r\n\r\nexport function getSecondsBetweenDates(startDate, endDate) {\r\n let diff = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n return (diff / (1000));\r\n}\r\n\r\nexport function getMinutesBetweenDates(startDate, endDate) {\r\n let diff = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n return (diff / (1000 * 60));\r\n}\r\n\r\nexport function getHoursBetweenDates(startDate, endDate) {\r\n let diff = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n return (diff / (1000 * 60 * 60));\r\n}\r\n\r\nexport function getDaysBetweenDates(startDate, endDate) {\r\n let diff = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n return (diff / (1000 * 60 * 60 * 24));\r\n}\r\n\r\n// Example: July 25, 2021\r\nexport function convertToLocaleDateTimeString(dateTime, relative = true) {\r\n let convertedDate = convert(dateTime, relative, DateTime.DATE_FULL);\r\n return convertedDate;\r\n}\r\n\r\n// Example: Jul 25\r\nexport function convertToAbbreviatedMonthAndDay(dateTime, relative = true) {\r\n let convertedDate = convert(dateTime, relative, { month: 'short', day: 'numeric' });\r\n return convertedDate;\r\n} \r\n\r\n// Example: Jul 25, 1:48 AM\r\nexport function convertToAbbreviatedMonthAndDayAndTime(dateTime) {\r\n let convertedDate = convert(dateTime, null, { month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric' });\r\n return convertedDate;\r\n}\r\n\r\n// Example: Sun 1:48 AM\r\nexport function convertToNameOfWeekdayAndTime(dateTime) {\r\n let convertedDate = convert(dateTime, null, { weekday: 'short', hour: 'numeric', minute: 'numeric' });\r\n return convertedDate;\r\n}\r\n\r\n// Example: 7/25\r\nexport function convertToNumericMonthAndDay(dateTime, relative = true) {\r\n let convertedDate = convert(dateTime, relative, { month: 'numeric', day: 'numeric' });\r\n return convertedDate;\r\n}\r\n\r\n// Example: 7/25/2021\r\nexport function convertToNumericMonthAndDayAndYear(dateTime, relative = true) {\r\n let convertedDate = convert(dateTime, relative, { month: 'numeric', day: 'numeric', year: 'numeric',locale:\"en-us\" });\r\n return convertedDate;\r\n}\r\n\r\n// Example: 7/25/2021, 1:48 AM\r\nexport function convertToNumericMonthAndDayAndYearAndTime(dateTime, relative = true) {\r\n let convertedDate = convert(dateTime, relative, { month: 'numeric', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric' });\r\n return convertedDate;\r\n}\r\n\r\nexport function asDate(dateTime) {\r\n return dateTime.minus({ millisecond: dateTime.millisecond, second: dateTime.second, minute: dateTime.minute, hour: dateTime.hour });\r\n}","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport LikeIcon from \"./icons/LikeIcon\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { connect } from \"react-redux\";\r\n\r\n/**\r\n * Comment structure\r\n * @typedef {Object} Comment\r\n * @property {comment} text - comment string\r\n * @property {string} postedBy\r\n * @property {Date} postedTime\r\n * @property {number} likes\r\n * @property {string} profilePicture\r\n * @property {Array} replies\r\n * @property {boolean} [isReply]\r\n */\r\n\r\n/**\r\n * @param {{comment: Object, loggedInUser: Object, likeAction: function, commentKey:Number}} props\r\n */\r\nconst CommentTile = (props) => {\r\n\r\n let renderReplies = () => {\r\n if (props.replies != null && props.replies.length > 0) {\r\n return props.replies.map((reply, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n }\r\n\r\n let isReplyClassName = () => {\r\n if (props.isReply && props.isReply === true) {\r\n return \"reply-block mb-4 pl-4\"\r\n }\r\n else {\r\n return \"main-comment mb-1\"\r\n }\r\n }\r\n\r\n let renderShowReplies = () => {\r\n if (props.replyCount === 1) {\r\n return
    { e.preventDefault(); }}>Show reply
    \r\n } else if (props.replyCount > 1) {\r\n return
    { e.preventDefault(); }}>Show {props.replyCount} replies
    \r\n }\r\n }\r\n\r\n let renderLikes = () => {\r\n if (props.loggedInUser) {\r\n return (\r\n { e.preventDefault(); props.likeAction(props.comment, props.commentKey); }}>\r\n \r\n \r\n {props.comment.likes || 0}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n { e.preventDefault(); }}>\r\n \r\n \r\n {props.comment.likes || 0}\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n let url = props.brandNavState ? \"/Profile/\" + props.comment.user?.userName + \"?showBrandNav=true\" : \"/Profile/\" + props.comment.user?.userName;\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n {\r\n props.comment.user?.imageUrl ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n\r\n \r\n \r\n {props.comment.user.userName}\r\n \r\n {\" \"}\r\n \r\n \r\n\r\n {handleTextMarkup(props.comment.text)}\r\n {/*handleCommentMarkup(props.comment.text)*/}\r\n \r\n {convertToLocaleDateTimeString(props.comment.createdOn)}\r\n \r\n
    \r\n\r\n\r\n
    \r\n {renderLikes()}\r\n \r\n
    \r\n\r\n
    \r\n\r\n {renderShowReplies()}\r\n
    \r\n {renderReplies()}\r\n \r\n\r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { brandNavState: storeState.brandNavReducer.brandNavState }\r\n}\r\n\r\n\r\nexport default connect(mapStateToProps)(CommentTile);","import React from \"react\"\r\n\r\nconst RightArrowIconSmall = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default RightArrowIconSmall;","import React from \"react\"\r\n/**\r\n * \r\n * @param {{callback:Function}} props \r\n */\r\nconst ShareIosIcon = (props) => {\r\n return (\r\n \r\n Svg Vector Icons : http://www.onlinewebfonts.com/icon \r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default ShareIosIcon;","import React from \"react\";\r\nimport { getDaysBetweenDates, convertToNameOfWeekdayAndTime, convertToAbbreviatedMonthAndDayAndTime } from \"../../sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\n\r\n\r\nclass MessageReply extends React.Component {\r\n\r\n divRef = React.createRef();\r\n\r\n state = {\r\n style : \"right\"\r\n }\r\n\r\n componentDidMount = () => {\r\n this.checkLines();\r\n }\r\n\r\n checkLines = () => {\r\n let computedStyle = window.getComputedStyle(this.divRef.current);\r\n let borderTopWidth = (computedStyle.borderTopWidth.replace(\"px\", \"\"));\r\n let borderBottomWidth = (computedStyle.borderBottomWidth.replace(\"px\", \"\"));\r\n let paddingTop = (computedStyle.paddingTop.replace(\"px\", \"\"));\r\n let paddingBottom = (computedStyle.paddingBottom.replace(\"px\", \"\"));\r\n let lineHeight = (computedStyle.lineHeight.replace(\"px\", \"\"));\r\n\r\n let lines = (this.divRef.current.offsetHeight - borderTopWidth - borderBottomWidth - paddingTop - paddingBottom) / lineHeight; \r\n\r\n if (lines > 1) {\r\n this.setState({ style: \"left\" } );\r\n } else {\r\n this.setState({ style: \"right\" });\r\n }\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n render = () => {\r\n let message = this.props.message;\r\n \r\n return (\r\n
    \r\n {\r\n this.props.formattedDate ?\r\n
    \r\n {this.props.formattedDate}\r\n
    :\r\n <>\r\n }\r\n \r\n
    \r\n
    \r\n
    {this.handleTextMarkup(message.text)}
    \r\n
    \r\n
    \r\n
    );\r\n }\r\n}\r\n\r\nexport default MessageReply;","import React from \"react\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MessageReply from \"./MessageReply\";\r\nimport { getMinutesBetweenDates, getDaysBetweenDates, convertToNameOfWeekdayAndTime, convertToAbbreviatedMonthAndDayAndTime } from \"../../sharedUtils/timeUtils\"\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\n\r\n/**\r\n *\r\n * @param {{\r\n * user: object,\r\n * conversationId: int,\r\n * onClickSend: function,\r\n * onClickBack: function\r\n * }} props\r\n */\r\n\r\nclass MessageDetails extends React.Component {\r\n\r\n state = {\r\n sender: {},\r\n newMessage: \"\",\r\n messageDetails: [],\r\n loading: true,\r\n initialLoad: true,\r\n replyStyle: {}\r\n }\r\n\r\n inputRef = React.createRef();\r\n sendButtonRef = React.createRef();\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.timer);\r\n }\r\n\r\n componentDidMount = async () => {\r\n if (this.props.user) {\r\n this.setState({ sender: this.props.user });\r\n }\r\n\r\n this.refreshState();\r\n\r\n // Poll for new messages every 10 seconds since we don't have a websocket connection\r\n this.timer = setInterval(() => { this.refreshState() }, 10 * 1000);\r\n }\r\n\r\n refreshState = async () => {\r\n let messageDetailsUrl = '';\r\n\r\n if (this.props.conversationId) {\r\n messageDetailsUrl = '/api/Account/GetMessages?conversationId=' + this.props.conversationId;\r\n } else {\r\n messageDetailsUrl = '/api/Account/GetConversation?userId=' + this.props.user.id;\r\n }\r\n\r\n let messageDetails = await getRequest(messageDetailsUrl) ?? [];\r\n\r\n if (this.state.initialLoad || this.state.messageDetails.length !== messageDetails.length) {\r\n this.setState({ messageDetails: messageDetails, loading: false, initialLoad: false });\r\n\r\n this.inputRef.current.scrollIntoView();\r\n this.inputRef.current.focus();\r\n }\r\n }\r\n\r\n handleMessageInput = (e) => {\r\n this.setState({ newMessage: e.target.value });\r\n\r\n /* Auto-resize textarea */\r\n if (this.inputRef) {\r\n try {\r\n this.inputRef.current.style.height = \"100px\";\r\n this.inputRef.current.style.height = this.inputRef.current.scrollHeight + \"px\";\r\n }\r\n catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n }\r\n\r\n onKeyDownMessageInput = async (e) => {\r\n if (this.state.newMessage.length === 0)\r\n return;\r\n\r\n /* Add Ctrl+Enter or Command+Enter hot key to trigger Send button */\r\n if ((e.keyCode === 10 || e.keyCode === 13) && e.ctrlKey) {\r\n this.sendButtonRef.current.click();\r\n }\r\n }\r\n\r\n onClickSend = async (e) => {\r\n e.preventDefault();\r\n\r\n let newMessage = this.state.newMessage;\r\n this.setState({ newMessage: \"\" });\r\n\r\n let messageDetails = this.state.messageDetails;\r\n let messagesUrl = '/api/Account/SendMessage';\r\n let message = await postRequest(messagesUrl,\r\n {\r\n conversationId: this.state.messageDetails.length > 0 ? this.state.messageDetails[0].conversationId : null,\r\n receiverId: this.state.sender.id,\r\n text: newMessage\r\n });\r\n messageDetails.push(message);\r\n\r\n if (this.props.onClickSend) {\r\n this.props.onClickSend(message);\r\n }\r\n\r\n this.setState({ newMessage: \"\", messageDetails: messageDetails });\r\n }\r\n\r\n renderMessageThread = () => {\r\n return this.state.messageDetails.map((message, i) => {\r\n let showDate = true;\r\n let paddingClass = \"py-3\";\r\n\r\n let formattedDate = null;\r\n let daysBetweenDates = getDaysBetweenDates(message.createdDate, new Date());\r\n if (daysBetweenDates <= 7) {\r\n formattedDate = convertToNameOfWeekdayAndTime(message.createdDate);\r\n } else {\r\n formattedDate = convertToAbbreviatedMonthAndDayAndTime(message.createdDate);\r\n }\r\n\r\n if (i > 0) {\r\n let lastMessage = this.state.messageDetails[i - 1];\r\n let minutesBetweenDates = getMinutesBetweenDates(lastMessage.createdDate, message.createdDate);\r\n if (minutesBetweenDates <= 10) {\r\n showDate = false;\r\n }\r\n }\r\n\r\n if (message.sender.id === this.props.loggedInUser.id) {\r\n if (this.state.messageDetails.length > i + 1) {\r\n let nextMessage = this.state.messageDetails[i + 1];\r\n if (nextMessage.sender.id === message.sender.id) {\r\n paddingClass = \"py-1\";\r\n }\r\n }\r\n\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {\r\n showDate ?\r\n
    \r\n {formattedDate}\r\n
    :\r\n <>\r\n }\r\n\r\n
    \r\n
    \r\n {\r\n message.sender.imageUrl ?\r\n \"Avatar\" :\r\n \"Avatar\"/\r\n }\r\n
    {message.text}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n });\r\n }\r\n\r\n render = () => {\r\n if (this.state.loading === true) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.renderMessageThread()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {this.state.newMessage.length > 0 ?\r\n \r\n : \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default MessageDetails;","import React from \"react\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\n\r\nconst SwipeableDiv = (props) => {\r\n\r\n const handlers = useSwipeable({\r\n onSwiped: (eventData) => props.onSwiped ? props.onSwiped(eventData) : null,\r\n onSwipedLeft: (eventData) => props.onSwipedLeft ? props.onSwipedLeft(eventData) : null,\r\n onSwipedRight: (eventData) => props.onSwipedRight ? props.onSwipedRight(eventData) : null,\r\n onSwipedUp: (eventData) => props.onSwipedUp ? props.onSwipedUp(eventData) : null,\r\n onSwipedDown: (eventData) => props.onSwipedDown ? props.onSwipedDown(eventData) : null,\r\n onSwiping: (eventData) => props.onSwiping ? props.onSwiping(eventData) : null,\r\n onTap: (eventData) => props.onTap ? props.onTap(eventData) : null,\r\n preventDefaultTouchmoveEvent: props.preventDefaultTouchmoveEvent,\r\n trackMouse: props.trackMouse\r\n });\r\n\r\n return (
    {props.children}
    );\r\n}\r\n\r\nexport default SwipeableDiv;\r\n","import React from \"react\"\r\n\r\nconst GridIcon = (props) => {\r\n return (\r\n \r\n Svg Vector Icons : http://www.onlinewebfonts.com/icon \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GridIcon;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{fill:string,width:string, height:string, fillOpacity:string}} props\r\n */\r\nconst Tick = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Tick;","import React from \"react\";\r\nimport ProfileInfoCard from \"../../components/ProfileInfoCard\";\r\nimport ProductSlide from '../../components/ProductSlide';\r\nimport BrowseProductDetailSection from '../../components/BrowseProductDetailSection';\r\nimport ProductDetailSection from '../../components/ProductDetailSection';\r\nimport CommentForm from '../../components/CommentForm';\r\nimport Modal from \"../../components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport CommentTile from '../../components/CommentTile';\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ShareBar from \"components/Share/ShareBar\";\r\nimport { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport RightArrowIconSmall from \"../../components/icons/RightArrowIconSmall\";\r\n\r\nimport authService from \"../../components/api-authorization/AuthorizeService\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\nimport UserTileSmall from \"components/UserTileSmall\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { connect } from \"react-redux\";\r\nimport { closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\nimport SwipeableDiv from \"components/SwipeableDiv\";\r\nimport { DateTime } from \"luxon\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport PlusIcon from \"components/icons/PlusIcon\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\nimport Tick from \"components/icons/Tick\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nvar jsonref = require('jsonref');\r\n\r\nclass ProductPage extends React.Component {\r\n commentsTextArea = React.createRef();\r\n browse = false;\r\n noCommission = false;\r\n\r\n state = {\r\n redirect: false,\r\n loadingPartial: true,\r\n loading: true,\r\n loadingComments: false,\r\n loadingNextLinkedPosts: false,\r\n loadingPrevLinkedPosts: false,\r\n loadingBuy: false,\r\n commentInput: \"\",\r\n isFollowing: false,\r\n shareCode: \"\",\r\n linkedPostPage: 0,\r\n lastLinkedPostPage: 0,\r\n userDescriptionPage: 0,\r\n userDescriptions: [],\r\n productInfo: {\r\n userMerchantProductId: 0,\r\n userDescription: \"\",\r\n merchantProductId: 0,\r\n userRating: 0,\r\n rating: 0,\r\n displayRating: 0,\r\n ratingCount: 0,\r\n description: \"\",\r\n referalLink: {},\r\n manufacturer: \"\",\r\n name: \"\",\r\n price: 0,\r\n originalPrice: 0,\r\n salePrice: 0,\r\n sale: false,\r\n likes: 0,\r\n likedByUser: false,\r\n savedByUser: false,\r\n imageUrl: \"\",\r\n\r\n user: {\r\n name: \"\",\r\n userName: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n bio: \"\",\r\n proStatusId: 0\r\n },\r\n comments: [],\r\n linkedPosts: []\r\n },\r\n modalOpen: false,\r\n showMessageDetails: false,\r\n hidePageExtras: false,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n displayAddedToInventoryPrompt: false,\r\n isUserMerchant: false,\r\n redirectOccurred: false,\r\n rating: 0,\r\n products: [],\r\n browse: false,\r\n showRecommendedFlag: true\r\n }\r\n\r\n async componentDidMount() {\r\n let search = decodeURIComponent(this.props.location?.search);\r\n let params = new URLSearchParams(search);\r\n\r\n let pathname = decodeURIComponent(this.props.location?.pathname);\r\n\r\n let search2 = pathname.split('?');\r\n if (search == \"\" && search2.length > 0) {\r\n params = new URLSearchParams('?' + search2[1]);\r\n }\r\n\r\n let browse = params.get('b') === '1';\r\n let redirect = !this.props.isModal && (params.get('r') === '1' || params.get('r') == null);\r\n if (browse) {\r\n redirect = false;\r\n }\r\n this.browse = browse;\r\n //this.setState({ showRecommendedFlag: (!!(this.props.location?.search?.toLowerCase().includes(\"showrecommended=true\")) || this.props.isSearch || this.props.isBrowse) });\r\n\r\n if (redirect) {\r\n this.props.setShowTopNav(false);\r\n } else {\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n }\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n this.props.closeAllModals()\r\n } else {\r\n this.setState({ hidePageExtras: false })\r\n }\r\n\r\n let shareCode = \"\";\r\n let productInfo = null;\r\n let loggedInUser = null;\r\n\r\n // feed\r\n if (this.props.match.params != undefined && this.props.match.params.product != undefined) {\r\n shareCode = this.props.match.params.product.shareCode;\r\n productInfo = this.props.match.params.product;\r\n productInfo.comments = [];\r\n productInfo.linkedPosts = [];\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params &&\r\n this.props.location.state.destinationState.params.product != undefined) {\r\n shareCode = this.props.location.state.destinationState.params.product.shareCode;\r\n productInfo = this.props.location.state.destinationState.params.product;\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n // direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n if (this.props.isBrowse && productInfo != null) {\r\n let merchantProductId = productInfo.merchantProductId;\r\n\r\n let products = await getRequest(`/Products/GetUserMerchantProductsWithMerchantProductId?merchantProductId=${merchantProductId}`);\r\n this.setState({ products });\r\n }\r\n\r\n shareCode = decodeURIComponent(shareCode).split('?')[0];\r\n\r\n await this.setState({ shareCode });\r\n\r\n if (redirect) {\r\n await this.populateData(true); // this will track the product view\r\n\r\n this.setState({ shareCode, redirect: true });\r\n\r\n return;\r\n };\r\n\r\n let shareLink = await getProductShareLink(shareCode, !!(this.props.isBrowse));\r\n\r\n await this.setState({ shareCode, productInfo, loggedInUser, shareLink, redirect, isUserMerchant: productInfo?.user?.id === this.props.loggedInUser?.id }, () => {\r\n this.populateData();\r\n });\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.setState({ hidePageExtras: false }, () => {\r\n setTimeout(() => {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }, 500);\r\n\r\n });\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n\r\n //for (const index in prevProps) {\r\n // if (prevProps[index] !== this.props[index]) {\r\n // console.log(index, this.props[index], '-->', prevProps[index]);\r\n // }\r\n //}\r\n\r\n if (this.props.match.params.shareCode != prevProps.match.params.shareCode) {\r\n this.setState({ loading: true });\r\n let isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n\r\n let product = this.props.location.state.destinationState.params.product;\r\n\r\n if (product == null || product == undefined) {\r\n\r\n product = await this.fetchProduct(shareCode);\r\n\r\n if (product == null || product == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1;\r\n }\r\n else {\r\n await this.getLikes(isAuthenticated, product.userMerchantProductId);\r\n await this.getSavedByUser(product.userMerchantProductId);\r\n await this.getRating(isAuthenticated, product.userMerchantProductId);\r\n await this.loadUserDescriptions(product.userMerchantProductId, this.state.loggedInUser ? this.state.loggedInUser.id : -1);\r\n\r\n\r\n }\r\n }\r\n this.loadLinkedPosts(0);\r\n\r\n let products = [];\r\n\r\n this.setState({ productInfo: product, loading: false, isUserMerchant: product?.user?.id === this.props.loggedInUser?.id });\r\n }\r\n }\r\n\r\n fetchProduct = async (shareCode) => {\r\n let isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n const browse = this.browse ? \"&browse=true\" : \"\";\r\n let baseUrl = isAuthenticated === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let productUrl = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}${browse}`;\r\n let product = await getRequest(productUrl);\r\n\r\n\r\n return product;\r\n\r\n }\r\n\r\n async populateData(forRedirect = false) {\r\n var isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n const browse = this.props.isBrowse || this.browse ? \"&browse=true\" : \"\";\r\n\r\n let baseUrl = isAuthenticated === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let shareCode = this.props.match.params.shareCode ? this.props.match.params.shareCode : this.state.shareCode;\r\n let productUrl = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}${browse}&forRedirect=${forRedirect}`;\r\n\r\n var data;\r\n if (this.state.productInfo && this.state.productInfo.userMerchantProductId && this.state.productInfo.userMerchantProductId !== 0 && this.state.productInfo?.hasOwnProperty('commission')) {\r\n data = this.state.productInfo;\r\n this.noCommission = !(data.commission)\r\n let trackBaseUrl = isAuthenticated ? `/Products/TrackProductViewAuthorized` : `/Products/TrackProductView`\r\n let trackProductViewUrl = `${trackBaseUrl}?userMerchantProductId=${data.userMerchantProductId}&referrer=${document.referrer}${browse}`;\r\n getRequest(trackProductViewUrl);\r\n } else {\r\n data = await getRequest(productUrl);\r\n if (data == null) {\r\n data = await getRequest(`/Products/Get?shareCode=${shareCode}&referrer=${document.referrer}${browse}`)\r\n if (data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n return;\r\n }\r\n }\r\n this.noCommission = !(data.commission);\r\n }\r\n\r\n let products = [];\r\n\r\n if (data === undefined || data === null) {\r\n this.setState({ productInfo: null });\r\n this.props.history.push(\"/NotFound\");\r\n return -1;\r\n } else if (!!(data) && (this.browse || this.props.isBrowse)) {\r\n let merchantProductId = data.merchantProductId;\r\n\r\n products = await getRequest(`/Products/GetUserMerchantProductsWithMerchantProductId?merchantProductId=${merchantProductId}`);\r\n }\r\n\r\n await this.setState({ productInfo: data, products, loading: false, isUserMerchant: data?.user?.id === this.props.loggedInUser?.id });\r\n\r\n // short circuit redirect as other data isn't needed\r\n if (data.integrated === true && forRedirect === true) {\r\n return;\r\n }\r\n\r\n if (data.inUserInventory == null || data.inUserInventory == undefined) {\r\n await this.getInUserInventory(isAuthenticated, data.merchantProductId);\r\n }\r\n\r\n if (data.likes == null || data.likes === 0) {\r\n this.getLikes(isAuthenticated, data.userMerchantProductId);\r\n }\r\n\r\n if (data.ratingAverage == null || data.ratingAverage === 0) {\r\n this.getRating(isAuthenticated, data.userMerchantProductId);\r\n }\r\n\r\n if (data.savedByUser == null) {\r\n this.getSavedByUser(data.userMerchantProductId);\r\n }\r\n\r\n this.loadUserDescriptions(data.userMerchantProductId, this.state.loggedInUser ? this.state.loggedInUser.id : -1);\r\n\r\n this.setState({ loadingPartial: false });\r\n\r\n if (data.comments?.length == 0) { this.loadPreviousComments(0, 3); }\r\n this.loadLinkedPosts(0);\r\n\r\n if (!!(this.state.loggedInUser)) {\r\n let isFollowing = await getRequest(`/api/Account/IsFollowing?id=${this.state.productInfo?.user?.id}`);\r\n this.setState({ isFollowing: isFollowing });\r\n }\r\n }\r\n\r\n addProductToInventory = async () => {\r\n let merchantProductId = this.state.productInfo.merchantProductId;\r\n\r\n let addModel = { MerchantProductId: merchantProductId };\r\n\r\n let updatedProductInfo = { ...this.state.productInfo };\r\n updatedProductInfo.inUserInventory = !updatedProductInfo.inUserInventory;\r\n\r\n this.setState({ productInfo: updatedProductInfo, displayAddedToInventoryPrompt: true });\r\n\r\n var url = \"/Products/AddProduct\";\r\n await postRequest(url, addModel);\r\n }\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n toggleModal = () => {\r\n let newModalOpen = !this.state.modalOpen;\r\n this.setState({ modalOpen: newModalOpen });\r\n }\r\n\r\n getInUserInventory = async (isAuthenticated, merchantProductId) => {\r\n if (isAuthenticated) {\r\n let url = `/Products/InInventory?merchantProductId=${merchantProductId}`;\r\n let prod = await getRequest(url);\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.inUserInventory = prod;\r\n this.setState({ productInfo });\r\n }\r\n }\r\n\r\n getLikes = async (isAuthenticated, userMerchantProductId) => {\r\n return;\r\n let url = isAuthenticated ? `/Products/GetLikesAuthorized/?userMerchantProductId=${userMerchantProductId}` : `/Products/GetLikes/?userMerchantProductId=${userMerchantProductId}`;\r\n\r\n var likes = await getRequest(url);\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.likes = likes?.count;\r\n productInfo.likedByUser = likes?.likedByUser;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n getRating = async (isAuthenticated, userMerchantProductId) => {\r\n let url = isAuthenticated ? `/Products/GetRatingAuthorized/${userMerchantProductId}` : `/Products/GetRating/${userMerchantProductId}`;\r\n\r\n var rating = await getRequest(url);\r\n if (rating == null) {\r\n rating = await getRequest(`/Products/GetRating/${userMerchantProductId}`);\r\n }\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.userRating = rating?.userRating;\r\n productInfo.rating = rating?.average;\r\n productInfo.ratingCount = rating?.count;\r\n productInfo.displayRating = rating?.average;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n likeCommentAction = async (comment) => {\r\n let like = comment.likedByUser ? -1 : 1;\r\n\r\n var index = this.state.productInfo.comments.findIndex((i) => { return i.id === comment.id });\r\n\r\n comment.likes += like;\r\n comment.likedByUser = !comment.likedByUser;\r\n\r\n var comments = [...this.state.productInfo.comments];\r\n comments[index] = comment;\r\n\r\n this.setState({ productInfo: { ...this.state.productInfo, ...{ comments } } });\r\n\r\n const token = await authService.getAccessToken();\r\n await fetch(\"/Products/LikeComment\",\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}`, \"Content-Type\": \"application/json\" },\r\n method: \"POST\",\r\n body: JSON.stringify({ id: comment.id, likedByUser: !comment.likedByUser })\r\n });\r\n }\r\n\r\n followAction = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n let url = \"/api/Account/\"\r\n if (this.state.isFollowing) {\r\n url += \"Unfollow\"\r\n } else {\r\n url += \"Follow\"\r\n }\r\n url += \"?id=\" + this.state.productInfo.user.id;\r\n\r\n const response = await fetch(url,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n if (response.ok) {\r\n this.setState({ isFollowing: !this.state.isFollowing });\r\n }\r\n }\r\n\r\n getSavedByUser = async (userMerchantProductId) => {\r\n let url = `/Products/IsSaved/${userMerchantProductId}`;\r\n let savedByUser = await getRequest(url);\r\n\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.savedByUser = savedByUser;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n saveAction = async () => {\r\n let productInfo = { ...this.state.productInfo };\r\n\r\n productInfo.savedByUser = !productInfo.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.product) {\r\n this.props.match.params.product.savedByUser = productInfo.savedByUser;\r\n }\r\n\r\n this.setState({ productInfo: productInfo });\r\n\r\n const token = await authService.getAccessToken();\r\n\r\n let url = \"/Products/\"\r\n if (!productInfo.savedByUser) {\r\n url += \"Unsave\"\r\n } else {\r\n url += \"Save\"\r\n }\r\n url += \"?id=\" + this.state.productInfo.userMerchantProductId;\r\n\r\n const response = await fetch(url,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n }\r\n\r\n likeAction = async () => {\r\n var like = this.state.productInfo.likedByUser ? -1 : 1;\r\n\r\n var newLike = {\r\n likeCount: this.state.productInfo.likes + like,\r\n likedByUser: !this.state.productInfo.likedByUser\r\n }\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.product) {\r\n this.props.match.params.product.likedByUser = newLike.likedByUser;\r\n this.props.match.params.product.likes = newLike.likeCount;\r\n }\r\n\r\n this.state.productInfo.likes = newLike.likeCount;\r\n this.state.productInfo.likedByUser = newLike.likedByUser;\r\n\r\n this.setState({ productInfo: { ...this.state.productInfo } });\r\n\r\n const token = await authService.getAccessToken();\r\n const response = await fetch(\"/Products/Like?shareCode=\" + this.state.shareCode,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n method: \"POST\"\r\n });\r\n\r\n let toggle = await response.text();\r\n var like = parseInt(toggle);\r\n }\r\n\r\n starHover = () => {\r\n var productInfo = this.state.productInfo;\r\n productInfo.displayRating = productInfo.userRating || 0;\r\n\r\n this.setState({ productInfo: productInfo });\r\n }\r\n\r\n starHoverOut = () => {\r\n var productInfo = this.state.productInfo;\r\n productInfo.displayRating = productInfo.rating || 0;\r\n\r\n this.setState({ productInfo: productInfo });\r\n }\r\n\r\n starClick = async (nextValue, prevValue, name) => {\r\n var productInfo = this.state.productInfo;\r\n\r\n productInfo.displayRating = nextValue;\r\n productInfo.userRating = nextValue;\r\n\r\n this.setState({ productInfo })\r\n\r\n const token = await authService.getAccessToken();\r\n\r\n let url = \"/Products/Rate?id=\" + this.state.productInfo.userMerchantProductId + \"&rating=\" + nextValue\r\n\r\n const response = await fetch(url,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n if (response.ok) {\r\n var productRating = await response.json();\r\n\r\n productInfo.rating = productRating.average;\r\n productInfo.ratingCount = productRating.count;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n }\r\n\r\n handleCommentInput = (e) => {\r\n this.setState({ commentInput: e.target.value });\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let comment = {\r\n text: this.state.commentInput,\r\n likes: 0,\r\n likeByUser: false,\r\n createdOn: DateTime.now().toLocaleString(),\r\n user: this.props.loggedInUser\r\n }\r\n\r\n var comments = [...this.state.productInfo.comments];\r\n if (comments.length > 0) {\r\n comments[0].totalCount = comments[0].totalCount + 1;\r\n } else {\r\n comment.totalCount = 1;\r\n }\r\n\r\n comments = comments.concat(comment);\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.product) {\r\n this.props.match.params.product.comments = [...comments];\r\n }\r\n\r\n this.setState({ productInfo: { ...this.state.productInfo, ...{ comments } }, commentInput: \"\" });\r\n\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(\"/Products/PostComment?shareCode=\" + this.state.shareCode + \"&comment=\" + encodeURIComponent(comment.text),\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n method: \"POST\"\r\n });\r\n this.setState({ submittingComment: false });\r\n }\r\n\r\n renderModal() {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n loadPreviousComments = async (skip = this.state.productInfo.comments.length, take = 25) => {\r\n this.setState({ loadingComments: true });\r\n\r\n let url = this.state.loggedInUser ? '/Products/GetCommentsAuthorized?shareCode=' : '/Products/GetComments?shareCode=';\r\n const token = await authService.getAccessToken();\r\n const response = await fetch(url + this.state.shareCode + \"&skip=\" + skip + \"&take=\" + take, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n let data = await response.json();\r\n\r\n data = await jsonref.parse(data, { scope: window.location });\r\n\r\n let comments = [...this.state.productInfo.comments]\r\n comments = data.concat(comments);\r\n this.setState({ productInfo: { ...this.state.productInfo, ...{ comments } } });\r\n this.setState({ loadingComments: false });\r\n }\r\n\r\n renderLoadPreviousComments = () => {\r\n if (this.state.productInfo.comments.length > 0 && this.state.productInfo.comments.length < this.state.productInfo.comments[0].totalCount) {\r\n if (this.state.loadingComments) {\r\n return (\r\n
    \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n { e.preventDefault(); this.loadPreviousComments() }}>Load previous\r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n renderComments = () => {\r\n return this.state.productInfo.comments.map((comment, i) => {\r\n return \r\n })\r\n }\r\n\r\n loadUserDescriptions = async (userMerchantProductId, userId) => {\r\n let userDescriptions = await getRequest(`/Products/GetWithUserDescriptions?userMerchantProductId=${userMerchantProductId}&userId=${userId}`);\r\n this.setState({ userDescriptions });\r\n }\r\n\r\n loadLinkedPosts = async (pageNumber) => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch((this.state.loggedInUser ? \"/Products/GetLinkedPostsAuthorized\" : \"/Products/GetLinkedPosts\") + \"?userMerchantProductId=\" + this.state.productInfo.userMerchantProductId + \"&page=\" + pageNumber, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n let linkedPosts = await response.json();\r\n\r\n linkedPosts = await jsonref.parse(linkedPosts, { scope: window.location });\r\n\r\n if (linkedPosts.length > 0) {\r\n this.setState({ lastLinkedPostPage: Math.ceil(linkedPosts[0].totalLinkedPosts / 4) - 1, linkedPostPage: pageNumber });\r\n }\r\n\r\n this.setState({ productInfo: { ...this.state.productInfo, ...{ linkedPosts } } });\r\n\r\n this.setState({ loadingNextLinkedPosts: false });\r\n this.setState({ loadingPrevLinkedPosts: false });\r\n }\r\n\r\n prevUserDescriptionPage = async () => {\r\n let userDescriptionPage = this.state.userDescriptionPage;\r\n userDescriptionPage--;\r\n if (userDescriptionPage < 0) {\r\n userDescriptionPage = this.state.userDescriptions.length - 1;\r\n }\r\n let productInfo = this.state.productInfo;\r\n productInfo.userDescription = this.state.userDescriptions[userDescriptionPage].userDescription;\r\n\r\n let user = await this.getUser(this.state.userDescriptions[userDescriptionPage].userId);\r\n productInfo.user = user;\r\n\r\n this.setState({ productInfo, userDescriptionPage });\r\n }\r\n\r\n nextUserDescriptionPage = async () => {\r\n let userDescriptionPage = this.state.userDescriptionPage;\r\n userDescriptionPage++;\r\n if (userDescriptionPage > this.state.userDescriptions.length - 1) {\r\n userDescriptionPage = 0;\r\n }\r\n let productInfo = this.state.productInfo;\r\n productInfo.userDescription = this.state.userDescriptions[userDescriptionPage].userDescription;\r\n\r\n let user = await this.getUser(this.state.userDescriptions[userDescriptionPage].userId);\r\n productInfo.user = user;\r\n\r\n this.setState({ productInfo, userDescriptionPage });\r\n }\r\n\r\n getUser = async (userId) => {\r\n return await getRequest(`/api/Account/GetById?userId=${userId}`);\r\n }\r\n\r\n renderUserDescriptionPagination = () => {\r\n if (this.state.userDescriptions !== null && this.state.userDescriptions !== undefined && this.state.userDescriptions.length > 1) {\r\n return (\r\n
    \r\n {\r\n e.preventDefault();\r\n this.prevUserDescriptionPage();\r\n }}\r\n className=\"position-relative d-flex align-items-left\">\r\n
    \r\n Previous\r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n this.nextUserDescriptionPage();\r\n }}\r\n className=\"position-relative d-flex align-items-right\">\r\n
    \r\n Next\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n }\r\n\r\n renderLinkedPostsPreviousPage = () => {\r\n if (this.state.lastLinkedPostPage > 0) {\r\n return (\r\n {\r\n e.preventDefault();\r\n\r\n this.prevPage();\r\n }}\r\n className=\"left-arrow position-absolute d-flex justify-content-center align-items-center\"\r\n >\r\n );\r\n }\r\n return (
    );\r\n }\r\n\r\n prevPage = () => {\r\n this.setState({ loadingPrevLinkedPosts: true });\r\n\r\n if (this.state.linkedPostPage > 0) {\r\n this.loadLinkedPosts(this.state.linkedPostPage - 1);\r\n } else {\r\n this.loadLinkedPosts(this.state.lastLinkedPostPage);\r\n }\r\n }\r\n\r\n nextPage = () => {\r\n this.setState({ loadingNextLinkedPosts: true });\r\n\r\n if (this.state.linkedPostPage < this.state.lastLinkedPostPage) {\r\n this.loadLinkedPosts(this.state.linkedPostPage + 1)\r\n } else {\r\n this.loadLinkedPosts(0);\r\n }\r\n }\r\n\r\n renderLinkedPostsPageCount = () => {\r\n if (this.state.lastLinkedPostPage > 0) {\r\n return (\r\n {`${this.state.linkedPostPage + 1}/${this.state.lastLinkedPostPage + 1}`}\r\n );\r\n }\r\n }\r\n\r\n renderLinkedPostsNextPage = () => {\r\n if (this.state.lastLinkedPostPage > 0) {\r\n return (\r\n {\r\n e.preventDefault();\r\n\r\n this.nextPage();\r\n }}\r\n className=\"right-arrow position-absolute d-flex justify-content-center align-items-center\">\r\n\r\n \r\n );\r\n }\r\n return (
    );\r\n }\r\n\r\n renderLinkedPosts = () => {\r\n let linkedPosts = [];\r\n let count = 4;\r\n\r\n for (var i = 0; i < count; ++i) {\r\n if (i < this.state.productInfo.linkedPosts.length) {\r\n linkedPosts.push();\r\n }\r\n }\r\n\r\n return linkedPosts;\r\n }\r\n\r\n renderPostComment = () => {\r\n if (this.props.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n if (this.props.loggedInUser) {\r\n e.preventDefault();\r\n this.saveAction(shareCode);\r\n } else {\r\n this.props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\", left: [\"sm\", \"md\"].includes(this.props.deviceSize) && this.browse ? \"20px\" : \"\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.toggleModal(this.state.shareLink);\r\n }} style={{ cursor: \"pointer\", left: [\"sm\", \"md\"].includes(this.props.deviceSize) && this.browse ? \"50px\" : \"\" }}>\r\n \r\n );\r\n }\r\n\r\n renderThumbsUpOverlay = (product, browse = false) => {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n if (!(product.creatorCount) || product.creatorCount === 0) {\r\n return <>;\r\n }\r\n //return this.toggleCreatorsModal(productId)} style={{ top: this.props.isModal && this.props.isBrowse ? \"6px\" : this.props.isModal && this.props.deviceSize === \"xl\" ? \"11px\" : this.props.isModal ? \"6px\" : this.props.deviceSize === \"xl\" ? \"11px\" : \"6px\", left: \"83%\", width:\"50px\", cursor: \"pointer\" }}>\r\n if (this.state.showRecommendedFlag) {\r\n return (\r\n this.toggleCreatorsModal(productId)} style={{ marginBottom: this.browse || this.state.browse || this.props.isBrowse ? \"4px\" : \"5px\", width: !!(product.creatorCount) && product.creatorCount > 99 ? \"55px\" : \"50px\", cursor: \"pointer\", marginLeft: this.props.screenWidth < 576 ? \"\" : \"25px\", transform: \"translate(0px, 0px)\" }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n )\r\n }\r\n return <>;\r\n }\r\n\r\n toggleCreatorsModal = (productId) => {\r\n const followersFollowing = \"creators\";\r\n this.props.toggleFollowersFollowingModal(!!(this.props.loggedInUser) ? this.props.loggedInUser.id : -1, followersFollowing, productId);\r\n }\r\n\r\n displayAddToInventory = () => {\r\n\r\n if (!this.props.isBrowse && this.props.loggedInUser && this.props.loggedInUser.proStatusId === 1 && !(this.state.productInfo.approvedCreatorsOnly)) {\r\n if (this.state.productInfo?.inUserInventory === false) {\r\n let prompt = \"\";\r\n switch (this.props.deviceSize) {\r\n case \"sm\": break;\r\n case \"md\": { prompt = \"Add\"; break; }\r\n default: { prompt = \"Add To Inventory\"; break; }\r\n }\r\n return (\r\n
    \r\n {\r\n e.preventDefault();\r\n this.addProductToInventory();\r\n }\r\n }\r\n onTouchEnd={\r\n (e) => {\r\n e.preventDefault();\r\n this.addProductToInventory();\r\n }\r\n }>\r\n \r\n {/*{*/}\r\n {/* prompt */}\r\n {/* }*/}\r\n \r\n
    \r\n )\r\n }\r\n else if (this.state.displayAddedToInventoryPrompt === true || this.state.productInfo.inUserInventory === true) {\r\n let prompt = \"\";\r\n switch (this.props.deviceSize) {\r\n case \"sm\": break;\r\n case \"md\": { prompt = \"In Inventory\"; break; }\r\n default: { prompt = \"In Inventory\"; break; }\r\n }\r\n return (\r\n
    \r\n e.preventDefault()} style={{ pointerEvents: \"none\", paddingBottom: \"2px\", marginTop: \"-1px\", marginBottom: \"-1px\" }}>\r\n \r\n {/* {prompt}*/}\r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getPageTitle = () => {\r\n ;\r\n let shareCode = this.props.match.params.shareCode;\r\n\r\n return \"RockPorch - Product: \" + shareCode;\r\n }\r\n\r\n handleGoogleAnalytics4BuyButton = (browse = false) => {\r\n window.gtag('event', 'Buy_Now', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Buy Now`,\r\n value: browse ? \"Browse\" : \"Non-Browse\",\r\n });\r\n }\r\n\r\n productPageRedirectGoogleAnalytics4Tracking = () => {\r\n window.gtag('event', 'ProductPageRedirect', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Redirect',\r\n event_label: `Product Page Redirect`,\r\n });\r\n }\r\n\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n if (!this.state.redirectOccurred) {\r\n this.productPageRedirectGoogleAnalytics4Tracking();\r\n window.location.replace((this.props.loggedInUser ? \"/Products/BuyAuthorized\" : \"/Products/Buy\") + \"?shareCode=\" + this.state.shareCode + \"&referrer=\" + document.referrer + \"&browse=\" + this.browse + \"&noCommission=\" + this.noCommission); \r\n this.setState({ redirectOccurred: true });\r\n }\r\n const ogTitle = this.state.productInfo?.merchant || '';\r\n const ogDescription = this.state.productInfo?.name || this.state.productInfo?.merchant;\r\n const ogImage = this.state.productInfo?.logoUrl || this.state.productInfo?.imageUrl || '';\r\n return (\r\n <>\r\n <>\r\n \r\n {this.getPageTitle()}:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (this.state.loading) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n {this.getPageTitle()}:\r\n \r\n \r\n )\r\n }\r\n\r\n let { name, manufacturer, imageUrl, price, ratingCount, description, likes } = this.state.productInfo;\r\n let { deviceSize, isModal } = this.props;\r\n\r\n if (this.state.showMessageDetails) {\r\n return \r\n }\r\n return (\r\n
    \r\n\r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}:\r\n \r\n }\r\n\r\n {this.renderModal()}\r\n {this.renderBookmarkOverlay()}\r\n {this.renderShareOverlay()}\r\n {this.displayAddToInventory()}\r\n {(this.browse || this.props.isBrowse) && this.state.products?.length > 0 ?\r\n
    \r\n \r\n
    \r\n :\r\n <>\r\n\r\n \r\n \r\n }\r\n {\r\n this.props.isModal === true ? (\r\n
    \r\n {\r\n e.preventDefault();\r\n this.props.expandDialog();\r\n this.setState({ hidePageExtras: !this.state.hidePageExtras });\r\n\r\n }}\r\n className=\"mx-0\"\r\n style={{ color: \"#e55934\" }}\r\n >\r\n \r\n
    \r\n ) : \r\n }\r\n\r\n {\r\n this.state.productInfo.userDescription?.length > 0 && this.state.hidePageExtras === false ? (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n this.prevUserDescriptionPage()}\r\n onSwipedRight={() => this.nextUserDescriptionPage()}\r\n preventDefaultTouchmoveEvent={true}\r\n trackMouse={true}>\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Product Review\r\n
    \r\n
    \r\n
    \r\n

    \r\n {this.state.productInfo.userDescription}\r\n

    \r\n {this.renderUserDescriptionPagination()}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n ) : \r\n }\r\n\r\n\r\n\r\n {\r\n this.state.hidePageExtras === false ? (\r\n
    \r\n {this.state.productInfo?.linkedPosts?.length > 0 ? (<>
    \r\n
    Related posts
    \r\n
    \r\n {this.renderLinkedPostsPageCount()}\r\n {this.renderLinkedPostsPreviousPage()}\r\n {this.renderLinkedPostsNextPage()}\r\n this.prevPage()}\r\n onSwipedRight={() => this.nextPage()}\r\n preventDefaultTouchmoveEvent={true}\r\n trackMouse={true}>\r\n {this.renderLinkedPosts()}\r\n \r\n
    ) :
    }\r\n
    \r\n
    \r\n
    \r\n

    \r\n\r\n {\r\n this.state.productInfo?.comments?.length === 0 ? \"No comments\" :\r\n this.state.productInfo?.comments?.length === 1 ? \"1 comment\" :\r\n this.state.productInfo?.comments?.length + \" of \" + this.state.productInfo.comments[0].totalCount + \" comments\"\r\n }\r\n

    \r\n {this.renderLoadPreviousComments()}\r\n
    \r\n {this.renderComments()}\r\n
    \r\n
    \r\n {this.renderPostComment()}\r\n
    \r\n ) : null\r\n }\r\n\r\n\r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { interactionState: storeState.interactionReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal, closeAllModals })(ProductPage);","import React from \"react\";\r\nimport Modal from \"../../components/Modal\";\r\nimport AddProductForm from \"components/AddProduct/AddProductForm\";\r\nimport LookupProductUrlForm from \"components/AddProduct/LookupProductUrlForm\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleAddProductModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport ProductPage from \"views/Product/ProductPage\";\r\nimport { withRouter } from \"react-router\";\r\n\r\nclass AddProductModal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showModal: false,\r\n stage: 1,\r\n productUrl: \"\",\r\n productDetails: {\r\n name: \"\"\r\n },\r\n isLoading: false,\r\n productShareCode: \"\",\r\n success: false,\r\n productNotFound: false,\r\n productNotFoundMessage:\"\",\r\n addedProductDetails: {},\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n\r\n async componentDidMount() {\r\n \r\n if (this.props.isModal === false) {\r\n this.props.setShowTopNav(false);\r\n if(window.location.search.length>0)\r\n //if (this.props.match.params?.productUrl)\r\n {\r\n let productUrl = window.location.search.split(\"=\")[1];\r\n //let decodedUrl = decodeURIComponent(this.props.match.params.productUrl);\r\n let decodedUrl = decodeURIComponent(productUrl);\r\n await this.setState({ productUrl: decodedUrl });\r\n this.advanceStage();\r\n }\r\n //this.setState({ productUrl: document.referrer + document. });\r\n }\r\n } \r\n \r\n\r\n advanceStage = async () => {\r\n let newStage = this.state.stage + 1;\r\n let data = await this.fetchProductInformation(this.state.productUrl);\r\n if (this.state.isLoading && (data != null || data != undefined)) {\r\n this.setState({ productDetails: data, stage: newStage, isLoading: false, productNotFound:false })\r\n } \r\n }\r\n\r\n closeWindow = () => {\r\n window.close()\r\n //window.top.postMessage(\"productAdded\", \"*\");\r\n }\r\n\r\n\r\n finishedCreating = async (result) => {\r\n \r\n if (result != undefined || result != null) {\r\n let fullProduct = await getRequest(`/Products/GetProductAuthorized?shareCode=${result.shareCode}`);\r\n fullProduct.manufacturer = this.state.productDetails?.manufacturer;\r\n\r\n this.setState({ productShareCode: result.shareCode, success: true, addedProductDetails: fullProduct, productUrl: \"\", stage: this.props.isModal === true ? 1 : 2 });\r\n \r\n if (this.props.isModal === true) {\r\n this.toggleModal();\r\n this.props.history.push('/Account/Products')\r\n // this.props.toggleProductPageModal(fullProduct, this.props.loggedInUser);\r\n }\r\n\r\n // use local storage if we are executing from another tab\r\n if ('localStorage' in window && !this.props?.isModal) {\r\n localStorage.setItem('productAdded', new Date);\r\n } else {\r\n let event = new Event(\"_productAddedEvent\");\r\n document.dispatchEvent(event);\r\n }\r\n }\r\n }\r\n\r\n fetchProductInformation = async (url) => {\r\n let localUrl = url;\r\n this.setState({ isLoading: true });\r\n let encoded = encodeURIComponent(url.trim());\r\n let data = await getRequest(`/Products/GetProductByUrl?url=${encoded}`, true);\r\n // this request was cancelled so we can ignore\r\n if (localUrl !== this.state.productUrl) {\r\n return null;\r\n }\r\n if (this.state.isLoading && data.errorMessage) {\r\n this.setState({ productNotFound: true, productNotFoundMessage: data.errorMessage === \"no message\" ? \"\" : data.errorMessage, isLoading: false });\r\n return null;\r\n }\r\n return data;\r\n }\r\n\r\n inputUrl = (e) => {\r\n this.setState({ productUrl: e.target.value })\r\n }\r\n\r\n onKeypress = (e) => {\r\n if (e.key === 'Enter') this.advanceStage();\r\n }\r\n\r\n toggleModal = () => {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n this.setState({ stage: 1, productUrl: \"\" });\r\n this.props.toggleAddProductModal();\r\n this.setState({ productNotFound: false, isLoading: false })\r\n //let newState = !this.state.showModal;\r\n //this.setState({ showModal: newState, stage: 1 });\r\n }\r\n \r\n\r\n renderForm = () => {\r\n if (this.state.stage === 1) {\r\n return (\r\n \r\n )\r\n } else if (this.state.stage === 2) {\r\n if (this.props.isModal === true) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\"; \r\n }\r\n \r\n return (\r\n \r\n )\r\n }\r\n /*else if (this.state.stage === 3) {\r\n \r\n\r\n return \r\n }*/\r\n }\r\n\r\n\r\n render() {\r\n if (this.props?.isModal === false) {\r\n return (\r\n
    \r\n {\r\n this.state.finishedCreating === true ?

    : }\r\n {this.renderForm()}\r\n
    \r\n )\r\n } else {\r\n if (this.props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n\r\n return (\r\n
    \r\n {/**/}\r\n 1 ? \"product\" : \"\"}\r\n showHeader={false}\r\n modalDialogCustomClass={this.state.stage === 2 ? \"modal-dialog-lg modal-dialog-md\" : \"\"}\r\n modalBodyCustomClass={this.state.stage === 2 ? \"modal-body pt-0 px-0 mt-3 mt-md-0\" : \"\"}\r\n >\r\n {this.renderForm()}\r\n \r\n\r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { showModal: storeState.modalReducer.showAddProductModal }\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, { toggleAddProductModal, toggleProductPageModal })(AddProductModal));","import React from \"react\";\r\nimport { MentionsInput, Mention } from \"react-mentions\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{\r\n * className:string,\r\n * value:any,\r\n * onChange:Function,\r\n * style:object?, \r\n * allowSuggestionsAboveCursor:boolean?,\r\n * data:Function,\r\n * placeholder:string?\r\n * }} props\r\n */\r\nconst MentionsInputTextArea = (props) => {\r\n return (\r\n \r\n `@${display}`}\r\n markup=\"#!^(__id__)%~@(((__display__)))\"\r\n renderSuggestion={(entry, search, highlightedDisplay, index, focused) => {\r\n return @{entry.display}
    {entry.name}
    \r\n }}\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nexport default MentionsInputTextArea;","import axios from 'axios';\r\n\r\nconst instance = axios.create();\r\n\r\nconst setDelay = (callback) => {\r\n setTimeout(() => {\r\n callback();\r\n }, 800);\r\n}\r\n\r\nconst clientRequest = (method, url, data, delay = true, headers) => new Promise((resolve, reject) => {\r\n (() => {\r\n if (method === 'get') {\r\n return instance.request({\r\n url, method, params: data, headers,\r\n });\r\n }\r\n return instance.request({\r\n url, method, data, headers: {},\r\n });\r\n })()\r\n .then((res) => {\r\n if (delay) {\r\n setDelay(() => {\r\n resolve(res.data);\r\n });\r\n } else {\r\n resolve(res.data);\r\n }\r\n })\r\n .catch((err) => {\r\n const { data: error } = err.response || {};\r\n reject(error);\r\n });\r\n});\r\n\r\nexport const ClientRequest = {\r\n get: (endpoint, data, delay, headers) => clientRequest('get', endpoint, data, delay, headers),\r\n post: (endpoint, data, delay) => clientRequest('post', endpoint, data, delay),\r\n put: (endpoint, data, delay) => clientRequest('put', endpoint, data, delay),\r\n del: (endpoint, data, delay) => clientRequest('delete', endpoint, data, delay),\r\n};","import { ClientRequest } from \"../../api-social/clientRequest\";\r\n\r\nconst ENABLE_AUDIT_MESSAGES = false;\r\n\r\nfunction getScript(src) {\r\n return new Promise((resolve) => {\r\n if (window.instgrm) {\r\n resolve(window.instgrm);\r\n }\r\n const id = 'instagram-embeds-jssdk';\r\n const fjs = document.querySelectorAll('script')[0];\r\n if (document.getElementById(id)) {\r\n return;\r\n }\r\n const js = document.createElement('script');\r\n js.id = id;\r\n js.src = src;\r\n js.addEventListener('load', () => {\r\n resolve(window.instgrm);\r\n });\r\n fjs.parentNode.insertBefore(js, fjs);\r\n });\r\n}\r\n\r\nasync function loadEmbeds(val, headers) {\r\n if (!!(val?.data)) {\r\n let tasks = [];\r\n\r\n for (var i = 0; i < val.data.length; i++) {\r\n let postItem = val.data[i];\r\n if (!(postItem?.embed)) {\r\n let args = {\r\n url: postItem.url,\r\n maxWidth: 640\r\n };\r\n let task = ClientRequest.get('/api/instagram/embed', args, false, headers)\r\n .then(\r\n (val) => {\r\n if (!!(val.html)) {\r\n postItem.embed = val.html;\r\n }\r\n },\r\n (err) => { console.error(err); }\r\n );\r\n tasks.push(task);\r\n }\r\n }\r\n while (tasks.length) {\r\n let task = tasks.pop();\r\n await task;\r\n }\r\n }\r\n}\r\n\r\nclass InstagramAuthApi {\r\n constructor(appId) {\r\n this._appId = appId;\r\n this._authorization = undefined;\r\n this._authHeader = null;\r\n\r\n this.authorize = this.authorize.bind(this);\r\n this.doAuthorize = this.doAuthorize.bind(this);\r\n this.doInitAsync = this.doInitAsync.bind(this);\r\n }\r\n get authorization() {\r\n return this._authorization;\r\n }\r\n set authorization(value) {\r\n if (this._authorization === value)\r\n return;\r\n\r\n this._authorization = value;\r\n this.sessionAuthorization = value;\r\n }\r\n get isAuthorized() {\r\n return !!(this.authorization?.access_token);\r\n }\r\n\r\n get sessionAuthorization() {\r\n let retVal = undefined;\r\n try {\r\n let data = localStorage.getItem('instagram.authorization');\r\n if (data === 'null')\r\n data = null;\r\n retVal = !!data ? JSON.parse(data) : null;\r\n } catch (e) { }\r\n\r\n return retVal;\r\n }\r\n\r\n set sessionAuthorization(value) {\r\n try {\r\n let data = !!value ? JSON.stringify(value) : null;\r\n\r\n if (data != null) {\r\n localStorage.setItem('instagram.authorization', data);\r\n } else {\r\n localStorage.removeItem('instagram.authorization');\r\n }\r\n } catch (e) { }\r\n }\r\n\r\n async doAuthorize(resolve, reject) {\r\n await this.doGetAuthorizationTicket()\r\n .then(\r\n async (authorization) => {\r\n if (!!authorization) {\r\n let authorizationST = await ClientRequest.get(`/api/instagram/accesstoken/?authorizationCode=${authorization.code}`, null, false, this.authHeader);\r\n resolve(authorizationST);\r\n }\r\n resolve(undefined);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n reject(err);\r\n }\r\n );\r\n }\r\n doGetAuthorizationTicket() {\r\n return new Promise((resolve, reject) => {\r\n let url = `//api.instagram.com/oauth/authorize/?client_id=${this._appId}&redirect_uri=${window.location.origin}/instagram/auth/&scope=user_profile,user_media&response_type=code`;\r\n let s = window.screen, ww = s.width, wh = s.height, w = 700, h = 500, l = (ww - w) / 2, t = (wh - h) / 2;\r\n let features = `width=${w},height=${h},left=${l},top=${t}`;\r\n\r\n const handleLoad = async () => {\r\n if (window.location.hash.length === 0)\r\n popup.open(url, '_self');\r\n\r\n var interval = setInterval(async () => {\r\n try {\r\n if (!popup || popup.closed) {\r\n clearInterval(interval);\r\n resolve(undefined);\r\n } else if (popup.location.hash?.length) {\r\n clearInterval(interval);\r\n let qs = popup.location.search;\r\n popup.close();\r\n\r\n if (qs.startsWith('?')) {\r\n qs = qs.substring(1);\r\n }\r\n let e = qs.split('&');\r\n let authResponse = { authorization: {} };\r\n let authorization = authResponse.authorization;\r\n\r\n for (let i = 0; i < e.length; i++) {\r\n let nvp = e[i].split('=');\r\n authorization[nvp[0]] = nvp[1];\r\n }\r\n let code = authorization.code;\r\n if (!code) {\r\n reject(authResponse.authorization);\r\n } else {\r\n resolve(authorization);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n if (!(err.code === 18 && err.message.includes('Blocked a frame with origin'))) {\r\n if (!!popup || popup.closed) {\r\n clearInterval(interval);\r\n popup.close();\r\n }\r\n _authApi.authorization = null;\r\n reject(err);\r\n }\r\n }\r\n }, 100);\r\n };\r\n var popup = window.open(`${window.location.origin}/instagram/auth`, '', features);\r\n popup.onload = (handleLoad);\r\n });\r\n }\r\n async doInitAsync(resolve, headers) {\r\n this._authHeader = headers;\r\n\r\n this.authorization = this.sessionAuthorization;\r\n if (!(this.authorization)) {\r\n let instagramSession = await ClientRequest.get('/api/instagram/session/', null, false, this._authHeader);\r\n if (!(instagramSession?.code)) {\r\n if (!!(instagramSession['$id'])) {\r\n delete instagramSession['$id'];\r\n }\r\n this.authorization = instagramSession;\r\n }\r\n }\r\n resolve(this);\r\n }\r\n\r\n authorize() {\r\n if (this.isAuthorized) {\r\n return new Promise((resolve) => {\r\n resolve(this.authorization);\r\n })\r\n }\r\n\r\n return new Promise(this.doAuthorize);\r\n }\r\n init(headers) {\r\n const handleResolve = async (resolve) => {\r\n await this.doInitAsync(resolve, headers);\r\n };\r\n return new Promise(handleResolve);\r\n }\r\n logout() {\r\n localStorage.removeItem(\"instagram.authorization\");\r\n return new Promise((resolve) => {\r\n window.setTimeout(() => {\r\n resolve(true);\r\n }, 1000);\r\n window.open('https://instagram.com/accounts/logout/');\r\n });\r\n }\r\n}\r\n\r\nclass InstagramClientApi {\r\n constructor(accessToken) {\r\n this._accessToken = accessToken;\r\n }\r\n setAccessToken(accessToken) {\r\n this._accessToken = accessToken;\r\n }\r\n\r\n getMe() {\r\n const ALL_USER_FIELDS = 'account_type,id,media_count,username'; \r\n return new Promise(async (resolve, reject) => {\r\n const endpoint = '//graph.instagram.com/me/';\r\n\r\n let criteria = {\r\n access_token: this._accessToken,\r\n fields: ALL_USER_FIELDS\r\n };\r\n\r\n const handleResolved = (response) => {\r\n if (ENABLE_AUDIT_MESSAGES) console.log(new Date(), '<--', endpoint, response);\r\n resolve(response);\r\n };\r\n\r\n const handleRejected = (err) => {\r\n if (ENABLE_AUDIT_MESSAGES) console.error(new Date(), '<--', endpoint, err);\r\n reject(err)\r\n };\r\n\r\n let request = ClientRequest.get(endpoint, criteria).then(handleResolved, handleRejected);\r\n if (ENABLE_AUDIT_MESSAGES) console.log(new Date(), '-->', endpoint, criteria);\r\n await request;\r\n });\r\n }\r\n\r\n getUserMedia(accessToken, userId, after = null) {\r\n const ALL_MEDIA_FIELDS = 'caption,id,media_type,media_url,permalink,thumbnail_url,timestamp,children{id,media_type,media_url,permalink,thumbnail_url,timestamp}';\r\n return new Promise(async (resolve, reject) => {\r\n let endpoint = `//graph.instagram.com/${userId}/media/`;\r\n let criteria = {\r\n access_token: this._accessToken,\r\n fields: ALL_MEDIA_FIELDS,\r\n limit:25\r\n };\r\n if (!!after) {\r\n criteria.after = after\r\n }\r\n const handleResolved = async (response) => {\r\n if (ENABLE_AUDIT_MESSAGES) console.log(new Date(), '<--', endpoint, response);\r\n resolve(response);\r\n };\r\n const handleRejected = (err) => {\r\n if (ENABLE_AUDIT_MESSAGES) console.error(new Date(), '<--', endpoint, err);\r\n reject(err);\r\n };\r\n\r\n let request = ClientRequest.get(endpoint, criteria).then(handleResolved, handleRejected);\r\n if (ENABLE_AUDIT_MESSAGES) console.log(new Date(), '-->', endpoint, criteria);\r\n await request;\r\n });\r\n }\r\n}\r\n\r\nvar _authApi = new InstagramAuthApi('');\r\nvar _clientApi = new InstagramClientApi(null);\r\nvar _embedApi = undefined;\r\n\r\n//getScript('//platform.instagram.com/en_US/embeds.js').then((lib) => _embedApi = lib);\r\n\r\nlet _clientHandle = undefined;\r\n\r\nclass InstagramClient {\r\n constructor() {\r\n this._headers = undefined;\r\n _authApi = null;\r\n _clientApi = null;\r\n\r\n this.init = this.init.bind(this);\r\n this.login = this.login.bind(this);\r\n this.logout = this.logout.bind(this);\r\n this.getChannelsFor = this.getChannelsFor.bind(this);\r\n this.getPostsFor = this.getPostsFor.bind(this);\r\n this.getUserProfile = this.getUserProfile.bind(this);\r\n }\r\n\r\n get clientApi() {\r\n if (!(_clientApi)) {\r\n if (this.isAuthorized) {\r\n _clientApi = new InstagramClientApi(this.authorization.access_token);\r\n }\r\n }\r\n return _clientApi;\r\n }\r\n set clientApi(value) {\r\n _clientApi = null;\r\n }\r\n get authorization() {\r\n return _authApi?.authorization;\r\n }\r\n set authorization(value) {\r\n if (this.isAuthorized) {\r\n _authApi.authorization = null;\r\n }\r\n }\r\n get isAuthorized() {\r\n return !!(_authApi?.isAuthorized);\r\n }\r\n get isInitialized() {\r\n return !!_authApi;\r\n }\r\n\r\n getChannelsFor(userProfile) {\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = this.authorization?.access_token;\r\n let hasAccessToken = !!access_token;\r\n\r\n if (!hasAccessToken) {\r\n reject('User is not authorized');\r\n } else if (!(userProfile?.id)) {\r\n reject('userProfile parameter required')\r\n } else {\r\n resolve({\r\n data: [{ id: userProfile.id, name: 'default channel' }]\r\n });\r\n }\r\n });\r\n }\r\n\r\n getPostsFor(channel) {\r\n let headers = this._headers;\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = this.authorization?.access_token;\r\n let hasAccessToken = !!access_token;\r\n\r\n if (!hasAccessToken) {\r\n reject('User is not authorized');\r\n } else if (!(channel?.id)) {\r\n reject('channel parameter required')\r\n } else {\r\n\r\n let promise = undefined;\r\n\r\n if (!!(channel.posts?.paging?.cursors.after)) {\r\n promise = this.clientApi.getUserMedia(access_token, channel.id, channel.posts.paging.cursors.after);\r\n } else {\r\n promise = this.clientApi.getUserMedia(access_token, channel.id);\r\n }\r\n\r\n promise.then(\r\n async (val) => {\r\n const targetModelFrom = (sourceModel) => {\r\n\r\n let targetModel = {\r\n content: sourceModel.caption,\r\n embed: null,\r\n id: sourceModel.id,\r\n link: sourceModel.permalink,\r\n media: [],\r\n platformName: 'instagram',\r\n publishedOn: sourceModel.timestamp,\r\n raw: { ...sourceModel },\r\n title: null\r\n };\r\n if (!!(sourceModel?.children?.data)) {\r\n for (let i = 0; i < sourceModel.children.data.length; i++) {\r\n let sourceMediaModel = sourceModel.children.data[i];\r\n let targetMediaModel = {\r\n content: null,\r\n children: [],\r\n duration: null,\r\n height: null,\r\n imageLink: null,\r\n isExternalReference: true,\r\n thumbnailLink: null,\r\n videoLink: null,\r\n width: null\r\n };\r\n if (sourceMediaModel.media_type === 'IMAGE') {\r\n targetMediaModel.imageLink = sourceMediaModel.media_url;\r\n } else if (sourceMediaModel.media_type === 'VIDEO') {\r\n targetMediaModel.videoLink = sourceMediaModel.media_url;\r\n }\r\n if (!!(sourceMediaModel?.thumbnail_url)) {\r\n targetMediaModel.thumbnailLink = sourceMediaModel.thumbnail_url;\r\n }\r\n targetModel.media.push(targetMediaModel);\r\n }\r\n } else if (!!(sourceModel?.media_type)) {\r\n let targetMediaModel = {\r\n content: null,\r\n children: [],\r\n duration: null,\r\n height: null,\r\n imageLink: sourceModel.media_type === 'IMAGE' ? sourceModel?.media_url : null,\r\n isExternalReference: true,\r\n thumbnailLink: null,\r\n videoLink: sourceModel.media_type === 'VIDEO' ? sourceModel?.media_url : null,\r\n width: null\r\n };\r\n\r\n if (sourceModel.media_type === 'VIDEO') {\r\n let childModel = {\r\n content: null,\r\n children: [],\r\n duration: null,\r\n height: null,\r\n imageLink: null,\r\n isExternalReference: true,\r\n thumbnailLink: sourceModel.thumbnail_url,\r\n videoLink: null,\r\n width: null\r\n };\r\n targetMediaModel.children.push(childModel);\r\n }\r\n targetModel.media.push(targetMediaModel);\r\n }\r\n return targetModel;\r\n };\r\n\r\n let retVal = { data: [] };\r\n for (let i = 0; i < val.data.length; i++) {\r\n let sourceModel = val.data[i];\r\n let targetModel = targetModelFrom(sourceModel);\r\n retVal.data.push(targetModel);\r\n }\r\n\r\n if (retVal.data.length == 0) {\r\n delete retVal.paging;\r\n } else {\r\n retVal.paging = val.paging;\r\n }\r\n \r\n resolve(retVal);\r\n },\r\n (err) => {\r\n this.authorization = null;\r\n reject(err)\r\n }\r\n );\r\n\r\n await promise;\r\n }\r\n });\r\n }\r\n\r\n getUserProfile() {\r\n let authorization = _authApi.authorization;\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = authorization?.access_token;\r\n let hasAccessToken = !!access_token;\r\n\r\n if (!hasAccessToken) {\r\n reject('User is not authorized');\r\n } else {\r\n await this.clientApi.getMe()\r\n .then(\r\n (val) => {\r\n val.name = val.username;\r\n delete val.username;\r\n resolve(val);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n reject(err);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n init(appId, headers) {\r\n let candidate = { api: this };\r\n let isInitializing = false;\r\n if (_clientHandle === undefined) {\r\n _clientHandle = candidate;\r\n isInitializing = true;\r\n }\r\n let retVal = _clientHandle;\r\n\r\n this._headers = headers;\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n if (this.isInitialized) {\r\n resolve(retVal);\r\n } else {\r\n if (!isInitializing) {\r\n if (ENABLE_AUDIT_MESSAGES) console.log('INSTAGRAM RE-INITIALIZE WAS BLOCKED')\r\n setTimeout(() => {\r\n resolve(retVal);\r\n }, 2000);\r\n } else {\r\n let authApi = new InstagramAuthApi(appId);\r\n await authApi.init(headers)\r\n .then(\r\n async (val) => {\r\n _authApi = val;\r\n if (this.isAuthorized) {\r\n retVal.authorization = _authApi.authorization;\r\n await this.getUserProfile()\r\n .then(\r\n (val) => {\r\n retVal.userProfile = val;\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n retVal.authorization = null;\r\n }\r\n );\r\n }\r\n resolve(retVal);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n reject(err.error);\r\n }\r\n );\r\n }\r\n }\r\n } catch (ex) {\r\n _authApi.authorization = null;\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n login() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n await _authApi.authorize()\r\n .then(\r\n (val) => {\r\n if (!!val) {\r\n _authApi.authorization = val;\r\n _clientApi = new InstagramClientApi(val.access_token);\r\n }\r\n\r\n resolve(val);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n console.error(err);\r\n reject('User was not authorized');\r\n }\r\n );\r\n }\r\n catch (ex) {\r\n _authApi.authorization = null;\r\n reject(ex);\r\n }\r\n });\r\n };\r\n\r\n logout() {\r\n return new Promise(async (resolve, reject) => {\r\n if (!(this.isAuthorized)) {\r\n reject('user may remain authorized according to instagram')\r\n }\r\n if (await _authApi.logout()) {\r\n this.authorization = null;\r\n this.clientApi = null;\r\n resolve(true);\r\n }\r\n });\r\n };\r\n\r\n processEmbeds(elements, headers) {\r\n const doEmbed = async () => {\r\n let tasks = [];\r\n for (let i = 0; i < elements.length; i++) {\r\n let element = elements[i];\r\n let args = {\r\n url: element.getAttribute('data-href')\r\n };\r\n if (!!element.getAttribute('data-width')) {\r\n args.maxWidth = element.getAttribute('data-width');\r\n }\r\n let task = ClientRequest.get('/api/instagram/embed', args, false, headers)\r\n .then(\r\n (val) => {\r\n if (!!(val.html)) {\r\n element.innerHTML = val.html\r\n }\r\n },\r\n (err) => { console.error(err); }\r\n );\r\n tasks.push(task);\r\n }\r\n while (tasks.length) {\r\n let task = tasks.pop();\r\n await task;\r\n }\r\n window.instgrm.Embeds.process();\r\n }\r\n doEmbed();\r\n }\r\n}\r\n\r\nconst instagramClient = window.instagramClient || new InstagramClient();\r\nif (!window.instagramClient) {\r\n window.instagramClient = instagramClient;\r\n}\r\n\r\nexport default instagramClient;\r\n","import { ClientRequest } from \"../../api-social/clientRequest\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\"\r\n\r\nexport class TikTokAuthApi {\r\n constructor(appId) {\r\n this._appId = appId;\r\n this._authorization = undefined;\r\n this._authHeader = null;\r\n\r\n this.authorize = this.authorize.bind(this);\r\n this.doAuthorize = this.doAuthorize.bind(this);\r\n }\r\n set appId(value) {\r\n this._appId = value;\r\n }\r\n\r\n get authorization() {\r\n return this._authorization;\r\n }\r\n set authorization(value) {\r\n if (this._authorization === value)\r\n return;\r\n if (!(value)) {\r\n this._authorization = undefined;\r\n return;\r\n }\r\n this._authorization = value;\r\n this.sessionAuthorization = value;\r\n }\r\n get isAuthorized() {\r\n return !!(this.authorization?.access_token);\r\n }\r\n\r\n uuidv4() {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n };\r\n\r\n async doAuthorize() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const authorization = await this.doGetAuthorizationTicket();\r\n let authorizationST = -1;\r\n if (authorization !== -1) {\r\n authorizationST = await ClientRequest.get(`/api/tiktok/accesstokenV2/?authorizationCode=${decodeURI(authorization)}`, null, false, this.authHeader);\r\n }\r\n resolve(authorizationST);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n });\r\n }\r\n\r\n\r\n doGetAuthorizationTicket = async () => {\r\n const redirect_uri = [\"rockpor\", \"evolvedoutdoorsprodweb-staging\"].some(substring => window.location.host.includes(substring)) ? window.location.host : \"dev.rockporch.com\";\r\n return new Promise((resolve, reject) => {\r\n let url = `//www.tiktok.com/v2/auth/authorize/?client_key=${this._appId}&response_type=code&scope=user.info.basic,video.list&redirect_uri=https://${redirect_uri}/tiktok/auth/`;\r\n let s = window.screen, ww = s.width, wh = s.height, w = 700, h = 500, l = (ww - w) / 2, t = (wh - h) / 2;\r\n let features = `width=${w},height=${h},left=${l},top=${t}`;\r\n\r\n const handleLoad = async () => {\r\n if (window.location.search.length === 0)\r\n popup.open(url, '_self');\r\n var interval = setInterval(async () => {\r\n try {\r\n if (!popup || popup.closed) {\r\n clearInterval(interval);\r\n // reject('Authorization window closed by user');\r\n resolve(-1);\r\n } else if (popup.location.search?.length) {\r\n clearInterval(interval);\r\n let qs = popup.location.search;\r\n\r\n popup.close();\r\n\r\n let startIndex = qs.indexOf(\"code=\") + \"code=\".length;\r\n let endIndex = qs.indexOf(\"&\");\r\n\r\n let authorization = qs.slice(startIndex, endIndex);\r\n if (!authorization) {\r\n resolve(-1);\r\n } else {\r\n resolve(authorization);\r\n }\r\n }\r\n }\r\n catch (err) {\r\n if (!(err.code === 18 && err.message.includes('Blocked a frame with origin'))) {\r\n if (!!popup || popup.closed) {\r\n clearInterval(interval);\r\n popup.close();\r\n }\r\n this._authApi.authorization = null;\r\n reject(err);\r\n }\r\n }\r\n }, 100);\r\n };\r\n var popup = window.open(`${window.location.origin}/TikTok/auth`, '', features);\r\n popup.onload = (handleLoad);\r\n });\r\n }\r\n\r\n authorize() {\r\n if (this.isAuthorized) {\r\n return new Promise((resolve) => {\r\n resolve(this.authorization);\r\n })\r\n }\r\n\r\n return new Promise(async (resolve) => {\r\n const auth = await this.doAuthorize();\r\n resolve(auth == -1 ? undefined : auth);\r\n })\r\n }\r\n\r\n init(headers) {\r\n const handleResolve = async (resolve) => {\r\n await this.doInitAsync(resolve, headers);\r\n };\r\n return new Promise(handleResolve);\r\n }\r\n\r\n async doInitAsync(resolve, headers) {\r\n this._authHeader = headers;\r\n resolve(this);\r\n }\r\n\r\n logout(accessToken) {\r\n return new Promise(async (resolve, reject) => {\r\n let logout = await ClientRequest.get(`/api/tiktok/logoutV2/?access_token=${accessToken}`, null, false, this.authHeader);\r\n resolve(logout);\r\n\r\n });\r\n }\r\n}\r\n\r\nexport class TikTokClientApi {\r\n constructor(accessToken) {\r\n this._accessToken = accessToken;\r\n }\r\n setAccessToken(accessToken) {\r\n this._accessToken = accessToken;\r\n }\r\n\r\n getMe() {\r\n const ALL_USER_FIELDS = [\"open_id\", \"union_id\", \"avatar_url\", \"display_name\", \"bio_description\"];\r\n const url = 'https://open.tiktokapis.com/v2/user/info/?fields=' + ALL_USER_FIELDS.join(',');\r\n return new Promise(async (resolve, reject) => {\r\n const handleResolved = (response) => {\r\n resolve(response);\r\n };\r\n const handleRejected = (err) => {\r\n reject(err)\r\n };\r\n\r\n let request = await ClientRequest.get(url, null, false, {Authorization: 'Bearer ' + this._accessToken}).then(handleResolved, handleRejected);\r\n\r\n await request;\r\n });\r\n }\r\n\r\n getUserMedia(accessToken, after = null) {\r\n const ALL_MEDIA_FIELDS = [\"id\", \"create_time\", \"cover_image_url\", \"share_url\", \"video_description\", \"duration\", \"height\", \"width\", \"embed_html\", \"embed_link\", \"title\", \"like_count\", \"comment_count\", \"share_count\", \"view_count\"];\r\n return new Promise(async (resolve, reject) => {\r\n let endpoint = 'https://open.tiktokapis.com/v2/video/list/?fields=' + ALL_MEDIA_FIELDS.join(',');\r\n let criteria = {\r\n max_count: 20\r\n };\r\n\r\n if (after != null) {\r\n criteria.cursor = after\r\n }\r\n\r\n const handleResolved = async (response) => {\r\n resolve(response);\r\n };\r\n const handleRejected = (err) => {\r\n reject(err);\r\n };\r\n await postRequest(endpoint, criteria, \"application/json\", true, accessToken).then(handleResolved, handleRejected);\r\n });\r\n }\r\n}\r\n\r\nvar _authApi = new TikTokAuthApi('');\r\nvar _clientApi = new TikTokClientApi(null);\r\n\r\nlet _clientHandle = undefined;\r\n\r\nclass TikTokClient {\r\n constructor() {\r\n this._headers = undefined;\r\n this._appId = undefined;\r\n this._open_id = undefined;\r\n _authApi = null;\r\n _clientApi = null;\r\n\r\n this.init = this.init.bind(this);\r\n this.login = this.login.bind(this);\r\n this.logout = this.logout.bind(this);\r\n this.getChannelsFor = this.getChannelsFor.bind(this);\r\n this.getPostsFor = this.getPostsFor.bind(this);\r\n this.getUserProfile = this.getUserProfile.bind(this);\r\n }\r\n\r\n get clientApi() {\r\n if (!(_clientApi)) {\r\n if (this.isAuthorized) {\r\n _clientApi = new TikTokClientApi(this.authorization.access_token);\r\n }\r\n }\r\n return _clientApi;\r\n }\r\n set clientApi(value) {\r\n _clientApi = null;\r\n }\r\n\r\n get authorization() {\r\n return _authApi?.authorization;\r\n }\r\n set authorization(value) {\r\n if (this.isAuthorized) {\r\n _authApi.authorization = null;\r\n }\r\n }\r\n get isAuthorized() {\r\n return !!(_authApi?.isAuthorized);\r\n }\r\n get isInitialized() {\r\n return !!_authApi;\r\n }\r\n\r\n init(appId, headers) {\r\n let candidate = { api: this };\r\n let isInitializing = false;\r\n if (_clientHandle === undefined) {\r\n _clientHandle = candidate;\r\n isInitializing = true;\r\n }\r\n let retVal = _clientHandle;\r\n\r\n this._headers = headers;\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n if (this.isInitialized) {\r\n resolve(retVal);\r\n } else {\r\n if (!isInitializing) {\r\n setTimeout(() => {\r\n resolve(retVal);\r\n }, 2000);\r\n } else {\r\n let authApi = new TikTokAuthApi(appId);\r\n await authApi.init(headers)\r\n .then(\r\n async (val) => {\r\n _authApi = val;\r\n resolve(retVal);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n reject(err.error);\r\n }\r\n );\r\n }\r\n }\r\n } catch (ex) {\r\n _authApi.authorization = null;\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n login() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n await _authApi.authorize()\r\n .then(\r\n (val) => {\r\n if (val == undefined) {\r\n resolve(val);\r\n }\r\n this._open_id = val.open_id;\r\n _authApi.authorization = val;\r\n _clientApi = new TikTokClientApi(val.access_token);\r\n resolve(val);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n resolve(undefined);\r\n }\r\n );\r\n }\r\n catch (ex) {\r\n _authApi.authorization = null;\r\n reject(ex);\r\n }\r\n });\r\n };\r\n\r\n logout() {\r\n return new Promise(async (resolve, reject) => {\r\n if (!(this.isAuthorized)) {\r\n reject('user may remain authorized according to tiktok')\r\n }\r\n if (await _authApi.logout(this.authorization?.access_token)) {\r\n this.authorization = null;\r\n this.clientApi = null;\r\n resolve(true);\r\n }\r\n });\r\n };\r\n\r\n getChannelsFor(userProfile) {\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = this.authorization?.access_token;\r\n let hasAccessToken = !!access_token;\r\n\r\n if (!hasAccessToken) {\r\n reject('User is not authorized');\r\n } else if (!(userProfile?.id)) {\r\n reject('userProfile parameter required')\r\n } else {\r\n resolve({\r\n data: [{ id: userProfile.id, name: 'default channel' }]\r\n });\r\n }\r\n });\r\n }\r\n\r\n getPostsFor(channel) {\r\n let headers = this._headers;\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = this.authorization?.access_token;\r\n let hasAccessToken = !!access_token;\r\n\r\n if (!hasAccessToken) {\r\n reject('User is not authorized');\r\n } else if (!(channel?.id)) {\r\n reject('channel parameter required')\r\n } else {\r\n\r\n let promise = undefined;\r\n\r\n if (!!(channel.posts?.paging?.cursors.after)) {\r\n promise = this.clientApi.getUserMedia(access_token, channel.posts.paging.cursors.after);\r\n } else {\r\n promise = this.clientApi.getUserMedia(access_token);\r\n }\r\n\r\n promise.then(\r\n async (val) => {\r\n const targetModelFrom = (sourceModel) => {\r\n let embedHtml = sourceModel.embed_html;\r\n let embedWidth = null;\r\n if (sourceModel?.embed_html != undefined && sourceModel?.embed_html != null) {\r\n const embed = sourceModel.embed_html;\r\n const startIndex = embed.indexOf(\"max-width: \") + \"max-width: \".length;\r\n const endIndex = embed.indexOf(\"px\", startIndex);\r\n const tempWidth = Number.parseInt(embed.slice(startIndex, endIndex));\r\n if (Number.isInteger(tempWidth) && tempWidth > 0) {\r\n embedWidth = tempWidth;\r\n }\r\n }\r\n let targetModel = {\r\n content: sourceModel.video_description,\r\n embed: embedHtml,\r\n id: sourceModel.id,\r\n link: embedHtml,\r\n media: [{\r\n children: [{\r\n height: sourceModel.height,\r\n width: sourceModel.width,\r\n thumbnailLink: sourceModel.cover_image_url,\r\n isExternalReference: true\r\n }],\r\n duration: sourceModel.duration,\r\n height: null,\r\n imageLink: null,\r\n embedLink: embedHtml,\r\n isExternalReference: false,\r\n thumbnailLink: null,\r\n videoLink: null,\r\n width: embedWidth,\r\n }],\r\n platformName: 'tiktok',\r\n publishedOn: sourceModel.create_time,\r\n raw: { ...sourceModel },\r\n title: sourceModel.title,\r\n };\r\n return targetModel;\r\n };\r\n\r\n let retVal = { data: [] };\r\n for (let i = 0; i < val.data.videos.length; i++) {\r\n let sourceModel = val.data.videos[i];\r\n let targetModel = targetModelFrom(sourceModel);\r\n retVal.data.push(targetModel);\r\n }\r\n\r\n if (val.data.has_more) {\r\n retVal.paging = { cursors: { after: val.data.cursor } };\r\n } else {\r\n delete retVal.paging;\r\n }\r\n\r\n resolve(retVal);\r\n },\r\n (err) => {\r\n this.authorization = null;\r\n reject(err)\r\n }\r\n );\r\n\r\n await promise;\r\n }\r\n });\r\n }\r\n\r\n getUserProfile() {\r\n let authorization = _authApi.authorization;\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = authorization?.access_token;\r\n let hasAccessToken = !!access_token;\r\n\r\n if (!hasAccessToken) {\r\n reject('User is not authorized');\r\n } else {\r\n await this.clientApi.getMe()\r\n .then(\r\n (initialVal) => {\r\n let val = {\r\n id: initialVal.data.user.open_id,\r\n name: initialVal.data.user.display_name,\r\n imageUrl: initialVal.data.user.avatar_url,\r\n }\r\n resolve(val);\r\n },\r\n (err) => {\r\n _authApi.authorization = null;\r\n reject(err);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n}\r\n\r\nconst tikTokClient = window.TikTokClient || new TikTokClient();\r\nif (!window.TikTokClient) {\r\n window.TikTokClient = TikTokClient;\r\n}\r\n\r\nexport default tikTokClient;\r\n","import { ClientRequest } from \"../../api-social/clientRequest\";\r\n\r\nconst ENABLE_AUDIT_MESSAGES = false;\r\n\r\nvar _authorization = undefined;\r\nvar _userProfile = undefined;\r\n\r\nfunction getFB() {\r\n return new Promise((resolve) => {\r\n\r\n if (window.FB) {\r\n resolve(window.FB);\r\n }\r\n const id = 'facebook-jssdk';\r\n const fjs = document.querySelectorAll('script')[0];\r\n if (document.getElementById(id)) {\r\n return;\r\n }\r\n const js = document.createElement('script');\r\n js.id = id;\r\n js.src = '//connect.facebook.net/en_US/sdk.js';\r\n js.addEventListener('load', () => {\r\n //Object.assign(this, {\r\n // AppEvents: window.FB.AppEvents,\r\n // Canvas: window.FB.Canvas,\r\n // Event: window.FB.Event,\r\n // Frictionless: window.FB.Frictionless,\r\n // XFBML: window.FB.XFBML,\r\n //});\r\n resolve(window.FB);\r\n });\r\n fjs.parentNode.insertBefore(js, fjs);\r\n });\r\n}\r\n\r\nfunction facebookApi(...params) {\r\n return new Promise(async (resolve, reject) => {\r\n const FB = await getFB();\r\n const callback = (response) => {\r\n if (!response || response.error) {\r\n reject(response);\r\n } else {\r\n resolve(response);\r\n }\r\n };\r\n if (params.length > 3) {\r\n params = params.slice(0, 3);\r\n }\r\n params.push(callback);\r\n FB.api(...params);\r\n });\r\n}\r\n\r\nasync function loadEmbeds(val, headers) {\r\n if (!!(val?.data)) {\r\n let tasks = [];\r\n\r\n for (var i = 0; i < val.data.length; i++) {\r\n let postItem = val.data[i];\r\n if (!(postItem?.embed)) {\r\n let args = {\r\n url: postItem.url,\r\n maxWidth: 640\r\n };\r\n let task = ClientRequest.get('/facebook/embed', args, false, headers)\r\n .then(\r\n (val) => {\r\n if (!!(val.html)) {\r\n postItem.embed = val.html;\r\n }\r\n },\r\n (err) => { console.error(err); }\r\n );\r\n tasks.push(task);\r\n }\r\n }\r\n while (tasks.length) {\r\n let task = tasks.pop();\r\n await task;\r\n }\r\n }\r\n}\r\n\r\nconst scope = 'email,pages_show_list,pages_read_engagement,public_profile,user_posts';\r\nconst requiredPermissions = scope.split(',');\r\n\r\nfunction handleAuthStatusChange(response) {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n _authorization = null;\r\n _userProfile = null;\r\n if (response.status === 'connected') {\r\n let authorization = response.authResponse;\r\n let isAuthenticated = !!(authorization.accessToken);\r\n if (!(authorization.grantedScopes)) {\r\n const handlePermissionsResponse = (reply) => {\r\n let data = reply?.data;\r\n if (!data)\r\n return;\r\n let grantedScopes = '';\r\n while (data.length > 0) {\r\n let item = data.pop();\r\n if (item.status === 'granted') {\r\n if (grantedScopes.length > 0)\r\n grantedScopes += ',';\r\n grantedScopes += item.permission;\r\n }\r\n }\r\n authorization.grantedScopes = grantedScopes;\r\n }\r\n await facebookApi('/me/permissions', 'get')\r\n .then(handlePermissionsResponse);\r\n }\r\n let isAuthorized = isAuthenticated;\r\n if (isAuthenticated) {\r\n for (let i = 0; i < requiredPermissions.length; i++) {\r\n let perm = requiredPermissions[i];\r\n isAuthorized = authorization.grantedScopes.indexOf(perm) >= 0\r\n if (!isAuthorized && perm !== 'pages_show_list' && perm !== 'pages_read_engagement') // pagas_show_list and pages_read_engagement is optional\r\n break;\r\n }\r\n }\r\n if (isAuthenticated && isAuthorized && _authorization !== authorization) {\r\n _authorization = authorization;\r\n }\r\n }\r\n resolve();\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n};\r\n\r\nlet _clientHandle = undefined;\r\n\r\nclass FacebookClient {\r\n constructor() {\r\n this._headers = undefined;\r\n this.getPostsFor = this.getPostsFor.bind(this);\r\n }\r\n\r\n get isAuthorized() {\r\n return _authorization != undefined;\r\n }\r\n\r\n getChannelsFor(userProfile) {\r\n let retVal = {\r\n data: []\r\n };\r\n return new Promise(async (resolve, reject) => {\r\n let access_token = _authorization?.accessToken;\r\n if (!access_token) {\r\n reject('User is not authorized');\r\n } else if (!(userProfile?.id)) {\r\n reject('userProfile parameter required')\r\n } else if (!!(userProfile?.channels)) {\r\n resolve();\r\n } else {\r\n // the first item in the result is always the user profile\r\n retVal.data.push(\r\n {\r\n id: userProfile.id,\r\n name: 'Profile Posts',\r\n access_token: access_token\r\n }\r\n );\r\n\r\n // on error reject the promise\r\n const handleError = (err) => {\r\n if (!!(err.error)) {\r\n reject(err.error);\r\n }\r\n else {\r\n reject(err);\r\n }\r\n }\r\n\r\n // on response add channels to result data and follow all paging\r\n const handleResponse = async (response) => {\r\n while (response.data.length > 0) {\r\n retVal.data.push(response.data.pop());\r\n }\r\n if (!!(response.paging?.next))\r\n await facebookApi(response.paging.next, 'get')\r\n .then(\r\n handleResponse,\r\n handleError\r\n );\r\n }\r\n\r\n let args = {\r\n fields: 'id,name,access_token',\r\n pretty: 0\r\n };\r\n\r\n await facebookApi('/me/accounts', 'get', args)\r\n .then(\r\n handleResponse,\r\n handleError\r\n );\r\n\r\n resolve(retVal);\r\n }\r\n });\r\n }\r\n\r\n getPostsFor(channel) {\r\n var headers = this._headers;\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let posts = { data: [] };\r\n\r\n const targetModelFrom = (sourceModel) => {\r\n\r\n let retVal = {\r\n content: sourceModel.message,\r\n embed: null,\r\n id: sourceModel.id,\r\n link: sourceModel.permalink_url,\r\n media: [],\r\n platformName: 'facebook',\r\n publishedOn: sourceModel.created_time,\r\n raw: { ...sourceModel },\r\n title: null\r\n };\r\n\r\n if (!!(sourceModel?.attachments?.data?.length) && 1 === sourceModel.attachments.data.length && 'profile_media' === sourceModel.attachments.data[0].type) {\r\n return null;\r\n }\r\n\r\n if (!!(sourceModel?.attachments?.data?.length)) {\r\n for (let i = 0; i < sourceModel.attachments.data.length; i++) {\r\n let sourceAttachmentModel = sourceModel.attachments.data[i];\r\n\r\n if (!!(sourceAttachmentModel?.title) && !(retVal.title)) {\r\n retVal.title = sourceAttachmentModel.title;\r\n }\r\n let targetAttachmentModel = {\r\n children: [],\r\n duration: null,\r\n height: null,\r\n imageLink: null,\r\n isExternalReference: true,\r\n thumbnailLink: null,\r\n videoLink: null,\r\n width: null\r\n };\r\n if (sourceAttachmentModel.media_type === 'video') {\r\n if (sourceAttachmentModel.media?.source == null) {\r\n continue;\r\n }\r\n targetAttachmentModel.videoLink = sourceAttachmentModel.media?.source;\r\n var thumbnail = sourceAttachmentModel.media?.image;\r\n if (!!thumbnail) {\r\n targetAttachmentModel.children.push({\r\n children: [],\r\n duration: null,\r\n height: thumbnail.height,\r\n imageLink: null,\r\n isExternalReference: true,\r\n thumbnailLink: thumbnail.src,\r\n videoLink: null,\r\n width: thumbnail.width\r\n });\r\n }\r\n } else if (sourceAttachmentModel.media_type === 'photo' && !!(sourceAttachmentModel.media?.image)) {\r\n var img = sourceAttachmentModel.media.image;\r\n targetAttachmentModel.imageLink = img.src;\r\n targetAttachmentModel.height = img.height;\r\n targetAttachmentModel.width = img.width;\r\n } else if (sourceAttachmentModel.media_type === 'album') {\r\n for (let i = 0; i < sourceAttachmentModel.subattachments.data.length; ++i) {\r\n let sourceSubattachmentModel = sourceAttachmentModel.subattachments.data[i];\r\n\r\n if (sourceSubattachmentModel.type === 'photo' && !!(sourceSubattachmentModel.media?.image)) {\r\n retVal.media.push({\r\n children: [],\r\n duration: null,\r\n height: sourceSubattachmentModel.media.image.height,\r\n imageLink: sourceSubattachmentModel.media.image.src,\r\n isExternalReference: true,\r\n thumbnailLink: null,\r\n videoLink: null,\r\n width: sourceSubattachmentModel.media.image.width\r\n });\r\n } else if (sourceSubattachmentModel.type === 'video') {\r\n }\r\n } \r\n continue;\r\n } else {\r\n continue;\r\n }\r\n retVal.media.push(targetAttachmentModel);\r\n }\r\n }\r\n if (retVal.media.length > 0) {\r\n return retVal;\r\n }\r\n return null;\r\n };\r\n\r\n const handleResponse = async (response) => {\r\n for (let i = 0; i < response.data.length;i++) {\r\n let sourceModel = response.data[i];\r\n let targetModel = targetModelFrom(sourceModel);\r\n if(!!targetModel)\r\n posts.data.push(targetModel);\r\n }\r\n\r\n if (!!(response.paging?.next)) {\r\n posts.paging = response.paging.next;\r\n }\r\n else if (!!(posts.paging)) {\r\n delete posts.paging;\r\n }\r\n\r\n //await loadEmbeds(posts, headers);\r\n }\r\n\r\n if (!!(channel.next)) {\r\n let url = channel.next;\r\n delete channel.next;\r\n await facebookApi(url, 'get')\r\n .then(handleResponse);\r\n } else { \r\n if (!!channel.posts?.paging) {\r\n await facebookApi(channel.posts.paging, 'get')\r\n .then(handleResponse);\r\n } else {\r\n const FIELDS = 'created_time,id,is_expired,is_hidden,is_published,message,permalink_url,privacy,attachments{description,media,media_type,title,type,url,subattachments}';\r\n let params = {\r\n include_hidden: false,\r\n show_expired: false,\r\n fields: FIELDS,\r\n limit: 25,\r\n access_token: channel.access_token\r\n };\r\n await facebookApi(`${channel.id}/posts`, 'get', params)\r\n .then(handleResponse);\r\n }\r\n }\r\n resolve(posts);\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n getUserProfile() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n if (!_userProfile) {\r\n if (_authorization) {\r\n let userProfile = {};\r\n const handleMeReply = async (result) => {\r\n userProfile.id = result.id;\r\n userProfile.name = result.name;\r\n userProfile.imageUrl = result.picture?.data?.url;\r\n };\r\n await facebookApi('/me', 'get', { fields: 'id,name,picture' })\r\n .then(handleMeReply);\r\n _userProfile = userProfile;\r\n } else {\r\n reject('User is not authorized or is lacking permissions for application');\r\n }\r\n }\r\n resolve(_userProfile);\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n init(appId, version, headers) {\r\n const args = {\r\n appId: appId,\r\n cookie: false,\r\n status: true,\r\n version: version,\r\n xfbml: false\r\n };\r\n\r\n let candidate = { api: this };\r\n let isInitializing = false;\r\n if (_clientHandle === undefined) {\r\n _clientHandle = candidate;\r\n isInitializing = true;\r\n this._headers = headers;\r\n }\r\n let retVal = _clientHandle;\r\n\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const FB = await getFB();\r\n if (!isInitializing) {\r\n if (ENABLE_AUDIT_MESSAGES) console.log('FACEBOOK RE-INITIALIZE WAS BLOCKED')\r\n setTimeout(() => { resolve(retVal); }, 2000);\r\n } else {\r\n FB.init(args);\r\n\r\n let p = new Promise((resolve, reject) => {\r\n try {\r\n const handleResponse = (response) => {\r\n resolve(response);\r\n };\r\n FB.getLoginStatus(handleResponse);\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n\r\n let response = await p;\r\n\r\n await handleAuthStatusChange(response);\r\n\r\n if (!!_authorization) {\r\n retVal.authorization = _authorization;\r\n retVal.userProfile = await this.getUserProfile();\r\n }\r\n\r\n resolve(retVal);\r\n }\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n login() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const FB = await getFB(); \r\n let options = {\r\n scope: scope,\r\n return_scopes: true,\r\n enable_profile_selector: true\r\n };\r\n FB.login(\r\n (response) => {\r\n handleAuthStatusChange(response)\r\n .then(\r\n () => {\r\n if (!_authorization) {\r\n reject('User not authorized');\r\n } else {\r\n resolve(_authorization);\r\n }\r\n },\r\n (err) => {\r\n reject(err);\r\n }\r\n );\r\n },\r\n options\r\n );\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n logout() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const FB = await getFB();\r\n FB.logout(\r\n (response) => {\r\n _userProfile = null;\r\n _authorization = null;\r\n resolve(response);\r\n }\r\n );\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n processEmbeds(elements, headers) {\r\n const doEmbed = async () => {\r\n //let tasks = [];\r\n //for (let i = 0; i < elements.length; i++) {\r\n // let element = elements[i];\r\n // let task = ClientRequest.get('/facebook/embed', { url: element.getAttribute('data-href') }, false, headers)\r\n // .then(\r\n // (val) => {\r\n // if (!!(val.html)) {\r\n // element.innerHTML = val.html\r\n // }\r\n // },\r\n // (err) => { console.error(err); }\r\n // );\r\n // tasks.push(task);\r\n //}\r\n //while (tasks.length) {\r\n // let task = tasks.pop();\r\n // await task;\r\n //}\r\n window.FB.XFBML.parse();\r\n }\r\n doEmbed();\r\n }\r\n\r\n}\r\n\r\nconst facebookClient = window.facebookClient || new FacebookClient();\r\nif (!window.facebookClient) {\r\n window.facebookClient = facebookClient;\r\n}\r\n\r\nexport default facebookClient;\r\n","import { getRequest } from \"../../../sharedUtils/httpUtils\";\r\nconst ENABLE_AUDIT_MESSAGES = false;\r\n\r\nconst youtubeDiscoveryDocs = \"https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest\";\r\nconst youtubeScope = \"https://www.googleapis.com/auth/youtube.readonly\";\r\nconst requiredPermissions = [youtubeScope];\r\nlet ytAuth = undefined;\r\nlet ytClient = undefined;\r\nvar _authorization = undefined;\r\n\r\n\r\nfunction getAuthorization() {\r\n let retVal = _authorization;\r\n if (ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), '_authorization', 'get', retVal);\r\n return retVal;\r\n}\r\nfunction setAuthorization(value) {\r\n if (ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), '_authorization', 'set', value);\r\n _authorization = value;\r\n}\r\n\r\nvar _isInitialized = undefined;\r\nfunction getIsInitialized() {\r\n let retVal = _isInitialized;\r\n if (ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), '_isInitialized', 'get', retVal);\r\n return retVal;\r\n}\r\nfunction setIsInitialized(value) {\r\n if (ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), '_isInitialized', 'set', value);\r\n _isInitialized = value;\r\n}\r\n\r\nvar _userProfile = undefined;\r\n\r\nfunction getUserProfileInternal() {\r\n let retVal = _userProfile;\r\n if (ENABLE_AUDIT_MESSAGES) console.log(new Date(), '_userProfile', 'get', retVal);\r\n return retVal;\r\n}\r\n\r\nfunction setUserProfileInternal(value) {\r\n if (ENABLE_AUDIT_MESSAGES) console.log(new Date(), '_userProfile', 'set', value);\r\n _userProfile = value;\r\n}\r\n\r\nfunction resetEnvironmentVariables() {\r\n setAuthorization(undefined);\r\n setUserProfileInternal(undefined);\r\n ytAuth = undefined;\r\n ytClient = undefined;\r\n}\r\n\r\nfunction getYoutubeClient() {\r\n return new Promise((resolve) => {\r\n if (window.google) {\r\n resolve(window.google);\r\n }\r\n const id = 'youtube-jssdk';\r\n const fjs = document.querySelectorAll('script')[0];\r\n if (document.getElementById(id)) {\r\n return;\r\n }\r\n const js = document.createElement('script');\r\n js.id = id;\r\n js.src = '//accounts.google.com/gsi/client';\r\n js.onload = 'initClient()';\r\n js.addEventListener('load', () => {\r\n resolve(window.google);\r\n });\r\n fjs.parentNode.insertBefore(js, fjs);\r\n });\r\n}\r\n\r\n\r\n\r\nfunction getPlayerScript() {\r\n return new Promise((resolve) => {\r\n if (window.YT) {\r\n resolve(window.YT);\r\n }\r\n const id = 'youtube-player-jssdk';\r\n const fjs = document.querySelectorAll('script')[0];\r\n if (document.getElementById(id)) {\r\n return;\r\n }\r\n const js = document.createElement('script');\r\n js.id = id;\r\n js.src = '//www.youtube.com/iframe_api';\r\n js.addEventListener('load', () => {\r\n resolve(window.YT);\r\n });\r\n fjs.parentNode.insertBefore(js, fjs);\r\n });\r\n}\r\n\r\nfunction getAuthInstance(google) {\r\n return google.accounts.oauth2.initCodeClient({\r\n client_id: '837406387167-tssbf2nh2dq9eg0tkbcpgt2m273ceabi.apps.googleusercontent.com',\r\n scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/youtube.readonly',\r\n ux_mode: 'popup',\r\n callback: (response) => {\r\n ytAuth = !!(response.code) ? response.code : null;\r\n if (!!(response.error)) {\r\n setYtAuthNull();\r\n }\r\n // After receipt, the code is exchanged for an access token and\r\n // refresh token, and the platform then updates this web app\r\n // running in user's browser with the requested calendar info.\r\n },\r\n error_callback: (response) => {\r\n setYtAuthNull();\r\n },\r\n });\r\n}\r\n\r\nfunction setYtAuthNull() {\r\n ytAuth = -1;\r\n}\r\n\r\nconst ytAuthWait = () => new Promise((resolve) => {\r\n const checkVariable = () => {\r\n if (ytAuth != undefined) {\r\n resolve();\r\n } else {\r\n setTimeout(checkVariable, 100);\r\n }\r\n }\r\n checkVariable();\r\n});\r\n\r\nfunction setUserData(auth) {\r\n if (!!(auth.id_token)) {\r\n try\r\n {\r\n let encodedPayload = auth.id_token?.split(\".\")[1];\r\n let payload = JSON.parse(atob(encodedPayload));\r\n const userInfo = {\r\n id: payload.sub,\r\n name: payload.picture,\r\n imageUrl: payload.picture,\r\n };\r\n setUserProfileInternal(userInfo);\r\n }\r\n catch (err)\r\n {\r\n console.error(\"Error trying to decode userInfo from JWT\", err);\r\n return -1;\r\n }\r\n \r\n }\r\n}\r\n\r\nfunction getGoogleAuth() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n const google = await getYoutubeClient();\r\n const client = getAuthInstance(google);\r\n ytClient = typeof client == 'object' ? { ...client } : undefined;\r\n client.requestCode();\r\n\r\n await ytAuthWait();\r\n \r\n if (ytAuth === -1) {\r\n ytAuth = undefined;\r\n resolve(undefined);\r\n }\r\n const auth = await doAuthorize();\r\n let setAuth = 0;\r\n setAuth = setUserData(auth);\r\n if (setAuth == -1) {\r\n auth = undefined;\r\n }\r\n resolve(auth);\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n}\r\n\r\nasync function doAuthorize() {\r\n let auth = await getRequest(`/api/google/accesstoken/?authorizationCode=${ytAuth}`);\r\n return auth;\r\n}\r\n\r\n\r\nlet _clientHandle = undefined;\r\nvar _ytPlayerLib = undefined;\r\n\r\n\r\nclass YoutubeClient {\r\n constructor() {\r\n //getPlayerScript()\r\n // .then(\r\n // (val) => {\r\n // _ytPlayerLib = val;\r\n // }\r\n // );\r\n }\r\n\r\n get isAuthorized() {\r\n return _authorization != undefined;\r\n }\r\n\r\n getChannelsFor(userProfile) {\r\n return new Promise(async (resolve, reject) => {\r\n if (!(userProfile?.id)) {\r\n reject('userProfile argument is required');\r\n } else {\r\n try {\r\n const targetModelFrom = (sourceItem) => {\r\n let item_snippet = sourceItem.snippet;\r\n return {\r\n ...item_snippet,\r\n id: sourceItem.contentDetails.relatedPlaylists.uploads,\r\n name: item_snippet.title,\r\n videoCount: sourceItem.statistics.videoCount,\r\n raw: { ...sourceItem }\r\n };\r\n };\r\n\r\n // data is the internal model of videos\r\n let data = [];\r\n let retVal = { data: data }\r\n\r\n const handleResolved = async (api) => {\r\n let source = api.items;\r\n while (source.length)\r\n data.push(targetModelFrom(source.pop()));\r\n if (!!(api.nextPageToken)) {\r\n retVal.paging = { nextPageToken: api.nextPageToken };\r\n } else {\r\n retVal.isFullyLoaded = true;\r\n }\r\n };\r\n\r\n let nextPageToken = null;\r\n if (!!(userProfile.channels?.paging?.nextPageToken)) {\r\n nextPageToken = userProfile.channels.paging.nextPageToken;\r\n delete userProfile.channels.paging;\r\n }\r\n let url = `https://youtube.googleapis.com/youtube/v3/channels?part=contentDetails%2Cid%2Csnippet%2Cstatistics&mine=true&maxresults=25`\r\n if (!!(nextPageToken)) {\r\n url += \"&pageToken=\" + nextPageToken;\r\n }\r\n\r\n let api = await getRequest(url, false, _authorization.access_token);\r\n await handleResolved(api);\r\n\r\n resolve(retVal);\r\n\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getPostsFor(channel) {\r\n return new Promise(async (resolve, reject) => {\r\n if (!(channel?.id)) {\r\n reject('channel argument is required');\r\n } else {\r\n try {\r\n //const api = await getYoutube();\r\n\r\n let data = [];\r\n\r\n const targetModelFrom = (sourceItem) => {\r\n let retVal = null;\r\n let item_snippet = sourceItem?.snippet;\r\n if (!!(item_snippet?.resourceId?.videoId)) {\r\n retVal = {\r\n content: item_snippet.description,\r\n embed: null,\r\n id: sourceItem.id,\r\n link: null,\r\n media: [{\r\n children: [],\r\n duration: null,\r\n height: null,\r\n imageLink: null,\r\n embedLink: null,\r\n isExternalReference: false,\r\n thumbnailLink: null,\r\n videoId: item_snippet.resourceId.videoId,\r\n videoLink: null,\r\n width: null,\r\n }],\r\n platformName: 'youtube',\r\n publishedOn: item_snippet.publishedAt,\r\n raw: { playlistItem: sourceItem },\r\n title: item_snippet.title\r\n };\r\n }\r\n return retVal;\r\n };\r\n\r\n const updateModels = (items) => {\r\n // iterate through the raw items\r\n for (let y = 0; y < items.length; y++) {\r\n let videoModel = items[y];\r\n // iterate through our video model\r\n for (let x = 0; x < data.length; x++) {\r\n let targetModel = data[x];\r\n let media = targetModel.media[0];\r\n // match them to populate our model\r\n if (media.videoId === videoModel.id) {\r\n\r\n // was just a placeholder so we can link back\r\n delete media.videoId;\r\n\r\n var startIndex = videoModel.player.embedHtml.indexOf(\" src=\\\"\");\r\n if (startIndex < 0) {\r\n targetModel.media.pop();\r\n } else {\r\n startIndex += 6; // length of ' src=\"'\r\n var endIndex = videoModel.player.embedHtml.indexOf(\"\\\"\", startIndex);\r\n\r\n const widthStartIndex = videoModel.player.embedHtml.indexOf(\"width=\") + 'width=\"'.length;\r\n const widthEndIndex = videoModel.player.embedHtml.indexOf('\"', widthStartIndex);\r\n const width = videoModel.player.embedHtml.slice(widthStartIndex, widthEndIndex);\r\n\r\n const heightStartIndex = videoModel.player.embedHtml.indexOf(\"height=\") + 'height=\"'.length;\r\n const heightEndIndex = videoModel.player.embedHtml.indexOf('\"', heightStartIndex);\r\n const height = videoModel.player.embedHtml.slice(heightStartIndex, heightEndIndex);\r\n\r\n media.duration = videoModel.contentDetails.duration;\r\n media.height = parseInt(height);\r\n media.width = parseInt(width);\r\n\r\n media.embedLink = targetModel.link = targetModel.embed = videoModel.player.embedHtml.slice(startIndex, endIndex);\r\n\r\n var thumbnails = videoModel?.snippet?.thumbnails;\r\n if (!!thumbnails) {\r\n media.children = [];\r\n var item = thumbnails.default;\r\n if (!!(item)) {\r\n media.children.push({ height: item.height, thumbnailLink: item.url, width: item.width, isExternalReference: true });\r\n }\r\n item = thumbnails.medium;\r\n if (!!(item)) {\r\n media.children.push({ height: item.height, thumbnailLink: item.url, width: item.width, isExternalReference: true });\r\n }\r\n item = thumbnails.high;\r\n if (!!(item)) {\r\n media.children.push({ height: item.height, thumbnailLink: item.url, width: item.width, isExternalReference: true });\r\n }\r\n item = thumbnails.standard;\r\n if (!!(item)) {\r\n media.children.push({ height: item.height, thumbnailLink: item.url, width: item.width, isExternalReference: true });\r\n }\r\n item = thumbnails.maxres;\r\n if (!!(item)) {\r\n media.children.push({ height: item.height, thumbnailLink: item.url, width: item.width, isExternalReference: true });\r\n }\r\n\r\n var filteredThumbs = media.children.filter(child => child.width <= media.width);\r\n if (filteredThumbs.length > 0) {\r\n media.children = [filteredThumbs.sort((a, b) => { return a.width < b.width ? 1 : -1 })[0]];\r\n } else {\r\n media.children = [media.children.sort((a, b) => { return a.width > b.width ? 1 : -1 })[0]];\r\n }\r\n \r\n }\r\n }\r\n targetModel.raw.video = videoModel;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // search in data for model items with model.id == response.items.id\r\n };\r\n let retVal = { data: data }\r\n\r\n\r\n const handleRejected = (response) => {\r\n reject(response.error);\r\n }\r\n\r\n const handleResolved = async (response) => {\r\n let source = response.items.sort((a, b) => { return new Date(a.snippet.publishedAt) - new Date(b.snippet.publishedAt)});\r\n let videoIds = '';\r\n while (source.length) {\r\n var item = source.pop();\r\n // TODO: filter out items that already exist in user profile\r\n\r\n var model = targetModelFrom(item);\r\n if (!!model) {\r\n videoIds += ((videoIds.length > 0) ? ',' : '');\r\n videoIds += model.media[0].videoId;\r\n data.push(model);\r\n }\r\n }\r\n\r\n if (videoIds.length > 0) {\r\n const handleInnerResolved = async (response) => {\r\n updateModels(response.items);\r\n };\r\n\r\n let url = `https://youtube.googleapis.com/youtube/v3/videos?part=contentDetails%2Cid%2Csnippet%2Cstatistics%2Cplayer&id=${videoIds}&maxWidth=640&maxresults=25`\r\n\r\n let api = await getRequest(url, false, _authorization.access_token);\r\n const promise = new Promise((resolve, reject) => {\r\n if (api) {\r\n resolve(api);\r\n } else {\r\n reject(new Error('api variable is not defined'));\r\n }\r\n });\r\n\r\n promise.then(handleInnerResolved, handleRejected);\r\n\r\n }\r\n if (!!(response.nextPageToken)) {\r\n retVal.paging = { nextPageToken: response.nextPageToken };\r\n } else {\r\n retVal.isFullyLoaded = true;\r\n }\r\n };\r\n\r\n let nextPageToken;\r\n if (!!(channel.posts?.paging?.nextPageToken)) {\r\n nextPageToken = channel.posts.paging?.nextPageToken;\r\n delete channel.posts.paging;\r\n }\r\n\r\n let url = \"https://youtube.googleapis.com/youtube/v3/playlistItems?part=contentDetails%2Cid%2Csnippet%2Cstatus&playlistId=\" + channel.id + \"&maxResults=25\";\r\n if (!!(nextPageToken)) {\r\n url += \"&pageToken=\" + nextPageToken;\r\n }\r\n let api = await getRequest(url, false, _authorization.access_token);\r\n const promise = new Promise((resolve, reject) => {\r\n if (api) {\r\n resolve(api);\r\n } else {\r\n reject(new Error('api variable is not defined'));\r\n }\r\n });\r\n\r\n await promise.then(handleResolved, handleRejected);\r\n\r\n resolve(retVal);\r\n\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n }\r\n });\r\n }\r\n\r\n getUserProfile() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n resolve(getUserProfileInternal());\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n init(appId, apiKey) {\r\n let candidate = { api: this };\r\n let isInitializing = false;\r\n if (_clientHandle === undefined) {\r\n _clientHandle = candidate;\r\n isInitializing = true;\r\n }\r\n let retVal = _clientHandle;\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n resolve(retVal);\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n login() {\r\n return new Promise(async (resolve, reject) => {\r\n const auth = await getGoogleAuth();\r\n try {\r\n setAuthorization(!!(auth) ? auth : undefined);\r\n resolve(auth);\r\n }\r\n catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n logout() {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n let google = await getYoutubeClient();\r\n google.accounts.oauth2.revoke(_authorization.access_token);\r\n resetEnvironmentVariables();\r\n resolve(true);\r\n } catch (ex) {\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n processEmbeds(elements, headers, onReady) {\r\n const doEmbed = async () => {\r\n let tasks = [];\r\n for (let i = 0; i < elements.length; i++) {\r\n let element = elements[i];\r\n let task = new Promise((resolve, reject) => {\r\n try {\r\n resolve(element);\r\n }\r\n catch (ex) {\r\n reject(ex.error);\r\n }\r\n });\r\n tasks.push(task);\r\n }\r\n while (tasks.length) {\r\n let task = tasks.pop();\r\n let element = await task;\r\n\r\n let child = document.createElement('div');\r\n element.appendChild(child);\r\n\r\n const YT = await getPlayerScript();\r\n let args = {\r\n videoId: element.getAttribute('data-id')\r\n };\r\n if (!!onReady) {\r\n args.events = {\r\n 'onReady': onReady\r\n }\r\n }\r\n new YT.Player(child, args);\r\n }\r\n }\r\n doEmbed();\r\n }\r\n\r\n}\r\n\r\nconst youtubeClient = window.youtubeClient || new YoutubeClient();\r\nif (!window.youtubeClient) {\r\n window.youtubeClient = youtubeClient;\r\n}\r\n\r\nexport default youtubeClient;\r\n","import React, { useState, useEffect } from \"react\"\r\nimport LoadSpinner from \"../../LoadSpinner\";\r\nimport PropTypes from \"prop-types\";\r\nimport $ from 'jquery';\r\n\r\n\r\nconst SvgFacebook = \r\n \r\n;\r\n\r\nconst SvgFile = \r\n \r\n;\r\n\r\nconst SvgInstagram = \r\n \r\n;\r\n\r\nconst SvgUnauthorized = \r\n \r\n \r\n;\r\n\r\nconst SvgYoutube = \r\n \r\n;\r\n\r\nconst SvgTikTok = \r\n \r\n;\r\n\r\nconst SourceItem = (props) => {\r\n const { id, isActive, sourceIcon, authorizeIcon, userProfile, onSourceSelected, onLogin, onLogout } = props;\r\n\r\n function handleLinkClick(e) {\r\n e.preventDefault();\r\n\r\n let link = $(e.target).parents('.icon-group');\r\n let idAttr = link.attr('id');\r\n if (idAttr) {\r\n let index = idAttr.replace('source-', '');\r\n let i = parseInt(index);\r\n onSourceSelected(i);\r\n }\r\n }\r\n\r\n function handleLoginClick(e) {\r\n e.preventDefault();\r\n onLogin(e);\r\n }\r\n\r\n function handleLogoutClick(e) {\r\n e.preventDefault();\r\n onLogout(e);\r\n }\r\n\r\n return isActive\r\n ? (\r\n \r\n \r\n {sourceIcon}\r\n \r\n\r\n {\r\n // ig, fb, yt\r\n !!authorizeIcon ?\r\n\r\n // active\r\n (isActive) ?\r\n <>\r\n \r\n
    \r\n \r\n \r\n {authorizeIcon}\r\n \r\n \r\n {userProfile?.name}\r\n \r\n :\r\n\r\n // not active\r\n <>\r\n \r\n {authorizeIcon}\r\n \r\n \r\n {userProfile?.name}\r\n \r\n \r\n : <>\r\n }\r\n \r\n )\r\n\r\n // not active\r\n : (\r\n \r\n \r\n {sourceIcon}\r\n \r\n {\r\n // ig, fb, yt\r\n !!authorizeIcon ?\r\n <>\r\n \r\n
    \r\n \r\n \r\n {authorizeIcon}\r\n \r\n \r\n {userProfile?.name}\r\n \r\n : <>\r\n }\r\n \r\n );\r\n}\r\n\r\nSourceItem.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n isActive: PropTypes.bool.isRequired,\r\n sourceIcon: PropTypes.node.isRequired,\r\n authorizeIcon: PropTypes.node,\r\n userProfile: PropTypes.object,\r\n onSourceSelected: PropTypes.func.isRequired,\r\n onLogin: PropTypes.func,\r\n onLogout: PropTypes.func\r\n};\r\n\r\nexport const Sources = (props) => {\r\n const { onSourceChanged, onLogin, onLogout } = props;\r\n const authIcons = [null, SvgUnauthorized, SvgUnauthorized, SvgUnauthorized, SvgUnauthorized];\r\n const icons = [SvgFile, SvgInstagram, SvgFacebook, SvgYoutube, SvgTikTok];\r\n\r\n return <>\r\n {\r\n props.context?.data && props.context.data.map((item, index) => {\r\n return ;\r\n })\r\n }\r\n ;\r\n}\r\n\r\nSources.propTypes = {\r\n context: PropTypes.object,\r\n onSourceChanged: PropTypes.func.isRequired,\r\n onLogin: PropTypes.func,\r\n onLogout: PropTypes.func\r\n}\r\n","import React, { useState } from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport { getThumbnail } from \"../sharedUtils/postFunctions\";\r\n\r\n/**\r\n * \r\n * @param {{images:{url:string, role:Number}[], customClass:string, imageStyle:object}} props\r\n */\r\nconst PostBanner = (props) => {\r\n\r\n let [currentMedia, setMedia] = useState(0);\r\n\r\n const mediaPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextMedia(),\r\n onSwipedRight: () => prevMedia(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n let nextMedia = () => {\r\n if (currentMedia < props.images.length - 1) {\r\n let newMedia = currentMedia + 1;\r\n setMedia(newMedia);\r\n }\r\n else {\r\n setMedia(0);\r\n }\r\n }\r\n\r\n let prevMedia = () => {\r\n if (currentMedia > 0) {\r\n let newMedia = currentMedia - 1;\r\n setMedia(newMedia);\r\n }\r\n else {\r\n setMedia(props.images.length - 1);\r\n }\r\n }\r\n\r\n let postIndicators = () => {\r\n return props.images.map((pic, i) => {\r\n return (\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n return (\r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n {\r\n props.images.length > 1 ? (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevMedia()\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n
      \r\n {postIndicators()}\r\n
    \r\n\r\n {\r\n e.preventDefault();\r\n nextMedia()\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ) : null\r\n }\r\n
    \r\n \r\n
    \r\n\r\n )\r\n}\r\n\r\nexport default PostBanner;","import React from \"react\";\r\nimport { FormGroup, Label } from \"reactstrap\";\r\n\r\n/**\r\n * \r\n * @param {{rows:Number,title:string, value:string, handleInput:Function, name:string, inputStyle:object, placeholder:string}} props\r\n */\r\nconst FormTextArea = (props) => {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default FormTextArea;","import React, { useEffect, useRef, useState } from 'react';\r\nimport { debounce } from \"throttle-debounce\"\r\nimport { MentionsInput, Mention } from \"react-mentions\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport PostBanner from \"components/PostBanner\";\r\nimport FormTextArea from \"components/FormTextArea\";\r\n\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\n\r\nconst PreviewCard = (props) => {\r\n const { post } = props;\r\n const [mediaIndex, setMediaIndex] = useState(-1);\r\n const [captionInput, setCaptionInput] = useState(\"\");\r\n\r\n const debounceFunc = React.useCallback(debounce(300, (query, callback) =>\r\n fetchUsers(query,callback)),[]);\r\n\r\n const handleMounted = async () => {\r\n if (post?.media?.length > 0) {\r\n setMediaIndex(0);\r\n setCaptionInput(props.post.content);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n handleMounted();\r\n }, []);\r\n\r\n let content = post?.content ?? post?.title;\r\n\r\n function getProperties() {\r\n let properties = {};\r\n\r\n let values = props.post.media\r\n .map((media, i) => {\r\n if (media?.children?.length > 0) {\r\n return { parentId: i, value: media.children[0].thumbnailLink }\r\n } else {\r\n return { parentId: null, value: media.imageLink || media.videoLink }\r\n }\r\n });\r\n\r\n properties.$values = values;\r\n return properties;\r\n }\r\n\r\n async function fetchUsers(query,callback) {\r\n if (!query || query.length < 1) {\r\n return;\r\n }\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n getRequest(url)\r\n .then(res => {\r\n return res.map(user => ({ display: user.userName, id: user.id, name: user.name }))\r\n })\r\n .then(callback);\r\n }\r\n\r\n let webLayouts = [\"md\", \"lg\", \"xl\"];\r\n\r\n let postImages =\r\n post.platformName === \"youtube\" || post.platformName === \"tiktok\" ?\r\n props.post.media\r\n .map((media, i) => {\r\n return {\r\n url: post.link,\r\n role: 3,\r\n id: i,\r\n height: media.height,\r\n width: media.width\r\n }\r\n }) :\r\n props.post.media\r\n .map((media, i) => {\r\n return {\r\n url: !!media.imageLink ? media.imageLink : media.videoLink,\r\n role: !!media.imageLink ? 0 : 1,\r\n id: i\r\n }\r\n });\r\n\r\n return (\r\n
    \r\n\r\n {props.deviceSize === \"sm\" ?\r\n (
    \r\n
    \r\n \r\n
    \r\n
    ) : null}\r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n {\r\n webLayouts.includes(props.deviceSize) ? (\r\n
    \r\n\r\n \r\n {\r\n !!(props.blog) ?\r\n <>\r\n \r\n

    {post.title}

    \r\n \r\n :\r\n <>\r\n }\r\n \r\n\r\n \r\n\r\n {\r\n setCaptionInput(e.target.value);\r\n props.handleContentInput(e.target.value)}\r\n }\r\n style={{ height: \"auto\" }}\r\n allowSuggestionsAboveCursor={true}\r\n >\r\n `@${display}`}\r\n markup=\"#!^(__id__)%~@(((__display__)))\"\r\n renderSuggestion={(entry, search, highlightedDisplay, index, focused) => {\r\n return @{entry.display}
    {entry.name}
    \r\n }}\r\n >\r\n \r\n \r\n\r\n
    \r\n\r\n ) : null\r\n }\r\n\r\n {\r\n props.deviceSize === \"sm\" ? (\r\n <>\r\n {\r\n !!(props.blog) ?\r\n <>\r\n
    {post.title}
    \r\n \r\n :\r\n <>\r\n }\r\n
    \r\n

    \r\n {content}\r\n

    \r\n
    \r\n \r\n ) : null\r\n }\r\n\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nPreviewCard.propTypes = {\r\n userName: PropTypes.string,\r\n profilePicture: PropTypes.node,\r\n post: PropTypes.object,\r\n loggedInUser: PropTypes.object,\r\n handleContentInput: PropTypes.func,\r\n captionValue: PropTypes.string\r\n}\r\n\r\nexport default PreviewCard;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from \"prop-types\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\n\r\nconst ShareCard = (props) => {\r\n const {post, onSelected} = props;\r\n const [mediaIndex, setMediaIndex] = useState(-1);\r\n const [postState, setPostState] = useState(post)\r\n\r\n let standard = postState?.raw?.playlistItem?.snippet?.thumbnails?.standard?.url;\r\n let high = postState?.raw?.playlistItem?.snippet?.thumbnails?.high?.url;\r\n let medium = postState?.raw?.playlistItem?.snippet?.thumbnails?.medium?.url;\r\n let defaultThumbnail = postState?.raw?.playlistItem?.snippet?.thumbnails?.default?.url;\r\n\r\n const [imageLink, setImageLink] = useState(!!(standard) ? standard : !!(high) ? high : !!(medium) ? medium : defaultThumbnail);\r\n const [altImageLink, setAltImageLink] = useState(post?.media[0]?.children[0]?.thumbnailLink);\r\n const [postId, setPostId] = useState(!!(post?.id) ? post.id : null);\r\n\r\n const handleMounted = async () => {\r\n if (post?.media?.length > 0) {\r\n setMediaIndex(0);\r\n }\r\n }\r\n\r\n const handleSelected = async (e) => {\r\n e.preventDefault();\r\n onSelected(postId);\r\n }\r\n\r\n useEffect(() => {\r\n handleMounted();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setPostState(post);\r\n setPostId(post.id)\r\n\r\n standard = post.raw?.playlistItem?.snippet?.thumbnails?.standard?.url;\r\n high = post.raw?.playlistItem?.snippet?.thumbnails?.high?.url;\r\n medium = post.raw?.playlistItem?.snippet?.thumbnails?.medium?.url;\r\n defaultThumbnail = post.raw?.playlistItem?.snippet?.thumbnails?.default?.url;\r\n\r\n setImageLink(!!(standard) ? standard : !!(high) ? high : !!(medium) ? medium : defaultThumbnail);\r\n setAltImageLink(post.media[0]?.children[0]?.thumbnailLink);\r\n }, [post]);\r\n\r\n\r\n function prevPicture() {\r\n if (mediaIndex > 0) {\r\n let newMedia = mediaIndex;\r\n setMediaIndex(--newMedia);\r\n } else {\r\n setMediaIndex(post?.media.length - 1);\r\n }\r\n }\r\n\r\n function nextPicture() {\r\n if (mediaIndex < post?.media.length - 1) {\r\n let newMedia = mediaIndex;\r\n setMediaIndex(++newMedia);\r\n } else {\r\n setMediaIndex(0);\r\n }\r\n }\r\n\r\n let currentImage = post?.media[mediaIndex];\r\n\r\n let content = post?.content ?? post?.title;\r\n\r\n let src = currentImage?.imageLink ? currentImage?.imageLink : currentImage?.children[0]?.thumbnailLink || currentImage?.thumbnailLink || !!(imageLink) ? imageLink : altImageLink;\r\n\r\n if (!(postId)) {\r\n return <>\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {!!currentImage || imageLink || altImageLink\r\n ? \r\n : <>\r\n }\r\n\r\n {\r\n post?.media.length > 1 ?\r\n (\r\n <>\r\n \r\n {`${post.media.length}`}\r\n \r\n \r\n\r\n ) : null\r\n }\r\n
    \r\n\r\n
    \r\n {content}\r\n
    \r\n\r\n \r\n
    );\r\n}\r\n\r\nShareCard.propTypes = {\r\n userName: PropTypes.string,\r\n profilePicture: PropTypes.node,\r\n post: PropTypes.object.isRequired,\r\n onSelected: PropTypes.func.isRequired,\r\n loggedInUser: PropTypes.object\r\n}\r\n\r\nexport default ShareCard;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import React from \"react\";\r\n\r\nconst CameraIcon = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CameraIcon;","import React from \"react\";\r\nimport { getRequest } from \"../../../sharedUtils/httpUtils\";\r\nimport CameraIcon from \"components/icons/CameraIcon\";\r\n\r\nclass CreateNativePost extends React.Component {\r\n /**\r\n * \r\n * @param {{\r\n * selectedSectors:Array,\r\n * setNativePostMedia:Function,\r\n * setNativePostMediaUrls:Function,\r\n * setNativePostCaption:Function,\r\n * nativePostCaption:string,\r\n * addSector:Function,\r\n * removeSector:Function\r\n * }} props\r\n */\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n content: \"\",\r\n selectedFilesRaw: [],\r\n selectedFilesUrls: [],\r\n currentDisplayImageIndex: 0,\r\n sectors: [],\r\n sectorFilterInput: \"\"\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n let sectors = await this.fetchSectors();\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n this.setState({ sectors })\r\n }\r\n\r\n activateFileInput = () => {\r\n document.getElementById(\"uploadPostMedia\").click();\r\n }\r\n\r\n displaySectors = () => {\r\n return this.state.sectors.map((sector, i) => {\r\n let sectorIsSelected = this.props.selectedSectors.findIndex(sec => sec.sectorId === sector.sectorId);\r\n let selectedClass = sectorIsSelected >= 0 ? \"active\" : \"\";\r\n if (sector.name.toLowerCase().includes(this.state.sectorFilterInput.toLowerCase())) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n\r\n })\r\n }\r\n\r\n displayBanner = () => {\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n fetchSectors = async () => {\r\n let url = `api/Sector/GetSectors`;\r\n let sectors = await getRequest(url);\r\n if (sectors === undefined) {\r\n return [];\r\n }\r\n else {\r\n return sectors;\r\n }\r\n }\r\n\r\n handleInput = (e) => this.props.setNativePostCaption(e.target.value)\r\n\r\n selectMediaToUpload = (e) => {\r\n e.preventDefault();\r\n\r\n let urls = [];\r\n let files = [];\r\n\r\n for (let i = 0; i < e.target.files.length; i++) {\r\n let urlDetails = {\r\n role: e.target.files[i].type.includes(\"image/\") ? 0 : 1,\r\n url: URL.createObjectURL(e.target.files[i])\r\n }\r\n urls.push(urlDetails);\r\n files.push(e.target.files[i]);\r\n }\r\n\r\n this.props.setNativePostMedia(files);\r\n this.props.setNativePostMediaUrls(urls);\r\n\r\n this.setState({ selectedFilesRaw: files, selectedFilesUrls: urls });\r\n e.target.files = null;\r\n e.target.value = null;\r\n }\r\n\r\n render() {\r\n let whiteBg = this.state.selectedFilesUrls.length > 0 ? \"bg-white\" : \"\"\r\n return (\r\n
    \r\n\r\n {this.displayBanner()}\r\n\r\n \r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default CreateNativePost;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{fill:string}} props\r\n */\r\nconst GearIcon = (props) => {\r\n return (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n )\r\n}\r\n\r\nexport default GearIcon;\r\n","import InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport PropTypes from 'prop-types';\r\nimport { Popover, PopoverBody, PopoverHeader, Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport RPModal from \"components/Modal\";\r\nimport { Redirect } from \"react-router-dom\";\r\n//import $ from 'jquery';\r\n//import 'jquery.iframetracker';\r\nimport authService from '../../api-authorization/AuthorizeService';\r\nimport { ClientRequest } from '../../api-social/clientRequest';\r\nimport instagram from './Instagram';\r\nimport tiktok from './TikTok';\r\nimport facebook from './Facebook';\r\nimport youtube from './Youtube';\r\nimport { Sources } from './Sources';\r\nimport PreviewCard from './PreviewCard';\r\nimport ShareCard from './ShareCard';\r\nimport CreateNativePost from \"components/Post/Create/CreateNativePost\";\r\nimport \"../post.css\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\"\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport GearIcon from \"components/icons/GearIcon\"\r\nimport StackTrace from \"stacktrace-js\";\r\n\r\n\r\nconst ENABLE_AUDIT_MESSAGES = false;\r\n\r\nlet _coordinatorLoadStatus = 0;\r\n\r\nexport const Coordinator = (props) => {\r\n const { id, showModal, onModalClosed, loggedInUser } = props;\r\n const [isPreviewMode, setPreviewMode] = useState(false);\r\n const [isReady, setReady] = useState(false);\r\n const [redirect, setRedirect] = useState(false);\r\n const [error, setError] = useState(false);\r\n const history = useHistory();\r\n\r\n const [state, setState] = useState({\r\n sources: {\r\n data: [\r\n {\r\n authorization: null,\r\n name: 'file',\r\n userProfile: {\r\n name: '',\r\n channels: {\r\n data: [\r\n {\r\n id: 0,\r\n name: 'local file system',\r\n posts: {\r\n data: [\r\n { id: '' }\r\n ],\r\n selectedIndex: -1,\r\n isFullyLoaded: false\r\n }\r\n }],\r\n selectedIndex: 0,\r\n isFullyLoaded: false\r\n }\r\n }\r\n },\r\n { name: 'instagram' },\r\n { name: 'facebook' },\r\n { name: 'youtube' },\r\n { name: 'tiktok'},\r\n ],\r\n selectedIndex: 0\r\n }\r\n });\r\n const componentDidUpdateRef = useRef(false);\r\n\r\n const [postCaption, setPostCaption] = useState(\"\");\r\n const [nativePostMedia, setNativePostMedia] = useState([]);\r\n const [nativePostSectors, setNativePostSectors] = useState([]);\r\n const [nativePostMediaUrls, setNativePostMediaUrls] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [showRemoveAccess, setShowRemoveAccess] = useState(false);\r\n //\r\n // audit\r\n /**/\r\n useEffect(() => {\r\n if (!!ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), Coordinator.name, '::showModal', showModal);\r\n }, [showModal]);\r\n useEffect(() => {\r\n if (!!ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), Coordinator.name, '::isReady', isReady);\r\n }, [isReady]);\r\n useEffect(() => {\r\n if (!!ENABLE_AUDIT_MESSAGES)\r\n console.log(new Date(), Coordinator.name, '::state', state);\r\n }, [state]);\r\n // */\r\n\r\n useEffect(() => {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n return () => {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n }, [isPreviewMode]);\r\n\r\n useEffect(() => {\r\n const data = state.sources.data;\r\n const selectedIndex = state.sources.selectedIndex;\r\n setShowRemoveAccess(data[selectedIndex].name.toLowerCase() === \"youtube\" &&\r\n !!(data[selectedIndex].authorization?.access_token) &&\r\n data[selectedIndex].authorization.access_token.length > 0)\r\n }, [state])\r\n\r\n const doLoad = async () => {\r\n let accessToken = await authService.getAccessToken();\r\n if (accessToken == null)\r\n return;\r\n\r\n let headers = { headers: !accessToken ? {} : { Authorization: `Bearer ${accessToken}` } };\r\n let config = await ClientRequest.get('api/post/getCreate', null, false, headers);\r\n if (config == null)\r\n return;\r\n\r\n let igResult = {};\r\n let instagramInit = instagram.init(config?.instagram?.appId, headers)\r\n .then(\r\n (val) => {\r\n igResult = val;\r\n },\r\n (err) => console.error('Initializing Instagram', err)\r\n );\r\n\r\n let fbResult = {};\r\n let facebookInit = facebook.init(config?.facebook?.appId, config?.facebook?.version, headers)\r\n .then(\r\n (val) => fbResult = val,\r\n (err) => console.error('Initializing Facebook', err)\r\n );\r\n\r\n let ytResult = {};\r\n let youtubeInit = youtube.init(config?.youtube?.appId, config?.youtube?.apiKey, headers)\r\n .then(\r\n (val) => ytResult = val,\r\n (err) => console.error('Initializing Youtube', err)\r\n );\r\n\r\n let ttResult = {};\r\n let tiktokInit = tiktok.init(config?.tikTok?.clientKey, headers)\r\n .then(\r\n (val) => ttResult = val,\r\n (err) => console.error('Initializing TikTok', err)\r\n );\r\n\r\n await instagramInit;\r\n await facebookInit;\r\n await youtubeInit;\r\n await tiktokInit;\r\n\r\n let initialState = {\r\n ...headers,\r\n sources: {\r\n data: [\r\n {\r\n authorization: headers.headers,\r\n name: 'file',\r\n loginComplete: true,\r\n userProfile: {\r\n name: '',\r\n channels: {\r\n data: [\r\n {\r\n id: 0,\r\n name: 'local file system',\r\n posts: {\r\n data: [\r\n { id: '' }\r\n ],\r\n selectedIndex: -1,\r\n isFullyLoaded: true\r\n }\r\n }],\r\n selectedIndex: 0,\r\n isFullyLoaded: true\r\n }\r\n }\r\n },\r\n { name: 'instagram', ...igResult, loginComplete: true },\r\n { name: 'facebook', ...fbResult, loginComplete: true },\r\n { name: 'youtube', ...ytResult, loginComplete: true },\r\n { name: 'tiktok', ...ttResult, loginComplete: true },\r\n ],\r\n selectedIndex: 0\r\n }\r\n };\r\n\r\n setState(initialState);\r\n setReady(true);\r\n }\r\n\r\n //\r\n // componentDidMount\r\n //\r\n //useEffect(() => {\r\n // if (!!ENABLE_AUDIT_MESSAGES)\r\n // console.log('handle mounted');\r\n\r\n // let loadStatus = _coordinatorLoadStatus++;\r\n // if (loadStatus === 0) {\r\n // doLoad();\r\n // } else {\r\n // setReady(true);\r\n // }\r\n //}, []);\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n if (!!ENABLE_AUDIT_MESSAGES)\r\n console.log('handle mounted');\r\n\r\n let loadStatus = _coordinatorLoadStatus++;\r\n if (loadStatus === 0) {\r\n doLoad();\r\n } else {\r\n setReady(true);\r\n }\r\n }\r\n }, [props.showModal]);\r\n\r\n //\r\n // componentDidUpdate (after update for DOM work)\r\n //\r\n useEffect(() => {\r\n if (componentDidUpdateRef.current) {\r\n if (!!ENABLE_AUDIT_MESSAGES)\r\n console.log('handle after render');\r\n\r\n\r\n } else {\r\n componentDidUpdateRef.current = true;\r\n }\r\n });\r\n\r\n const encodeHtml = (txt) => {\r\n var el = document.createElement('textarea');\r\n el.innerText = txt\r\n return el.innerHTML;\r\n }\r\n\r\n //const decodeHtml = (html) => {\r\n // var el = document.createElement('textarea');\r\n // el.innerHTML = html;\r\n // return el.value;\r\n //}\r\n\r\n const doLoadChannelsAsync = async (model) => {\r\n let activeSource = getSelectedSource(model);\r\n\r\n if (!(activeSource.api))\r\n return;\r\n if (!(activeSource.userProfile)) return;\r\n let userProfile = activeSource.userProfile;\r\n await activeSource.api.getChannelsFor(userProfile)\r\n .then(\r\n async (val) => {\r\n try {\r\n if (!(userProfile.channels)) {\r\n userProfile.channels = {\r\n data: [],\r\n isFullyLoaded: true,\r\n selectedIndex: -1\r\n };\r\n }\r\n let targetList = userProfile.channels;\r\n let targetData = targetList.data;\r\n let sourceData = val.data;\r\n userProfile.channels.raw = val;\r\n for (let i = 0; i < sourceData.length; i++) {\r\n let item = sourceData[i];\r\n let found = false;\r\n for (let i = 0; i < targetData.length; i++) {\r\n if (item.id === targetData[i].id) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n targetData.push(item);\r\n }\r\n }\r\n\r\n if (targetData.length > 0 && targetList.selectedIndex < 0) {\r\n await doSelectChannelAsync(model, 0);\r\n }\r\n\r\n if (!!(val.paging)) {\r\n targetList.paging = val.paging;\r\n targetList.isFullyLoaded = false;\r\n } else {\r\n targetList.isFullyLoaded = true;\r\n if (!!(targetList.paging)) {\r\n delete targetList.paging;\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n activeSource.authorization = null;\r\n }\r\n },\r\n (err) => {\r\n activeSource.authorization = null;\r\n }\r\n );\r\n };\r\n\r\n const doLoadPostsAsync = async (model) => {\r\n let activeSource = getSelectedSource(model);\r\n\r\n let activeChannel = getSelectedChannel(model);\r\n if (!activeChannel?.posts?.isFullyLoaded) {\r\n await activeSource.api.getPostsFor(activeChannel)\r\n .then(\r\n async (val) => {\r\n try {\r\n if (!(activeChannel.posts)) {\r\n activeChannel.posts = {\r\n data: [],\r\n isFullyLoaded: false,\r\n selectedIndex: -1,\r\n };\r\n }\r\n let targetList = activeChannel.posts;\r\n let targetData = targetList.data;\r\n let sourceData = val.data;\r\n\r\n for (let i = 0; i < sourceData.length; i++) {\r\n let sourceItem = sourceData[i];\r\n targetData.push(sourceItem);\r\n }\r\n\r\n if (!!(val.paging)) {\r\n targetList.paging = val.paging;\r\n } else {\r\n\r\n targetList.isFullyLoaded = true;\r\n if (!!(targetList.paging)) {\r\n delete targetList.paging;\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n activeSource.authorization = null;\r\n setError(true)\r\n let modelString = (activeSource !== undefined && activeSource !== null) ? JSON.stringify(activeSource) : 'activeSource is undefined or null';\r\n\r\n postRequest('/api/ErrorLogger/LogError', { error: ex.toString(), stack: \"Coordinator.jsx doLoadPostsAsync() Try Catch - model - \" + modelString});\r\n }\r\n },\r\n (ex) => {\r\n activeSource.authorization = null;\r\n setError(true);\r\n let modelString = (activeSource !== undefined && activeSource !== null) ? JSON.stringify(activeSource) : 'activeSource is undefined or null';\r\n\r\n postRequest('/api/ErrorLogger/LogError', { error: ex.toString(), stack: \"Coordinator.jsx doLoadPostsAsync() .Then Catch - model - \" + modelString });\r\n }\r\n );\r\n }\r\n };\r\n\r\n const doLoginAsync = async (model) => {\r\n let activeSource = getSelectedSource(model);\r\n activeSource.loginComplete = false;\r\n\r\n await setState({ ...model });\r\n\r\n if (!!(activeSource?.api)) {\r\n await activeSource.api.login()\r\n .then(\r\n (authorization) => {\r\n activeSource.authorization = authorization;\r\n let modelString = (activeSource !== undefined && activeSource !== null) ? JSON.stringify(activeSource) : 'activeSource is undefined or null';\r\n console.log(modelString);\r\n },\r\n (error) => {\r\n activeSource.authorization = null;\r\n setError(true);\r\n\r\n let modelString = (activeSource !== undefined && activeSource !== null) ? JSON.stringify(activeSource) : 'activeSource is undefined or null';\r\n postRequest('/api/ErrorLogger/LogError', { error: error.toString(), stack: \"Coordinator.jsx doLoginAync() .Then Catch - model - \" + modelString });\r\n }\r\n )\r\n if (activeSource.authorization) {\r\n await activeSource.api.getUserProfile()\r\n .then(\r\n (userProfile) => {\r\n activeSource.userProfile = userProfile;\r\n },\r\n (ex) => {\r\n activeSource.userProfile = null;\r\n activeSource.authorization = null;\r\n setError(true);\r\n\r\n let modelString = (activeSource !== undefined && activeSource !== null) ? JSON.stringify(activeSource) : 'activeSource is undefined or null';\r\n postRequest('/api/ErrorLogger/LogError', { error: ex.toString(), stack: \"Coordinator.jsx doLoginAync() .Then Catch - model - \" + modelString });\r\n }\r\n );\r\n }\r\n activeSource.loginComplete = true;\r\n }\r\n }\r\n\r\n const doLogoutAsync = async (model) => {\r\n let activeSource = getSelectedSource(model);\r\n\r\n await activeSource.api.logout()\r\n .then(\r\n async (val) => {\r\n delete activeSource.userProfile;\r\n delete activeSource.authorization;\r\n },\r\n (err) => {\r\n delete activeSource.userProfile;\r\n delete activeSource.authorization;\r\n console.error(err);\r\n }\r\n );\r\n }\r\n\r\n const handleRevokeAccess = async (e) => {\r\n handleLogoutAsync();\r\n }\r\n\r\n const doClearPostSelection = async (model) => {\r\n if (!(model?.sources?.data)) return;\r\n for (let i = 0; i < model.sources.data.length; i++) {\r\n let source = model.sources.data[i];\r\n let userProfile = source.userProfile;\r\n if (!(userProfile?.channels?.data)) continue;\r\n for (let j = 0; j < userProfile.channels.data.length; j++) {\r\n let channel = userProfile.channels.data[j];\r\n if (!(channel?.posts?.data)) continue;\r\n channel.posts.selectedIndex = -1;\r\n }\r\n }\r\n }\r\n\r\n const doSelectChannelAsync = async (model, selectedIndex) => {\r\n let activeSource = getSelectedSource(model);\r\n if (selectedIndex >= activeSource.userProfile.channels.data.length) {\r\n selectedIndex = activeSource.userProfile.channels.data.length - 1;\r\n }\r\n let previousSelectedIndex = activeSource.userProfile.channels.selectedIndex;\r\n if (previousSelectedIndex === selectedIndex) return;\r\n activeSource.userProfile.channels.selectedIndex = selectedIndex;\r\n let activeChannel = getSelectedChannel(model);\r\n if (!(activeChannel === activeSource.userProfile.channels.data[selectedIndex])) {\r\n }\r\n if (!(activeChannel?.posts)) {\r\n await doLoadPostsAsync(model);\r\n }\r\n doClearPostSelection(model);\r\n };\r\n\r\n const doSelectPost = async (model, selectedIndex) => {\r\n let activeChannel = getSelectedChannel(model);\r\n activeChannel.posts.selectedIndex = selectedIndex;\r\n\r\n let activePost = getSelectedPost(state);\r\n setPostCaption(activePost.content);\r\n setPreviewMode(selectedIndex >= 0);\r\n }\r\n\r\n const doSelectSourceAsync = async (model, selectedIndex) => {\r\n let sources = model.sources;\r\n if (selectedIndex !== sources.selectedIndex) {\r\n sources.selectedIndex = selectedIndex;\r\n doClearPostSelection(model);\r\n\r\n let activeSource = getSelectedSource(model);\r\n if (!(activeSource?.userProfile)) {\r\n await doLoginAsync(model);\r\n }\r\n if (!!(activeSource?.userProfile) && !(activeSource?.userProfile?.channels)) {\r\n await doLoadChannelsAsync(model);\r\n }\r\n } else {\r\n // not authorized\r\n if ((state.sources.data[selectedIndex].api?.isAuthorized ?? true) == false) {\r\n await doLoginAsync(model);\r\n await doLoadChannelsAsync(model);\r\n }\r\n }\r\n }\r\n\r\n const getSelectedChannel = (model) => {\r\n let selectedChannel = null;\r\n let selectedUserProfile = getSelectedUserProfile(model);\r\n if (!!(selectedUserProfile)) {\r\n let channels = selectedUserProfile.channels;\r\n if (!!channels) {\r\n let i = channels.selectedIndex;\r\n if (i >= 0) {\r\n selectedChannel = channels.data[i];\r\n }\r\n }\r\n }\r\n return selectedChannel;\r\n };\r\n\r\n const getSelectedPost = (model) => {\r\n let selectedPost = null;\r\n let activeChannel = getSelectedChannel(model);\r\n if (!!(activeChannel)) {\r\n let posts = activeChannel.posts;\r\n if (!!posts) {\r\n let i = posts.selectedIndex;\r\n if (i >= 0) {\r\n selectedPost = posts.data[i];\r\n }\r\n }\r\n }\r\n return selectedPost;\r\n }\r\n\r\n const getSelectedSource = (model) => {\r\n let selectedSource = null;\r\n if (!!(model?.sources)) {\r\n let sourceIndex = model.sources.selectedIndex;\r\n if (sourceIndex >= 0) {\r\n selectedSource = model.sources.data[sourceIndex];\r\n }\r\n }\r\n return selectedSource;\r\n };\r\n\r\n const getSelectedUserProfile = (model) => {\r\n let selectedSource = getSelectedSource(model);\r\n return selectedSource?.userProfile;\r\n };\r\n\r\n const handleLoadPostsAsync = async () => {\r\n let newState = { ...state };\r\n await doLoadPostsAsync(newState);\r\n setState(newState);\r\n }\r\n\r\n const handleLoginAsync = async (e) => {\r\n let newState = { ...state };\r\n await doLoginAsync(newState);\r\n await handleSelectSourceAsync(state.sources.selectedIndex);\r\n setState(newState);\r\n }\r\n\r\n const handleLogoutAsync = async (e) => {\r\n let newState = { ...state };\r\n await doLogoutAsync(newState);\r\n setState(newState);\r\n }\r\n\r\n const handleModalClosed = async () => {\r\n let newState = { ...state };\r\n\r\n // clear channels\r\n if (newState.sources.data[1].userProfile != null) {\r\n newState.sources.data[1].userProfile.channels = null;\r\n }\r\n\r\n if (newState.sources.data[2].userProfile != null) {\r\n newState.sources.data[2].userProfile.channels = null;\r\n }\r\n\r\n if (newState.sources.data[3].userProfile != null) {\r\n newState.sources.data[3].userProfile.channels = null;\r\n }\r\n\r\n if (newState.sources.data[4].userProfile != null) {\r\n newState.sources.data[4].userProfile.channels = null;\r\n }\r\n\r\n setState(newState);\r\n\r\n _coordinatorLoadStatus = 0;\r\n onModalClosed();\r\n }\r\n\r\n const handleSavePost = async () => {\r\n const route = '/api/post/insertSocialPost';\r\n let selectedPost = { ...getSelectedPost(state) };\r\n selectedPost.content = postCaption;\r\n\r\n selectedPost.raw = JSON.stringify(selectedPost.raw);\r\n\r\n if (selectedPost.embed !== undefined) {\r\n selectedPost.embeddedHtml = selectedPost.embed;\r\n delete selectedPost.embed;\r\n }\r\n setLoading(true);\r\n let data = await postRequest(route, selectedPost);\r\n _coordinatorLoadStatus = 0;\r\n setPreviewMode(!isPreviewMode);\r\n setLoading(false);\r\n\r\n history.push(`/Post/PostPageAuthor/${data.shareCode}`, { state: { justCreated: true } });\r\n }\r\n\r\n const handleSaveNativePost = async () => {\r\n //todo: make post\r\n let payload = {\r\n content: postCaption,\r\n status: 0,\r\n type: 3,\r\n user: {\r\n id: loggedInUser.id\r\n }\r\n }\r\n\r\n let sectorModels = [];\r\n for (let i = 0; i < nativePostSectors.length; i++) {\r\n nativePostSectors[i].id = nativePostSectors[i].sectorId;\r\n let model = { sector: nativePostSectors[i] };\r\n sectorModels.push(model);\r\n }\r\n\r\n payload.sectors = sectorModels;\r\n\r\n let url = `api/Post/CreateNativePost`;\r\n\r\n setLoading(true);\r\n\r\n let createdPost = await postRequest(url, payload);\r\n\r\n let postId = createdPost.id;\r\n\r\n //todo: upload post media\r\n let formData = new FormData();\r\n\r\n for (let i = 0; i < nativePostMedia.length; i++) {\r\n formData.append(`postImage${i}`, nativePostMedia[i])\r\n }\r\n\r\n let mediaUploadUrl = `api/Locker/uploadMedia?postId=${postId}&postUserId=${createdPost.user.id}`;\r\n let newProperties = await postRequest(mediaUploadUrl, formData, null, false);\r\n\r\n if (newProperties != null) {\r\n _coordinatorLoadStatus = 0;\r\n setPreviewMode(!isPreviewMode);\r\n history.push(`/Post/PostPageAuthor/${createdPost.shareCode}`, { state: { justCreated: true }});\r\n } else {\r\n let url = `/api/Locker/DeleteLocker`;\r\n await postRequest(url, createdPost);\r\n setError(true);\r\n }\r\n\r\n _coordinatorLoadStatus = 0;\r\n setLoading(false); \r\n }\r\n\r\n const handleSelectChannelAsync = async (e) => {\r\n e.preventDefault();\r\n let selectedIndex = parseInt(e.target.id.replace('channel-', ''));\r\n let newState = { ...state };\r\n await doSelectChannelAsync(newState, selectedIndex);\r\n setState(newState);\r\n }\r\n\r\n const handleSelectPostAsync = (id) => {\r\n let newState = { ...state };\r\n let i = -1;\r\n var posts = getSelectedChannel(newState)?.posts;\r\n if (!!posts) {\r\n for (let j = 0; j < posts.data.length; j++) {\r\n let post = posts.data[j];\r\n if (post.id === id) {\r\n i = j;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n doSelectPost(newState, i);\r\n setState(newState);\r\n }\r\n\r\n const handleSelectSourceAsync = async (selectedIndex) => {\r\n let newState = { ...state };\r\n await doSelectSourceAsync(newState, selectedIndex);\r\n setState(newState);\r\n }\r\n\r\n const handleTogglePreview = (e) => {\r\n setError(false);\r\n setPreviewMode(!isPreviewMode);\r\n setNativePostMedia([]);\r\n }\r\n\r\n const removeNativePostSector = (i) => {\r\n let updated = [...nativePostSectors];\r\n updated.splice(i, 1)\r\n setNativePostSectors(updated);\r\n }\r\n\r\n const addNativePostSector = (sector) => {\r\n let updated = [...nativePostSectors];\r\n updated.push(sector);\r\n setNativePostSectors(updated);\r\n }\r\n\r\n const handleSelectNativePostMedia = (files) => {\r\n setNativePostMedia(files);\r\n setPreviewMode(true);\r\n }\r\n //\r\n // render\r\n //\r\n let activeChannel = getSelectedChannel(state);\r\n let activePost = getSelectedPost(state);\r\n let activeSource = getSelectedSource(state);\r\n let activeUserProfile = activeSource?.userProfile;\r\n\r\n let clientId = !id ? 'post' : id;\r\n let hideModal = (showModal === undefined || showModal === null) ? false : !showModal;\r\n let searchClientId = `${clientId}-search`;\r\n let previewClientId = `${clientId}-preview`;\r\n\r\n let channels = activeUserProfile?.channels;\r\n let channelsData = channels?.data;\r\n\r\n let sources = state?.sources;\r\n\r\n let userImage = activeUserProfile?.imageUrl;\r\n\r\n const renderChannels = () => {\r\n let retVal = <>;\r\n if (!!channelsData && channelsData.length > 1) {\r\n retVal = <>\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n channelsData.map((channel, i) => {\r\n return {channel.name};\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n ;\r\n }\r\n return retVal;\r\n }\r\n\r\n const renderGear = () => {\r\n let retVal = <>;\r\n if (showRemoveAccess) {\r\n retVal = <>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ;\r\n }\r\n return retVal;\r\n }\r\n\r\n const renderPostCards = (postData) => {\r\n return (isPreviewMode\r\n ? postData.map((post, i) => {\r\n return { setPostCaption(val); }}\r\n />\r\n })\r\n : postData.map((post, i) => {\r\n return \r\n })\r\n );\r\n }\r\n\r\n const renderPreviewPost = () => {\r\n let activeSource = getSelectedSource(state);\r\n let activePost = getSelectedPost(state);\r\n if (activePost) {\r\n let postsData = [activePost];\r\n\r\n var platformName = activeSource?.name ?? '';\r\n if (platformName === 'instagram' ||\r\n platformName === 'facebook' ||\r\n platformName === 'youtube' ||\r\n platformName === 'tiktok') {\r\n return (renderPostCards(postsData));\r\n }\r\n return <>;\r\n } else {\r\n if (nativePostMediaUrls.length > 0) {\r\n\r\n let mediaItems = nativePostMediaUrls.map((val) => {\r\n if (val.role === 1) {\r\n return { videoLink: val.url }\r\n }\r\n else {\r\n return { imageLink: val.url }\r\n }\r\n\r\n });\r\n\r\n let postPreviewData = {\r\n user: props.loggedInUser,\r\n media: mediaItems\r\n };\r\n\r\n return setPostCaption(val)}\r\n post={postPreviewData}\r\n loggedInUser={props.loggedInUser}\r\n deviceSize={props.deviceSize}\r\n captionValue={postCaption}\r\n />\r\n }\r\n }\r\n };\r\n\r\n const renderShareCards = (shareCards) => {\r\n return shareCards && shareCards.map((shareCard, i) => {\r\n return (
    {shareCard}
    )\r\n });\r\n }\r\n\r\n const renderPosts = () => {\r\n let activeSource = getSelectedSource(state);\r\n let activeChannel = getSelectedChannel(state);\r\n let postsData = activeChannel?.posts?.data;\r\n\r\n let platformName = activeSource?.name ?? '';\r\n\r\n if (platformName === \"instagram\" ||\r\n platformName === \"facebook\" ||\r\n platformName === \"youtube\" ||\r\n platformName === \"tiktok\") {\r\n\r\n let shareCards = !!postsData && renderPostCards(postsData);\r\n\r\n return (\r\n \r\n
    \r\n {renderShareCards(shareCards)}\r\n
    \r\n\r\n );\r\n } \r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n const renderPreviewModal = () => {\r\n let retVal = <>;\r\n let isSocialPost = [\"instagram\", \"facebook\", \"youtube\", \"tiktok\"].includes(activeSource?.name);\r\n if (isReady && !hideModal) {\r\n retVal = (\r\n } ignoreClickAway={true}>\r\n {renderPreviewPost()}\r\n \r\n \r\n {!error ?\r\n \r\n Next\r\n : null}\r\n \r\n \r\n \r\n );\r\n }\r\n return retVal;\r\n }\r\n\r\n const renderRedirect = () => {\r\n let retVal = <>;\r\n if (!!redirect) {\r\n retVal = ;\r\n\r\n const fireCloseModal = async () => {\r\n setTimeout(() => onModalClosed(), 10);\r\n }\r\n }\r\n return retVal;\r\n }\r\n\r\n const renderSearchModal = () => {\r\n let retVal = <>;\r\n let isSocialPost = [\"instagram\", \"facebook\", \"twitter\", \"tiktok\"].includes(activeSource?.name);\r\n if (!hideModal) {\r\n retVal = (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Share a Post

    \r\n
    \r\n {renderChannels()}\r\n {renderGear()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    {\r\n if (e.target === e.currentTarget) {\r\n setPreviewMode(false);\r\n }\r\n }}>\r\n
    \r\n \r\n
    \r\n
    \r\n {renderPosts()}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n return retVal;\r\n }\r\n\r\n return <>\r\n
    \r\n {renderPreviewModal()}\r\n {renderSearchModal()}\r\n {error ?\r\n { setError(false); } }>\r\n \r\n Error\r\n \r\n \r\n Sorry an unexpected error occurred. Please try again.\r\n \r\n \r\n : null}\r\n \r\n}\r\n\r\nCoordinator.propTypes = {\r\n id: PropTypes.string,\r\n showModal: PropTypes.bool,\r\n onModalClosed: PropTypes.func.isRequired\r\n};","import React, { useState } from 'react';\r\nimport { Coordinator } from 'components/Post/Create/Coordinator'\r\n\r\nexport const Create = () => {\r\n const [showModal, setShowModal] = useState(false);\r\n\r\n const handleHideModal = () => {\r\n setShowModal(false);\r\n }\r\n\r\n const handleShowModal = () => {\r\n setShowModal(true);\r\n }\r\n\r\n return <>\r\n \r\n \r\n ;\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Redirect } from \"react-router\";\r\nimport { debounce } from \"throttle-debounce\"\r\n\r\nimport FormInputField from \"components/FormInputField\";\r\nimport MentionsInputTextArea from \"components/MentionsInputWrappers/MentionsInputTextArea\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\nimport { postRequest, getRequest } from \"sharedUtils/httpUtils\";\r\nimport { Create } from \"../../views/Post/Create\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{closeModal:Function}} props\r\n */\r\nconst CreateLocker = (props) => {\r\n const [formState, setFormState] = useState({ name: \"\", description: \"\", interests: [] });\r\n const [tagInput, setTagInput] = useState(\"\");\r\n const [tagSuggestions, setTagSuggestions] = useState([]);\r\n const [finishedCreating, setFinishedCreating] = useState(false);\r\n const [lockerShareCode, setLockerShareCode] = useState(\"\");\r\n const [isCreatingLocker, setIsCreatingLocker] = useState(false);\r\n const [lockerCreateMessage, setLockerCreateMessage] = useState({showMessage:false,messageText:\"\"});\r\n\r\n const debounceFunc = React.useCallback(debounce(300, (query, callback) => fetchUsers(query, callback)), []);\r\n\r\n useEffect(() => {\r\n fetchTags();\r\n }, [])\r\n\r\n function addTag(sector) {\r\n let newTags = [...formState.interests];\r\n newTags.push(sector);\r\n let newFormState = { ...formState, interests: newTags };\r\n setTagInput(\"\");\r\n setFormState(newFormState);\r\n }\r\n\r\n async function createLocker() {\r\n if (formState.description === undefined || formState.description.length === 0 || formState.name === undefined || formState.name.length === 0) {\r\n setLockerCreateMessage({ showMessage: true, messageText: \"please add a description and name\" });\r\n setTimeout(() => {\r\n setLockerCreateMessage({ showMessage: false, messageText: \"\" });\r\n }, 2500);\r\n return null\r\n }\r\n else {\r\n setIsCreatingLocker(true);\r\n let userSectorModels = formState.interests.map((sec) => {\r\n return {\r\n sector: { id: sec.sectorId, name: sec.name }\r\n }\r\n });\r\n\r\n let payload = {\r\n content: formState.description,\r\n title: formState.name,\r\n sectors: userSectorModels,\r\n platformTypeId: 0\r\n };\r\n\r\n let locker = await postRequest(`/api/Locker/CreateLocker`, payload);\r\n setFormState({ name: \"\", description: \"\", interests: [] });\r\n\r\n setIsCreatingLocker(false);\r\n\r\n if (locker === undefined) {\r\n setLockerShareCode(\"\");\r\n setFinishedCreating(false);\r\n }\r\n else {\r\n setLockerShareCode(locker.shareCode);\r\n setFinishedCreating(true);\r\n //props.closeModal();\r\n //history.push(`/Locker/NewLockerPage/${locker.shareCode}`);\r\n }\r\n }\r\n\r\n }\r\n\r\n function cancel() {\r\n setFormState({ name: \"\", description: \"\", interests: [] })\r\n props.closeModal();\r\n }\r\n\r\n async function fetchTags() {\r\n let tags = await getRequest(`/api/Sector/GetSectors`);\r\n tags = tags.sort((a, b) => { if (a.name < b.name) return -1; });\r\n setTagSuggestions(tags);\r\n return tags;\r\n }\r\n\r\n async function fetchUsers(query,callback) {\r\n if (!query || query.length < 1) {\r\n return;\r\n }\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n let response = await getRequest(url);\r\n let mappedResults;\r\n\r\n if (response === undefined) {\r\n mappedResults = []\r\n }\r\n else {\r\n mappedResults = response.map(user => ({ display: user.userName, id: user.id, name: user.name }))\r\n }\r\n callback(mappedResults)\r\n }\r\n\r\n async function handleInput(e) {\r\n let input = { [e.target.name]: e.target.value };\r\n setFormState({ ...formState, ...input });\r\n }\r\n \r\n async function handleInterestsInput(e) {\r\n setTagInput(e.target.value)\r\n }\r\n\r\n function mapTagSuggestionsAlternate() {\r\n if (tagSuggestions?.length > 0) {\r\n let filtered = tagSuggestions.filter(tag => tag.name.toLowerCase().includes(tagInput.toLowerCase()));\r\n\r\n return filtered.map((suggestion, i) => {\r\n let alreadySelected = formState.interests.findIndex((interest) => interest.sectorId === suggestion.sectorId);\r\n\r\n if (alreadySelected >= 0) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n\r\n })\r\n }\r\n }\r\n\r\n function removeTag(location) {\r\n let newTags = [...formState.interests];\r\n newTags.splice(location, 1);\r\n let newFormState = { ...formState, interests: newTags }\r\n setTagInput(\"\");\r\n setFormState(newFormState);\r\n }\r\n\r\n let createButtonDisabled = (formState.name.length === 0 || formState.description.length === 0) ? true : false;\r\n\r\n return (\r\n
    \r\n {\r\n finishedCreating === true && lockerShareCode.length > 0 ? (\r\n \r\n ) : \r\n }\r\n
    \r\n\r\n
    Create Locker
    \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n setFormState({ ...formState, description: e.target.value })}\r\n style={{ backgroundColor: \"#e9ecef\",height:\"auto\" }}\r\n value={formState.description}\r\n data={debounceFunc}\r\n placeholder=\"Tell us about your locker and the purpose of its contents\"\r\n className=\"caption-textarea\"\r\n />\r\n\r\n \r\n\r\n
    \r\n
    \r\n {mapTagSuggestionsAlternate()}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n Next\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default CreateLocker;","import React from \"react\";\r\nimport Modal from \"components/Modal\";\r\n//import ModalHeader from \"components/ModalHeader\";\r\nimport CreateLockerForm from \"components/CreateLocker/CreateLockerForm\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleCreateLockerModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nconst CreateLockerModal = (props) => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { showModal: storeState.modalReducer.showCreateLockerModal }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleCreateLockerModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(CreateLockerModal);","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\n\r\n\r\nclass FollowersFollowingRender extends React.Component {\r\n follow = (userId, followUnfollow) => {\r\n let followersOrFollowing = this.props.followersOrFollowing;\r\n let users = this.props.users;\r\n\r\n users.forEach((user, i) => {\r\n if (user.id === userId) {\r\n let isFollowingChange = !user?.isFollowing;\r\n user.isFollowing = isFollowingChange;\r\n }\r\n })\r\n\r\n this.props.setUsers(users);\r\n\r\n let url = followUnfollow === \"follow\" ? \"api/Account/Follow\" : \"api/Account/Unfollow\";\r\n url += `?id=${userId}`;\r\n\r\n let req = getRequest(url);\r\n\r\n if (this.props.followersOrFollowing !== \"creators\" && !this.props.fetchFollowing) this.props.toggleFetchFollowing();\r\n }\r\n\r\n mapUsers = () => {\r\n let users = !!(this.props.users) ? this.props.users : [];\r\n \r\n return users?.map((user, i) => {\r\n let buttonText = user.isFollowing === true ? \"Unfollow -\" : \"Follow +\";\r\n return (\r\n
    \r\n \r\n\r\n {\r\n user.proStatusId === 1 && this.props.loggedInUser?.id !== user.id ?\r\n : <>\r\n }\r\n
    \r\n )\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    {this.props.heading}
    \r\n \r\n {this.mapUsers()}\r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default FollowersFollowingRender;\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport FollowersFollowingRender from \"./FollowersFollowingRender\";\r\nimport { toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\nclass FollowersFollowingList extends React.Component {\r\n\r\n /**\r\n * \r\n * @param {{loggedInUser:object,userId:any,followersOrFollowing:string}} props\r\n */\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n followers: [],\r\n following: [],\r\n finishedFetchingFollowers: false,\r\n finishedFetchingFollowing: false\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.loggedInUser !== undefined && this.props.userId !== null) {\r\n if (this.props.followersOrFollowing === \"followers\") {\r\n let users = await this.fetchFollowers(this.props.userId, 0, 10);\r\n this.setState({ followers: users });\r\n }\r\n else if (this.props.followersOrFollowing === \"following\") {\r\n let users = await this.fetchFollowing(this.props.userId, 0, 10)\r\n this.setState({ following: users });\r\n }\r\n }\r\n }\r\n\r\n fetchFollowers = async (userId, skip, take) => {\r\n var users = await getRequest(`api/Account/GetFollowers?userId=${userId}&skip=${skip}&take=${take}`);\r\n return users;\r\n }\r\n\r\n fetchFollowing = async (userId, skip, take) => {\r\n var users = await getRequest(`api/Account/GetLeaders?userId=${userId}&skip=${skip}&take=${take}`);\r\n return users;\r\n }\r\n\r\n fetchMore = async () => {\r\n let { followersOrFollowing } = this.props;\r\n let { followers, following } = this.state;\r\n let users;\r\n if (followersOrFollowing === \"followers\") {\r\n users = await this.fetchFollowers(this.props.userId, followers.length, 10);\r\n if (users === undefined || users === null || users.length === 0) {\r\n this.setState({ finishedFetchingFollowers: true });\r\n }\r\n else {\r\n let updated = [...this.state.followers, ...users];\r\n this.setState({ followers: updated })\r\n }\r\n }\r\n\r\n else {\r\n users = await this.fetchFollowing(this.props.userId, following.length, 10);\r\n if (users === undefined || users === null || users.length === 0) {\r\n this.setState({ finishedFetchingFollowing: true });\r\n }\r\n else {\r\n let updated = [...this.state.following, ...users];\r\n this.setState({ following: updated })\r\n }\r\n }\r\n }\r\n\r\n setUsers = (users) => {\r\n if (this.props.followersOrFollowing === \"followers\") {\r\n this.setState({ followers: users });\r\n }\r\n else {\r\n this.setState({ following: users });\r\n }\r\n }\r\n\r\n render() {\r\n\r\n let { followersOrFollowing } = this.props;\r\n\r\n\r\n return (\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n let result = { fetchFollowing: storeState.modalReducer.fetchFollowing };\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFetchFollowing })(FollowersFollowingList);\r\n","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport FollowersFollowingRender from \"./FollowersFollowingRender\";\r\nimport { toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\n\r\nclass CreatorsList extends React.Component {\r\n\r\n /**\r\n * \r\n * @param {{loggedInUser:object,userId:any,followersOrFollowing:string}} props\r\n */\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n creators: [],\r\n finishedFetchingCreators: false,\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n if (true) {\r\n let users = await this.fetchCreators(this.props.productId, !!(this.props.userId) ? this.props.userId : -1, 0, 10);\r\n this.setState({ creators: users });\r\n }\r\n }\r\n\r\n fetchCreators = async (productId, userId, skip, take) => {\r\n var users = await getRequest(`api/Account/GetCreators?productId=${productId}&userId=${userId}&skip=${skip}&take=${take}`);\r\n return users;\r\n }\r\n\r\n fetchMore = async () => {\r\n let { creators } = this.state;\r\n let users;\r\n users = await this.fetchCreators(this.props.productId, this.props.userId, creators.length, 10);\r\n if (users === undefined || users === null || users.length === 0) {\r\n this.setState({ finishedFetchingCreators: true });\r\n }\r\n else {\r\n let updated = [...this.state.creators, ...users];\r\n this.setState({ creators: updated })\r\n }\r\n }\r\n\r\n setUsers = (users) => {\r\n this.setState({ creators: users });\r\n }\r\n\r\n render() {\r\n\r\n let { followersOrFollowing } = this.props;\r\n let heading = \"Recommended by\";\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n let result = { fetchFollowing: storeState.modalReducer.fetchFollowing };\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFetchFollowing })(CreatorsList);\r\n","import React from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport FollowersFollowingList from \"components/FollowersFollowing/FollowersFollowingList\";\r\nimport CreatorsList from \"components/FollowersFollowing/CreatorsList\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleFollowersFollowingModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object, userId:any,followersFollowing:string, setLoggedInUser:Function}} props\r\n */\r\nconst FollowersFollowingModal = (props) => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n if (props.followersFollowing === \"creators\") {\r\n\r\n return (\r\n props.toggleModal(null)}>\r\n \r\n \r\n )\r\n }\r\n return (\r\n props.toggleModal(null)}>\r\n \r\n \r\n\r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.followersFollowing.showFollowersFollowing,\r\n userId: storeState.modalReducer.followersFollowing.userId,\r\n productId: storeState.modalReducer.followersFollowing.productId,\r\n followersFollowing: storeState.modalReducer.followersFollowing.followersFollowing\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleFollowersFollowingModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(FollowersFollowingModal);","import React from \"react\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{width:number,height:number}} props\r\n */\r\nconst CommentIconPlusSign = (props) => {\r\n return (\r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default CommentIconPlusSign;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport CommentIcon from \"components/icons/CommentIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport CommentIconPlusSign from \"components/icons/CommentIconPlusSign\";\r\nimport SaleIcon from \"./icons/SaleIcon\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * product:{coupon:string, id:Number,product:{imageUrl:string, name:string}}\r\n * productKey:Number,\r\n * post:object\r\n * showDescription:Function,\r\n * comment:string,\r\n * isEditing:boolean,\r\n * parentModal:{type:string,shareCode:string,parentState:object}\r\n * }} props\r\n */\r\nconst PostPageProduct = (props) => {\r\n function displayIcon() {\r\n if (props.locker && props.comment?.length > 0) {\r\n return (\r\n 0 ? \"45px\" : \"\", cursor: \"pointer\", paddingRight: \"2px\" }} href=\"/\" className=\"product-comment-locker-page position-absolute\" onClick={(e) => {\r\n e.preventDefault()\r\n props.showDescription(props.productKey)\r\n }}>\r\n \r\n \r\n )\r\n }\r\n else if (props.post?.type === 2 && props.comment?.length > 0) {\r\n return (\r\n {\r\n e.preventDefault()\r\n props.showDescription(props.productKey)\r\n }}>\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (!props.saleIconNever && sale && [\"sm\", \"md\"].includes(props.deviceSize)) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let url = \"/Product/ProductPage/\" + props.product.shareCode;\r\n url += props.brandEmbed ? \"?r=0&b=1&showBrandNav=true\" : \"?r=1\";\r\n //url = props.disableRedirects ? \"https://\" + window.location.host + \"/browse\" : url;\r\n\r\n return (\r\n <>\r\n {renderSaleOverlay(props.product.sale)}\r\n \r\n \r\n \r\n\r\n {displayIcon()}\r\n\r\n {/*props.post?.type === 2 && props.comment?.length > 0 ?\r\n ( {\r\n e.preventDefault()\r\n props.showDescription(props.productKey)\r\n }}>\r\n {props.deviceSize === \"sm\" ? : }\r\n ) : null\r\n */}\r\n \r\n )\r\n}\r\n\r\nexport default connect(null, { toggleProductPageModal })(PostPageProduct);","let blankFeedPost = {\r\n id: 0,\r\n content: \"\",\r\n postedOn: \"\",\r\n shareCode: \"\",\r\n title: \"\",\r\n status: 1,\r\n type: 1,\r\n likedByUser: false,\r\n savedByUser:false,\r\n user: {\r\n name: \"\",\r\n imageUrl: \"\",\r\n userName: \"\",\r\n merchantProducts: {\r\n values: []\r\n }\r\n },\r\n proStatusId: 1,\r\n productItems: {\r\n $values: [\r\n {\r\n comment: \"\",\r\n id: 0,\r\n ordinal: 0,\r\n type: 1,\r\n userMerchantProduct: {\r\n id: 0,\r\n product: {\r\n merchant: {\r\n id: 0,\r\n name: \"\",\r\n hostname: \"\",\r\n integrated: false\r\n },\r\n product: {\r\n id: 0,\r\n manufacturer: {\r\n id: 0,\r\n name: \"\"\r\n },\r\n productCode: \"\"\r\n },\r\n name: \"\",\r\n description: \"\",\r\n url: \"\",\r\n imageUrl: \"\",\r\n merchantProductCode: \"\",\r\n price: 0\r\n },\r\n coupon: \"\"\r\n }\r\n }\r\n ]\r\n },\r\n likes: {\r\n values: []\r\n },\r\n comments: {\r\n values: []\r\n },\r\n commentCount: 0,\r\n likeCount:0,\r\n properties: {\r\n $type: \"\",\r\n $values: [\r\n {\r\n $id: \"\",\r\n userPost: {\r\n $ref: \"\"\r\n },\r\n role: 0,\r\n reference: \"\",\r\n id: 0\r\n }\r\n ]\r\n },\r\n flags: {\r\n values: []\r\n },\r\n sectors: {\r\n $values: []\r\n }\r\n}\r\n\r\nexport default blankFeedPost","import React from \"react\";\r\nimport { Link, NavLink, Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport ProfileInfoCard from \"components/ProfileInfoCard\";\r\nimport ShareBar from \"components/Share/ShareBar\";\r\nimport CommentForm from \"components/CommentForm\";\r\nimport CommentTile from \"components/CommentTile\";\r\nimport PostBanner from \"components/PostBanner\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport Modal from \"components/Modal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport UserTileSmall from \"components/UserTileSmall\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\nimport BlueTickIconXY from \"../../components/icons/BlueTickIconXY\";\r\n\r\nimport { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport ThumbsUpIcon from \"components/icons/ThumbsUpGeneric\";\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { getProperties } from \"sharedUtils/postFunctions\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\n//import createHistory from \"history/createBrowserHistory\";\r\nimport { getPostShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass PostPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMessageDetails: false,\r\n likes: {\r\n count: 0,\r\n likedByUser: false\r\n },\r\n loggedInUser: null,\r\n isAuthorized: false,\r\n commentInput: \"\",\r\n shareCode: \"\",\r\n post: blankFeedPost,\r\n showDescriptionModal: false,\r\n selectedProduct: 0,\r\n isLoading: true,\r\n loadingComments: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n savedByUser: false,\r\n collapsed: true,\r\n contentStyle: this.notOverflowedContentStyle,\r\n contentOverflowed: false,\r\n maxHeight: \"41px\",\r\n }\r\n }\r\n\r\n commentsTextArea = React.createRef();\r\n contentRef = React.createRef();\r\n bioRef = React.createRef();\r\n titleRef = React.createRef();\r\n picRef = React.createRef();\r\n userTileRef = React.createRef();\r\n editPostButtonRef = React.createRef();\r\n\r\n collapsedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n expandedContentStyle = { marginTop: \"0em\" };\r\n\r\n async componentDidMount() {\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getPostShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.fetchPost(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ post: \"notFound\", isLoading: false, shareCode, shareLink })\r\n } else {\r\n this.setState({ post: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.fetchPost(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n let isFollowing = await this.fetchIsFollowing(data.user?.id);\r\n this.setState({ post: data, isFollowing, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n this.fetchComments(0, 3);\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ post: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n this.setState({ isFollowing });\r\n if (post.comments.length === 0) {\r\n this.fetchComments(0, 3);\r\n }\r\n }\r\n }\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }\r\n\r\n\r\n const savedByUser = this.props?.match?.params?.post?.savedByUser;\r\n this.setState({ savedByUser });\r\n\r\n // THIS IS LOGIC TO CALCULATE THE HEIGHT OF THE CONTENT

    FOR 'SEE MORE'\r\n // FOR DEVICE SIZES THAT ARE NOT SMALL - it determines if height of ProfileInfoCard \r\n // is less than the expanded < p > and then puts it in contentOverflowed as well as \r\n // calculate the height of the of the 'SEE MORE'

    based on it's expanded size vs.\r\n // the size of the ProfileInfoCard and applies it to the styling.\r\n\r\n // SMALL DEVICES SET HEIGHT TO 2 LINES OF TEXT WHICH IS ~40px\r\n let contentOverflowed = false;\r\n\r\n const picHeight = this.picRef?.current?.offsetHeight;\r\n const userTileHeight = this.userTileRef?.current?.offsetHeight;\r\n const editButtonHeight = this.editPostButtonRef?.current?.offsetHeight;\r\n\r\n if (this.props.deviceSize === \"sm\" && this.contentRef?.current?.offsetHeight > 40) {\r\n this.setState({ contentOverflowed: true, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.setState({ contentStyle: this.expandedContentStyle });\r\n const bioHeight = this.bioRef?.current?.offsetHeight;\r\n const contentHeight = this.contentRef?.current?.offsetHeight;\r\n const titleHeight = this.titleRef?.current?.offsetHeight;\r\n\r\n this.setState({ contentStyle: this.notOverflowedContentStyle })\r\n\r\n const largeScreenContentHeight = editButtonHeight == undefined && editButtonHeight == null ? userTileHeight + titleHeight : userTileHeight + editButtonHeight + titleHeight;\r\n\r\n if (this.props.deviceSize !== \"sm\" && picHeight < largeScreenContentHeight) {\r\n const overflow = largeScreenContentHeight - picHeight;\r\n const maxHeight = contentHeight - overflow > 80 ? Math.floor((contentHeight - overflow) / 20) * 20 - 60 + \"px\" : \"41px\";\r\n\r\n this.setState({ contentOverflowed: true, maxHeight, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.collapsedContentStyle = { marginTop: \"0em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n this.notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n this.expandedContentStyle = { marginTop: \"0em\" };\r\n\r\n if (this.state.contentOverflowed) {\r\n this.setState({ contentStyle: this.collapsedContentStyle });\r\n } else if (!contentOverflowed && this.props.deviceSize !== \"sm\") {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n }\r\n }\r\n\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = !!(this.props.location?.state?.destinationState?.params?.post) ? this.props.location.state.destinationState?.params?.post : null;\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.fetchPost(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n else {\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n\r\n await this.fetchLikes(shareCode, isAuthorized);\r\n await this.fetchComments(0, 25);\r\n this.setState({ isFollowing });\r\n }\r\n }\r\n \r\n \r\n\r\n this.setState({ post, isLoading:false });\r\n }\r\n }\r\n\r\n removeCommentUsername = text => {\r\n const regex = /#!\\^.*?\\)\\)\\)/g;\r\n return text.replace(regex, '');\r\n }\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ isFollowing: data });\r\n }\r\n\r\n // obsolete\r\n fetchLikes = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? `/api/post/getLikesAuthorized` : `/api/post/getLikes`;\r\n let url = `${baseUrl}?shareCode=${shareCode}`;\r\n let data = await getRequest(url);\r\n this.setState({ likes: data });\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n\r\n return data;\r\n //this.setState({ post: data });\r\n }\r\n\r\n followAction = async () => {\r\n this.setState({ isFollowing: !this.state.isFollowing })\r\n\r\n let endpoint = this.state.isFollowing === true ? 'unfollow' : 'follow';\r\n let url = `/api/account/${endpoint}?id=${this.state.post.user.id}`\r\n let data = await getRequest(url);\r\n }\r\n\r\n fetchComments = async (skip = this.state.post.comments.length, take = 25) => {\r\n return;\r\n this.setState({ loadingComments: true });\r\n let baseUrl = this.state.loggedInUser !== undefined ? `/api/post/getCommentsAuthorized` : `/api/post/getComments`;\r\n let url = `${baseUrl}?shareCode=${this.state.shareCode}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n let newState = { ...this.state };\r\n newState.post.comments = [...data, ...this.state.post.comments];\r\n\r\n this.setState({ ...newState, loadingComments: false });\r\n }\r\n\r\n handleCommentInput = (e) => {\r\n this.setState({ commentInput: e.target.value });\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal,true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n likePost = async (shareCode) => {\r\n let num = this.state.post.likedByUser === true ? -1 : 1;\r\n let newLikes = {\r\n likeCount: this.state.post.likeCount + num,\r\n likedByUser: !this.state.post.likedByUser\r\n }\r\n let newPost = { ...this.state.post, ...newLikes };\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.likedByUser = newLikes.likedByUser;\r\n this.props.match.params.post.likeCount = newLikes.likeCount;\r\n }\r\n\r\n this.setState({ post: newPost }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n likeComment = async (comment, key) => {\r\n let num = this.state.post.comments[key].likedByUser === true ? -1 : 1;\r\n let newState = { ...this.state };\r\n newState.post.comments[key].likes += num;\r\n newState.post.comments[key].likedByUser = !newState.post.comments[key].likedByUser;\r\n\r\n this.setState(newState, async () => {\r\n let requestObject = {\r\n id: comment.id,\r\n likedByUser: num < 0\r\n }\r\n\r\n let url = `/api/post/likeComment`;\r\n let data = await postRequest(url, requestObject);\r\n });\r\n\r\n }\r\n\r\n savePost = async (shareCode) => {\r\n let reqBody = { shareCode };\r\n\r\n let route = this.state.post.savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n let data = await postRequest(route, reqBody);\r\n\r\n let newPost = { ...this.state.post };\r\n newPost.savedByUser = !this.state.post.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.savedByUser = newPost.savedByUser;\r\n }\r\n\r\n this.setState({ post: newPost });\r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n if (this.props.loggedInUser) {\r\n e.preventDefault();\r\n let savedByUser = !this.state.savedByUser;\r\n this.setState({ savedByUser });\r\n this.savePost(shareCode);\r\n } else {\r\n this.props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.props.toggleShareModal(this.state.shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderSaleOverlay = (sale) => {\r\n if (sale && [\"sm\", \"md\"].includes(this.props.deviceSize)) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let dataToPost = {\r\n text: this.state.commentInput\r\n }\r\n let shareCode = this.state.post.shareCode;\r\n let url = `/api/post/postComment?shareCode=${shareCode}&postType=${this.state.post.type}`;\r\n\r\n var createdOn = new Date();\r\n createdOn.setSeconds(createdOn.getSeconds() - 1);\r\n let dummyComment = {\r\n likedByUser: false,\r\n likes: 0,\r\n replyCount: 0,\r\n text: this.state.commentInput,\r\n user: this.state.loggedInUser,\r\n createdOn: new Date()\r\n };\r\n\r\n let comments = [...this.state.post.comments];\r\n comments.push(dummyComment);\r\n\r\n let newState = { ...this.state };\r\n newState.commentInput = \"\";\r\n newState.post.comments = comments;\r\n newState.post.commentCount += 1;\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.comments = [...newState.post.comments];\r\n this.props.match.params.post.commentCount = newState.post.commentCount;\r\n this.props.match.params.post.totalCount = newState.post.totalCount;\r\n }\r\n\r\n this.setState(newState, async () => {\r\n var response = await postRequest(url, dataToPost);\r\n this.setState({ submittingComment: false });\r\n });\r\n }\r\n\r\n prevPage = () => {\r\n let page = this.state.productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor(this.state.post.productItems?.$values?.length / 4);\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n nextPage = () => {\r\n let page = this.state.productPage + 1;\r\n if (page * 4 > this.state.post.productItems?.$values?.length) {\r\n page = 0;\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n renderProductPagination = () => {\r\n if (this.state.post.productItems?.$values?.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n this.prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {this.state.post.productItems?.$values?.length}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n this.nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n } \r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderThumbsUpOverlay = (product) => {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n\r\n if (!(product.creatorCount) || product.creatorCount === 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n this.toggleCreatorsModal(productId)} style={{ cursor: \"pointer\", top: \"15px\" }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n )\r\n\r\n }\r\n\r\n toggleCreatorsModal = (productId) => {\r\n const followersFollowing = \"creators\";\r\n this.props.toggleFollowersFollowingModal(!!(this.props.loggedInUser) ? this.props.loggedInUser.id : -1, followersFollowing, productId);\r\n }\r\n\r\n renderProductImages = () => {\r\n return trimProductsArray(this.state.post.productItems?.$values)?.sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n }).map((val, i) => {\r\n return (\r\n

    \r\n
    \r\n
    \r\n {this.renderInfoOverlay(val)}\r\n {this.renderThumbsUpOverlay(val)}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.post}\r\n loggedInUser={this.state.loggedInUser}\r\n parentModal={this.props.isModal === true ? { type: \"post\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.post } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}{val.sale && !!(val.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(val.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {val.sale && !!(val.salePrice) ? \"$\" + val.salePrice.toFixed(2) : <>}
    ${val.sale && !!(val.salePrice) && !!(val.originalPrice) ? val.originalPrice.toFixed(2) : val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n renderComments = () => {\r\n let comments = this.state.post.comments;\r\n if (comments && comments.length && comments.length > 0) {\r\n return comments.map((comment, i) => {\r\n return ()\r\n })\r\n }\r\n\r\n }\r\n\r\n toggleDescriptionModal = (productIndex) => {\r\n let newModalState = !this.state.showDescriptionModal;\r\n this.setState({ showDescriptionModal: newModalState, selectedProduct: productIndex });\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n return (\r\n \r\n
    \r\n \r\n

    {this.state.post.productItems?.$values[this.state.selectedProduct].comment}

    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentForm = () => {\r\n if (this.state.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentSectionHeading = () => {\r\n let commentCount = this.state.post.comments.length;\r\n let totalComments = this.state.post.commentCount;\r\n if (commentCount === 0) {\r\n return \"No Comments\";\r\n }\r\n else if (commentCount === 1) {\r\n return `${commentCount} comment`\r\n }\r\n else {\r\n return `${commentCount} of ${totalComments} comments`\r\n }\r\n }\r\n\r\n renderSectors = () => {\r\n return this.state.post.sectors?.$values?.map((sector, i) => {\r\n return (\r\n \r\n )\r\n });\r\n }\r\n\r\n contentSection = () => {\r\n if (!this.state.contentOverflowed) {\r\n return (\r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n
    \r\n )\r\n } else {\r\n if (this.state.collapsed) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.expandedContentStyle, collapsed: false });\r\n }}>\r\n see more\r\n \r\n
    \r\n
    )\r\n\r\n } else {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.collapsedContentStyle, collapsed: true });\r\n }}>\r\n see less\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n contentSectionSmall = () => {\r\n if (!this.state.contentOverflowed) {\r\n return (\r\n

    \r\n \r\n \r\n \r\n {this.state.post.user.userName}\r\n \r\n \r\n {handleCommentMarkup(this.state.post.content, true)}\r\n

    \r\n )\r\n } else {\r\n if (this.state.collapsed) {\r\n return (\r\n <>\r\n
    \r\n

    \r\n \r\n \r\n \r\n {this.state.post.user.userName}\r\n \r\n \r\n {handleCommentMarkup(this.state.post.content, true)}\r\n

    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.expandedContentStyle, collapsed: false });\r\n }}>\r\n see more\r\n \r\n
    \r\n
    )\r\n\r\n } else {\r\n return (\r\n <>\r\n
    \r\n

    \r\n \r\n \r\n \r\n {this.state.post.user.userName}\r\n \r\n \r\n {handleCommentMarkup(this.state.post.content, true)}\r\n

    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.collapsedContentStyle, collapsed: true });\r\n }}>\r\n see less\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n renderFollowButton() {\r\n if (this.state.isFollowing != undefined && this.state.isFollowing != null && (this.props.loggedInUser == null || this.props.loggedInUser.id !== this.state.post.user.id)) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n truncateContentForTitle(str) {\r\n if (str.length <= 20) {\r\n return str;\r\n } else {\r\n return str.substr(0, 20) + \"...\";\r\n }\r\n }\r\n\r\n getPageTitle = () => {\r\n const shareCode = this.props.match?.params?.shareCode;\r\n\r\n return \"RockPorch - Post: \" + shareCode;\r\n };\r\n\r\n\r\n render() {\r\n if (this.state.post === \"notFound\") {\r\n return

    Post not found

    \r\n }\r\n\r\n let commentCount = this.state.post?.comments?.length;\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n\r\n let { userName, imageUrl } = this.state.post?.user;\r\n let webLayouts = [\"md\", \"lg\", \"xl\"];\r\n let { deviceSize, isModal } = this.props;\r\n\r\n if (this.state.isLoading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n let parsedDate = convertToLocaleDateTimeString(new Date(this.state.post?.postedOn), false)\r\n\r\n if (this.state.showMessageDetails) {\r\n return (\r\n <>\r\n \r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.post.status) === true && this.state.post.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return (\r\n <>\r\n \r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n {this.renderDescriptionModal()}\r\n\r\n {\r\n this.props.deviceSize === \"sm\" ? (\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n ) : null\r\n }\r\n\r\n
    \r\n
    \r\n {this.renderBookmarkOverlay()}\r\n {this.renderShareOverlay()}\r\n \r\n\r\n\r\n
    \r\n\r\n {\r\n webLayouts.includes(this.props.deviceSize) ? (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n {\r\n this.state.loggedInUser?.id === this.state.post.user.id ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n ) : \r\n }\r\n\r\n {this.contentSection()}\r\n
    \r\n\r\n ) : null\r\n }\r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n\r\n {\r\n this.props.deviceSize === \"sm\" ? (\r\n
    \r\n
    \r\n {this.contentSectionSmall()}\r\n
    \r\n
    \r\n
    \r\n\r\n ) : null\r\n }\r\n\r\n {\r\n this.state.post?.productItems?.$values?.length > 0 ? (\r\n
    \r\n
    = 4 ? \" justify-content-left\" : \"justify-content-center\"} px-0 position-relative mt-2`}>\r\n {this.renderProductImages()}\r\n
    \r\n
    \r\n\r\n ) : null\r\n }\r\n\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleShareModal: toggleShareModal,\r\n closeAllModals: closeAllModals,\r\n toggleProductPageModal, toggleProductPageModal,\r\n toggleFollowersFollowingModal: toggleFollowersFollowingModal,\r\n}\r\n\r\nexport default connect(null, mapDispatch)(PostPage);","import React, { useEffect } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport PostPage from \"views/Post/PostPage\";\r\nimport { connect } from \"react-redux\";\r\nimport { togglePostPageModal,toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{post:object,loggedInUser:object,showModal:boolean, deviceSize:string, parentModal:{type:string,parentState:object}}} props\r\n */\r\nconst PostPageModal = (props) => {\r\n let paramProps = {\r\n params: {\r\n post: props.post,\r\n loggedInUser: props.loggedInUser,\r\n setPost: props.setPost\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n }, [props.showModal]);\r\n\r\n return (\r\n {\r\n\r\n if (props.parentModal !== null) {\r\n switch (props.parentModal?.type) {\r\n case \"product\": {\r\n props.toggleProductModal(props.parentModal.parentState, props.loggedInUser, false, null, null);\r\n break;\r\n }\r\n default: {\r\n props.toggleModal(props.post, props.loggedInUser, false, props.setPost);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n props.toggleModal(props.post, props.loggedInUser, false, props.setPost)\r\n }\r\n \r\n }}\r\n showHeader={true}\r\n showThreeDotMenu={props.loggedInUser ? true : false}\r\n loggedInUser={props.loggedInUser}\r\n post={props.post}\r\n modalDialogCustomClass=\"modal-dialog-md\"\r\n modalHeaderRedirect={`/Post/PostPage/${props.post?.shareCode}`}\r\n state={paramProps}\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.postPageModal.showPostPageModal,\r\n shareCode: storeState.modalReducer.postPageModal.shareCode,\r\n post: storeState.modalReducer.postPageModal.post,\r\n loggedInUser: storeState.modalReducer.postPageModal.loggedInUser,\r\n isCommenting: storeState.modalReducer.postPageModal.isCommenting,\r\n setPost: storeState.modalReducer.postPageModal.setPost,\r\n parentModal: storeState.modalReducer.postPageModal.parentModal\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: togglePostPageModal,\r\n toggleProductModal: toggleProductPageModal\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(PostPageModal);","import React from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport Tick from \"components/icons/Tick\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\n\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport { currencyFormat } from \"sharedUtils/productUtils\";\r\n\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * product:{brand:string,name:string,vendor:string,price:Number,commission:Number,imageUrl:string},\r\n * select:Function, \r\n * arrayKey:Number,\r\n * isSelected:boolean,\r\n * isExisting:boolean\r\n * }} props\r\n */ \r\nconst ProductSelectCard = (props) => {\r\n function displayCheckBox() {\r\n if (props.isExisting === false) {\r\n return (\r\n \r\n {\r\n props.isSelected === true ? (\r\n\r\n \r\n\r\n ) : null\r\n }\r\n
  • \r\n\r\n )\r\n }\r\n \r\n }\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.isExisting === false) {\r\n props.select(props.product);\r\n }\r\n }}\r\n className=\"custom-cards d-block w-100\"\r\n >\r\n
    \r\n {displayCheckBox()}\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n

    {props.product.name}

    \r\n

    \r\n Estimated Commission*\r\n\r\n {/*\r\n \r\n \r\n \r\n\r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\r\n \r\n */}\r\n
    \r\n {currencyFormat(props.product.estimatedCommission) || 0}\r\n

    \r\n

    \r\n Price\r\n {\r\n props.product.sale && !!(props.product.salePrice) ?\r\n \r\n : <>\r\n }\r\n
    \r\n {/*{currencyFormat(props.product.price) || 0}*/}\r\n

    {props.product.sale && !!(props.product.salePrice) ? \"$\" + props.product.salePrice.toFixed(2) : <>}
    ${props.product.sale && !!(props.product.salePrice) && !!(props.product.originalPrice) ? props.product.originalPrice.toFixed(2) : props.product.price.toFixed(2)}
    \r\n

    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default ProductSelectCard;","import React, { useState, useEffect } from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport ProductSelectCard from \"components/ProductSelectCard\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\n\r\n/**\r\n * \r\n * @param {{postShareCode:string, existingProducts:object[], selectProduct:Function, selectedProducts:object[], searchFilter:string, deviceSize:string}} props\r\n */\r\nconst ProductsSelectorForm = (props) => {\r\n let [products, setProducts] = useState([]);\r\n let [filteredProducts, setFilteredProducts] = useState([]);\r\n let [loggedInUser, setUser] = useState({});\r\n let [loading, setLoading] = useState(true);\r\n let [loadingMore, setLoadingMore] = useState(false);\r\n let [take, setTake] = useState(100);\r\n let [searchProp, setSearchProp] = useState(\"\");\r\n let [finishedFetchingProducts, setFinishedFetchingProducts] = useState(false);\r\n useEffect(() => {\r\n loadData(0,take);\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.searchFilter.length !== 0 || searchProp !== props.searchFilter) {\r\n loadSearch(props.searchFilter);\r\n }\r\n setSearchProp(props.searchFilter);\r\n }, [props.searchFilter])\r\n\r\n const loadSearch = async () => {\r\n await fetchProductsForSearch(0);\r\n }\r\n\r\n function concatMerchantProduct(product) {\r\n if (product.name.toLowerCase().indexOf(product.manufacturer.toLowerCase()) === 0) {\r\n return product.name;\r\n }\r\n return (product.manufacturer + ' ' + product.name).trim();\r\n }\r\n\r\n async function loadData(skip, take) {\r\n let user = await fetchUser();\r\n let products = await fetchProducts(user.userName, skip, take);\r\n\r\n setUser(user);\r\n setProducts(products);\r\n setFilteredProducts(products);\r\n }\r\n\r\n async function fetchUser() {\r\n let user = await getAuthorizedUserData();\r\n return user;\r\n }\r\n\r\n async function fetchProducts(userName, skip, take) {\r\n let data = await getRequest(`/Products/GetUserMerchantProducts/?userName=${userName}&skip=${skip}&take=${take}&searchTerm=${props.searchFilter}`);\r\n let products = data?.map((product) => {\r\n return { ...product, name: concatMerchantProduct(product) }\r\n });\r\n setFinishedFetchingProducts(products?.length < take || products == null || products == undefined);\r\n setLoading(false);\r\n return !!(products) ? products : [];\r\n }\r\n\r\n const fetchProductsForSearch = async (skip) => {\r\n setLoading(true);\r\n setProducts([]);\r\n setFilteredProducts([]);\r\n\r\n let products = await fetchProducts(loggedInUser.userName, skip, take);\r\n\r\n setProducts(products);\r\n setFilteredProducts(products);\r\n }\r\n\r\n const fetchMore = async () => {\r\n setLoadingMore(true);\r\n let skip = filteredProducts.length;\r\n\r\n let products = await fetchProducts(loggedInUser.userName, skip, take);\r\n\r\n const totalProducts = [...filteredProducts, ...products];\r\n\r\n setProducts(totalProducts);\r\n setFilteredProducts(totalProducts);\r\n\r\n setLoadingMore(false);\r\n }\r\n\r\n function handleSelect(product) {\r\n props.selectProduct(product);\r\n }\r\n\r\n function isProductSelected(productShareCode) {\r\n let found = props.selectedProducts.find((product) => {\r\n return product.shareCode === productShareCode\r\n });\r\n if (found === undefined) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n function isProductExisting(productShareCode) {\r\n var existing = props.existingProducts.find((prod) => prod.userMerchantProduct?.coupon === productShareCode);\r\n if (existing === undefined) {\r\n return false\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n\r\n function mapProducts() {\r\n if (products.length > 0) {\r\n\r\n return filteredProducts.map((product, i) => {\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n\r\n })\r\n }\r\n }\r\n\r\n if (loading) {\r\n return \r\n } else if (!loadingMore && props.searchFilter?.length > 0 && products.length === 0) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n No products in your inventory match your search criteria. Try again with a new search.\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    );\r\n } else if (!loadingMore && products.length === 0) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Looks like you haven't added any products yet! Click here to get started and products from our partners that you can include in posts and lockers\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    );\r\n }\r\n return ( \r\n
    \r\n
    \r\n 0 ? products.length : 0}\r\n next={fetchMore}\r\n hasMore={!finishedFetchingProducts}\r\n loader={}\r\n style={{ overflow: \"initial\" }}\r\n scrollableTarget=\"scrollableProductModal\"\r\n >\r\n
    \r\n
    \r\n
    \r\n {mapProducts()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default ProductsSelectorForm;","import React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { Navbar } from \"reactstrap\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport { Input } from \"reactstrap\";\r\n\r\n/**\r\n * \r\n * @param {{toggleModal:Function, searchHandle:Function}} props\r\n */\r\nconst ProductSelectorModalHeader = (props) => {\r\n return (\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n e.preventDefault()}>My Products\r\n props.searchHandle(e)}\r\n style={{ backgroundColor: \"#e9ecef\" }}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default ProductSelectorModalHeader;","import React, { useState } from \"react\";\r\nimport InformationIcon from \"components/icons/InformationIcon\"\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{addToLocker:Function,selectedProducts:object[]}} props\r\n */\r\nconst ProductSelectorModalFooter = (props) => {\r\n const [isAdding, setIsAdding] = useState(false);\r\n function displayCount() {\r\n if (props.selectedProducts?.length > 0) {\r\n let text = props.selectedProducts.length === 1 ? \"Selected product\" : \"Selected products\";\r\n return (\r\n

    \r\n {props.selectedProducts.length} {text}\r\n

    \r\n )\r\n }\r\n else {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {displayCount()}\r\n {\r\n props.selectedProducts.length === 0 ? (\r\n
    \r\n \r\n Estimated Commission\r\n *\r\n e.preventDefault()} style={{ cursor: \"pointer\", fontSize: \"8px\", backgroundColor: \"transparent\", border: \"0px solid transparent\" }} id=\"estimatedCommissionsFooter\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of consumer's purchase\r\n \r\n \r\n
    \r\n ):\r\n \r\n }\r\n {\r\n setIsAdding(true);\r\n await props.addToLocker(props.selectedProducts)\r\n setIsAdding(false);\r\n }}>\r\n Add\r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default ProductSelectorModalFooter;","import React, { useState} from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport ProductsSelectorForm from \"components/UserMerchantProducts/ProductsSelectorForm\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleProductSelectModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { Navbar } from \"reactstrap\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport ProductSelectorModalHeader from \"components/UserMerchantProducts/ProductSelectorModalHeader\";\r\nimport ProductSelectorModalFooter from \"components/UserMerchantProducts/ProductSelectorModalFooter\";\r\nimport { useEffect } from \"react\";\r\nimport { debounce } from \"throttle-debounce\";\r\n\r\n/**\r\n * \r\n * @param {{postShareCode:string, existingProducts:[object],addToLocker:Function, deviceSize:string}} props\r\n */\r\nconst ProductsSelectorModal = (props) => {\r\n\r\n const [selectedProducts, setProducts] = useState([]);\r\n const [productSearchString, setProductSearchString] = useState(\"\");\r\n const [hidScrollBar, setHidScrollBar] = useState(false);\r\n const [searchFilter, setSearchFilter] = useState(\"\");\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n if (document.querySelector(\"body\").style.overflow !== \"hidden\") {\r\n setHidScrollBar(true);\r\n document.querySelector(\"body\").style.overflow = \"hidden\"\r\n }\r\n } else {\r\n if (hidScrollBar) {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n setHidScrollBar(false);\r\n }\r\n }\r\n }, [props.showModal]);\r\n\r\n /**\r\n * \r\n * @param {object[]} products\r\n */\r\n async function addToLocker(products) {\r\n if (selectedProducts.length > 0) {\r\n await props.addToLocker(selectedProducts)\r\n toggle();\r\n }\r\n }\r\n\r\n function selectProduct(product) {\r\n let newProducts = [...selectedProducts];\r\n let exists = newProducts.findIndex((prod) => prod.shareCode === product.shareCode);\r\n if (exists === -1) {\r\n newProducts.push(product);\r\n }\r\n else {\r\n newProducts.splice(exists, 1);\r\n }\r\n\r\n setProducts(newProducts);\r\n }\r\n\r\n async function toggle() {\r\n await setProducts([]);\r\n props.toggleModal();\r\n }\r\n\r\n function searchHandle(e) {\r\n \r\n setSearchFilterProp(e.target.value);\r\n }\r\n\r\n const setSearchFilterProp = debounce(300, (search) => {\r\n setSearchFilter(search);\r\n });\r\n\r\n return (\r\n }\r\n modalHeader={}\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return {\r\n showModal: storeState.modalReducer.showProductSelectModal,\r\n postShareCode: storeState.modalReducer.postForProductSelection\r\n }\r\n}\r\n\r\nlet mapDispatch = {\r\n toggleModal: toggleProductSelectModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(ProductsSelectorModal);","import React from \"react\";\r\nimport Modal from \"components/Modal\"\r\n\r\n/**\r\n * \r\n * @param {{coupon:string,confirmDelete:Function,cancelDelete:Function,showDeletePrompt:boolean}} props\r\n */\r\nconst DeleteProductConfirm = (props) => {\r\n return (\r\n \r\n

    Are you sure you want to delete the product?

    \r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\n\r\nexport default DeleteProductConfirm;","import React, { useState } from \"react\";\r\nimport FormTextArea from \"components/FormTextArea\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n/**\r\n * \r\n * @param {{productComment:string,cancel:Function,save:Function}} props\r\n */\r\nconst EditProductCommentForm = (props) => {\r\n let [formInput, setFormInput] = useState(props.productComment);\r\n let [isSaving, setIsSaving] = useState(false);\r\n return (\r\n
    \r\n
    \r\n
    Product Notes
    \r\n\r\n
    \r\n setFormInput(e.target.value)}\r\n type=\"textarea\"\r\n value={formInput}\r\n rows={4}\r\n inputStyle={{ backgroundColor: \"#e9ecef\" }}\r\n placeholder=\"Explain why this product is relevant to the locker (e.g., what is it used for, why is it included, how does it make this pursuit easier, etc.)\"\r\n />\r\n\r\n
    \r\n \r\n\r\n\r\n {\r\n setIsSaving(true);\r\n await props.save(formInput);\r\n setIsSaving(false);\r\n }}\r\n isLoading={isSaving}\r\n isDisabled={!formInput.length > 0}\r\n >\r\n Add Note\r\n \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n}\r\n\r\nexport default EditProductCommentForm;","import React from \"react\";\r\nimport parse from \"html-react-parser\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport ProfileInfoCard from \"components/ProfileInfoCard\";\r\nimport PlusIcon from 'components/icons/PlusIcon';\r\nimport GridIcon from 'components/icons/GridIcon';\r\nimport CommentForm from 'components/CommentForm';\r\nimport CommentTile from 'components/CommentTile';\r\nimport Modal from \"components/Modal\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ProductsSelectorModal from \"components/UserMerchantProducts/ProductsSelectorModal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\n\r\nimport DeleteProductConfirm from \"views/Locker/DeleteProductConfirm\";\r\nimport EditProductCommentForm from \"views/Locker/EditProductCommentForm\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\"\r\nimport blankFeedPost from \"sharedUtils/blankFeedPost\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { toggleProductSelectModal, toggleProductPageModal, toggleFollowersFollowingModal, toggleShareModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { getBlogShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\nimport { Helmet } from 'react-helmet';\r\nimport PostBanner from \"components/PostBanner\";\r\nimport { getProperties } from \"sharedUtils/postFunctions\";\r\n\r\n\r\nclass BlogPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n locker: blankFeedPost,\r\n comment: \"\",\r\n showModal: false,\r\n loggedInUser: {},\r\n isLoading: true,\r\n loadingComments: false,\r\n isEditingProducts: false,\r\n deletingProduct: {\r\n isDeleting: false,\r\n coupon: \"\"\r\n },\r\n showDescriptionModal: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n savedByUser: false,\r\n collapsed: true,\r\n contentStyle: this.props?.deviceSize === \"sm\" ? this.notOverflowedContentStyle : this.notOverflowedContentStyle,\r\n contentOverflowed: false,\r\n maxHeight: \"41px\",\r\n };\r\n }\r\n\r\n commentsTextArea = React.createRef();\r\n contentRef = React.createRef();\r\n bioRef = React.createRef();\r\n titleRef = React.createRef();\r\n blogTitleRef = React.createRef();\r\n blogPageRef = React.createRef();\r\n\r\n collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n notOverflowedContentStyle = { fontWeight: \"500\", textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n async componentDidMount() {\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getBlogShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.getPageData(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ post: \"notFound\", isLoading: false, shareCode, shareLink })\r\n } else {\r\n this.setState({ locker: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.getPageData(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n let isFollowing = await this.fetchIsFollowing(data.user?.id);\r\n this.setState({ locker: data, isFollowing, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n this.fetchComments(0, 3);\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ locker: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n this.setState({ isFollowing });\r\n if (post.comments.length === 0) {\r\n this.fetchComments(0, 3);\r\n }\r\n }\r\n }\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }\r\n\r\n if (this.props.isModal === false && this.props.location.state.isAddingProducts === true) {\r\n //this.toggleModal();\r\n }\r\n\r\n document.addEventListener(\"_productAddedEvent\", this.refreshLocker);\r\n\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.refreshLocker();\r\n }\r\n });\r\n\r\n const savedByUser = this.props?.match?.params?.post?.savedByUser;\r\n this.setState({ savedByUser });\r\n\r\n let isFollowing = await this.fetchIsFollowing(this.state.locker.user?.id);\r\n this.setState({ isFollowing });\r\n\r\n // THIS IS LOGIC TO CALCULATE THE HEIGHT OF THE CONTENT

    FOR 'SEE MORE'\r\n // FOR DEVICE SIZES THAT ARE NOT SMALL - it determines if height of ProfileInfoCard \r\n // is less than the expanded < p > and then puts it in contentOverflowed as well as \r\n // calculate the height of the of the 'SEE MORE'

    based on it's expanded size vs.\r\n // the size of the ProfileInfoCard and applies it to the styling.\r\n\r\n // SMALL DEVICES SET HEIGHT TO 2 LINES OF TEXT WHICH IS ~40px\r\n let contentOverflowed = false;\r\n let bioHeight;\r\n let titleHeight;\r\n let contentHeight;\r\n\r\n if (this.props?.deviceSize === \"sm\") {\r\n if (this.contentRef?.current?.offsetHeight > 40) {\r\n contentOverflowed = true;\r\n }\r\n } else {\r\n bioHeight = this.bioRef?.current?.offsetHeight;\r\n\r\n this.setState({ contentStyle: this.expandedContentStyle });\r\n\r\n titleHeight = this.titleRef?.current?.scrollHeight;\r\n\r\n if (bioHeight < titleHeight) {\r\n contentOverflowed = true;\r\n }\r\n this.setState({ contentStyle: this.notOverflowedContentStyle })\r\n }\r\n\r\n if (this.props?.deviceSize !== \"sm\" && contentOverflowed) {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n const overflow = titleHeight - bioHeight;\r\n\r\n contentHeight = this.contentRef?.current?.offsetHeight;\r\n\r\n const maxHeight = contentHeight - overflow > 40 ? Math.floor((contentHeight - overflow) / 20) * 20 - 20 + \"px\" : \"41px\";\r\n\r\n this.setState({ maxHeight, contentStyle: this.notOverflowedContentStyle })\r\n }\r\n\r\n this.collapsedContentStyle = { marginTop: \"0em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n this.notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n this.expandedContentStyle = { marginTop: \"0em\", fontWeight: 500 };\r\n\r\n if (contentOverflowed) {\r\n this.setState({ contentOverflowed: contentOverflowed, contentStyle: this.collapsedContentStyle });\r\n } else if (!contentOverflowed && this.props.deviceSize !== \"sm\") {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.loggedInUser != this.props.loggedInUser) {\r\n this.setState({ loggedInUser: this.props.loggedInUser })\r\n }\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location?.state?.destinationState?.params?.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.getPageData(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n else {\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n\r\n this.setState({ isFollowing });\r\n }\r\n }\r\n\r\n this.setState({ locker: post, isLoading: false });\r\n }\r\n this.updatePosition();\r\n\r\n // Add event listener for the resize event\r\n window.addEventListener('resize', this.updatePosition);\r\n }\r\n\r\n componentWillUnmount() {\r\n // Remove the event listener when the component is unmounted\r\n window.removeEventListener('resize', this.updatePosition);\r\n }\r\n\r\n updatePosition = () => {\r\n if (!!(this.contentRef.current) && !!(this.blogTitleRef.current) && !!(this.blogPageRef.current)) {\r\n // Get the bounding rectangle of the contentRef relative to the component\r\n const contentRect = this.contentRef.current.getBoundingClientRect();\r\n const componentRect = this.blogPageRef.current.getBoundingClientRect();\r\n\r\n // Calculate the left position of the contentRef within the component\r\n const left = contentRect.left - componentRect.left;\r\n\r\n // Use the left position to position the elementToPosition within the component\r\n const elementToPosition = this.blogTitleRef.current;\r\n elementToPosition.style.left = `${left}px`;\r\n elementToPosition.style.marginRight = `${left}px`;\r\n }\r\n };\r\n\r\n removeCommentUsername = text => {\r\n const regex = /#!\\^.*?\\)\\)\\)/g;\r\n return text.replace(regex, '');\r\n }\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ isFollowing: data });\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"_productAddedEvent\", this.refreshLocker);\r\n window.removeEventListener(\"storage\", () => { });\r\n }\r\n\r\n followAction = async () => {\r\n this.setState({ isFollowing: !this.state.isFollowing })\r\n\r\n let endpoint = this.state.isFollowing === true ? 'unfollow' : 'follow';\r\n let url = `/api/account/${endpoint}?id=${this.state.locker.user.id}`\r\n let data = await getRequest(url);\r\n }\r\n\r\n renderFollowButton() {\r\n if (this.state.isFollowing != undefined && this.state.isFollowing != null && (this.props.loggedInUser == null || this.props.loggedInUser.id !== this.state.locker.user.id)) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderThumbsUpOverlay = (product) => {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n if (!(product.creatorCount) || product.creatorCount === 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n this.toggleCreatorsModal(productId)} style={{ cursor: \"pointer\", top: \"15px\" }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n )\r\n\r\n }\r\n\r\n toggleCreatorsModal = (productId) => {\r\n const followersFollowing = \"creators\";\r\n this.props.toggleFollowersFollowingModal(!!(this.props.loggedInUser) ? this.props.loggedInUser.id : -1, followersFollowing, productId);\r\n }\r\n\r\n addProductsToLocker = async (products) => {\r\n let newState = { ...this.state };\r\n products.forEach((prod) => prod.coupon = prod.shareCode);\r\n let productMap = products.map((prod) => {\r\n return {\r\n userMerchantProduct: { ...prod, product: prod }\r\n }\r\n });\r\n newState.locker.productItems.$values = [...this.state.locker.productItems?.$values, ...productMap];\r\n\r\n this.setState({ locker: newState.locker });\r\n\r\n var userMerchantProductIds = products.map((prod) => prod.userMerchantProductId);\r\n var added = await postRequest(`/api/Post/addPostProducts?shareCode=${this.state.locker.shareCode}`, userMerchantProductIds);\r\n\r\n await this.getPageData(this.state.locker.shareCode, true);\r\n }\r\n\r\n toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n displayProductImages = () => {\r\n return trimProductsArray(this.state.locker.productItems?.$values)?.sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n }).map((val, i) => {\r\n if (this.state.isEditingProducts === true) {\r\n return (\r\n \r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.toggleDescriptionModal(i)}\r\n post={this.state.locker}\r\n loggedInUser={this.state.loggedInUser}\r\n locker={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}{val.sale && !!(val.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(val.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {val.sale && !!(val.salePrice) ? \"$\" + val.salePrice.toFixed(2) : <>}
    ${val.sale && !!(val.salePrice) && !!(val.originalPrice) ? val.originalPrice.toFixed(2) : val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.renderInfoOverlay(val)}\r\n {this.renderThumbsUpOverlay(val)}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.locker}\r\n locker={true}\r\n parentModal={this.props.isModal === true ? { type: \"locker\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.locker } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}{val.sale && !!(val.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(val.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {val.sale && !!(val.salePrice) ? \"$\" + val.salePrice.toFixed(2) : <>}
    ${val.sale && !!(val.salePrice) && !!(val.originalPrice) ? val.originalPrice.toFixed(2) : val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n })\r\n }\r\n\r\n displayComments = () => {\r\n let comments = this.state.locker?.comments;\r\n if (comments && comments.length && comments.length > 0) {\r\n\r\n return comments.map((comment, i) => {\r\n return \r\n })\r\n }\r\n }\r\n\r\n displayCommentForm = () => {\r\n if (this.state.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n this.setState({ comment: e.target.value })}\r\n postComment={this.postComment}\r\n commentsTextArea={this.commentsTextArea}\r\n submittingComment={this.state.submittingComment}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n displayCommentSectionHeading = () => {\r\n let totalComments = this.state.locker.commentCount;\r\n let count = this.state.locker.comments.length;\r\n\r\n if (count === 0) {\r\n return \"No Comments\";\r\n }\r\n else if (count === 1) {\r\n return `${count} comment`;\r\n }\r\n else {\r\n return `${count} of ${totalComments} comments`;\r\n }\r\n }\r\n\r\n displayEditLockerLink = () => {\r\n if (this.state.loggedInUser?.id === this.state.locker.user?.id) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n displayBanner = () => {\r\n const redirectUrl = getProperties(this.state.locker?.properties).filter(property => property.role === 6)[0]?.value;\r\n\r\n let postImages = getProperties(this.state.locker?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n return (\r\n
    \r\n window.open(redirectUrl)}\r\n imageStyle={{ cursor: \"pointer\" }}\r\n />\r\n {\r\n this.props.deviceSize === \"sm\" ?\r\n
    {this.state.locker.title}
    \r\n :\r\n

    {this.state.locker.title}

    \r\n }\r\n
    \r\n\r\n )\r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n if (this.props.loggedInUser) {\r\n e.preventDefault();\r\n let savedByUser = !this.state.savedByUser;\r\n this.setState({ savedByUser });\r\n this.saveLocker(shareCode);\r\n } else {\r\n this.props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }} >\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.props.toggleShareModal(this.state.shareLink)\r\n }} style={{ cursor: \"pointer\", }}>\r\n \r\n );\r\n }\r\n\r\n displayProductEditButtons = () => {\r\n if (this.state.loggedInUser?.id === this.state.locker?.user?.id && this.props.modal === false) {\r\n return (\r\n
    \r\n \r\n\r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n displayTags = () => {\r\n return this.state.locker.sectors?.$values?.map((tag, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n getPageData = async (shareCode, isAuthorized) => {\r\n let url = isAuthorized === true ? `/api/post/getPostAuthorized?shareCode=${shareCode}&referrer=${document.referrer}` : `/api/post/getPost?shareCode=${shareCode}&referrer=${document.referrer}`;\r\n let response = await getRequest(url);\r\n return response;\r\n //this.setState({ locker: response });\r\n }\r\n\r\n fetchComments = async (skip = this.state.locker.comments.length, take = 25) => {\r\n return;\r\n this.setState({ loadingComments: true });\r\n let baseUrl = this.state.loggedInUser !== undefined ? `/api/post/getCommentsAuthorized` : `/api/post/getComments`;\r\n let url = `${baseUrl}?shareCode=${this.state.shareCode}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n let newState = { ...this.state };\r\n newState.locker.comments = [...data, ...this.state.locker.comments];\r\n\r\n this.setState({ ...newState, loadingComments: false });\r\n }\r\n\r\n likeLocker = async (shareCode) => {\r\n let num = this.state.locker.likedByUser === true ? -1 : 1;\r\n let newLikes = {\r\n likeCount: this.state.locker.likeCount + num,\r\n likedByUser: !this.state.locker.likedByUser\r\n }\r\n let newLocker = { ...this.state.locker, ...newLikes };\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.likedByUser = newLocker.likedByUser;\r\n this.props.match.params.post.likeCount = newLocker.likeCount;\r\n }\r\n\r\n this.setState({ locker: newLocker }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n likeComment = async (comment, key) => {\r\n let num = this.state.locker.comments[key].likedByUser === true ? -1 : 1;\r\n let newState = { ...this.state };\r\n newState.locker.comments[key].likes += num;\r\n newState.locker.comments[key].likedByUser = !newState.locker.comments[key].likedByUser;\r\n\r\n this.setState(newState, async () => {\r\n let requestObject = {\r\n id: comment.id,\r\n likedByUser: num < 0\r\n }\r\n let url = `/api/post/likeComment`;\r\n let data = await postRequest(url, requestObject);\r\n });\r\n }\r\n\r\n messageUser() {\r\n alert(\"message user clicked...\");\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let dataToPost = { text: this.state.comment };\r\n let shareCode = this.state.locker.shareCode;\r\n let url = `/api/post/postComment?shareCode=${shareCode}&postType=${this.state.locker.type}`;\r\n\r\n let today = (new Date()).toLocaleString(Date.now());\r\n\r\n let dummyComment = {\r\n likedByUser: false,\r\n likes: 0,\r\n replyCount: 0,\r\n text: this.state.comment,\r\n user: this.state.loggedInUser,\r\n createdOn: today\r\n };\r\n\r\n let comments = [...this.state.locker.comments];\r\n comments.push(dummyComment);\r\n\r\n let newState = { ...this.state };\r\n newState.comment = \"\";\r\n newState.locker.comments = comments;\r\n newState.locker.totalCount += 1;\r\n newState.locker.commentCount += 1;\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.comments = [...newState.locker.comments];\r\n this.props.match.params.post.commentCount = newState.locker.commentCount;\r\n this.props.match.params.post.totalCount = newState.locker.totalCount;\r\n }\r\n\r\n this.setState(newState, async () => {\r\n await postRequest(url, dataToPost);\r\n this.setState({ submittingComment: false });\r\n });\r\n }\r\n\r\n refreshLocker = async () => {\r\n if (this.state.locker.user.id === this.props.loggedInUser?.id) {\r\n let shareCode = this.state.locker.shareCode;\r\n let isAuthorized = this.props.loggedInUser === undefined ? false : true;\r\n let locker = await this.getPageData(shareCode, isAuthorized);\r\n if (locker) {\r\n this.setState({ locker });\r\n }\r\n }\r\n }\r\n\r\n removeProductFromLocker = async (coupon) => {\r\n let updatedLocker = { ...this.state.locker };\r\n let location = updatedLocker.productItems.$values.findIndex(prod => prod.userMerchantProduct.coupon === coupon);\r\n let product = updatedLocker.productItems.$values.find(prod => prod.userMerchantProduct.coupon === coupon);\r\n if (location > -1) {\r\n updatedLocker.productItems.$values.splice(location, 1);\r\n }\r\n\r\n this.setState({ locker: updatedLocker, deletingProduct: { isDeleting: false, coupon: \"\" } })\r\n\r\n let payload = {\r\n user: {\r\n id: this.state.locker.user?.id\r\n }\r\n };\r\n\r\n await postRequest(`/api/Locker/DeleteLockerProduct?userPostUserMerchantProductId=${product.id}`, payload);\r\n await this.getPageData(this.state.locker.shareCode, true);\r\n //alert(\"are you sure you want to delete this product?\")\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n let description = this.state.locker.productItems?.$values[this.state.selectedProduct]?.comment || this.state.locker.productItems?.$values[this.state.selectedProduct]?.userMerchantProduct.userDescription;\r\n if (this.state.isEditingProducts === true) {\r\n return (\r\n \r\n
    \r\n {\r\n this.saveDescriptionChange(this.state.selectedProduct, description)\r\n this.toggleDescriptionModal()\r\n }} />\r\n
    \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n
    \r\n \r\n

    {description}

    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n }\r\n }\r\n\r\n renderProductPagination = () => {\r\n if (this.state.locker.productItems?.$values?.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n this.prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {this.state.locker.productItems?.$values?.length}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n this.nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n saveDescriptionChange = async (productIndex, description) => {\r\n let locker = { ...this.state.locker };\r\n locker.productItems.$values[productIndex].comment = description;\r\n //locker.productItems.$values[productIndex].product.userDescription = description;\r\n this.setState({ locker });\r\n\r\n let product = locker.productItems.$values[productIndex];\r\n let payload = {\r\n id: product.id,\r\n comment: product.comment,\r\n userPostId: locker.id,\r\n userPostProductItemTypeId: locker.productItems.$values[productIndex].type,\r\n userMerchantProductId: locker.productItems.$values[productIndex].userMerchantProduct.id,\r\n ordinal: locker.productItems.$values[productIndex].ordinal\r\n }\r\n\r\n let url = `api/Locker/UpdateLockerProductDescription?comment=${product.comment}&userPostUserMerchantProductId=${product.id}`;\r\n\r\n var update = await postRequest(url, payload);\r\n //make api call to update product\r\n }\r\n\r\n saveLocker = async (shareCode) => {\r\n let reqBody = { shareCode };\r\n\r\n let route = this.state.locker.savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n let data = await postRequest(route, reqBody);\r\n\r\n let newPost = { ...this.state.locker };\r\n newPost.savedByUser = !this.state.locker.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.savedByUser = newPost.savedByUser;\r\n }\r\n\r\n this.setState({ locker: newPost });\r\n }\r\n\r\n toggleModal = () => {\r\n if (this.props.isModal === true) {\r\n //this.props.handleAddProducts();\r\n } else {\r\n this.props.toggleProductSelectModal();\r\n }\r\n\r\n }\r\n\r\n toggleDescriptionModal = (shareCode) => {\r\n let productIndex = this.state.locker?.productItems?.$values.findIndex(locker => locker.userMerchantProduct.coupon === shareCode);\r\n\r\n this.setState({ showDescriptionModal: !this.state.showDescriptionModal, selectedProduct: productIndex })\r\n }\r\n\r\n prevPage = () => {\r\n let page = this.state.productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor(this.state.locker.productItems?.$values?.length / 4);\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n nextPage = () => {\r\n let page = this.state.productPage + 1;\r\n if (page * 4 > this.state.locker.productItems?.$values?.length) {\r\n page = 0;\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n contentSection = () => {\r\n const redirectUrl = getProperties(this.state.locker?.properties).filter(property => property.role === 6)[0]?.value;\r\n return (\r\n
    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n
    \r\n
    \r\n Read more\r\n
    \r\n
    \r\n
    \r\n )\r\n\r\n if (!this.state.contentOverflowed) {\r\n return (\r\n
    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n
    \r\n
    \r\n Read more\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n if (this.state.collapsed) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {this.state.locker.title}

    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.expandedContentStyle, collapsed: false });\r\n }}>\r\n see more\r\n \r\n
    \r\n
    )\r\n\r\n } else {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {this.state.locker.title}

    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.collapsedContentStyle, collapsed: true });\r\n }}>\r\n see less\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n getPageTitle = () => {\r\n const shareCode = this.props.match?.params?.shareCode;\r\n\r\n return \"RockPorch - Blog Page: \" + shareCode;\r\n };\r\n\r\n\r\n render() {\r\n if (this.state.locker === \"notFound\") {\r\n return (\r\n
    \r\n

    Locker not found

    \r\n Explore\r\n
    \r\n )\r\n }\r\n\r\n if (this.state.isLoading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n let commentCount = this.state.locker.comments.length;\r\n let parsedDate = this.state.locker.postedOn ? convertToLocaleDateTimeString(new Date(this.state.locker?.postedOn), false) : \"\";\r\n let { deviceSize } = this.props;\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.locker.status) === true && this.state.locker.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n {this.renderDescriptionModal()}\r\n \r\n this.setState({ deletingProduct: { isDeleting: false, coupon: \"\" } })}\r\n />\r\n {\r\n this.props.deviceSize === \"sm\" ? (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n ) : \r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n {this.renderBookmarkOverlay()}\r\n {this.renderShareOverlay()}\r\n {this.displayBanner()}\r\n {this.displayEditLockerLink()}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.contentSection()}\r\n \r\n {/*Mini profile section */}\r\n {\r\n this.props.deviceSize !== \"sm\" ? (\r\n
    \r\n \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n ) : \r\n }\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    0 ? \"pb-0 mb-3\" : \"pb-0 border border-0\"}`}>\r\n
    = 4 ? \"justify-content-left\" : \"justify-content-center\"} px-0 position-relative mt-2`}>\r\n {this.displayProductEditButtons()}\r\n {this.displayProductImages()}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleProductSelectModal: toggleProductSelectModal,\r\n toggleProductPageModal: toggleProductPageModal,\r\n toggleShareModal: toggleShareModal,\r\n toggleFollowersFollowingModal: toggleFollowersFollowingModal,\r\n closeAllModals: closeAllModals\r\n}\r\n\r\nexport default connect(null, mapDispatch)(BlogPage);","import React, { useEffect } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport BlogPage from \"views/Blog/BlogPage\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleBlogPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{post:object,loggedInUser:object,showModal:boolean, deviceSize:string, parentModal:{type:string,parentState:object}}} props\r\n */\r\nconst BlogPageModal = (props) => {\r\n let paramProps = {\r\n params: {\r\n post: props.post,\r\n loggedInUser: props.loggedInUser,\r\n setPost: props.setPost\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n }, [props.showModal]);\r\n\r\n return (\r\n {\r\n\r\n if (props.parentModal !== null) {\r\n switch (props.parentModal?.type) {\r\n case \"product\": {\r\n props.toggleProductModal(props.parentModal.parentState, props.loggedInUser, false, null, null);\r\n break;\r\n }\r\n default: {\r\n props.toggleModal(props.post, props.loggedInUser, false, props.setPost);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n props.toggleModal(props.post, props.loggedInUser, false, props.setPost)\r\n }\r\n\r\n }}\r\n showHeader={true}\r\n showThreeDotMenu={props.loggedInUser ? true : false}\r\n loggedInUser={props.loggedInUser}\r\n post={props.post}\r\n modalDialogCustomClass=\"modal-dialog-md\"\r\n modalHeaderRedirect={`/Blog/BlogPage/${props.post?.shareCode}`}\r\n state={paramProps}\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.blogPageModal.showBlogPageModal,\r\n shareCode: storeState.modalReducer.blogPageModal.shareCode,\r\n post: storeState.modalReducer.blogPageModal.post,\r\n loggedInUser: storeState.modalReducer.blogPageModal.loggedInUser,\r\n isCommenting: storeState.modalReducer.blogPageModal.isCommenting,\r\n setPost: storeState.modalReducer.blogPageModal.setPost,\r\n parentModal: storeState.modalReducer.blogPageModal.parentModal\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleBlogPageModal,\r\n toggleProductModal: toggleProductPageModal\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(BlogPageModal);","import React from \"react\";\r\nimport parse from \"html-react-parser\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport ProfileInfoCard from \"components/ProfileInfoCard\";\r\nimport PlusIcon from 'components/icons/PlusIcon';\r\nimport GridIcon from 'components/icons/GridIcon';\r\nimport CommentForm from 'components/CommentForm';\r\nimport CommentTile from 'components/CommentTile';\r\nimport Modal from \"components/Modal\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ProductsSelectorModal from \"components/UserMerchantProducts/ProductsSelectorModal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\n\r\nimport DeleteProductConfirm from \"views/Locker/DeleteProductConfirm\";\r\nimport EditProductCommentForm from \"views/Locker/EditProductCommentForm\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\"\r\nimport blankFeedPost from \"sharedUtils/blankFeedPost\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { toggleProductSelectModal, toggleProductPageModal, toggleFollowersFollowingModal, toggleShareModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { getLockerShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\n\r\nclass LockerPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n locker: blankFeedPost,\r\n comment: \"\",\r\n showModal: false,\r\n loggedInUser: {},\r\n isLoading: true,\r\n loadingComments: false,\r\n isEditingProducts: false,\r\n deletingProduct: {\r\n isDeleting: false,\r\n coupon: \"\"\r\n },\r\n showDescriptionModal: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n savedByUser: false,\r\n collapsed: true,\r\n contentStyle: this.props?.deviceSize === \"sm\" ? this.notOverflowedContentStyle : this.notOverflowedContentStyle,\r\n contentOverflowed: false,\r\n maxHeight: \"41px\",\r\n };\r\n }\r\n\r\n commentsTextArea = React.createRef();\r\n contentRef = React.createRef();\r\n bioRef = React.createRef();\r\n titleRef = React.createRef();\r\n\r\n collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n notOverflowedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n async componentDidMount() {\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getLockerShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.getPageData(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ post: \"notFound\", isLoading: false, shareCode, shareLink })\r\n } else {\r\n this.setState({ locker: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.getPageData(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n let isFollowing = await this.fetchIsFollowing(data.user?.id);\r\n this.setState({ locker: data, isFollowing, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n this.fetchComments(0, 3);\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ locker: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n this.setState({ isFollowing });\r\n if (post.comments.length === 0) {\r\n this.fetchComments(0, 3);\r\n }\r\n }\r\n }\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }\r\n\r\n if (this.props.isModal === false && this.props.location.state.isAddingProducts === true) {\r\n //this.toggleModal();\r\n }\r\n\r\n document.addEventListener(\"_productAddedEvent\", this.refreshLocker);\r\n\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.refreshLocker();\r\n }\r\n });\r\n\r\n const savedByUser = this.props?.match?.params?.post?.savedByUser;\r\n this.setState({ savedByUser });\r\n\r\n let isFollowing = await this.fetchIsFollowing(this.state.locker.user?.id);\r\n this.setState({ isFollowing });\r\n\r\n // THIS IS LOGIC TO CALCULATE THE HEIGHT OF THE CONTENT

    FOR 'SEE MORE'\r\n // FOR DEVICE SIZES THAT ARE NOT SMALL - it determines if height of ProfileInfoCard \r\n // is less than the expanded < p > and then puts it in contentOverflowed as well as \r\n // calculate the height of the of the 'SEE MORE'

    based on it's expanded size vs.\r\n // the size of the ProfileInfoCard and applies it to the styling.\r\n\r\n // SMALL DEVICES SET HEIGHT TO 2 LINES OF TEXT WHICH IS ~40px\r\n let contentOverflowed = false;\r\n let bioHeight;\r\n let titleHeight;\r\n let contentHeight;\r\n\r\n if (this.props?.deviceSize === \"sm\") {\r\n if (this.contentRef?.current?.offsetHeight > 40) {\r\n contentOverflowed = true;\r\n }\r\n } else {\r\n bioHeight = this.bioRef?.current?.offsetHeight;\r\n\r\n this.setState({ contentStyle: this.expandedContentStyle });\r\n\r\n titleHeight = this.titleRef?.current?.scrollHeight;\r\n\r\n if (bioHeight < titleHeight) {\r\n contentOverflowed = true;\r\n }\r\n this.setState({ contentStyle: this.notOverflowedContentStyle })\r\n }\r\n\r\n if (this.props?.deviceSize !== \"sm\" && contentOverflowed) {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n const overflow = titleHeight - bioHeight;\r\n\r\n contentHeight = this.contentRef?.current?.offsetHeight;\r\n\r\n const maxHeight = contentHeight - overflow > 40 ? Math.floor((contentHeight - overflow) / 20) * 20 - 20 + \"px\" : \"41px\";\r\n\r\n this.setState({ maxHeight, contentStyle: this.notOverflowedContentStyle })\r\n }\r\n\r\n this.collapsedContentStyle = { marginTop: \"0em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n this.notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n this.expandedContentStyle = { marginTop: \"0em\" };\r\n\r\n if (contentOverflowed) {\r\n this.setState({ contentOverflowed: contentOverflowed, contentStyle: this.collapsedContentStyle });\r\n } else if (!contentOverflowed && this.props.deviceSize !== \"sm\") {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.loggedInUser != this.props.loggedInUser) {\r\n this.setState({ loggedInUser: this.props.loggedInUser })\r\n }\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location?.state?.destinationState?.params?.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.getPageData(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n else {\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n\r\n this.setState({ isFollowing });\r\n }\r\n }\r\n\r\n this.setState({ locker: post, isLoading: false });\r\n }\r\n }\r\n\r\n removeCommentUsername = text => {\r\n const regex = /#!\\^.*?\\)\\)\\)/g;\r\n return text.replace(regex, '');\r\n } \r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ isFollowing: data });\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"_productAddedEvent\", this.refreshLocker);\r\n window.removeEventListener(\"storage\", () => { });\r\n }\r\n\r\n followAction = async () => {\r\n this.setState({ isFollowing: !this.state.isFollowing })\r\n\r\n let endpoint = this.state.isFollowing === true ? 'unfollow' : 'follow';\r\n let url = `/api/account/${endpoint}?id=${this.state.locker.user.id}`\r\n let data = await getRequest(url);\r\n }\r\n\r\n renderFollowButton() {\r\n if (this.state.isFollowing != undefined && this.state.isFollowing != null && (this.props.loggedInUser == null || this.props.loggedInUser.id !== this.state.locker.user.id)) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderThumbsUpOverlay = (product) => {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n if (!(product.creatorCount) || product.creatorCount === 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n this.toggleCreatorsModal(productId)} style={{ cursor: \"pointer\", top: \"15px\" }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n )\r\n\r\n }\r\n\r\n toggleCreatorsModal = (productId) => {\r\n const followersFollowing = \"creators\";\r\n this.props.toggleFollowersFollowingModal(!!(this.props.loggedInUser) ? this.props.loggedInUser.id : -1, followersFollowing, productId);\r\n }\r\n\r\n addProductsToLocker = async (products) => {\r\n let newState = { ...this.state };\r\n products.forEach((prod) => prod.coupon = prod.shareCode);\r\n let productMap = products.map((prod) => {\r\n return {\r\n userMerchantProduct: { ...prod, product: prod }\r\n }\r\n });\r\n newState.locker.productItems.$values = [...this.state.locker.productItems.$values, ...productMap];\r\n\r\n this.setState({ locker: newState.locker });\r\n\r\n var userMerchantProductIds = products.map((prod) => prod.userMerchantProductId);\r\n var added = await postRequest(`/api/Post/addPostProducts?shareCode=${this.state.locker.shareCode}`, userMerchantProductIds);\r\n\r\n await this.getPageData(this.state.locker.shareCode, true);\r\n }\r\n\r\n toTitleCase = (string) => {\r\n if (!!(string)) {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n return string;\r\n } \r\n\r\n displayProductImages = () => {\r\n return trimProductsArray(this.state.locker.productItems?.$values)?.sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n }).map((val, i) => {\r\n if (this.state.isEditingProducts === true) {\r\n return (\r\n \r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.toggleDescriptionModal(i)}\r\n post={this.state.locker}\r\n loggedInUser={this.state.loggedInUser}\r\n locker={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}{val.sale && !!(val.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(val.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {val.sale && !!(val.salePrice) ? \"$\" + val.salePrice.toFixed(2) : <>}
    ${val.sale && !!(val.salePrice) && !!(val.originalPrice) ? val.originalPrice.toFixed(2) : val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n } else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.renderInfoOverlay(val)}\r\n {this.renderThumbsUpOverlay(val)}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.locker}\r\n locker={true}\r\n parentModal={this.props.isModal === true ? { type: \"locker\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.locker } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}{val.sale && !!(val.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(val.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {val.sale && !!(val.salePrice) ? \"$\" + val.salePrice.toFixed(2) : <>}
    ${val.sale && !!(val.salePrice) && !!(val.originalPrice) ? val.originalPrice.toFixed(2) : val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n })\r\n }\r\n\r\n displayComments = () => {\r\n let comments = this.state.locker?.comments;\r\n if (comments && comments.length && comments.length > 0) {\r\n\r\n return comments.map((comment, i) => {\r\n return \r\n })\r\n }\r\n }\r\n\r\n displayCommentForm = () => {\r\n if (this.state.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n this.setState({ comment: e.target.value })}\r\n postComment={this.postComment}\r\n commentsTextArea={this.commentsTextArea}\r\n submittingComment={this.state.submittingComment}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n displayCommentSectionHeading = () => {\r\n let totalComments = this.state.locker.commentCount;\r\n let count = this.state.locker.comments.length;\r\n\r\n if (count === 0) {\r\n return \"No Comments\";\r\n }\r\n else if (count === 1) {\r\n return `${count} comment`;\r\n }\r\n else {\r\n return `${count} of ${totalComments} comments`;\r\n }\r\n }\r\n\r\n displayEditLockerLink = () => {\r\n if (this.state.loggedInUser?.id === this.state.locker.user?.id) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n displayBanner = () => {\r\n let properties = this.state.locker?.properties?.$values;\r\n let imageSrc = properties?.length > 0 ? properties[0].value : \"images/blank-banner.png\"\r\n return \r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n if (this.props.loggedInUser) {\r\n e.preventDefault();\r\n let savedByUser = !this.state.savedByUser;\r\n this.setState({ savedByUser });\r\n this.saveLocker(shareCode);\r\n } else {\r\n this.props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.props.toggleShareModal(this.state.shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n displayProductEditButtons = () => {\r\n if (this.state.loggedInUser?.id === this.state.locker?.user?.id && this.props.modal === false) {\r\n return (\r\n
    \r\n \r\n\r\n \r\n
    \r\n )\r\n }\r\n }\r\n\r\n displayTags = () => {\r\n return this.state.locker.sectors?.$values?.map((tag, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n getPageData = async (shareCode, isAuthorized) => {\r\n let url = isAuthorized === true ? `/api/post/getPostAuthorized?shareCode=${shareCode}&referrer=${document.referrer}` : `/api/post/getPost?shareCode=${shareCode}&referrer=${document.referrer}`;\r\n let response = await getRequest(url);\r\n return response;\r\n //this.setState({ locker: response });\r\n }\r\n\r\n fetchComments = async (skip = this.state.locker.comments.length, take = 25) => {\r\n return;\r\n this.setState({ loadingComments: true });\r\n let baseUrl = this.state.loggedInUser !== undefined ? `/api/post/getCommentsAuthorized` : `/api/post/getComments`;\r\n let url = `${baseUrl}?shareCode=${this.state.shareCode}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n let newState = { ...this.state };\r\n newState.locker.comments = [...data, ...this.state.locker.comments];\r\n\r\n this.setState({ ...newState, loadingComments: false });\r\n }\r\n\r\n likeLocker = async (shareCode) => {\r\n let num = this.state.locker.likedByUser === true ? -1 : 1;\r\n let newLikes = {\r\n likeCount: this.state.locker.likeCount + num,\r\n likedByUser: !this.state.locker.likedByUser\r\n }\r\n let newLocker = { ...this.state.locker, ...newLikes };\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.likedByUser = newLocker.likedByUser;\r\n this.props.match.params.post.likeCount = newLocker.likeCount;\r\n }\r\n\r\n this.setState({ locker: newLocker }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n likeComment = async (comment, key) => {\r\n let num = this.state.locker.comments[key].likedByUser === true ? -1 : 1;\r\n let newState = { ...this.state };\r\n newState.locker.comments[key].likes += num;\r\n newState.locker.comments[key].likedByUser = !newState.locker.comments[key].likedByUser;\r\n\r\n this.setState(newState, async () => {\r\n let requestObject = {\r\n id: comment.id,\r\n likedByUser: num < 0\r\n }\r\n let url = `/api/post/likeComment`;\r\n let data = await postRequest(url, requestObject);\r\n });\r\n }\r\n\r\n messageUser() {\r\n alert(\"message user clicked...\");\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let dataToPost = { text: this.state.comment };\r\n let shareCode = this.state.locker.shareCode;\r\n let url = `/api/post/postComment?shareCode=${shareCode}&postType=${this.state.locker.type}`;\r\n\r\n let today = (new Date()).toLocaleString(Date.now());\r\n\r\n let dummyComment = {\r\n likedByUser: false,\r\n likes: 0,\r\n replyCount: 0,\r\n text: this.state.comment,\r\n user: this.state.loggedInUser,\r\n createdOn: today\r\n };\r\n\r\n let comments = [...this.state.locker.comments];\r\n comments.push(dummyComment);\r\n\r\n let newState = { ...this.state };\r\n newState.comment = \"\";\r\n newState.locker.comments = comments;\r\n newState.locker.totalCount += 1;\r\n newState.locker.commentCount += 1;\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.comments = [...newState.locker.comments];\r\n this.props.match.params.post.commentCount = newState.locker.commentCount;\r\n this.props.match.params.post.totalCount = newState.locker.totalCount;\r\n }\r\n\r\n this.setState(newState, async () => {\r\n await postRequest(url, dataToPost);\r\n this.setState({ submittingComment: false });\r\n });\r\n }\r\n\r\n refreshLocker = async () => {\r\n if (this.state.locker.user.id === this.props.loggedInUser?.id) {\r\n let shareCode = this.state.locker.shareCode;\r\n let isAuthorized = this.props.loggedInUser === undefined ? false : true;\r\n let locker = await this.getPageData(shareCode, isAuthorized);\r\n if (locker) {\r\n this.setState({ locker });\r\n }\r\n }\r\n }\r\n\r\n removeProductFromLocker = async (coupon) => {\r\n let updatedLocker = { ...this.state.locker };\r\n let location = updatedLocker.productItems.$values.findIndex(prod => prod.userMerchantProduct.coupon === coupon);\r\n let product = updatedLocker.productItems.$values.find(prod => prod.userMerchantProduct.coupon === coupon);\r\n if (location > -1) {\r\n updatedLocker.productItems.$values.splice(location, 1);\r\n }\r\n\r\n this.setState({ locker: updatedLocker, deletingProduct: { isDeleting: false, coupon: \"\" } })\r\n\r\n let payload = {\r\n user: {\r\n id: this.state.locker.user?.id\r\n }\r\n };\r\n\r\n await postRequest(`/api/Locker/DeleteLockerProduct?userPostUserMerchantProductId=${product.id}`, payload);\r\n await this.getPageData(this.state.locker.shareCode, true);\r\n //alert(\"are you sure you want to delete this product?\")\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n let description = this.state.locker.productItems?.$values[this.state.selectedProduct]?.comment || this.state.locker.productItems?.$values[this.state.selectedProduct]?.userMerchantProduct.userDescription;\r\n if (this.state.isEditingProducts === true) {\r\n return (\r\n \r\n
    \r\n {\r\n this.saveDescriptionChange(this.state.selectedProduct, description)\r\n this.toggleDescriptionModal()\r\n }} />\r\n
    \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n
    \r\n \r\n

    {description}

    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n }\r\n }\r\n\r\n renderProductPagination = () => {\r\n if (this.state.locker.productItems?.$values?.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n this.prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {this.state.locker.productItems?.$values?.length}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n this.nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n saveDescriptionChange = async (productIndex, description) => {\r\n let locker = { ...this.state.locker };\r\n locker.productItems.$values[productIndex].comment = description;\r\n //locker.productItems.$values[productIndex].product.userDescription = description;\r\n this.setState({ locker });\r\n\r\n let product = locker.productItems.$values[productIndex];\r\n let payload = {\r\n id: product.id,\r\n comment: product.comment,\r\n userPostId: locker.id,\r\n userPostProductItemTypeId: locker.productItems.$values[productIndex].type,\r\n userMerchantProductId: locker.productItems.$values[productIndex].userMerchantProduct.id,\r\n ordinal: locker.productItems.$values[productIndex].ordinal\r\n }\r\n\r\n let url = `api/Locker/UpdateLockerProductDescription?comment=${product.comment}&userPostUserMerchantProductId=${product.id}`;\r\n\r\n var update = await postRequest(url, payload);\r\n //make api call to update product\r\n }\r\n\r\n saveLocker = async (shareCode) => {\r\n let reqBody = { shareCode };\r\n\r\n let route = this.state.locker.savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n let data = await postRequest(route, reqBody);\r\n\r\n let newPost = { ...this.state.locker };\r\n newPost.savedByUser = !this.state.locker.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.savedByUser = newPost.savedByUser;\r\n }\r\n\r\n this.setState({ locker: newPost });\r\n }\r\n\r\n toggleModal = () => {\r\n if (this.props.isModal === true) {\r\n //this.props.handleAddProducts();\r\n } else {\r\n this.props.toggleProductSelectModal();\r\n }\r\n\r\n }\r\n\r\n toggleDescriptionModal = (shareCode) => {\r\n let productIndex = this.state.locker?.productItems?.$values.findIndex(locker => locker.userMerchantProduct.coupon === shareCode);\r\n\r\n this.setState({ showDescriptionModal: !this.state.showDescriptionModal, selectedProduct: productIndex })\r\n }\r\n\r\n prevPage = () => {\r\n let page = this.state.productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor(this.state.locker.productItems?.$values?.length / 4);\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n nextPage = () => {\r\n let page = this.state.productPage + 1;\r\n if (page * 4 > this.state.locker.productItems?.$values?.length) {\r\n page = 0;\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n contentSection = () => {\r\n if (!this.state.contentOverflowed) {\r\n return (\r\n
    \r\n

    {this.state.locker.title}

    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n\r\n
    \r\n )\r\n } else {\r\n if (this.state.collapsed) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {this.state.locker.title}

    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.expandedContentStyle, collapsed: false });\r\n }}>\r\n see more\r\n \r\n
    \r\n
    )\r\n\r\n } else {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {this.state.locker.title}

    \r\n\r\n {/**Bio Text, pulled from state or redux state */}\r\n

    \r\n {this.handleTextMarkup(this.state.locker?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.collapsedContentStyle, collapsed: true });\r\n }}>\r\n see less\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n getPageTitle = () => {\r\n const shareCode = this.props.match?.params?.shareCode;\r\n\r\n return \"RockPorch - Locker: \" + shareCode;\r\n };\r\n\r\n\r\n render() {\r\n if (this.state.locker === \"notFound\") {\r\n return (\r\n
    \r\n

    Locker not found

    \r\n Explore\r\n
    \r\n )\r\n }\r\n\r\n if (this.state.isLoading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n \r\n ) \r\n }\r\n\r\n let commentCount = this.state.locker.comments.length;\r\n let parsedDate = this.state.locker.postedOn ? convertToLocaleDateTimeString(new Date(this.state.locker?.postedOn), false) : \"\";\r\n let { deviceSize } = this.props;\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.locker.status) === true && this.state.locker.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {\r\n !!(this.props.isModal) ?\r\n <>\r\n :\r\n \r\n {this.getPageTitle()}\r\n \r\n }\r\n {this.renderDescriptionModal()}\r\n \r\n this.setState({ deletingProduct: { isDeleting: false, coupon: \"\" } })}\r\n />\r\n {\r\n this.props.deviceSize === \"sm\" ? (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n ) : \r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n {this.renderBookmarkOverlay()}\r\n {this.renderShareOverlay()}\r\n {this.displayBanner()}\r\n {this.displayEditLockerLink()}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.contentSection()}\r\n\r\n {/*Mini profile section */}\r\n {\r\n this.props.deviceSize !== \"sm\" ? (\r\n
    \r\n \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n ) : \r\n }\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    0 ? \"pb-0 mb-3\" : \"pb-0 border border-0\"}`}>\r\n
    = 4 ? \"justify-content-left\" : \"justify-content-center\"} px-0 position-relative mt-2`}>\r\n {this.displayProductEditButtons()}\r\n {this.displayProductImages()}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleProductSelectModal: toggleProductSelectModal,\r\n toggleProductPageModal: toggleProductPageModal,\r\n toggleShareModal: toggleShareModal,\r\n toggleFollowersFollowingModal: toggleFollowersFollowingModal,\r\n closeAllModals: closeAllModals\r\n}\r\n\r\nexport default connect(null, mapDispatch)(LockerPage);","import React, { useState, useEffect } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport { connect } from \"react-redux\";\r\nimport LockerPage from \"views/Locker/LockerPage\";\r\nimport { toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object, shareCode:string, showModal:boolean, parentModal:{type:string,parentState:object}}} props\r\n */\r\nconst LockerPageModal = (props) => {\r\n let paramProps = {\r\n params: {\r\n post: props.post,\r\n loggedInUser: props.loggedInUser,\r\n setPost: props.setPost\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n }, [props.showModal]);\r\n\r\n let [isAddingProducts, setIsAddingProducts] = useState(false);\r\n\r\n let goToPage = () => setIsAddingProducts(true);\r\n\r\n if (isAddingProducts === true) {\r\n return \r\n } else {\r\n return (\r\n {\r\n if (props.parentModal !== null) {\r\n switch (props.parentModal?.type) {\r\n case \"product\": {\r\n props.toggleProductModal(props.parentModal.parentState,props.loggedInUser,false,null,null);\r\n break;\r\n }\r\n default: {\r\n props.toggleModal(props.post, props.loggedInUser, false, props.setPost);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n props.toggleModal(props.post, props.loggedInUser, false, props.setPost)\r\n }\r\n \r\n }}\r\n showHeader={true}\r\n showThreeDotMenu={props.loggedInUser ? true : false} \r\n loggedInUser={props.loggedInUser}\r\n post={props.post}\r\n modalDialogCustomClass=\"modal-dialog-md\"\r\n modalHeaderRedirect={`/Locker/LockerPage/${props.post?.shareCode}`}\r\n state={paramProps}\r\n >\r\n \r\n \r\n\r\n )\r\n }\r\n\r\n \r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.lockerPageModal.showLockerPageModal,\r\n shareCode: storeState.modalReducer.lockerPageModal.shareCode,\r\n post: storeState.modalReducer.lockerPageModal.post,\r\n loggedInUser: storeState.modalReducer.lockerPageModal.loggedInUser,\r\n isCommenting: storeState.modalReducer.lockerPageModal.isCommenting,\r\n setPost: storeState.modalReducer.lockerPageModal.setPost,\r\n parentModal: storeState.modalReducer.lockerPageModal.parentModal\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleLockerPageModal,\r\n toggleProductModal: toggleProductPageModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(LockerPageModal);","import React, { useState, useEffect } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport { connect } from \"react-redux\";\r\nimport ProductPage from \"views/Product/ProductPage\";\r\nimport { toggleProductPageModal,toggleLockerPageModal,togglePostPageModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object, deviceSize:any,parentModal:{type:string,parentState:object}} props\r\n */\r\nconst ProductPageModal = (props) => {\r\n let paramProps = {\r\n params: {\r\n product: props.product,\r\n loggedInUser: props.loggedInUser,\r\n setProduct: props.setProduct\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n }, [props.showModal]);\r\n\r\n\r\n let [modalDialogExpanded, setDialogExpanded] = useState(false);\r\n let productModalClass = modalDialogExpanded === true ? \"\" : \"product-modal-dialog\";\r\n return (\r\n {\r\n setDialogExpanded(false);\r\n if (props.parentModal != null) {\r\n switch (props.parentModal?.type) {\r\n case \"locker\": {\r\n props.toggleLockerModal(props.parentModal.parentState, props.loggedInUser, false, null);\r\n break;\r\n }\r\n case \"post\": {\r\n props.togglePostModal(props.parentModal.parentState, props.loggedInUser,false,null);\r\n break;\r\n }\r\n default: {\r\n props.toggleModal(props.product, props.loggedInUser, false, props.setProduct, null);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n props.toggleModal(props.product, props.loggedInUser, false, props.setProduct, null);\r\n }\r\n \r\n }}\r\n state={paramProps}\r\n >\r\n {\r\n setDialogExpanded(!modalDialogExpanded);\r\n }}\r\n toggleSignUpModal={props.toggleSignUpModal}\r\n toggleShareModal={props.toggleShareModal}\r\n screenWidth={props.screenWidth}\r\n brandNav={props.brandNav}\r\n />\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.productPageModal.showProductPageModal,\r\n shareCode: storeState.modalReducer.productPageModal.shareCode,\r\n product: storeState.modalReducer.productPageModal.product,\r\n loggedInUser: storeState.modalReducer.productPageModal.loggedInUser,\r\n isCommenting: storeState.modalReducer.productPageModal.isCommenting,\r\n setProduct: storeState.modalReducer.productPageModal.setProduct,\r\n parentModal: storeState.modalReducer.productPageModal.parentModal,\r\n isBrowse: storeState.modalReducer.productPageModal.isBrowse,\r\n isSearch: storeState.modalReducer.productPageModal.isSearch,\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleProductPageModal,\r\n toggleLockerModal: toggleLockerPageModal,\r\n togglePostModal: togglePostPageModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(ProductPageModal);","import React, { useState } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport { useEffect, useRef } from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\n/**\r\n * \r\n * @param {{advance:Function,productUrl:string,handleInput:Function, isLoading:boolean, productNotFound:boolean, isModal:boolean}} props \r\n */\r\nconst ShareABlogLookupUrlForm = (props) => {\r\n\r\n const inputRef = useRef(null);\r\n const [urlInput, setUrlInput] = useState(\"\");\r\n const [invalidUrl, setInvalidUrl] = useState(true);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [showError, setShowError] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState(\"Blog URL will not process. Try again.\");\r\n\r\n useEffect(() => {\r\n if (inputRef && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n if (!!(props.validUrl)) {\r\n setUrlInput(props.validUrl);\r\n setInvalidUrl(false);\r\n }\r\n }, [])\r\n\r\n const fetchLinkPreview = async () => {\r\n const url = \"/api/LinkPreview/Get?url=\" + encodeURIComponent(urlInput);\r\n const linkPreview = await getRequest(url);\r\n setIsLoading(false);\r\n if (!(linkPreview)) {\r\n setShowError(true);\r\n } else {\r\n props.handleUrlSubmit(linkPreview, urlInput);\r\n }\r\n }\r\n\r\n const handleOnChange = (event) => {\r\n let url = event.target.value;\r\n setUrlInput(url);\r\n\r\n let isValid = url.length > 0 ? isValidUrl(url) : false;\r\n if (isValid) {\r\n setInvalidUrl(false);\r\n } else {\r\n setInvalidUrl(true);\r\n }\r\n }\r\n\r\n const handleSubmit = () => {\r\n setIsLoading(true);\r\n fetchLinkPreview();\r\n }\r\n\r\n const handleKeypress = (e) => {\r\n if (e.key === 'Enter') {\r\n handleSubmit();\r\n }\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n\r\n
    \r\n
    Share a Blog Article
    \r\n
    Paste blog URL here.
    \r\n\r\n
    \r\n\r\n handleOnChange(e)}\r\n onKeyPress={handleKeypress}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\" }}\r\n />\r\n Submit\r\n
    \r\n\r\n {\r\n showError ? (\r\n
    \r\n \r\n Sorry!
    \r\n {errorMessage}\r\n
    \r\n

     

    \r\n
    \r\n ) : \r\n }\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default ShareABlogLookupUrlForm;","import React, { useState } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport RPModal from \"components/Modal\";\r\nimport PreviewCard from 'components/Post/Create/PreviewCard';\r\nimport { Button, ModalFooter } from 'reactstrap'\r\n\r\n/**\r\n * \r\n * @param {{advance:Function,productUrl:string,handleInput:Function, isLoading:boolean, productNotFound:boolean, isModal:boolean}} props \r\n */\r\nconst ShareABlogPreview = (props) => {\r\n\r\n const renderPreviewPost = () => {\r\n return (\r\n props.setPostCaption(val)}\r\n post={props.post}\r\n loggedInUser={props.loggedInUser}\r\n deviceSize={props.deviceSize}\r\n captionValue={props.postCaption}\r\n blog={true}\r\n />\r\n )\r\n };\r\n\r\n return (\r\n } ignoreClickAway={true}>\r\n {renderPreviewPost()}\r\n \r\n \r\n {true ?\r\n \r\n Next\r\n : null}\r\n\r\n \r\n \r\n )\r\n\r\n\r\n}\r\n\r\n\r\nexport default ShareABlogPreview;","import React, { useState } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareBlogModal } from \"stateManagement/reducers/modalReducer\";\r\nimport ShareABlogLookupUrlForm from \"components/ShareABlog/ShareABlogLookupUrlForm\"\r\nimport ShareABlogPreview from \"components/ShareABlog/ShareABlogPreview\"\r\n\r\nimport PreviewCard from 'components/Post/Create/PreviewCard';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object, userId:any,followersFollowing:string, setLoggedInUser:Function}} props\r\n */\r\nconst ShareABlogModal = (props) => {\r\n const history = useHistory();\r\n const blankPost = {\r\n title: \"\",\r\n content: \"\",\r\n platformName: \"blogShare\",\r\n type: 4,\r\n id: null,\r\n media: [\r\n {\r\n imageLink: \"\",\r\n isExternalReference: true,\r\n children: [\r\n {\r\n resourceLink: \"\",\r\n }\r\n ],\r\n },\r\n ],\r\n }\r\n\r\n const [validUrl, setValidUrl] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n\r\n const [post, setPost] = useState(blankPost);\r\n const [actionLevel, setActionLevel] = useState(1);\r\n const [postCaption, setPostCaption] = useState(\"\");\r\n\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n\r\n const uuidv4 = () => {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n };\r\n\r\n const handleUrlSubmit = (lp, url) => {\r\n setValidUrl(url);\r\n\r\n const newPost = { ...post };\r\n newPost.id = uuidv4();\r\n newPost.title = !!(lp.title) ? lp.title : \"\";\r\n newPost.content = !!(lp.description) ? lp.description : \"\";\r\n\r\n newPost.media[0].imageLink = lp.image;\r\n newPost.media[0].children[0].resourceLink = url;\r\n\r\n setPost(newPost);\r\n advanceLevel();\r\n }\r\n\r\n const advanceLevel = () => {\r\n setActionLevel(actionLevel + 1);\r\n }\r\n\r\n const reduceLevel = () => {\r\n setActionLevel(actionLevel - 1);\r\n setPost({ ...blankPost });\r\n setValidUrl(\"\");\r\n }\r\n\r\n const handleNext = async () => {\r\n const route = '/api/post/InsertBlogPost';\r\n let selectedPost = {...post};\r\n selectedPost.content = !!(postCaption) ? postCaption : selectedPost.content;\r\n\r\n setLoading(true);\r\n let data = await postRequest(route, selectedPost);\r\n setLoading(false);\r\n setPost({ ...blankPost });\r\n setValidUrl(\"\");\r\n setActionLevel(actionLevel - 1);\r\n history.push(`/Blog/NewBlogPage/${data.shareCode}`, { state: { justCreated: true } });\r\n }\r\n\r\n return (\r\n props.toggleModal(null)}>\r\n {\r\n actionLevel === 1 ?\r\n \r\n :\r\n \r\n }\r\n \r\n\r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.shareBlogModal.showShareBlogModal,\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleShareBlogModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(ShareABlogModal);","import React, { useState, useEffect } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareBlogModal, toggleShareDeepLinkModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object, userId:any,followersFollowing:string, setLoggedInUser:Function}} props\r\n */\r\nconst ShareDeepLinkModal = (props) => {\r\n\r\n const [showCopied2, setCopiedText2] = useState(false);\r\n const [validUrl, setValidUrl] = useState(true);\r\n const [merchantExists, setMerchantExists] = useState(true);\r\n const [merchantId, setMerchantId] = useState(0);\r\n const [redirectUrl, setRedirectUrl] = useState(\"\");\r\n const [urlInput, setUrlInput] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n\r\n const resetParams = () => {\r\n setRedirectUrl(\"\");\r\n setMerchantExists(true);\r\n setValidUrl(true);\r\n setUrlInput(\"\");\r\n setMerchantId(0);\r\n }\r\n \r\n useEffect(() => {\r\n if (props.showModal === false) {\r\n resetParams();\r\n }\r\n }, [props.showModal])\r\n\r\n useEffect(() => {\r\n let isValid = isValidUrl(urlInput, true);\r\n if (urlInput.length > 3 && (isValid === false)) {\r\n setValidUrl(false);\r\n }\r\n else {\r\n setValidUrl(true);\r\n }\r\n }, [urlInput])\r\n\r\n const fetchMerchantByUrl = async (url) => {\r\n let route = '/api/Merchant/GetMerchantByHostname?url=' + url;\r\n\r\n setLoading(true);\r\n let merchant = await getRequest(route);\r\n setLoading(false);\r\n\r\n return merchant;\r\n }\r\n\r\n let renderCopiedText2 = () => {\r\n if (showCopied2) {\r\n setTimeout(() => { setCopiedText2(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n let handleInput = (e) => {\r\n let url = e.target.value;\r\n setUrlInput(url);\r\n }\r\n\r\n let handleDeepLinkChange = async (event) => {\r\n setRedirectUrl(\"\");\r\n setValidUrl(true);\r\n\r\n let url = urlInput\r\n\r\n if (validUrl) {\r\n let merchant = await fetchMerchantByUrl(url);\r\n if (!!(merchant)) {\r\n setMerchantId(merchant.id);\r\n setMerchantExists(true);\r\n setRedirectUrl(window.location.origin + \"/m/\" + merchant.id + \"?userId=\" + props.loggedInUser.id + \"&redirectUrl=\" + url);\r\n } else {\r\n setMerchantExists(false);\r\n setRedirectUrl(\"\");\r\n setMerchantId(0);\r\n }\r\n\r\n } else {\r\n setValidUrl(false);\r\n setRedirectUrl(\"\");\r\n }\r\n };\r\n\r\n const onKeypress = (e) => {\r\n if (e.key === 'Enter') handleDeepLinkChange();\r\n }\r\n\r\n const displayValidationMessage = () => {\r\n if (!validUrl) {\r\n return (\r\n

    \r\n\r\n Sorry, that doesn't look like a the URL to one of our Merchant Partners.
    \r\n Copy and paste the URL of the page you're trying to create a link for.
    \r\n Example: https://www.example.com...\r\n\r\n

    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n const displayMerchantNotIntegratedMessage = () => {\r\n if (urlInput.length > 0 && isValidUrl && !merchantExists) {\r\n return (\r\n
    \r\n \r\n Sorry!
    \r\n We are not partnered with this merchant yet. We recorded your attempt and are establishing new merchants every day.\r\n
    \r\n

     

    \r\n
    Click HERE for a list of Merchant Partners
    \r\n
    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n return (\r\n props.toggleModal(null)}>\r\n {\r\n
    \r\n
    \r\n\r\n
    \r\n
    Share a Deep Link
    \r\n
    Share a link to a page from one of RockPorch's many Merchant Partners!
    \r\n {/*
    Share a Link to a Product or Page from one of RockPorch's many Merchants!
    */}\r\n {/*

    0 && isValidUrl && !merchantExists ? \"\" : \"none\" }}>Merchant is not yet integrated yet with RockPorch.

    */}\r\n\r\n\r\n
    \r\n\r\n {/* 0 ? urlInput : \"\"} placeholder={redirectUrl.length === 0 ? \"Paste URL for Deep Link here\" : redirectUrl} id=\"myInput\" onChange={(e) => handleInput(e)} />*/}\r\n 0 ? urlInput : \"\"}\r\n id=\"myInput\"\r\n placeholder={redirectUrl.length === 0 ? \"Paste Merchant URL for Deep Link here\" : redirectUrl}\r\n onChange={handleInput}\r\n onKeyPress={onKeypress}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\" }}\r\n autoFocus\r\n />\r\n Submit\r\n
    \r\n\r\n {displayValidationMessage()}\r\n {displayMerchantNotIntegratedMessage()\r\n \r\n}\r\n\r\n
    0 ? \"\" : \"none\" }}>\r\n null} />\r\n \r\n
    \r\n Reset\r\n\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n\r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.shareDeepLinkModal.showShareDeepLinkModal,\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleShareDeepLinkModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(ShareDeepLinkModal);","import React, { useState, useEffect, useRef } from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleAddProductOrDeepLinkModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Popover, PopoverBody, UncontrolledPopover } from \"reactstrap\";\r\nimport RockporchMountainIcon from \"components/icons/RockporchMountainIcon\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object, userId:any,followersFollowing:string, setLoggedInUser:Function}} props\r\n * productOrDeepLinkObject.resultType: 1 = Product, 2 = DeepLink, 3 = MerchantNotIntegrated\r\n */\r\nconst AddProductOrDeepLinkModal = (props) => {\r\n const [showCopied2, setCopiedText2] = useState(false);\r\n const [validUrl, setValidUrl] = useState(true);\r\n const [merchantExists, setMerchantExists] = useState(true);\r\n const [merchantId, setMerchantId] = useState(0);\r\n const [resultType, setResultType] = useState(0);\r\n const [redirectUrl, setRedirectUrl] = useState(\"\");\r\n const [urlInput, setUrlInput] = useState(\"\");\r\n const [loading, setLoading] = useState(false);\r\n const [loadingManualProductCreation, setLoadingManualProductCreation] = useState(false);\r\n const [product, setProduct] = useState(null);\r\n let [showLearnMore, setLearnMore] = useState(false);\r\n const [doManualProductCreation, setDoManualProductCreation] = useState(false);\r\n const [manualProductCreationFailed, setManualProductCreationFailed] = useState(false);\r\n\r\n const [manufacturer, setManufacturer] = useState('');\r\n const [name, setName] = useState('');\r\n const [description, setDescription] = useState('');\r\n const [price, setPrice] = useState(''); // You can set an initial value if needed\r\n const [productCode, setProductCode] = useState('');\r\n const [imageUrl, setImageUrl] = useState('');\r\n const [invalidPrice, setInvalidPrice] = useState(false);\r\n\r\n const inputRef = useRef(null);\r\n\r\n\r\n let isMobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n let bookmarkOrigin = window.location.origin;\r\n let buttonStyle = {\r\n background: \"#D2E3E0\"\r\n }\r\n const resetParams = (resetUrlInput = true) => {\r\n setRedirectUrl(\"\");\r\n setDoManualProductCreation(false);\r\n setMerchantExists(true);\r\n setValidUrl(true);\r\n setMerchantId(0);\r\n\r\n setManufacturer('');\r\n setName('');\r\n setDescription('');\r\n setPrice('');\r\n setProductCode('')\r\n setImageUrl('');\r\n setManualProductCreationFailed(false);\r\n\r\n setResultType(0);\r\n setProduct(null);\r\n if (resetUrlInput) {\r\n setUrlInput(\"\");\r\n }\r\n if (!!(inputRef) && !!(inputRef.current)) {\r\n inputRef.current.focus();\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.isModal === false) {\r\n props.setShowTopNav(false);\r\n if (window.location.search.length > 0)\r\n {\r\n let productUrl = window.location.search.split(\"=\")[1];\r\n let decodedUrl = decodeURIComponent(productUrl);\r\n setUrlInput(decodedUrl);\r\n handleLogic(decodedUrl);\r\n handleGoogleAnalytics4Bookmark();\r\n }\r\n }\r\n },[])\r\n\r\n useEffect(() => {\r\n if ((props.isModal == undefined || props.isModal == null || props.isModal == true) && props.showModal === false) {\r\n resetParams(true);\r\n }\r\n }, [props.showModal])\r\n\r\n useEffect(() => {\r\n let isValid = isValidUrl(urlInput, true);\r\n if (urlInput.length > 3 && (isValid === false)) {\r\n setValidUrl(false);\r\n }\r\n else {\r\n setValidUrl(true);\r\n }\r\n }, [urlInput])\r\n\r\n useEffect(() => {\r\n if (redirectUrl === \"\" && merchantId === 0 && !!(inputRef) && !!(inputRef.current)) {\r\n resetParams(true);\r\n }\r\n }, [redirectUrl])\r\n\r\n const fetchProductOrDeepLinkByUrl = async (url) => {\r\n let route = \"/Products/GetProductOrDeepLinkByUrl\";\r\n let requestData = { url: url.trim() };\r\n setLoading(true);\r\n let merchant = await postRequest(route, requestData);\r\n setLoading(false);\r\n\r\n return merchant;\r\n }\r\n\r\n let renderCopiedText2 = () => {\r\n if (showCopied2) {\r\n setTimeout(() => { setCopiedText2(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n let handleInput = (e) => {\r\n let url = e.target.value;\r\n setUrlInput(url);\r\n }\r\n\r\n let handleGoogleAnalytics4Modal = () => {\r\n window.gtag('event', 'Add_Product_Deep_Link_Modal', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Add Product Deep Link Modal`,\r\n });\r\n }\r\n\r\n let handleGoogleAnalytics4Bookmark = () => {\r\n window.gtag('event', 'Add_Product_Deep_Link_Bookmark', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Add Product Deep Link Bookmark`,\r\n });\r\n }\r\n\r\n let handleDeepLinkChange = async (event) => {\r\n handleGoogleAnalytics4Modal();\r\n\r\n setRedirectUrl(\"\");\r\n setValidUrl(true);\r\n resetParams(false);\r\n\r\n let url = urlInput\r\n\r\n if (validUrl) {\r\n await handleLogic(urlInput);\r\n } else {\r\n setValidUrl(false);\r\n setRedirectUrl(\"\");\r\n }\r\n };\r\n\r\n const handleLogic = async (url) => {\r\n let productOrDeepLinkResult = await fetchProductOrDeepLinkByUrl(url);\r\n\r\n if (!!(productOrDeepLinkResult) && [1, 2].includes(productOrDeepLinkResult.returnType)) {\r\n\r\n setMerchantId(productOrDeepLinkResult.merchantId);\r\n setMerchantExists(true);\r\n setResultType(productOrDeepLinkResult.returnType);\r\n if (productOrDeepLinkResult.returnType === 1) {\r\n setRedirectUrl(productOrDeepLinkResult.shareLink);\r\n if (!!(productOrDeepLinkResult.product)) {\r\n setProduct(productOrDeepLinkResult.product);\r\n let event = new Event(\"_productAddedEvent\");\r\n document.dispatchEvent(event);\r\n }\r\n } else {\r\n setRedirectUrl(productOrDeepLinkResult.shareLink);\r\n setDoManualProductCreation(productOrDeepLinkResult.renderManualProductCreation);\r\n }\r\n props.reloadCreatorDashboardAnalyticsData();\r\n } else {\r\n setMerchantExists(false);\r\n setRedirectUrl(\"\");\r\n setMerchantId(0);\r\n }\r\n if (!props.isModal && !!(productOrDeepLinkResult) && productOrDeepLinkResult.returnType === 3) {\r\n setValidUrl(true);\r\n }\r\n }\r\n\r\n const onKeypress = (e) => {\r\n if (e.key === 'Enter') handleDeepLinkChange();\r\n }\r\n\r\n const displayValidationMessage = () => {\r\n if (!validUrl) {\r\n return (\r\n

    \r\n\r\n Sorry, that doesn't look like a the URL to one of our Merchant Partners.
    \r\n Copy and paste the URL of the page you're trying to add.
    \r\n Example: https://www.example.com...\r\n\r\n

    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n function toggleShowLearnMore() {\r\n setLearnMore(true);\r\n setTimeout(() => {\r\n setLearnMore(false)\r\n }, 5000);\r\n }\r\n\r\n const displayMerchantNotIntegratedMessage = () => {\r\n if (urlInput.length > 0 && isValidUrl && !merchantExists) {\r\n return (\r\n
    \r\n \r\n Sorry!
    \r\n We are not partnered with this merchant yet. We recorded your attempt and are establishing new merchants every day.\r\n
    \r\n

     

    \r\n
    Click HERE for a list of Merchant Partners
    \r\n
    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n const displayProductAddedMessage = () => {\r\n if (resultType === 1 && props.deviceSize === \"sm\") {\r\n return (\r\n
    \r\n \r\n The product was successfully added to
    \r\n \r\n My Products\r\n !\r\n
    \r\n
    \r\n )\r\n } else if (resultType === 1) {\r\n return (\r\n
    \r\n \r\n The product was successfully added to Saved Links!\r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n let displayManufacturer = (manufacturer) => {\r\n if (manufacturer?.toLowerCase().includes(\"rcktemp_\")) {\r\n return \"\";\r\n }\r\n return manufacturer;\r\n }\r\n\r\n const parseAndValidatePrice = (value) => {\r\n const numericValue = parseFloat(value);\r\n\r\n if (isNaN(numericValue) || numericValue <= 0) {\r\n setInvalidPrice(true);\r\n return null;\r\n } else {\r\n setInvalidPrice(false);\r\n return numericValue;\r\n }\r\n };\r\n\r\n const submitManualProductCreation = async () => {\r\n let parsedPrice = parseAndValidatePrice(price);\r\n if (!parsedPrice) {\r\n return;\r\n }\r\n\r\n setLoadingManualProductCreation(true);\r\n\r\n let uiControllerUrl = \"/Products/AddManualProductCreation\";\r\n let manualProduct = {\r\n manufacturer,\r\n price,\r\n description,\r\n name,\r\n productCode,\r\n url: urlInput,\r\n imageUrl,\r\n MerchantProductCode: productCode,\r\n };\r\n\r\n let productOrDeepLinkResult = await postRequest(uiControllerUrl, manualProduct);\r\n\r\n if (productOrDeepLinkResult && [1, 2].includes(productOrDeepLinkResult.returnType)) {\r\n setDoManualProductCreation(false);\r\n setManualProductCreationFailed(false);\r\n setMerchantId(productOrDeepLinkResult.merchantId);\r\n setMerchantExists(true);\r\n setResultType(productOrDeepLinkResult.returnType);\r\n\r\n if (productOrDeepLinkResult.returnType === 1) {\r\n setRedirectUrl(productOrDeepLinkResult.shareLink);\r\n\r\n if (productOrDeepLinkResult.product) {\r\n setProduct(productOrDeepLinkResult.product);\r\n let event = new Event(\"_productAddedEvent\");\r\n document.dispatchEvent(event);\r\n }\r\n } else {\r\n setManualProductCreationFailed(true);\r\n }\r\n\r\n setLoadingManualProductCreation(false);\r\n }\r\n };\r\n\r\n\r\n const renderAddManualProductCreation = () => {\r\n if (doManualProductCreation) {\r\n return (\r\n
    \r\n
    Manual Product Creation
    \r\n

    * Required field

    \r\n\r\n

    Add FAILED. Check data and try again.

    \r\n\r\n
    \r\n

    Affliate Product URL

    \r\n \r\n
    \r\n
    \r\n

    Brand Name*

    \r\n 0 ? manufacturer : \"\"}\r\n id=\"manufacturer\"\r\n placeholder={manufacturer.length === 0 ? \"Paste Brand name here\" : manufacturer}\r\n onChange={(e) => setManufacturer(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n autoFocus\r\n />\r\n
    \r\n\r\n
    \r\n

    Name*

    \r\n 0 ? name : \"\"}\r\n id=\"name\"\r\n placeholder={name.length === 0 ? \"Enter Product Name\" : name}\r\n onChange={(e) => setName(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n />\r\n
    \r\n\r\n
    \r\n

    Description

    \r\n 0 ? description : \"\"}\r\n id=\"description\"\r\n placeholder={description.length === 0 ? \"Enter Product Description\" : description}\r\n onChange={(e) => setDescription(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n />\r\n
    \r\n\r\n
    \r\n

    Price*

    \r\n

    Price must be above 0 and in x.xx format ie. 12.99 or 6.00

    \r\n\r\n setPrice(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n />\r\n
    \r\n\r\n
    \r\n

    Product Code*

    \r\n 0 ? productCode : \"\"}\r\n id=\"productCode\"\r\n placeholder={productCode.length === 0 ? \"Enter Product Code\" : productCode}\r\n onChange={(e) => setProductCode(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n />\r\n
    \r\n\r\n
    \r\n

    Image URL*

    \r\n 0 ? imageUrl : \"\"}\r\n id=\"imageUrl\"\r\n placeholder={imageUrl.length === 0 ? \"Enter Product Image URL\" : imageUrl}\r\n onChange={(e) => setImageUrl(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n />\r\n
    \r\n\r\n Create Product\r\n
    \r\n );\r\n }\r\n }\r\n\r\n const displayProductData = () => {\r\n if (resultType === 1 && !!(product)) {\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }} />\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n props.deviceSize === \"sm\" ?\r\n <>\r\n
    {displayManufacturer(product?.manufacturer)}
    \r\n\r\n {product?.name.toUpperCase()}\r\n
    {currencyFormat(product.price)}{product?.sale && !!(product?.salePrice) && !!(product?.originalPrice) ? currencyFormat(product?.originalPrice) : <>} {product?.sale && !!(product?.salePrice) ? : <>}
    \r\n\r\n \r\n Estimated Commission\r\n \r\n \r\n \r\n\r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\r\n \r\n\r\n \r\n
    {currencyFormat(product?.estimatedCommission || 0)}
    \r\n \r\n :\r\n <>\r\n
    {displayManufacturer(product?.manufacturer)}
    \r\n\r\n {product?.name.toUpperCase()}\r\n
    {currencyFormat(product.price)}{product?.sale && !!(product?.salePrice) && !!(product?.originalPrice) ? currencyFormat(product?.originalPrice) : <>}{product?.sale && !!(product?.salePrice) ? : <>}
    \r\n\r\n \r\n Estimated Commission\r\n \r\n \r\n \r\n\r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\r\n \r\n\r\n \r\n
    {currencyFormat(product?.estimatedCommission || 0)}
    \r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n <> \r\n props.toggleModal(null)}>\r\n {\r\n
    \r\n
    \r\n\r\n
    \r\n
    Create a Commissionable Link
    \r\n
    0 ? \"none\" : \"\" }}>Paste URL from a merchant web page here. All URLs must be from a Merchant Partner!
    \r\n {/*
    Share a Link to a Product or Page from one of RockPorch's many Merchants!
    */}\r\n {/*

    0 && isValidUrl && !merchantExists ? \"\" : \"none\" }}>Merchant is not yet integrated yet with RockPorch.

    */}\r\n\r\n\r\n
    0 ? \"\" : \"mb-4\"} d-flex justify-content-between`} style={{ marginLeft: \"0px\", display: merchantId > 0 ? \"none\" : \"\" }}>\r\n\r\n {/* 0 ? urlInput : \"\"} placeholder={redirectUrl.length === 0 ? \"Paste URL for Deep Link here\" : redirectUrl} id=\"myInput\" onChange={(e) => handleInput(e)} />*/}\r\n 0 ? urlInput : \"\"}\r\n id=\"myInput\"\r\n placeholder={urlInput.length === 0 ? \"Paste URL from a Merchant Partner here\" : urlInput}\r\n onChange={handleInput}\r\n onKeyPress={onKeypress}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", display: merchantId > 0 ? \"none\" : \"\" }}\r\n autoFocus\r\n />\r\n 0 ? \"none\" : \"\" }} className=\"btn btn-primary\" isLoading={loading} isDisabled={urlInput.length === 0}>Create\r\n
    \r\n\r\n
    0 ? \"\" : \"none\" }}>\r\n null} />\r\n \r\n
    \r\n\r\n {displayProductData()}\r\n\r\n {displayValidationMessage()}\r\n {displayMerchantNotIntegratedMessage()}\r\n {displayProductAddedMessage()}\r\n\r\n 0 ? \"\" : \"none\" }} className=\"btn btn-outline-brand btn-block\">Create another link\r\n\r\n {renderAddManualProductCreation()}\r\n
    \r\n {\r\n props?.isModal !== false ?\r\n isMobileDevice ?\r\n (
    \r\n
    \r\n\r\n

    \r\n PRO TIP: When adding several products to your inventory, the process moves much faster on a desktop!\r\n

    \r\n
    )\r\n :\r\n \r\n :\r\n \r\n }\r\n
    \r\n
    \r\n }\r\n
    \r\n {\r\n props.isModal === false ?\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    Create a Commissionable Link
    \r\n
    0 || (urlInput.length > 0 && isValidUrl && !merchantExists) ? \"none\" : \"\" }}>Paste URL from a merchant web page here. All URLs must be from a Merchant Partner!
    \r\n {/*
    Share a Link to a Product or Page from one of RockPorch's many Merchants!
    */}\r\n {/*

    0 && isValidUrl && !merchantExists ? \"\" : \"none\" }}>Merchant is not yet integrated yet with RockPorch.

    */}\r\n\r\n\r\n
    0 || (urlInput.length > 0 && isValidUrl && !merchantExists) ? \"\" : \"mb-4\"} d-flex justify-content-between`} style={{ marginLeft: \"0px\" }}>\r\n\r\n {/* 0 ? urlInput : \"\"} placeholder={redirectUrl.length === 0 ? \"Paste URL for Deep Link here\" : redirectUrl} id=\"myInput\" onChange={(e) => handleInput(e)} />*/}\r\n 0 ? urlInput : \"\"}\r\n id=\"myInput\"\r\n placeholder={urlInput.length === 0 ? \"Paste URL from a Merchant Partner here\" : urlInput}\r\n onChange={handleInput}\r\n onKeyPress={onKeypress}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", display: merchantId > 0 || (urlInput.length > 0 && isValidUrl && !merchantExists) ? \"none\" : \"\" }}\r\n autoFocus\r\n />\r\n 0 || (urlInput.length > 0 && isValidUrl && !merchantExists) ? \"none\" : \"\" }} onClick={handleDeepLinkChange} className=\"btn btn-primary\" isLoading={loading} isDisabled={urlInput.length === 0}>Create\r\n
    \r\n\r\n
    0 ? \"\" : \"none\" }}>\r\n null} />\r\n \r\n
    \r\n {displayProductData()}\r\n {displayValidationMessage()}\r\n {displayMerchantNotIntegratedMessage()}\r\n {displayProductAddedMessage()}\r\n\r\n
    \r\n \r\n
    \r\n
    :\r\n <>\r\n }\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState) {\r\n return {\r\n showModal: storeState.modalReducer.addProductOrDeepLinkModal.showAddProductOrDeepLinkModal,\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleAddProductOrDeepLinkModal\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatch)(AddProductOrDeepLinkModal);","import React, { useEffect } from \"react\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport Modal from \"components/Modal\";\r\nimport { toggleShareModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport { connect } from \"react-redux\";\r\n\r\n/**\r\n * \r\n * @param {{showModal:boolean,toggleModal:Function,shareUrl:string}} props\r\n */\r\nconst ShareModal = (props) => {\r\n\r\n useEffect(() => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n }\r\n }, [props.showModal]);\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return {\r\n showModal: storeState.modalReducer.showShareModal,\r\n shareUrl: storeState.modalReducer.shareLink\r\n }\r\n}\r\n\r\nlet mapDispatch = {\r\n toggleModal: toggleShareModal\r\n}\r\nexport default connect(mapStateToProps,mapDispatch)(ShareModal);","import React from \"react\";\r\nimport Modal from \"components/Modal\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst SignUpModal = (props) => {\r\n React.useEffect(() => {\r\n if (props.showModal) {\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n } else {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n } \r\n }, [props]);\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n

    Tell Your Story. Share in the Adventure. Sign up today.

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default SignUpModal;\r\n","import React from \"react\";\r\n\r\nconst ThreeDotsVerticalIcon = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default ThreeDotsVerticalIcon;","import React, { useEffect, useState} from \"react\";\r\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport SafariShareIcon from \"components/icons/SafariShareIcon\";\r\nimport ThreeDotsHorizontalIcon from \"components/icons/ThreeDotsHorizontalIcon\";\r\nimport ThreeDotsVerticalIcon from \"components/icons/ThreeDotsVerticalIcon\";\r\nimport { Link } from \"react-router-dom\";\r\nimport RockporchIcon from \"components/icons/RockporchMountainIcon\";\r\n\r\n/**\r\n * \r\n * @param {{isIOS:boolean,showPrompt:boolean, closePrompt:function}} props\r\n */\r\nconst AddToHomeScreenIOS = (props) => {\r\n const [modalOpen, setModalOpen] = useState(true);\r\n\r\n function toggleModal() {\r\n setModalOpen(!modalOpen);\r\n }\r\n\r\n\r\n function showIosMessage() {\r\n if (props.isIOS) {\r\n return

    Tap then select \"Add To Homescreen\"

    \r\n }\r\n else {\r\n\r\n return (\r\n

    \r\n Tap or \r\n \r\n and select \"Add To Homescreen\"\r\n

    \r\n )\r\n }\r\n }\r\n\r\n function doNotRemind() {\r\n //const optOutKey = \"rockporch.InstallPrompt.OptOut\";\r\n //localStorage.setItem(optOutKey, true);\r\n props.closePrompt(); \r\n\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n

    Add RockPorch to your homescreen.

    \r\n {showIosMessage()}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default AddToHomeScreenIOS;","import React, { Component } from 'react';\r\nimport BrandNavMenu from './BrandNavMenu';\r\nimport NavMenu from './NavMenu';\r\nimport { connect } from \"react-redux\";\r\nimport { toggle } from \"../stateManagement/reducers/modalReducer\";\r\nimport { setBrandNavState } from \"../stateManagement/reducers/brandNavReducer\";\r\nimport AddProductModal from \"views/Product/AddProductModal\";\r\nimport CreateLockerModal from \"components/CreateLocker/CreateLockerModal\";\r\nimport FollowersFollowingModal from \"components/FollowersFollowing/FollowersFollowingModal\";\r\nimport PostPageModal from \"components/PostPageModal/PostPageModal\";\r\nimport BlogPageModal from \"components/BlogPageModal/BlogPageModal\";\r\nimport LockerPageModal from \"components/LockerPageModal/LockerPageModal\";\r\nimport ProductPageModal from \"components/ProductPageModal/ProductPageModal\";\r\nimport ShareABlogModal from \"components/ShareABlog/ShareABlogModal\";\r\nimport ShareDeepLinkModal from \"components/ShareDeepLink/ShareDeepLinkModal\";\r\nimport AddProductOrDeepLinkModal from \"components/AddProductOrDeepLink/AddProductOrDeepLinkModal\";\r\nimport ShareModal from \"components/Share/ShareModal\";\r\nimport SignUpModal from \"components/SignUpModal\";\r\nimport { Coordinator } from 'components/Post/Create/Coordinator';\r\nimport { toggleSharePostModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport AddToHomeScreenIOS from './AddToHomescreenIOS';\r\n\r\nclass Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showModal: false,\r\n }\r\n }\r\n\r\n toggleShowModal = () => {\r\n let newModal = !this.state.showModal;\r\n this.setState({ showModal: newModal })\r\n }\r\n\r\n componentDidUpdate = async (prevProps) => {\r\n if (prevProps.brandNav !== this.props.brandNav) {\r\n await this.props.setBrandNavState(this.props.brandNav);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n //
    \r\n
    \r\n\r\n {this.props.brandNav ? \r\n \r\n :\r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t {/*\r\n (this.props.modalState.showSharePostModal === true)\r\n ? \r\n\t : <>\r\n\t */}\r\n\t {this.props.children}\r\n \r\n\r\n \r\n \r\n
    \r\n \r\n )}\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { modalState: storeState.modalReducer, brandNavState: storeState.brandNavReducer.brandNavState }\r\n}\r\n\r\n\r\nexport default connect(mapStateToProps, { toggleModal: toggle, toggleSharePostModal: toggleSharePostModal, setBrandNavState })(Layout);\r\n","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\n/**\r\n * \r\n * @param {{loggedInUser:object}} props\r\n */\r\nconst AuthorizedLanding = (props) => {\r\n if (props.loggedInUser?.proStatusId === 1) {\r\n return \r\n } else {\r\n return \r\n }\r\n}\r\n\r\nexport default AuthorizedLanding;","import React from 'react'\r\nimport { Component } from 'react'\r\nimport { Route, Redirect } from 'react-router-dom'\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { escapeLeadingUnderscores } from 'typescript'\r\n\r\nexport default class AuthorizeRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false,\r\n popUpAuthentication: {\r\n finished: false,\r\n jsxVal: \r\n }\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n await this.populateAuthenticationState();\r\n\r\n if (this.state.authenticated === false && this.props.launchAuthPopup === true) {\r\n\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n handleAuthPopupRedirect = async (authPopup) => {\r\n const { component: Component, componentProps, ...rest } = this.props;\r\n let link = document.createElement(\"a\");\r\n link.href = this.props.location.pathname;\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`\r\n\r\n let jsx = \r\n //this.setState({ popUpAuthentication: {finished:false, jsxVal:

    Loading ...

    }})\r\n var interval = setInterval(async () => {\r\n let isAuthenticated = await authService.isAuthenticated();\r\n if (authPopup) {\r\n\r\n if (isAuthenticated === true) {\r\n authPopup.close();\r\n jsx = ;\r\n this.setState({ popUpAuthentication: { finished: true, jsxVal: jsx } });\r\n clearInterval(interval);\r\n }\r\n }\r\n else {\r\n if (isAuthenticated === true) {\r\n authPopup.close();\r\n jsx = ;\r\n this.setState({ popUpAuthentication: { finished: true, jsxVal: jsx } });\r\n clearInterval(interval);\r\n }\r\n else {\r\n this.setState({ popUpAuthentication: { finished: true, jsxVal: Login unsuccessful } });\r\n clearInterval(interval);\r\n }\r\n\r\n }\r\n }, 3000);\r\n\r\n //return jsx;\r\n\r\n }\r\n\r\n render() {\r\n const { ready, authenticated } = this.state;\r\n \r\n\r\n let link = document.location;\r\n const returnUrl = `${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${returnUrl}`\r\n\r\n if (!ready) {\r\n return
    ;\r\n }\r\n else if (this.props.navRedirect != undefined && this.props.navRedirect != null) {\r\n return (\r\n \r\n )\r\n }\r\n /*else if (authenticated === false && this.props.launchAuthPopup === true) {\r\n let link = document.createElement(\"a\");\r\n link.href = this.props.location?.pathname;\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`\r\n\r\n let features = \"menubar=no,location=no,resizable=no,scrollbars=yes,status=yes,width=500,height=500\"\r\n let authPopup = window.open(redirectUrl, \"authWindow\", features);\r\n this.handleAuthPopupRedirect(authPopup).then(val => val);\r\n \r\n if (this.state.popUpAuthentication.finished === true) {\r\n return this.state.popUpAuthentication.jsxVal\r\n } else { \r\n return (\r\n
    \r\n \r\n

    Waiting for login ...

    \r\n
    \r\n )\r\n }\r\n }*/\r\n else {\r\n const { component: Component, componentProps, ...rest } = this.props;\r\n return {\r\n if (authenticated) {\r\n return \r\n } else {\r\n return \r\n }\r\n }} />\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ ready: true, authenticated });\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n}\r\n","import React from \"react\";\r\nimport AuthorizeRoute from \"components/api-authorization/AuthorizeRoute\";\r\nimport { Redirect } from \"react-router-dom\"\r\nimport authService from './AuthorizeService'\r\n\r\n\r\n\r\nclass AdminRoute extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ready:false,\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n await this.populateAuthenticationState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ ready: true, authenticated });\r\n }\r\n\r\n render() {\r\n const { loggedInUser, component, componentProps, ...rest } = this.props;\r\n const { ready } = this.state;\r\n\r\n if (!ready) {\r\n return
    \r\n }\r\n else {\r\n if (loggedInUser?.isAdmin == true) {\r\n return \r\n }\r\n else {\r\n return \r\n }\r\n }\r\n \r\n\r\n }\r\n}\r\n\r\nexport default AdminRoute","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n renderLoggingIn = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n \"\"\r\n

    Tell Your Story. Share in the Adventure.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Logging in ...

    \r\n
    \r\n

    Please wait while we log you in.

    \r\n

    {this.state.message}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n\r\n render() {\r\n const action = this.props.action;\r\n\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (this.renderLoggingIn());\r\n case LoginActions.LoginCallback:\r\n return (this.renderLoggingIn());\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
    );\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.setIsLoggedInCookie();\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async setIsLoggedInCookie() {\r\n let todayEpoch = Date.now();\r\n let today = todayEpoch.toLocaleString();\r\n let todayDate = new Date();\r\n let exDate = new Date(todayDate.getFullYear() + 50, todayDate.getMonth(), todayDate.getDay());\r\n \r\n let hostname = window.location.hostname;\r\n let domain = hostname === \"localhost\" ? hostname : hostname.substring(hostname.indexOf(\".\"));\r\n\r\n document.cookie = `_Rockporch.App.LoggedIn=${today};domain=${domain};expires=${exDate.toISOString()}`;\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false,\r\n showLogin: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n this.setState({ message: \"Please wait. Logging you out.\" });\r\n this.logout(this.getReturnUrl()); \r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.setState({ message: \"Logging you out. Almost done.\" });\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You have been successfully logged out.\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n renderLoggedOut = (showLogin) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n
    \r\n \"\"\r\n

    Tell Your Story. Share in the Adventure.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Thanks for visiting. See you next time!

    \r\n
    \r\n

    {this.state.message}

    \r\n {showLogin ?

    Click here to login.

    : <>}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n\r\n render() {\r\n const { isReady } = this.state;\r\n if (!isReady) {\r\n return
    \r\n }\r\n\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n return (this.renderLoggedOut(false));\r\n case LogoutActions.LogoutCallback:\r\n return (this.renderLoggedOut(false));\r\n case LogoutActions.LoggedOut:\r\n return (this.renderLoggedOut(true));\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Login } from './Login'\r\nimport { Logout } from './Logout'\r\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\r\n\r\nexport default class ApiAuthorizationRoutes extends Component {\r\n\r\n render () {\r\n return(\r\n \r\n loginAction(LoginActions.Login)} />\r\n loginAction(LoginActions.LoginFailed)} />\r\n loginAction(LoginActions.LoginCallback)} />\r\n loginAction(LoginActions.Profile)} />\r\n loginAction(LoginActions.Register)} />\r\n logoutAction(LogoutActions.Logout)} />\r\n logoutAction(LogoutActions.LogoutCallback)} />\r\n logoutAction(LogoutActions.LoggedOut)} />\r\n );\r\n }\r\n}\r\n\r\nfunction loginAction(name){\r\n return ();\r\n}\r\n\r\nfunction logoutAction(name) {\r\n return ();\r\n}\r\n","import React from \"react\";\r\nimport { Link } from 'react-router-dom';\r\n\r\n/**\r\n * \r\n * @param {{breadCrumbList:[{link:string,text:string}]}} props \r\n */\r\nfunction AccountBanner(props) {\r\n let showBreadcrumb = () => {\r\n if (props.breadCrumbList) {\r\n return props.breadCrumbList.map((breadcrumb, i) => {\r\n return
  • {breadcrumb.text}
  • \r\n })\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {props.children}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\n\r\nexport default AccountBanner;\r\n\r\n","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,fill:string}} props\r\n */\r\nconst AnalyticsIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default AnalyticsIcon;","import * as React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport AnalyticsIcon from \"components/icons/AnalyticsIcon\";\r\nimport { Helmet } from 'react-helmet';\r\nimport LightningIcon from \"components/icons/LightningIcon\";\r\n\r\nconst breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }];\r\n\r\nconst AccountIndex = (props) => {\r\n\r\n React.useEffect(() => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }, []);\r\n\r\n const renderGoPro = () => {\r\n if (props?.loggedInUser?.proStatusId === 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n

    Apply as Creator

    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n RockPorch - Account Dashboard\r\n \r\n \r\n

    Account

    \r\n

    Manage account and stay connected

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n

    Account Settings

    \r\n \r\n
    \r\n {renderGoPro()}\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n

    My Saves

    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n Icon For Flag\r\n \r\n \r\n \r\n

    Interests

    \r\n \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n
    );\r\n};\r\n\r\nexport default AccountIndex;\r\n","import * as React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport AnalyticsIcon from \"components/icons/AnalyticsIcon\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nconst breadCrumbList = [{ link: '/Account/CreatorDashboard', text: 'Creator Dashboard' }];\r\n\r\nconst CreatorDashboard = (props) => {\r\n\r\n React.useEffect(() => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }, []);\r\n\r\n const renderDrafts = () => {\r\n if (props?.loggedInUser?.proStatusId === 1) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n

    Drafts

    \r\n \r\n
    );\r\n }\r\n }\r\n const renderProducts = () => {\r\n if (props?.loggedInUser?.proStatusId === 1) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n

    My Products

    \r\n \r\n
    );\r\n }\r\n }\r\n const renderPartners = () => {\r\n if (props?.loggedInUser?.proStatusId === 1) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n

    Merchant Partners

    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n const renderProSettings = () => {\r\n if (props?.loggedInUser?.proStatusId === 1) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n

    Creator Settings

    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n const renderAnalytics = () => {\r\n if (props?.loggedInUser.proStatusId === 1) {\r\n return (\r\n
    \r\n \r\n \r\n

    Analytics

    \r\n \r\n
    )\r\n } else if (props?.loggedInUser.proStatusId === 2) {\r\n return (\r\n
    \r\n \r\n \r\n

    Analytics

    \r\n \r\n
    )\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n RockPorch - Creator Dashboard\r\n \r\n \r\n

    Dashboard

    \r\n

    Tools for Creators

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {renderAnalytics()}\r\n {renderProducts()}\r\n {renderPartners()}\r\n {renderProSettings()}\r\n {renderDrafts()}\r\n
    \r\n
    \r\n
    \r\n
    );\r\n};\r\n\r\nexport default CreatorDashboard;\r\n","import React from \"react\"\r\n\r\n\r\nconst PenIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PenIcon;","import * as React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport { Popover, PopoverHeader, PopoverBody } from \"reactstrap\";\r\n\r\nclass CreatorDashboardHeader extends React.Component {\r\n\r\n state = {\r\n loggedInUser: null,\r\n profilePicUpdate: false,\r\n profilePicUploadError: false,\r\n uploadingImage: false,\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n if (!!(this.props.loggedInUser)) {\r\n this.setState({ loggedInUser: this.props.loggedInUser })\r\n }\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (prevProps.loggedInUser !== this.props.loggedInUser) {\r\n this.setState({ loggedInUser: this.props.loggedInUser })\r\n }\r\n }\r\n\r\n setSelectedFile = async (e) => {\r\n e.preventDefault();\r\n\r\n if (e.target.files?.length > 0 && e.target.files[0].type?.startsWith('image/')) {\r\n const file = e.target.files[0];\r\n\r\n const loggedInUser = { ...this.state.loggedInUser }\r\n loggedInUser.imageUrl = URL.createObjectURL(file);\r\n\r\n this.setState({ uploadingImage: true, loggedInUser });\r\n \r\n const formData = new FormData();\r\n formData.append('File', file);\r\n\r\n let uploadProfilePicUrl = '/api/Account/UploadProfilePic';\r\n\r\n postRequest(uploadProfilePicUrl, formData, null, false)\r\n .then((user) => {\r\n \r\n this.props.setLoggedInUser(user);\r\n\r\n this.setState({ profilePicUpdated: true })\r\n setTimeout(() => this.setState({ profilePicUpdated: false }), 3000);\r\n })\r\n .catch((error) => {\r\n console.error(\"Error uploading profile pic:\", error);\r\n });\r\n\r\n this.setState({ uploadProfilePicUrl: false })\r\n e.target.value = null;\r\n } else {\r\n this.setState({ profilePicUploadError: true })\r\n }\r\n };\r\n\r\n onClickImageUpload = (event) => {\r\n event.preventDefault();\r\n document.getElementById(\"profilePicInput\").click();\r\n };\r\n\r\n\r\n render() {\r\n const imageUrl = this.state.loggedInUser?.imageUrl;\r\n const userName = this.state.loggedInUser?.userName;\r\n\r\n const avatarStyle = this.props.deviceSize === \"sm\" ? { width: \"75px\", height: \"75px\" } : {};\r\n return (\r\n
    \r\n
    \r\n );\r\n\r\n }\r\n\r\n};\r\n\r\nexport default withRouter(CreatorDashboardHeader);","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Form, FormGroup, Input, CustomInput } from \"reactstrap\";\r\nimport ActionButton from \"../../components/ActionButton\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\n/**\r\n * \r\n * @param {{userInformation:object}} props\r\n */\r\nclass CreatorSettings extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n editMode: false,\r\n persistanceUpdated: false,\r\n paymentEmail: \"\",\r\n validEmail: true,\r\n userInformation: {\r\n address: \"\",\r\n city: \"\",\r\n state: \"\",\r\n postalCode: \"\",\r\n country: \"\",\r\n },\r\n paymentEmailPopover: false,\r\n isLoadingSaleMade: false,\r\n ucp: null,\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n this.parseUserInfo();\r\n this.fetchUserCommunicationPreference();\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevProps.paymentEmail !== this.props.paymentEmail) {\r\n this.setState({ paymentEmail: this.props.paymentEmail })\r\n }\r\n if (this.state.userInformation !== prevState.userInformation) {\r\n this.props.updateUserInformation(this.state.userInformation);\r\n }\r\n if (this.props.cancelEdit) {\r\n this.parseUserInfo();\r\n this.setState({ paymentEmail: this.props.persistentPaymentEmail ?? \"\" })\r\n this.props.resetCancelEdit();\r\n }\r\n }\r\n\r\n fetchUserCommunicationPreference = async () => {\r\n this.setState({ isLoadingSaleMade: true});\r\n\r\n const url = `api/Account/GetUserCommunicationPreference`\r\n const ucp = await getRequest(url);\r\n if (ucp != undefined && ucp != null) {\r\n this.setState({ ucp });\r\n }\r\n\r\n this.setState({ isLoadingSaleMade: false });\r\n };\r\n\r\n updateSettings = async (ucpInit) => {\r\n this.setState({ isLoadingSaleMade: true });\r\n\r\n const ucpObject = {\r\n paymentEmail: ucpInit.paymentEmail,\r\n salesEmail: ucpInit.salesEmail,\r\n }\r\n\r\n const userCommunicationPreferenceUrl = `api/Account/UpdateUserCommunicationPreference`;\r\n await postRequest(userCommunicationPreferenceUrl, ucpObject);\r\n\r\n this.setState({ isLoadingSaleMade: false });\r\n }\r\n\r\n checkEmailCriteria = (email) => {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n let validEmail = emailRegex.test(email);\r\n console.log(email, validEmail);\r\n this.setState({ validEmail })\r\n }\r\n\r\n onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n if (formKey === 'paymentEmail') {\r\n this.checkEmailCriteria(newData.trim());\r\n\r\n this.setState({ paymentEmail: newData.trim() });\r\n this.props.updatePaymentEmail(newData.trim());\r\n }\r\n const userInformation = this.state.userInformation;\r\n userInformation[formKey] = newData;\r\n\r\n this.setState({ userInformation });\r\n this.props.updateUserInformation(userInformation);\r\n };\r\n\r\n onUcpInputChange = async (e) => {\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n\r\n const ucp = { ...this.state.ucp };\r\n ucp[name] = !ucp[name];\r\n this.updateSettings(ucp);\r\n this.setState({ ucp });\r\n }\r\n\r\n parseUserInfo = () => {\r\n if (!!(this.props.userInformation)) {\r\n const propsUserInformation = this.state.persistanceUpdated && !!(this.props.persistentUserInformation) ? this.props.persistentUserInformation : this.props.userInformation;\r\n\r\n const userInformation = {\r\n address: propsUserInformation.address ?? \"\",\r\n city: propsUserInformation.city ?? \"\",\r\n state: propsUserInformation.state ?? \"\",\r\n postalCode: propsUserInformation.postalCode ?? \"\",\r\n country: propsUserInformation.country ?? \"\",\r\n };\r\n this.setState({ userInformation });\r\n }\r\n }\r\n\r\n \r\n render() {\r\n return (\r\n
    \r\n \r\n
    Personal Information
    \r\n\r\n
    \r\n
    \r\n
    \r\n Address\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.address}\r\n />\r\n :\r\n

    {this.state.userInformation.address}

    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n City\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.city}\r\n />\r\n :\r\n

    {this.state.userInformation.city}

    \r\n }\r\n
    \r\n
    \r\n
    \r\n State\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.state}\r\n />\r\n :\r\n

    {this.state.userInformation.state}

    \r\n }\r\n
    \r\n
    \r\n
    \r\n Zip Code\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.postalCode}\r\n />\r\n :\r\n

    {this.state.userInformation.postalCode}

    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Country\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.country}\r\n />\r\n :\r\n

    {this.state.userInformation.country}

    \r\n }\r\n
    \r\n
    \r\n\r\n
    Commissions & Payments
    \r\n
    \r\n
    \r\n
    Connect Your PayPal Account
    \r\n
    Enter the email address associated with your PayPal account to get paid
    \r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n

    PayPal Email Address

    \r\n
    \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.paymentEmail}\r\n />\r\n
    \r\n {\r\n toast.success(\r\n
    \r\n

    Payment Email Updated

    \r\n

    You're not done! We've sent an email to the address you provided. You need to click the \"Verify\" link in that email to confirm this change.

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n this.props.savePaymentEmail();\r\n }}\r\n isLoading={this.props.isSavingPaymentEmail}\r\n isDisabled={!this.state.validEmail || (this.props.persistentPaymentEmail.trim() === this.props.paymentEmail.trim() || !(this.props.paymentEmail?.trim()))}\r\n >\r\n Save Email\r\n \r\n
    \r\n
    \r\n

    Email must be in the correct format ie. name@company.com

    \r\n\r\n
    :\r\n <>\r\n

    PayPal Email Account:

    \r\n

    {!!(this.state.paymentEmail) && this.state.paymentEmail.trim().length > 0 ? this.state.paymentEmail : \"No Paypal Email Address On File\"}

    \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.onUcpInputChange(e)} label=\"I would like to receive communications from RockPorch regarding my sales and commissions\" id=\"salesEmailSwitch\" className=\"salesEmailSwitch\" />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n );\r\n };\r\n}\r\n\r\n\r\nexport default withRouter(CreatorSettings);\r\n","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{fill:string}} props\r\n */\r\nconst InstagramIcon = (props) => {\r\n return (\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default InstagramIcon;","import React from \"react\";\r\n\r\nconst FacebookIconNoLink = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default FacebookIconNoLink;","import React from \"react\"\r\n\r\nconst TikTokIcon = (props) => {\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport default TikTokIcon;","import React from \"react\"\r\n\r\nconst StravaIcon = (props) => {\r\n const link = \"https://www.strava.com/athletes/\" + props.username;\r\n\r\n return (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default StravaIcon;\r\n\r\n","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport InstagramIcon from \"components/icons/InstagramIcon\";\r\nimport FacebookIcon from \"components/icons/FacebookIconNoLink\";\r\nimport TikTokIcon from \"components/icons/TikTokIcon\";\r\nimport StravaIcon from \"components/icons/StravaIcon\";\r\nimport YoutubeIcon from \"components/icons/YoutubeIcon\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { FormGroup, Input } from \"reactstrap\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport isEqual from 'lodash/isEqual';\r\n\r\nclass CreatorDashboardProfile extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n sectors: [],\r\n allSectors: [],\r\n stillAvailableSectors: [],\r\n fetchingSectors: true,\r\n editMode: false,\r\n toggleAdditionalCategories: false,\r\n userInformation: {\r\n id: 0,\r\n name: \"\",\r\n email: \"\",\r\n address: \"\",\r\n city: \"\",\r\n state: \"\",\r\n country: \"\",\r\n website: \"\",\r\n postalCode: \"\",\r\n phoneNumber: \"\",\r\n tagLine: \"\",\r\n bio: \"\",\r\n userName: \"\",\r\n googleUsername: \"\",\r\n facebookUsername: \"\",\r\n instagramUsername: \"\",\r\n tikTokUsername: \"\",\r\n stravaUsername: \"\",\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n this.parseUserInfo();\r\n this.getSectors();\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (this.state.userInformation !== prevState.userInformation) {\r\n this.props.updateUserInformation(this.state.userInformation);\r\n }\r\n if (this.props.cancelEdit) {\r\n this.parseUserInfo();\r\n this.setPersistentSectors();\r\n this.props.resetCancelEdit();\r\n }\r\n }\r\n\r\n setPersistentSectors = () => {\r\n if (!!(this.props.persistentSectors)) {\r\n const sectors = this.props.persistentSectors;\r\n\r\n const stillAvailableSectors = this.state.allSectors.filter((allSector) => {\r\n return !sectors.find((sector) => {\r\n return allSector.sectorId === sector.sectorId\r\n })\r\n });\r\n\r\n this.setState({ sectors, stillAvailableSectors });\r\n }\r\n }\r\n\r\n addUserSector = (sector) => {\r\n const sectors = [...this.state.sectors, sector];\r\n const stillAvailableSectors = this.state.stillAvailableSectors.filter(s => s.sectorId !== sector.sectorId)\r\n this.setState({ sectors, stillAvailableSectors });\r\n this.props.updateSectors(sectors);\r\n }\r\n\r\n deleteUserSector = (sector) => {\r\n const sectors = this.state.sectors.filter(s => s.sectorId !== sector.sectorId)\r\n this.setState({ sectors, stillAvailableSectors: [sector, ...this.state.stillAvailableSectors] });\r\n this.props.updateSectors(sectors);\r\n }\r\n\r\n parseUserInfo = () => {\r\n if (!!(this.props.userInformation)) {\r\n const propsUserInformation = !!(this.props.persistentUserInformation) ? this.props.persistentUserInformation : this.props.userInformation;\r\n\r\n const userInformation = {\r\n name: propsUserInformation.name ?? \"\",\r\n email: propsUserInformation.email ?? \"\",\r\n address: propsUserInformation.address ?? \"\",\r\n website: propsUserInformation.website ?? \"\",\r\n phoneNumber: propsUserInformation.phoneNumber ?? \"\",\r\n tagLine: propsUserInformation.tagLine ?? \"\",\r\n bio: propsUserInformation.bio ?? \"\",\r\n userName: propsUserInformation.userName ?? \"\",\r\n\r\n googleUsername: propsUserInformation.googleUsername ?? \"\",\r\n facebookUsername: propsUserInformation.facebookUsername ?? \"\",\r\n instagramUsername: propsUserInformation.instagramUsername ?? \"\",\r\n tikTokUsername: propsUserInformation.tikTokUsername ?? \"\",\r\n stravaUsername: propsUserInformation.stravaUsername ?? \"\",\r\n };\r\n this.setState({ userInformation })\r\n }\r\n }\r\n\r\n getSectors = async () => {\r\n let sectors = await getRequest('/api/Sector/GetSectors') ?? [];\r\n let userSectors = await getRequest(`/api/Sector/GetSectorsByUser?userid=${this.props.userInformation.id}`) ?? [];\r\n let activeSectors = [];\r\n\r\n for (var i = 0; i < userSectors.length; ++i) {\r\n for (var j = 0; j < sectors.length; ++j) {\r\n if (userSectors[i].sectorId === sectors[j].sectorId) {\r\n activeSectors.push(sectors[j]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const stillAvailableSectors = sectors.filter(s => !activeSectors.includes(s));\r\n\r\n this.setState({\r\n allSectors: sectors,\r\n sectors: activeSectors,\r\n stillAvailableSectors,\r\n fetchingSectors: false,\r\n toggleAdditionalCategories: activeSectors?.length === 0 ? true : this.state.toggleAdditionalCategories,\r\n });\r\n this.props.setSectors(activeSectors, sectors);\r\n }\r\n\r\n renderSectors = () => {\r\n const { fetchingSectors, sectors } = this.state;\r\n\r\n if (fetchingSectors === true) {\r\n return \r\n } else if (sectors.length === 0) {\r\n return

    None

    \r\n }\r\n else\r\n {\r\n return sectors.map((sector, i) => {\r\n return \r\n });\r\n }\r\n }\r\n\r\n onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n if (formKey === 'bio') {\r\n e.target.style.height = 'inherit';\r\n e.target.style.height = `${e.target.scrollHeight}px`;\r\n }\r\n const userInformation = this.state.userInformation;\r\n userInformation[formKey] = newData;\r\n\r\n this.setState({ userInformation });\r\n this.props.updateUserInformation(userInformation);\r\n };\r\n\r\n displaySocials() {\r\n const { userInformation } = this.state;\r\n const { instagramUsername } = userInformation;\r\n const normalizedInstagram = userInformation?.instagramUsername?.startsWith(\"@\") === true ? instagramUsername.substring(1) : instagramUsername;\r\n const socials = [\r\n {\r\n text: \"Facebook\",\r\n name: userInformation?.facebookUsername || null,\r\n icon: ,\r\n url: `facebook.com/${userInformation.facebookUsername}`,\r\n urlPrefix: 'www.facebook.com/',\r\n userInformationField: \"facebookUsername\"\r\n },\r\n {\r\n text: \"Instagram\",\r\n name: userInformation.instagramUsername || null,\r\n icon: ,\r\n url: `instagram.com/${normalizedInstagram}`,\r\n urlPrefix: 'www.instagram.com/',\r\n userInformationField: \"instagramUsername\"\r\n },\r\n {\r\n text: \"YouTube\",\r\n name: userInformation?.googleUsername || null,\r\n icon: ,\r\n url: `youtube.com/${userInformation.googleUsername}`,\r\n urlPrefix: 'www.youtube.com/',\r\n userInformationField: \"googleUsername\"\r\n },\r\n {\r\n text: \"TikTok\",\r\n name: userInformation?.tikTokUsername || null,\r\n icon: ,\r\n url: `tiktok.com/@${userInformation.tikTokUsername}`,\r\n urlPrefix: 'www.tiktok.com/@',\r\n userInformationField: \"tikTokUsername\"\r\n },\r\n {\r\n text: \"Strava\",\r\n name: userInformation?.stravaUsername || null,\r\n icon: ,\r\n url: `strava.com/athletes/${userInformation.stravaUsername}`,\r\n urlPrefix: 'strava.com/athletes/',\r\n userInformationField: \"stravaUsername\"\r\n },\r\n ];\r\n\r\n return socials.map((social, i) => {\r\n if (this.props.editMode) {\r\n return (\r\n
    \r\n
    \r\n {social.text}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation[social.userInformationField]}\r\n style={{ marginLeft: \"-18px\" }}\r\n />\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n else if (userInformation[social.userInformationField] === undefined || userInformation[social.userInformationField].length === 0 || userInformation[social.userInformationField] === null) {\r\n return \r\n } else {\r\n return (\r\n
    \r\n
    \r\n {social.text}\r\n
    \r\n \r\n

    {social.url}

    \r\n
    \r\n
    \r\n )\r\n }\r\n });\r\n }\r\n\r\n onSubmit = (e) => {\r\n e.preventDefault();\r\n this.props.saveBasicSettings(this.state.userInformation);\r\n }\r\n\r\n downwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n upwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n renderEditSectors = () => {\r\n return (\r\n
    \r\n
    What are you most passionate about?
    \r\n\r\n
    My Passion List
    \r\n
    \r\n
      \r\n {\r\n this.state.sectors.length === 0 ?\r\n

      None

      \r\n :\r\n this.state.sectors.map((sector, i) => {\r\n return (\r\n
    • \r\n
      \r\n {sector.name}\r\n
      \r\n
      this.deleteUserSector(sector)}>\r\n \r\n
      \r\n
    • \r\n );\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n
    this.setState({ toggleAdditionalCategories: !this.state.toggleAdditionalCategories })}>\r\n
    Additional Categories
    \r\n {this.state.toggleAdditionalCategories ? this.upwardChevron() : this.downwardChevron()}\r\n
    \r\n
    \r\n
      \r\n {\r\n this.state.stillAvailableSectors.map((sector, i) => {\r\n return (\r\n
    • \r\n
      \r\n {sector.name}\r\n
      \r\n
      this.addUserSector(sector)}>\r\n Add\r\n
      \r\n
    • \r\n );\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Name\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.name}\r\n />\r\n :\r\n

    {this.state.userInformation.name}

    \r\n }\r\n
    \r\n
    \r\n
    \r\n Email\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.email}\r\n />\r\n :\r\n

    {this.state.userInformation.email}

    \r\n }\r\n
    \r\n
    \r\n
    \r\n Phone Number\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n this.onInputChange(e)}\r\n value={this.state.userInformation.phoneNumber}\r\n disabled={this.props.isSaving}\r\n />\r\n :\r\n

    {this.state.userInformation.phoneNumber}

    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Personal Website\r\n
    \r\n {\r\n this.props.editMode ?\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n this.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.state.userInformation.website}\r\n style={{ marginLeft: \"-18px\" }}\r\n />\r\n
    \r\n
    :\r\n \r\n

    {this.state.userInformation.website}

    \r\n
    }\r\n
    \r\n
    \r\n\r\n {this.props.editMode ?\r\n
    \r\n
    \r\n Tagline\r\n
    \r\n \r\n this.onInputChange(e)}\r\n value={this.state.userInformation.tagLine}\r\n disabled={this.props.isSaving}\r\n />\r\n \r\n
    \r\n :\r\n this.state.userInformation?.tagLine == undefined || this.state.userInformation?.tagLine == null || this.state.userInformation?.tagLine === \"\" ?\r\n <>\r\n :\r\n
    \r\n
    \r\n Tagline\r\n
    \r\n

    {this.state.userInformation.tagLine}

    \r\n
    \r\n }\r\n\r\n {this.props.editMode ?\r\n
    \r\n
    \r\n Bio\r\n
    \r\n \r\n this.onInputChange(e)}\r\n value={this.state.userInformation.bio}\r\n style={{ overflow: \"hidden\" }}\r\n disabled={this.props.isSaving}\r\n />\r\n \r\n
    \r\n :\r\n this.state.userInformation?.bio == undefined || this.state.userInformation?.bio == null || this.state.userInformation?.bio === \"\" ? \r\n <>\r\n :\r\n
    \r\n
    \r\n Bio\r\n
    \r\n

    {this.state.userInformation.bio}

    \r\n
    \r\n }\r\n\r\n
    \r\n {this.displaySocials()}\r\n
    \r\n\r\n {\r\n this.props.editMode ?\r\n this.renderEditSectors()\r\n :\r\n this.state.sectors == undefined || this.state.sectors == null || this.state.sectors == {} ?\r\n <> :\r\n
    \r\n
    \r\n
    What are you most passionate about?
    \r\n
    My Passions
    \r\n
    \r\n
    \r\n {this.renderSectors()}\r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(CreatorDashboardProfile);\r\n","import React, { useState } from \"react\";\r\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\r\n\r\n/**\r\n * \r\n * @param {{editClick:Function,deleteClick:Function,product:object, toggleShareModal:Function}} props\r\n */\r\nconst MyProductsItemDropdown = (props) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n return (\r\n setIsOpen(!isOpen)} className={`${props.forMobile ? \"mt-2\" : \"\"}`}>\r\n \r\n Action\r\n \r\n\r\n \r\n props.toggleShareModal(props.product, props.isUserMerchant ? props.isUserMerchant : false)}>\r\n Share\r\n \r\n\r\n \r\n Edit\r\n \r\n\r\n \r\n Delete\r\n \r\n \r\n\r\n \r\n\r\n )\r\n}\r\n\r\n\r\nexport default MyProductsItemDropdown;","import * as React from \"react\";\r\n\r\nfunction SvgCheckIconBlack(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgCheckIconBlack;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgCheckIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgCheckIcon;\r\n","import * as React from \"react\";\r\n\r\nfunction SvgTrailingIcon(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SvgTrailingIcon;\r\n","import React, { useState } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { Collapse } from \"reactstrap\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport ThreeDotsHorizontalIcon from \"components/icons/ThreeDotsHorizontalIcon\";\r\nimport ShareIcon from \"components/icons/ShareIcon\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport MyProductsItemDropdown from \"views/Account/MyProductsItemDropdown\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nimport { currencyFormat } from \"sharedUtils/productUtils\";\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport { Share } from \"../../icons\";\r\n\r\n/**\r\n * \r\n * @param {{product:object,edit:Function, toggleProductModal:Function, toggleShareModal:Function}} props\r\n */\r\nconst ProductRowMobile = (props) => {\r\n let [isOpen, setIsOpen] = useState(false);\r\n let [isLoadingShareCode, setIsLoadingShareCode] = useState(false);\r\n let { product } = props;\r\n let pstyle = { fontFamily: \"Archivo\", fontSize: \"12px\", width: \"96%\" }\r\n let pstylePrice = { ...pstyle, fontSize: product.sale && !!(product.salePrice) ? \"8px\" : \"\" }\r\n let redirectUrl = \"/Product/ProductPage/\" + product.shareCode;\r\n\r\n const getLinkError = () => {\r\n toast.error(\r\n
    \r\n

    Product currently unavailable

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n const handleGetLink = async () => {\r\n if (!product.integrated) {\r\n getLinkError();\r\n return;\r\n }\r\n if (props.analytics && !(product.shareCode)) {\r\n setIsLoadingShareCode(true);\r\n await props.addUserMerchantProductIfNotAddedAlreadyAndGetLink(product, props.commissionId, props.userId);\r\n setIsLoadingShareCode(false);\r\n return;\r\n }\r\n let getLinkUrl = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!product.shareSubdomain) {\r\n getLinkUrl += product.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/prdlink/\" + product.shareCode;\r\n props.handleGetLink(getLinkUrl);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n\r\n
    \r\n { if (!!product.shareCode) { window.open(redirectUrl, '_blank') } } }\r\n />\r\n\r\n
    \r\n

    \r\n {product.manufacturer}\r\n

    \r\n\r\n

    { if (!!product.shareCode) { window.open(redirectUrl, '_blank') } }}>\r\n {product.name}\r\n

    \r\n\r\n

    \r\n Merchant: {product.merchant}\r\n

    \r\n\r\n

    \r\n Price: {product.sale && !!(product.salePrice) ? ${product.salePrice.toFixed(2)} : <>} {currencyFormat(product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice : product.price)}{props.product.sale && !!(props.product.salePrice) ? : \"\"}\r\n

    \r\n\r\n

    \r\n {props.analytics ? \"Estimated\" : \"Est.\"} Commission\r\n *\r\n : {currencyFormat(product.estimatedCommission)}\r\n

    \r\n
    \r\n\r\n\r\n {/**/}\r\n
    \r\n \r\n Get Link\r\n \r\n\r\n {\r\n props.analytics ?\r\n <>\r\n :\r\n \r\n }\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n )\r\n}\r\n\r\nexport default ProductRowMobile;","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { Collapse } from \"reactstrap\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport ThreeDotsHorizontalIcon from \"components/icons/ThreeDotsHorizontalIcon\";\r\nimport ShareIcon from \"components/icons/ShareIcon\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\n\r\nimport { currencyFormat } from \"sharedUtils/productUtils\";\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\n\r\n/**\r\n * \r\n * @param {{product:object,edit:Function, toggleProductModal:Function, toggleShareModal:Function}} props\r\n */\r\nconst AllProductsRowMobile = (props) => {\r\n let [isOpen, setIsOpen] = useState(false);\r\n const [isAdded, setIsAdded] = useState(false);\r\n const [product, setProduct] = useState(props.product)\r\n\r\n useEffect(() => {\r\n if (props.addedProduct != null && props.addedProduct != undefined && props.addedProduct.merchantProductId === product.merchantProductId) {\r\n const updatedProduct = product;\r\n updatedProduct.shareCode = props.addedProduct.shareCode;\r\n updatedProduct.userMerchantProductId = props.product.userMerchantProductId;\r\n setProduct(updatedProduct);\r\n }\r\n\r\n }, [props.addedProduct]);\r\n\r\n let pstyle = { fontFamily: \"Archivo\", fontSize: \"12px\", width: \"70%\" }\r\n\r\n const handleAdd = async () => {\r\n setIsAdded(true);\r\n setIsOpen(!isOpen);\r\n await props.addProductToInventory(product.merchantProductId);\r\n }\r\n\r\n const handleShare = async () => {\r\n if (props.showAdd && !isAdded) {\r\n setIsAdded(true);\r\n await props.addProductToInventory(product.merchantProductId, true);\r\n }\r\n\r\n props.toggleShareModal(product, props.isUserMerchant ? props.isUserMerchant : false);\r\n }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n \r\n\r\n

    \r\n {product.name}{props.product.sale && !!(props.product.salePrice) ? : \"\"}\r\n

    \r\n\r\n {/**/}\r\n \r\n\r\n
    \r\n\r\n \r\n\r\n

    \r\n Brand: {product.manufacturer}\r\n

    \r\n\r\n

    \r\n Merchant: {product.merchant}\r\n

    \r\n\r\n

    \r\n Price: {product.sale && !!(product.salePrice) ? ${product.salePrice.toFixed(2)} : <>} {currencyFormat(product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice : product.price)}\r\n

    \r\n\r\n

    \r\n Estimated Commission\r\n *\r\n : {currencyFormat(product.estimatedCommission)}\r\n

    \r\n {props.showAdd && !isAdded ?\r\n :\r\n \r\n }\r\n\r\n \r\n\r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default AllProductsRowMobile;","import React, { useState, useEffect } from \"react\";\r\nimport { Modal } from \"reactstrap\";\r\nimport FormTextArea from \"components/FormTextArea\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport StarRatingComponent from \"react-star-rating-component\";\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport { FormGroup, Label } from \"reactstrap\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * showModal:boolean,\r\n * toggleModal:Function,\r\n * product:object,\r\n * productDescription:string,\r\n * saveDescription:(description:string)=>void,\r\n * sectors:[],\r\n * updateSectors:(sectorIds:Array)=>void,\r\n * saveSectorChanges:()=>void,\r\n * updateProductRating:(rating:Number)=>void\r\n * }} props\r\n */\r\nconst EditProductModal = (props) => {\r\n const [description, setDescription] = useState('');\r\n const [sectors, setSectors] = useState([]);\r\n const [sectorFilter, setSectorFilter] = useState(\"\");\r\n const [productRating, setProductRating] = useState(0);\r\n const [product, setProduct] = useState({});\r\n const [saving, setSaving] = useState(false);\r\n\r\n useEffect(() => {\r\n setDescription(props.product?.userDescription || \"\");\r\n setSectors(props.sectors);\r\n setProductRating(props.product?.rating || 0);\r\n setProduct(props.product);\r\n }, [props.product]);\r\n\r\n function removeSector(sectorId) {\r\n let productSectors = [...props.product.sectorIds];\r\n let location = productSectors.findIndex(secId => secId === sectorId);\r\n productSectors.splice(location, 1);\r\n props.updateSectors(productSectors);\r\n }\r\n\r\n function addSector(sectorId) {\r\n let productSectors = [...props.product.sectorIds];\r\n productSectors.push(sectorId);\r\n props.updateSectors(productSectors)\r\n }\r\n\r\n function displaySectors() {\r\n return sectors.filter(sector => sector.name.toLowerCase().includes(sectorFilter.toLowerCase()))\r\n .map((sector, i) => {\r\n if (props.product?.sectorIds?.includes(sector.sectorId)) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n });\r\n }\r\n\r\n function startHover(nextValue, prevValue, name) {\r\n setProductRating(nextValue);\r\n }\r\n\r\n function startHoverOut(nextValue, prevValue, name) {\r\n setProductRating(product.rating || 0);\r\n }\r\n\r\n function displayRating() {\r\n return {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={async (nextValue, prevValue, name) => {\r\n setProductRating(nextValue);\r\n }}\r\n />\r\n }\r\n\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n setDescription(e.target.value)}\r\n type=\"textarea\"\r\n value={description}\r\n placeholder=\"\"\r\n inputStyle={{ backgroundColor: \"#e9ecef\" }}\r\n />\r\n\r\n setSectorFilter(e.target.value)}\r\n placeholder=\"Search for interests...\"\r\n inputStyle={{ backgroundColor: \"#e9ecef\" }}\r\n />\r\n\r\n \r\n \r\n
    \r\n\r\n {displayRating()}\r\n
    \r\n
    \r\n {displaySectors()}\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n {\r\n setSaving(true);\r\n props.saveDescription(description);\r\n props.saveSectorChanges();\r\n props.submitRating(productRating, product);\r\n setSaving(false);\r\n props.toggleModal();\r\n }\r\n }\r\n isLoading={saving}\r\n >\r\n Save\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n )\r\n}\r\n\r\n\r\nexport default EditProductModal;","import React, { useState, useEffect } from \"react\";\r\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\r\n\r\n/**\r\n * \r\n * @param {{editClick:Function,deleteClick:Function,product:object, toggleShareModal:Function}} props\r\n */\r\n\r\nconst AllProductsItemDropdown = (props) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isAdded, setIsAdded] = useState(false);\r\n const [product, setProduct] = useState(props.product)\r\n\r\n useEffect (() => {\r\n if (props.addedProduct != null && props.addedProduct != undefined && props.addedProduct.merchantProductId === product.merchantProductId) {\r\n const updatedProduct = product;\r\n updatedProduct.shareCode = props.addedProduct.shareCode;\r\n updatedProduct.userMerchantProductId = props.product.userMerchantProductId;\r\n setProduct(updatedProduct);\r\n }\r\n \r\n }, [props.addedProduct]);\r\n\r\n const handleAdd = async () => {\r\n setIsAdded(true);\r\n await props.addProductToInventory(product.merchantProductId);\r\n }\r\n\r\n const handleShare = async () => {\r\n if (props.showAdd && !isAdded) {\r\n setIsAdded(true);\r\n await props.addProductToInventory(product.merchantProductId, true);\r\n }\r\n\r\n props.toggleShareModal(product, props.isUserMerchant ? props.isUserMerchant : false);\r\n }\r\n\r\n return (\r\n setIsOpen(!isOpen)}>\r\n \r\n Action\r\n \r\n\r\n \r\n {props.showAdd && !isAdded ? \r\n \r\n Add\r\n \r\n :\r\n \r\n Add\r\n }\r\n \r\n Share\r\n \r\n \r\n\r\n \r\n\r\n )\r\n}\r\n\r\n\r\nexport default AllProductsItemDropdown;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{isSmall:boolean, style:object}} props\r\n */\r\nconst LoadSpinnerOverlay = (props) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default LoadSpinnerOverlay;","import React from \"react\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{title:string, bodyStyle:object, errorMessage:string}} props\r\n */\r\nconst NoResults = (props) => {\r\n return (\r\n
    \r\n
    \r\n
    No results found
    \r\n {props.errorMessage ?

    {props.errorMessage || \"\"}

    : null}\r\n
    \r\n {props.children}\r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default NoResults;","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Collapse } from \"reactstrap\";\r\n\r\nimport ProductRowMobile from \"views/Account/ProductRowMobile\";\r\nimport AllProductsRowMobile from \"views/Account/AllProductsRowMobile\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport EditProductModal from \"components/EditProductModal/EditProductModal\";\r\nimport Modal from \"../../components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\n\r\nimport MyProductsItemDropdown from \"views/Account/MyProductsItemDropdown\";\r\nimport AllProductsItemDropdown from \"views/Account/AllProductsItemDropdown\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { toggleProductPageModal, toggleShareModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport NoResults from \"components/NoResults\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport { Popover, UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\n\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport { Helmet } from 'react-helmet';\r\nimport ActionButton from \"../../components/ActionButton\";\r\n\r\nclass MyProducts extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n getLinkPopover: false,\r\n products: [],\r\n filteredProducts: [],\r\n showEditProduct: false,\r\n productToEditIndex: 0,\r\n sectors: [],\r\n loading: true,\r\n loadingMore: false,\r\n modalOpen: false,\r\n shareLink: \"\",\r\n isUserMerchant: false,\r\n tab: 0,\r\n filter: \"\",\r\n searchingAllProducts: false,\r\n searchingAllProductsMore: false,\r\n finishedFetchingAllProducts: false,\r\n finishedFetchingProducts: false,\r\n allProducts: [],\r\n reset: 0,\r\n addedProduct: null,\r\n addingProduct: false,\r\n searchIcon: 0,\r\n mostRecentSearch: \"\",\r\n allProductsClearFilter: false,\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n\r\n if (!this.props.creatorDashboard) {\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n this.setState({ loading: true });\r\n\r\n let products = await this.fetchProducts(0, 100);\r\n let sectors = await this.fetchSectors();\r\n this.setState({ products, sectors, loading: false, filteredProducts: products });\r\n\r\n document.addEventListener(\"_productAddedEvent\", this.updateProducts)\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.updateProducts();\r\n }\r\n });\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.tab !== this.state.tab) {\r\n const tab = this.state.tab;\r\n switch (tab) {\r\n case 0:\r\n this.updateProducts();\r\n break;\r\n case 1:\r\n this.fetchAllProducts();\r\n break;\r\n }\r\n }\r\n if (prevState.reset !== this.state.reset) {\r\n if (this.state.tab === 1) {\r\n this.fetchAllProducts();\r\n this.setState({ allProductsClearFilter: false })\r\n } else {\r\n this.updateProducts();\r\n }\r\n }\r\n if (prevState.searchIcon !== this.state.searchIcon && (this.state.mostRecentSearch !== \"\" || (this.state.mostRecentSearch === \"\" && this.state.filter !== \"\"))) {\r\n if (this.state.tab === 1) {\r\n this.fetchAllProducts();\r\n } else {\r\n this.updateProducts();\r\n }\r\n }\r\n }\r\n\r\n updateProducts = async () => {\r\n this.setState({ loading: true });\r\n\r\n let updatedProducts = await this.fetchProducts(0, 100);\r\n const finishedFetchingProducts = updatedProducts?.length < 100 || updatedProducts == null || updatedProducts == undefined;\r\n this.setState({ loading: false, finishedFetchingProducts, products: updatedProducts, filteredProducts: updatedProducts });\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"_productAddedEvent\", this.updateProducts);\r\n window.removeEventListener(\"storage\", () => { });\r\n }\r\n\r\n fetchAllProducts = async () => {\r\n this.setState({ mostRecentSearch: this.state.filter });\r\n\r\n const searchValue = this.state.filter;\r\n\r\n this.setState({ allProducts: [], searchingAllProducts: true });\r\n\r\n let url = `/search/SearchProductsWithCommissionEstimate?userId=${this.props.loggedInUser?.id}&search=${searchValue}&skip=0&take=100`;\r\n let results = await getRequest(url);\r\n\r\n if (results !== undefined && results !== null && results.length > 0) {\r\n this.setState({ allProducts: results, finishedFetchingAllProducts: results.length < 100, searchingAllProducts: false })\r\n }\r\n else {\r\n this.setState({ finishedFetchingAllProducts: true, searchingAllProducts: false, })\r\n }\r\n }\r\n\r\n fetchMore = async () => {\r\n this.setState({ searchingAllProductsMore: true });\r\n let skip = this.state.allProducts.length;\r\n\r\n let url = `/search/SearchProductsWithCommissionEstimate?userId=${this.state.loggedInUser?.id}&search=${this.state.filter}&skip=${skip}&take=100`;\r\n let data = await getRequest(url);\r\n\r\n if (data === undefined || data === null || data?.length === 0) {\r\n this.setState({ finishedFetchingAllProducts: true, searchingAllProductsMore: false });\r\n }\r\n else {\r\n let newData = [...this.state.allProducts, ...data];\r\n this.setState({ allProducts: newData, searchingAllProductsMore: false, finishedFetchingAllProducts: data.length < 100 });\r\n }\r\n }\r\n\r\n\r\n fetchSectors = async () => {\r\n let url = `api/Sector/GetSectors`;\r\n let sectors = await getRequest(url);\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n if (sectors === undefined) {\r\n return [];\r\n }\r\n else {\r\n return sectors;\r\n }\r\n }\r\n\r\n hide = async (i) => {\r\n let productId = this.state.products[i].userMerchantProductId;\r\n let product = { ...this.state.products[i] };\r\n let url = `/Products/EditUserMerchantProduct/${productId}`;\r\n\r\n let payload = {\r\n id: product.userMerchantProductId,\r\n userDescription: product.userDescription,\r\n merchantProductId: product.merchantProductId,\r\n coupon: product.shareCode,\r\n userId: this.props.loggedInUser.id,\r\n isHidden: 1\r\n }\r\n\r\n let products = [...this.state.products];\r\n products.splice(i, 1);\r\n this.setState({ products, filteredProducts: products });\r\n\r\n await postRequest(url, payload);\r\n\r\n }\r\n\r\n handleGetLink = (shareLink) => {\r\n navigator.clipboard.writeText(shareLink);\r\n\r\n toast.success(\r\n
    \r\n

    Commissionable Link Copied to Clipboard!

    \r\n

    Your commissionable link has been copied to clipboard and is ready to be shared

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n this.handleGoogleAnalytics4GetLinkButton();\r\n }\r\n\r\n handleGoogleAnalytics4GetLinkButton = () => {\r\n window.gtag('event', 'Saved_Links_Get_Link', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Saved Links Get Link`,\r\n });\r\n }\r\n\r\n addProductToInventory = async (merchantProductId, share = false) => {\r\n if (share) {\r\n this.setState({ addingProduct: true });\r\n }\r\n\r\n var addModel = { MerchantProductId: merchantProductId };\r\n\r\n var url = \"/Products/AddProduct\";\r\n const added = await postRequest(url, addModel);\r\n\r\n let allProducts = [...this.state.allProducts];\r\n let addedProduct = [allProducts.filter(p => p.merchantProductId === added.merchantProductId)[0]];\r\n\r\n addedProduct[0].userMerchantProductId = added.userMerchantProductId;\r\n addedProduct[0].shareCode = added.shareCode;\r\n\r\n let products = [...addedProduct, ...this.state.products];\r\n let filteredProducts = [...addedProduct, ...this.state.filteredProducts];\r\n\r\n this.setState({ products, filteredProducts, addedProduct, addingProduct: false });\r\n \r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Product\", \"Brand\", \"Merchant\", \"Retail Price\", \"Est. Comm.\", \"\"];\r\n\r\n return headers.map((header, i) => {\r\n return {header}{header === \"Est. Comm.\" ? <>\r\n \r\n \r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\r\n \r\n\r\n : null}\r\n })\r\n }\r\n\r\n concatMerchantProduct = (product) => {\r\n if (product.name.toLowerCase().indexOf(product.manufacturer.toLowerCase()) === 0) {\r\n return product.name.slice(product.manufacturer.length - product.name.length).trim();\r\n }\r\n return product.name;\r\n }\r\n\r\n displayShareModal = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.state.filteredProducts?.length > 0) {\r\n return this.state.filteredProducts.map((product, i) => {\r\n let getLinkUrl = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!product.shareSubdomain) {\r\n getLinkUrl += product.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/prdlink/\" + product.shareCode;\r\n\r\n const url = \"/Product/ProductPage/\" + product.shareCode;\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n
    {titleCase(this.concatMerchantProduct(product))}{product.sale && !!(product.salePrice) ? : \"\"}
    \r\n
    \r\n
    \r\n \r\n\r\n\r\n \r\n {product.manufacturer} \r\n \r\n\r\n \r\n {product.merchant}\r\n \r\n\r\n \r\n {product.sale && !!(product.salePrice) ? ${product.salePrice.toFixed(2)} : <>} {currencyFormat(product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice : product.price)}\r\n \r\n\r\n \r\n {currencyFormat(product.estimatedCommission)}\r\n \r\n\r\n \r\n
    \r\n this.handleGetLink(getLinkUrl)}\r\n style={{ borderRadius: \"3px\", bottom: \"5px\", lineHeight: \"16px\", fontSize: \"14px\", height: \"30px\" }} className=\"btn btn-outline-brand mr-2\">Get Link\r\n \r\n\r\n {\r\n this.setState({ showEditProduct: !this.state.showEditProduct, productToEditIndex: i })\r\n }}\r\n hideClick={() => this.hide(i)}\r\n toggleShareModal={this.toggleProductShareModal}\r\n product={product}\r\n isUserMerchant={(product.user?.id && this.props.loggedInUser?.id) ? product.user.id === this.props.loggedInUser.id : false}\r\n />\r\n
    \r\n \r\n \r\n )\r\n })\r\n }\r\n }\r\n\r\n displayAllProductsRows = () => {\r\n if (this.state.allProducts?.length > 0) {\r\n return this.state.allProducts.map((product, i) => {\r\n let showAdd = !!(product.merchantProductId) ? !(product.inUserInventory) : false;\r\n\r\n const url = \"/Product/ProductPage/\" + product.shareCode;\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n
    {titleCase(this.concatMerchantProduct(product))}{product.sale && !!(product.salePrice) ? : \"\"}
    \r\n
    \r\n
    \r\n \r\n\r\n\r\n \r\n {product.manufacturer}\r\n \r\n\r\n \r\n {product.merchant}\r\n \r\n\r\n \r\n {product.sale && !!(product.salePrice) ? ${product.salePrice.toFixed(2)} : <>} {currencyFormat(product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice : product.price)}\r\n \r\n\r\n \r\n {currencyFormat(product.estimatedCommission)}\r\n \r\n\r\n \r\n
    \r\n\r\n this.handleGetLink(\"https://\" + window.location.host + \"/prdlink/\" + product.shareCode)}\r\n style={{ borderRadius: \"3px\", bottom: \"5px\", lineHeight: \"16px\", fontSize: \"14px\", height: \"30px\" }} className=\"btn btn-outline-brand mr-2\">Get Link\r\n \r\n \r\n
    \r\n \r\n \r\n )\r\n })\r\n }\r\n }\r\n\r\n showAllProducts = () => {\r\n return (\r\n 0 ? this.state.allProducts.length : 0}\r\n next={this.fetchMore}\r\n hasMore={!this.state.finishedFetchingAllProducts}\r\n loader={}\r\n style={{ overflow: \"initial\" }}\r\n >\r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayAllProductsRows()}\r\n \r\n
    \r\n
    \r\n\r\n \r\n )\r\n }\r\n\r\n toggleProductShareModal = async (product, isUserMerchant = false) => {\r\n let showModal = !this.state.modalOpen;\r\n\r\n if (showModal) {\r\n let shareLink = await getProductShareLink(product?.shareCode);\r\n this.setState({ modalOpen: showModal, shareLink, isUserMerchant });\r\n }\r\n else {\r\n this.setState({ modalOpen: showModal, shareLink: \"\", isUserMerchant });\r\n }\r\n \r\n //this.props.toggleShareModal(shareLink);\r\n }\r\n\r\n showProductsMobile = () => {\r\n if (this.state.filteredProducts?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n 0 ? this.state.products.length : 0}\r\n next={this.fetchMoreProducts}\r\n hasMore={!this.state.finishedFetchingProducts}\r\n loader={}\r\n style={{ overflow: \"initial\" }}\r\n >\r\n {this.displayProductsMobile()}\r\n \r\n )\r\n\r\n }\r\n\r\n displayProductsMobile = () => {\r\n return this.state.filteredProducts?.map((product, i) => {\r\n return (\r\n
    \r\n this.setState({ showEditProduct: !this.state.showEditProduct, productIndex: i })}\r\n hide={() => { this.hide(i) }}\r\n toggleProductModal={() => this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)}\r\n toggleShareModal={this.toggleProductShareModal}\r\n isUserMerchant={(product.user?.id && this.props.loggedInUser?.id) ? product.user.id === this.props.loggedInUser.id : false}\r\n editClick={(e) => {\r\n this.setState({ showEditProduct: !this.state.showEditProduct, productToEditIndex: i })\r\n }}\r\n hideClick={() => this.hide(i)}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n
    \r\n )\r\n\r\n })\r\n }\r\n\r\n displayAllProductsMobile = () => {\r\n return this.state.allProducts?.map((product, i) => {\r\n let showAdd = !!(product.merchantProductId) ? !(product.inUserInventory) : false;\r\n\r\n return (\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)}\r\n toggleShareModal={this.toggleProductShareModal}\r\n isUserMerchant={(product.user.id && this.props.loggedInUser.id) ? product.user.id === this.props.loggedInUser.id : false}\r\n />\r\n )\r\n\r\n })\r\n }\r\n\r\n showAllProductsMobile = () => {\r\n if (!this.state.searchingAllProducts && this.state.allProducts?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n ) \r\n }\r\n return (\r\n 0 ? this.state.allProducts.length : 0}\r\n next={this.fetchMore}\r\n hasMore={!this.state.finishedFetchingAllProducts}\r\n loader={}\r\n style={{ overflow: \"initial\" }}\r\n >\r\n {this.displayAllProductsMobile()}\r\n \r\n );\r\n }\r\n\r\n fetchCounts = async (userId) => {\r\n let productCountUrl = `/Products/GetUserMerchantProductCount?userId=${userId}&onlyPostedProducts=false`\r\n let productCount = (await getRequest(productCountUrl)).count;\r\n\r\n this.setState({ productCount });\r\n return productCount;\r\n }\r\n\r\n fetchProducts = async (skip, take) => {\r\n this.setState({ mostRecentSearch: this.state.filter });\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n let url = `${basePath}?userName=${this.props.loggedInUser.userName}&skip=${skip}&take=${take}&searchTerm=${this.state.filter}`;\r\n //let url = `/Products/GetUserMerchantProducts?userName=pterracina&skip=${skip}&take=${take}`;\r\n let products = await getRequest(url);\r\n if (products) {\r\n products.forEach(product => product.user = this.props.loggedInUser);\r\n }\r\n if (products?.length < take) {\r\n this.setState({ finishedFetchingProducts: true });\r\n }\r\n return products;\r\n }\r\n\r\n\r\n fetchMoreProducts = async () => {\r\n this.setState({ loadingMore: true });\r\n\r\n let skip = this.state.products.length;\r\n let take = 100;\r\n\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n let url = `${basePath}?userName=${this.props.loggedInUser.userName}&skip=${skip}&take=${take}&searchTerm=${this.state.filter}`;\r\n let products = await getRequest(url);\r\n\r\n if (products === undefined || products === null || products?.length === 0) {\r\n this.setState({ finishedFetchingProducts: true, loadingMore: false });\r\n }\r\n else {\r\n let newProducts = [...this.state.products, ...products];\r\n this.setState({ products: newProducts, filteredProducts: newProducts, loadingMore: false, finishedFetchingProducts: products.length < take });\r\n }\r\n }\r\n\r\n saveProductSectors = async (productIndex) => {\r\n let product = this.state.products[productIndex];\r\n let url = `/Products/UpdateUserMerchantProductSectors?userMerchantProductId=${product.userMerchantProductId}`;\r\n await postRequest(url, product.sectorIds);\r\n }\r\n\r\n updateProductDescription = async (productIndex, description) => {\r\n let productId = this.state.products[productIndex].userMerchantProductId;\r\n let product = { ...this.state.products[productIndex] };\r\n product.userDescription = description;\r\n let url = `/Products/EditUserMerchantProduct/${productId}`;\r\n\r\n let payload = {\r\n id: product.userMerchantProductId,\r\n userDescription: product.userDescription,\r\n merchantProductId: product.merchantProductId,\r\n coupon: product.shareCode,\r\n userId: this.props.loggedInUser.id\r\n }\r\n await postRequest(url, payload);\r\n\r\n }\r\n\r\n updateProductRating = (productRating) => {\r\n const { products, filteredProducts } = this.state;\r\n const productToEditIndex = this.state.productToEditIndex;\r\n\r\n const productIndexInProducts = products.findIndex(product => product.id === filteredProducts[productToEditIndex].id);\r\n const productIndexInFilteredProducts = filteredProducts.findIndex(product => product.id === filteredProducts[productToEditIndex].id);\r\n\r\n if (productIndexInProducts !== -1) {\r\n let updatedProducts = [...products];\r\n updatedProducts[productIndexInProducts].rating = productRating;\r\n\r\n this.setState({ products: updatedProducts });\r\n }\r\n\r\n if (productIndexInFilteredProducts !== -1) {\r\n let updatedFilteredProducts = [...filteredProducts];\r\n updatedFilteredProducts[productIndexInFilteredProducts].rating = productRating;\r\n\r\n this.setState({ filteredProducts: updatedFilteredProducts });\r\n }\r\n }\r\n\r\n\r\n updateProductSectors = async (productIndex, sectors) => {\r\n let products = [...this.state.products];\r\n let product = products[productIndex];\r\n product.sectorIds = sectors;\r\n this.setState({ products, filteredProducts: products });\r\n }\r\n\r\n onInputChange = (e, reset = false) => {\r\n let filter = \"\";\r\n\r\n if (reset) {\r\n filter = e;\r\n } else {\r\n filter = e.target.value;\r\n }\r\n\r\n this.setState({ filter });\r\n };\r\n\r\n onAllProductsInputKeydown = (e) => {\r\n if (this.state.tab === 1 && e.keyCode === 13) {\r\n this.fetchAllProducts();\r\n }\r\n }\r\n\r\n onInputKeydown = (e) => {\r\n if (this.state.tab === 0 && e.keyCode === 13) {\r\n this.updateProducts();\r\n }\r\n }\r\n\r\n resetFilter = () => {\r\n if (this.state.filter !== \"\") {\r\n const filter = \"\";\r\n this.setState({ filter });\r\n\r\n this.setState({ reset: this.state.reset + 1 });\r\n if (this.state.tab === 1) {\r\n this.setState({ allProductsClearFilter: true });\r\n }\r\n }\r\n }\r\n\r\n displayGetLinkModal = () => {\r\n return (\r\n this.setState({ getLinkPopover: !this.state.getLinkPopover })}\r\n >\r\n

    Your product link has been copied to clipboard and is ready to be included in your post

    \r\n\r\n
    \r\n )\r\n }\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n submitRating = async (productRating, product) => {\r\n if (productRating > 0) {\r\n let url = \"/Products/Rate?id=\" + product.userMerchantProductId + \"&rating=\" + productRating;\r\n let rating = await getRequest(url);\r\n this.updateProductRating(productRating);\r\n }\r\n}\r\n\r\n render() {\r\n let breadCrumbList = [{ link: '/Account/CreatorDashboard', text: 'Creator Dashboard' }, { link: '/Account/Products', text: 'My Products', active: true }];\r\n let smallSizes = [\"sm\", \"md\"];\r\n let { deviceSize } = this.props;\r\n let { productToEditIndex } = this.state;\r\n\r\n return (\r\n
    \r\n \r\n RockPorch - My Products\r\n \r\n \r\n {\r\n this.state.products != undefined && this.state.products?.length > 0 ? (\r\n this.setState({ showEditProduct: false })}\r\n product={this.state.products[this.state.productToEditIndex]}\r\n productDescription={this.state.products[this.state.productToEditIndex]?.userDescription}\r\n saveDescription={(description) => this.updateProductDescription(productToEditIndex, description)}\r\n updateSectors={(sectors) => this.updateProductSectors(this.state.productToEditIndex, sectors)}\r\n sectors={this.state.sectors}\r\n saveSectorChanges={() => this.saveProductSectors(productToEditIndex)}\r\n updateProductRating={(rating) => this.updateProductRating(productToEditIndex, rating)}\r\n submitRating={this.submitRating}\r\n />\r\n ): null\r\n }\r\n\r\n {\r\n this.displayShareModal()\r\n }\r\n\r\n
    \r\n \r\n

    Saved Links

    \r\n

    Manage commissionable links for your social posts

    \r\n
    \r\n
    \r\n\r\n
    \r\n {this.displayGetLinkModal()}\r\n\r\n {\r\n smallSizes.includes(deviceSize) ? (\r\n <>\r\n
    \r\n \r\n Estimated Commission\r\n *\r\n e.preventDefault()} style={{ position: \"relative\", fontSize: \"8px\", backgroundColor: \"transparent\", border: \"0px solid transparent\" }} id=\"estimatedCommissionsHeader\">\r\n \r\n \r\n \r\n \r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of consumer's purchase\r\n \r\n \r\n
    \r\n \r\n\r\n ) : <>}\r\n
    \r\n
    \r\n
    \r\n
    \r\n this.onInputChange(e)} onKeyDown={this.state.tab === 0 ? this.onInputKeydown : this.onAllProductsInputKeydown}/>\r\n {\r\n this.setState({ searchIcon: this.state.searchIcon + 1 })\r\n }} />\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
      \r\n
    • this.onTabChange(0) }>\r\n My Links\r\n
    • \r\n
    • this.onTabChange(1)}>\r\n Creators Links\r\n
    • \r\n
    \r\n\r\n {this.state.allProductsClearFilter || this.state.searchingAllProducts && !smallSizes.includes(deviceSize) ? \r\n \r\n :\r\n <>\r\n }\r\n\r\n {this.state.loading ?\r\n \r\n :\r\n <>\r\n }\r\n\r\n {\r\n this.state.addingProduct ?\r\n \r\n : <>\r\n }\r\n\r\n {\r\n smallSizes.includes(deviceSize) && this.state.tab === 0 && !this.state.searchingAllProducts && ! this.state.loading ? (\r\n <>\r\n {this.showProductsMobile()}\r\n \r\n\r\n ) :\r\n smallSizes.includes(deviceSize) && this.state.tab === 1 && !this.state.searchAllProducts && !this.state.loading ? (\r\n <>\r\n {this.showAllProductsMobile() }\r\n \r\n )\r\n\r\n : !this.state.searchingAllProducts && !this.state.loading ? (\r\n <>\r\n {\r\n this.state.tab === 0 ? (\r\n 0 ? this.state.products.length : 0}\r\n next={this.fetchMoreProducts}\r\n hasMore={!this.state.finishedFetchingProducts}\r\n loader={}\r\n style={{ overflow: \"initial\" }}\r\n >\r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    \r\n ) :\r\n\r\n this.showAllProducts()\r\n }\r\n \r\n \r\n ) : <>\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState,ownProps) {\r\n return {interactionState:storeState.interactionReducer}\r\n}\r\n\r\n\r\nexport default connect(mapStateToProps, { toggleProductPageModal,toggleShareModal })(MyProducts);","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n/**\r\n * \r\n * @param {{userInformation:object}} props\r\n */\r\nclass CreatorDashboardContactUs extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n }\r\n\r\n handleContactClick = () => {\r\n const emailAddress = 'Creatorsupport@rockporch.com';\r\n const mailtoLink = `mailto:${emailAddress}`;\r\n window.open(mailtoLink, '_blank');\r\n };\r\n \r\n render() {\r\n return ( \r\n
    \r\n
    \r\n

    \r\n Have Questions?\r\n

    \r\n
    \r\n
    \r\n

    \r\n We’re here to help! The RockPorch Creator Development Team is here to help guide and support you every step of the way. Just click the Contact Us Button and we’ll get right back to you!\r\n

    \r\n {\r\n this.props.creatorApp ?\r\n <>\r\n :\r\n <>\r\n

    \r\n In the meantime, here are a couple of resources that may help:\r\n

    \r\n

    \r\n 🔎 Dive into our Creator Frequently Asked Questions to get quick answers to any issues you might be facing here!.\r\n

    \r\n

    \r\n 💡 Learn strategy and get platform tutorials on our Creator Resources page here.\r\n

    \r\n

    \r\n 💪 We have a private Facebook group just for RockPorch creators. You’ll find tips, tricks, and an awesome community of badass RockPorch creators like you. Join the group here.\r\n

    \r\n \r\n }\r\n \r\n
    \r\n \r\n
    \r\n Contact Us\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n );\r\n };\r\n}\r\n\r\n\r\nexport default withRouter(CreatorDashboardContactUs);\r\n","import React from \"react\"\r\nimport { useState } from \"react\";\r\n\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\n\r\n/** \r\n * @param {{loggedInUser: Object, title:string, shareCode:string?, customStyle:Object, shareBlockStyle:Object}} props \r\n */\r\nconst MerchantShareBlock = (props) => {\r\n\r\n const [showCopied2, setCopiedText2] = useState(false);\r\n const [invalidUrl, setInvalidUrl] = useState(false);\r\n const [redirectUrl, setRedirectUrl] = useState(\"\");\r\n const [urlInput, setUrlInput] = useState(\"\");\r\n\r\n let renderCopiedText2 = () => {\r\n if (showCopied2) {\r\n setTimeout(() => { setCopiedText2(false) }, 500);\r\n return ();\r\n }\r\n return (\"Copy\");\r\n }\r\n\r\n let handleDeepLinkChange = (event) => {\r\n let url = event.target.value;\r\n setUrlInput(url);\r\n\r\n let isValid = url.length > 0 ? isValidUrl(url) : false;\r\n if (isValid) {\r\n setRedirectUrl(props.shareCode + \"&redirectUrl=\" + url);\r\n setInvalidUrl(false);\r\n } else {\r\n setInvalidUrl(true);\r\n setRedirectUrl(\"\");\r\n }\r\n };\r\n\r\n return <>\r\n}\r\n\r\nexport default MerchantShareBlock;","// queryString window.location.search\r\nexport function showBrandNav(queryString) {\r\n const params = new Proxy(new URLSearchParams(queryString), {\r\n get: (searchParams, prop) => {\r\n const paramName = Array.from(searchParams.keys()).find(\r\n key => key.toLowerCase() === prop.toLowerCase()\r\n );\r\n return paramName ? searchParams.get(paramName) : undefined;\r\n }\r\n });\r\n\r\n const showBrandNav = params.showbrandnav; \r\n\r\n return !!(showBrandNav) && typeof showBrandNav === \"string\" && showBrandNav.toLowerCase() === \"true\";\r\n} \r\n\r\nexport function getQueryStringParams(queryString) {\r\n const params = new Proxy(new URLSearchParams(queryString), {\r\n get: (searchParams, prop) => {\r\n const paramName = Array.from(searchParams.keys()).find(\r\n key => key.toLowerCase() === prop.toLowerCase()\r\n );\r\n return paramName ? searchParams.get(paramName) : undefined;\r\n }\r\n });\r\n\r\n return params;\r\n} ","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport { Popover, UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport Select from 'react-select';\r\nimport { debounce } from \"throttle-debounce\";\r\nimport Modal from \"../../components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport MerchantShareBlock from \"components/Share/MerchantShareBlock\";\r\nimport { toggleProductPageModal, toggleShareModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getMerchantShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport ShareIosIcon from \"../../components/icons/ShareIosIcon\";\r\nimport { pad } from \"lodash\";\r\nimport { Helmet } from 'react-helmet';\r\nimport { getQueryStringParams, showBrandNav } from \"sharedUtils/navUtils\"\r\n\r\nclass Brands extends React.Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.selectOptions = {\r\n name: {\r\n value: 1,\r\n label: \"Name\",\r\n },\r\n recentlyAdded: {\r\n value: 2,\r\n label: \"Recently Added\"\r\n },\r\n commission: {\r\n value: 3,\r\n label: \"Estimated Commission\"\r\n },\r\n }\r\n\r\n this.state = {\r\n modalOpen: false,\r\n shareLink: \"\",\r\n filter: \"\",\r\n filteredPartners: [],\r\n partners: [],\r\n loading: true,\r\n sectors: [],\r\n partnerSectors: [],\r\n selectedSectors: [],\r\n tab: 0,\r\n currentDeals: [],\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.name,\r\n this.selectOptions.recentlyAdded,\r\n this.selectOptions.commission,\r\n ],\r\n defaultValue: this.selectOptions.name,\r\n currentValue: this.selectOptions.name,\r\n },\r\n }\r\n }\r\n\r\n breadCrumbList = [{ link: '/Account/CreatorDashboard', text: 'Creator Dashboard' }, { link: '/Account/Brands', text: 'Merchant Partners', active: true }];\r\n\r\n componentDidMount = async () => {\r\n const tab = getQueryStringParams(window.location.search).tab;\r\n if (!!(tab)) {\r\n if (tab.toLowerCase() === \"merchantpartners\") {\r\n this.setState({ tab: 0 });\r\n } else if (tab.toLowerCase() === \"currentdeals\") {\r\n this.setState({ tab: 1 });\r\n }\r\n }\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n\r\n if (!this.props.creatorDashboard) {\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n await Promise.all([\r\n this.getPartners(),\r\n this.getPartnerSectors(),\r\n this.getSectors(),\r\n ]);\r\n\r\n await this.getCurrentDeals();\r\n await this.filterPartners();\r\n\r\n this.setState({ loading: false })\r\n }\r\n\r\n getCurrentDeals = async () => {\r\n const getUrl = \"api/Merchant/GetCurrentDeals\";\r\n const currentDealsInitial = await getRequest(getUrl);\r\n if (!!(currentDealsInitial) && this.state.partners.length > 0) {\r\n const currentDeals = this.addMerchantNameAndLogoToDeals(currentDealsInitial);\r\n\r\n const dealsWithOrdinal = currentDeals.filter(deal => deal.ordinal !== undefined && deal.ordinal !== null);\r\n const dealsWithoutOrdinal = currentDeals.filter(deal => deal.ordinal === undefined || deal.ordinal === null);\r\n\r\n const sortedDealsWithOrdinal = dealsWithOrdinal.sort((a, b) => a.ordinal - b.ordinal);\r\n const finalCurrentDeals = [...sortedDealsWithOrdinal, ...dealsWithoutOrdinal];\r\n this.setState({ currentDeals: finalCurrentDeals });\r\n }\r\n }\r\n\r\n addMerchantNameAndLogoToDeals = (deals) => {\r\n const merchants = this.state.partners;\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n return deals\r\n .map(deal => {\r\n const correspondingMerchant = merchants.find((merchant) => merchant.id === deal.merchantId);\r\n const merchantName = correspondingMerchant ? correspondingMerchant.merchantName : 'Unknown Merchant';\r\n const merchantLogoUrl = correspondingMerchant ? correspondingMerchant.merchantLogoUrl : \"\";\r\n const commission = correspondingMerchant ? correspondingMerchant.commission : \"\";\r\n\r\n return {\r\n ...deal,\r\n merchantName,\r\n merchantLogoUrl,\r\n commission,\r\n };\r\n });\r\n };\r\n\r\n\r\n\r\n getSectors = async () => {\r\n let sectors = await getRequest('/api/Sector/GetSectors');\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n this.setState({ sectors });\r\n }\r\n\r\n getPartners = async () => {\r\n let partnersUrl = '/api/Merchant/GetCommissionEstimate?showAll=false&getMaxByMerchant=true';\r\n let partners = await getRequest(partnersUrl);\r\n this.setState({ partners: partners, filteredPartners: partners });\r\n }\r\n\r\n getPartnerSectors = async () => {\r\n let partnerSectorsUrl = '/api/Sector/GetAllMerchantSectors';\r\n let partnerSectors = await getRequest(partnerSectorsUrl);\r\n this.setState({ partnerSectors });\r\n }\r\n\r\n // Original Searchbar method for onChange\r\n onInputChange = async (e) => {\r\n let filter = e.target.value;\r\n\r\n await this.setState({ filter: filter });\r\n\r\n this.filterPartners(true);\r\n };\r\n\r\n bounce = debounce(300, () => {\r\n this.filterPartners(true);\r\n });\r\n\r\n // Taking the place of onInputChange above this method to prove debouncing concept for searchbar\r\n debounceFunc = (e) => {\r\n let filter = e.target.value;\r\n this.setState({ filter: filter });\r\n this.bounce();\r\n }\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n if (this.props.creatorDashboard) {\r\n if (tab === 0) {\r\n this.setState({ tab: 0 });\r\n } else {\r\n this.setState({ tab: 1 });\r\n }\r\n return; \r\n }\r\n\r\n if (tab === 0) {\r\n this.props.history.push('/Account/Brands?tab=merchantpartners');\r\n } else {\r\n this.props.history.push('/Account/Brands?tab=currentdeals');\r\n }\r\n }\r\n\r\n renderShareOverlay = (shareLink) => {\r\n return ( {\r\n e.preventDefault();\r\n this.props.toggleShareModal(shareLink);\r\n }} style={{ cursor: \"pointer\", backgroundColor: \"#f8f9fa\", borderRadius: \"999px\", padding: \"5px\", bottom: \"-2px\" }}>\r\n \r\n );\r\n }\r\n \r\n displayShareModal = () => {\r\n let shareProps = {\r\n shareCode: this.state.shareLink,\r\n title: \"Merchant share\",\r\n customStyle: { maxWidth: \"100%\", backgroundColor: \"white\" },\r\n shareBlockStyle: { border: \"none\", backgroundColor: \"transparent\" },\r\n loggedInUser: this.props.loggedInUser,\r\n type: \"merchant\",\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n renderDeals() {\r\n const largeScreen = [\"lg\", \"xl\"].includes(this.props.deviceSize);\r\n\r\n return this.state.currentDeals.map((deal, i) => {\r\n let redirectToMerchantUrl = `/m/${deal.merchantId}?userId=${this.props.loggedInUser.id}&redirectUrl=${deal.url}¤tDeal=true`;\r\n\r\n const lastCard = largeScreen ? (i + 1) % 3 === 0 : (i + 1) % 1 === 0;\r\n const lastRowIndex = largeScreen ? Math.floor((this.state.currentDeals.length - 1) / 3) * 3 : Math.floor((this.state.currentDeals.length - 1) / 1) * 1;\r\n\r\n let commissionPercentage = deal.commission * 100;\r\n let roundedCommissionPercentage = 0;;\r\n if (commissionPercentage > 0) {\r\n roundedCommissionPercentage = commissionPercentage.toFixed(2);\r\n if (roundedCommissionPercentage.toString().endsWith(\".00\")) { roundedCommissionPercentage = roundedCommissionPercentage.toString().slice(0, -3) };\r\n }\r\n\r\n const dateString = deal.endDate\r\n const date = new Date(dateString);\r\n const formattedDate = date.toLocaleDateString(\"en-US\", {\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\"\r\n });\r\n\r\n const dealStyle = [\"sm\", \"md\"].includes(this.props.deviceSize) ? { width: \"335px\", margin: \"0 auto\", border: \"1px solid\", marginBottom: \"5px\" } : {}\r\n\r\n return (\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n

    {deal.merchantName}

    \r\n
    \r\n \r\n
    \r\n

    {deal.description}

    \r\n
    \r\n e.preventDefault()}>Explore Sale\r\n { e.preventDefault(); this.toggleProductShareModal(redirectToMerchantUrl); }}\r\n >Share A Commissionable Link\r\n
    \r\n\r\n
    \r\n

    Estimated Commission: {roundedCommissionPercentage}%

    \r\n

    Expires: {formattedDate}

    \r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n })\r\n }\r\n\r\n toggleProductShareModal = async (urlFragment) => {\r\n let showModal = !this.state.modalOpen;\r\n let shareLink = await getMerchantShareLink(urlFragment);\r\n\r\n if (showModal) {\r\n this.setState({ modalOpen: showModal, shareLink });\r\n }\r\n else {\r\n this.setState({ modalOpen: showModal, shareLink: \"\" });\r\n }\r\n }\r\n\r\n displayTableRows = () => {\r\n return this.state.filteredPartners?.map((partner, i) => {\r\n let featuredCount = this.state.filteredPartners?.filter(partner => !!(partner.ordinal)).length;\r\n\r\n let redirectToMerchatUrl = `/mlink/${partner.id}?userId=${this.props.loggedInUser.id}`;\r\n const today = new Date();\r\n const thirtyDaysPriorToToday = new Date().setDate(today.getDate() - 30);\r\n const newLabel = new Date(partner.integratedDate).getTime() > thirtyDaysPriorToToday && !(partner.ordinal) ?\r\n //
    \r\n
    \r\n
    \r\n New\r\n
    \r\n
    \r\n //
    \r\n :\r\n
    ;\r\n const featuredLabel = !!(partner.ordinal) ?\r\n //
    \r\n
    \r\n
    \r\n Featured\r\n
    \r\n
    \r\n //
    \r\n :\r\n
    ;\r\n const shareBtn = this.toggleProductShareModal(redirectToMerchatUrl)}\r\n >Get Link
    ;\r\n \r\n let commissionPercentage = partner.commission * 100;\r\n if (commissionPercentage > 0) {\r\n let roundedCommissionPercentage = commissionPercentage.toFixed(2);\r\n if (roundedCommissionPercentage.toString().endsWith(\".00\")) { roundedCommissionPercentage = roundedCommissionPercentage.toString().slice(0, -3) };\r\n\r\n\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \"Brand\r\n
    {partner.merchantName}
    \r\n
    \r\n
    \r\n {newLabel}\r\n {featuredLabel}\r\n {shareBtn}\r\n
    \r\n \r\n \r\n {roundedCommissionPercentage}%\r\n \r\n );\r\n }\r\n \r\n });\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Name\", \"Estimated Commission\"];\r\n return headers.map((header, i) => {\r\n return (\r\n \r\n {header}\r\n \r\n \r\n \r\n \r\n \r\n {header === \"Estimated Commission\" ? \"Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\" :\r\n \"You earn commissions on your own purchases, just by using one of the links to our partners below!\"}\r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n\r\n handleSelect = async (e) => {\r\n let selectedSectors = e.map((sector) => { return sector.value });\r\n await this.setState({ selectedSectors });\r\n this.filterPartners(true);\r\n }\r\n\r\n handleSortSelect = async (e, filteredPartners = []) => {\r\n let selectOptions = this.state.selectOptions;\r\n\r\n if (!!(e)) {\r\n selectOptions.currentValue = e;\r\n } else {\r\n e = selectOptions.currentValue;\r\n }\r\n\r\n if (filteredPartners.length === 0)\r\n filteredPartners = [...this.state.filteredPartners];\r\n\r\n let finalFilteredPartners = [];\r\n\r\n if (e.value === 1) {\r\n let partnersWithOrdinal = filteredPartners.filter(partner => partner.ordinal !== undefined && partner.ordinal !== null);\r\n let partnersWithoutOrdinal = filteredPartners.filter(partner => partner.ordinal === undefined || partner.ordinal === null);\r\n partnersWithoutOrdinal.sort((a, b) => a.merchantName.toLowerCase() < b.merchantName.toLowerCase() ? -1 : 1);\r\n finalFilteredPartners = [...partnersWithOrdinal, ...partnersWithoutOrdinal];\r\n }\r\n\r\n if (e.value === 2) {\r\n let partnersWithOrdinal = filteredPartners.filter(partner => partner.ordinal !== undefined && partner.ordinal !== null);\r\n let partnersWithoutOrdinal = filteredPartners.filter(partner => partner.ordinal === undefined || partner.ordinal === null);\r\n partnersWithoutOrdinal.sort((a, b) => a.integratedDate > b.integratedDate ? -1 : 1);\r\n finalFilteredPartners = [...partnersWithOrdinal, ...partnersWithoutOrdinal];\r\n }\r\n\r\n if (e.value === 3) {\r\n let partnersWithOrdinal = filteredPartners.filter(partner => partner.ordinal !== undefined && partner.ordinal !== null);\r\n let partnersWithoutOrdinal = filteredPartners.filter(partner => partner.ordinal === undefined || partner.ordinal === null);\r\n partnersWithoutOrdinal.sort((a, b) => a.commission > b.commission ? -1 : 1);\r\n finalFilteredPartners = [...partnersWithOrdinal, ...partnersWithoutOrdinal];\r\n }\r\n\r\n this.setState({ filteredPartners: finalFilteredPartners, selectOptions });\r\n };\r\n\r\n\r\n filterPartners = async (sort = false) => {\r\n const filter = this.state.filter;\r\n let filteredPartners;;\r\n\r\n if (filter.trim().length > 0) {\r\n const url = `api/Merchant/GetFilteredMerchants?merchantString=${filter.trim()}`;\r\n let filteredArray = await getRequest(url);\r\n filteredPartners = this.state.partners.filter(p => filteredArray.find(fa => fa.id === p.id));\r\n } else {\r\n filteredPartners = [...this.state.partners];\r\n }\r\n\r\n let partnersWithOrdinal = filteredPartners.filter(partner => partner.ordinal !== undefined && partner.ordinal !== null);\r\n let partnersWithoutOrdinal = filteredPartners.filter(partner => partner.ordinal === undefined || partner.ordinal === null);\r\n\r\n let sortedPartnersWithOrdinal = partnersWithOrdinal.sort((a, b) => a.ordinal - b.ordinal);\r\n let finalFilteredPartners = [...sortedPartnersWithOrdinal, ...partnersWithoutOrdinal];\r\n\r\n if (this.state.selectedSectors.length > 0) {\r\n let partnersFilteredBySectors = this.state.partnerSectors?.filter(partnerSector => this.state.selectedSectors.indexOf(partnerSector.sectorId) !== -1)\r\n .filter((v, i, a) => a.indexOf(v) === i)\r\n .map((filteredPartnerSector) => { return filteredPartnerSector.merchantId });\r\n finalFilteredPartners = finalFilteredPartners.filter(partner => partnersFilteredBySectors.indexOf(partner.id) !== -1);\r\n\r\n this.setState({ filteredPartners: finalFilteredPartners });\r\n } else {\r\n this.setState({ filteredPartners: finalFilteredPartners });\r\n }\r\n\r\n if (sort) {\r\n this.handleSortSelect(null, finalFilteredPartners);\r\n }\r\n };\r\n\r\n saveUser = async (loggedInUser) => {\r\n let serializedUser = {\r\n name: loggedInUser.name,\r\n firstName: loggedInUser.firstName,\r\n lastName: loggedInUser.lastName,\r\n bio: loggedInUser.bio,\r\n tagLine: loggedInUser.tagLine,\r\n website: loggedInUser.website,\r\n imageUrl: loggedInUser.imageUrl,\r\n userName: loggedInUser.userName,\r\n email: loggedInUser.email,\r\n\r\n phoneNumber: loggedInUser.phoneNumber,\r\n proStatusId: loggedInUser.proStatusId,\r\n address: loggedInUser.address,\r\n city: loggedInUser.city,\r\n state: loggedInUser.state,\r\n postalCode: loggedInUser.postalCode,\r\n country: loggedInUser.country,\r\n\r\n onboardingComplete: loggedInUser.onboardingComplete,\r\n profileBannerUrl: loggedInUser.profileBannerUrl,\r\n quickStart: loggedInUser.quickStart\r\n };\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n await postRequest(userUrl, serializedUser);\r\n }\r\n\r\n render() {\r\n let smallSizes = [\"sm\", \"md\"];\r\n let { deviceSize } = this.props;\r\n\r\n if (this.state.loading) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n RockPorch - Merchant Products\r\n \r\n \r\n )\r\n }\r\n return (\r\n <>\r\n \r\n RockPorch - Merchant Partners\r\n \r\n {this.displayShareModal()}\r\n
    \r\n \r\n

    Merchant Partners

    \r\n

    View Merchant Partners and commission rates

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n this.state.tab === 0 ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.debounceFunc(e)} />\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.sectors?.map((sector) => {\r\n return { value: sector.sectorId, label: sector.name };\r\n })} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n { this.handleSortSelect(e) }}\r\n options={this.state.selectOptions.options} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n :\r\n <>\r\n }\r\n \r\n \r\n\r\n
    \r\n\r\n {\r\n this.state.currentDeals.length > 0 ?\r\n\r\n
      \r\n
    • this.onTabChange(0)}>\r\n Brand Partners\r\n
    • \r\n
    • this.onTabChange(1)}>\r\n Current Deals\r\n
    • \r\n
    \r\n\r\n :\r\n <>\r\n\r\n }\r\n \r\n {\r\n this.state.tab == 1 ?\r\n
    \r\n
    \r\n
    \r\n {this.renderDeals()}\r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    \r\n } \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { interactionState: storeState.interactionReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleProductPageModal, toggleShareModal })(Brands);","import React from \"react\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{isFilled:boolean, fillBackground:string}} props\r\n */\r\nconst PinIcon = (props) => {\r\n\r\n //let iconClass = props.isFilled == true ? \"fas fa-thumbtack\" : \"far fa-thumbtack\";\r\n\r\n //let iconClass = props.isFilled == true ? \"fas fa-star\" : \"far fa-star\";\r\n\r\n //https://img.icons8.com/ios-filled/50/000000/pin--v1.png\r\n //https://img.icons8.com/office/16/000000/pin.png\r\n\r\n /*let iconSrc = props.isFilled == true ? \"https://img.icons8.com/office/16/000000/pin.png\" : \"https://img.icons8.com/ios/50/000000/pin--v1.png\";*/\r\n\r\n let iconSrc = props.isFilled == true ? \"images/thumbtackRed.png\" : \"images/thumbtack.png\";\r\n let backgroundColor = props.isFilled == true ? \"#ffd700\" : \"#ffffff\"\r\n return (\r\n\r\n \r\n\r\n )\r\n\r\n}\r\n\r\nexport default PinIcon;","import React, { useState, useEffect } from \"react\";\r\nimport { Link, NavLink } from \"react-router-dom\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\n\r\nimport ThreeDotsHorizontalIcon from \"../icons/ThreeDotsHorizontalIcon\";\r\nimport RightArrowIconSmall from \"../icons/RightArrowIconSmall\";\r\nimport ShareBar from \"../Share/ShareBar\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport PostThreeDotMenu from \"../../views/Post/PostThreeDotMenu\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport BlueTickIconXY from \"../icons/BlueTickIconXY\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"sharedUtils/postFunctions\"\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { getPostShareLink, getBlogShareLink, getLockerShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\n/**\r\n * @description: A post component for a single column feed\r\n * @param {{post:object,redirectUrl:string, likePost:Function, savePost:Function, likeCount:Number, likedByUser:boolean, savedByUser:boolean, deletePost:Function}} props\r\n */\r\nconst BlogFeedPost = (props) => {\r\n const [currentDisplayedMedia, setMedia] = useState(0);\r\n const [showDotMenu, setShowDotMenu] = useState(false);\r\n const [productPage, setProductPage] = useState(0);\r\n const { name, imageUrl, userName } = props.post?.user;\r\n const { postedOn, content, productItems, properties, shareCode, title } = props.post;\r\n const { likeCount, likedByUser, savedByUser, commentCount } = props;\r\n const products = trimProductsArray(productItems.$values).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n });\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const mediaPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPicture(),\r\n onSwipedRight: () => prevPicture(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const mediaItems = getProperties(properties)\r\n .filter(property => property.parentId == null && (property.role === 0 || property.role === 1 || property.role === 3))\r\n .map(property => {\r\n return {\r\n url: property.value,\r\n role: property.role,\r\n id: property.id,\r\n height: property.height,\r\n width: property.width\r\n }\r\n });\r\n\r\n const collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const notOverflowedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n const [contentOverflowed, setContentOverflowed] = useState(false);\r\n const [contentStyle, setContentStyle] = useState(notOverflowedContentStyle);\r\n const [collapsed, setCollapsed] = useState(true);\r\n const [shareLink, setShareLink] = useState(\"\");\r\n\r\n const contentRef = React.createRef();\r\n\r\n useEffect(() => {\r\n async function getShareLink() {\r\n let shareLink = await getBlogShareLink(props.post?.shareCode);\r\n setShareLink(shareLink);\r\n };\r\n getShareLink();\r\n\r\n let contentOverflowed = contentRef?.current?.offsetHeight < contentRef?.current?.scrollHeight || contentRef?.current?.offsetWidth < contentRef?.current?.scrollWidth;\r\n if (contentOverflowed) {\r\n setContentOverflowed(contentOverflowed);\r\n setContentStyle(collapsedContentStyle);\r\n }\r\n }, []);\r\n\r\n\r\n function handleTextMarkup(text) {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n } else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n\r\n let dateObject = new Date(postedOn);\r\n\r\n const toggleDotMenu = () => {\r\n setShowDotMenu(!showDotMenu);\r\n }\r\n\r\n function displayTextContent() {\r\n let formattedContent = handleTextMarkup(content, true);\r\n if (content !== undefined) {\r\n return
    \r\n {formattedContent}\r\n
    \r\n }\r\n }\r\n\r\n const prevPage = () => {\r\n if (products.length > 4) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((products.length - 1) / 4);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (products.length > 4) {\r\n let page = productPage + 1;\r\n if (page * 4 >= products.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const renderProductCount = () => {\r\n if (products.length === 1) {\r\n return \"1 product\"\r\n } else if (products.length > 1) {\r\n return products.length + \" products\"\r\n }\r\n return \"\";\r\n }\r\n\r\n\r\n let renderBookmarkOverlay = () => {\r\n return ( {\r\n if (props.loggedInUser) {\r\n e.preventDefault()\r\n props.savePost(shareCode);\r\n } else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderShareOverlay = () => {\r\n return ( {\r\n props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n const renderProductPagination = () => {\r\n if (products && products.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {renderProductCount()}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {renderProductCount()}\r\n \r\n );\r\n }\r\n\r\n function mapProductImages() {\r\n if (products && products.length > 0) {\r\n return products.slice(productPage * 4, productPage * 4 + 4).map((product, i) => {\r\n let customStyle = { padding: \"0px !important\" };\r\n const url = \"/Product/ProductPage/\" + product.shareCode + \"?r=1\";\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n\r\n })\r\n }\r\n }\r\n\r\n function prevPicture() {\r\n if (currentDisplayedMedia > 0) {\r\n let newMedia = currentDisplayedMedia;\r\n setMedia(--newMedia);\r\n } else {\r\n setMedia(mediaItems.length - 1);\r\n }\r\n }\r\n\r\n function nextPicture() {\r\n if (currentDisplayedMedia < mediaItems.length - 1) {\r\n let newMedia = currentDisplayedMedia;\r\n setMedia(++newMedia);\r\n } else {\r\n setMedia(0);\r\n }\r\n }\r\n\r\n function toggleModal(isCommenting) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, isCommenting, props.setPost);\r\n }\r\n\r\n const renderDotMenu = () => {\r\n if (props.loggedInUser) {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n const displayPin = () => {\r\n if (props.showPins) {\r\n let disablePointer = props.loggedInUser?.id !== props.post.user.id;\r\n let disablePointerClass = disablePointer ? \"disabled-pin-icon\" : \"\";\r\n if (props.pinnedDate) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n props.togglePinned(props.post.shareCode);\r\n }\r\n\r\n }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.togglePinned(props.post.shareCode);\r\n }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n const redirectUrl = getProperties(properties).filter(property => property.role === 6)[0]?.value;\r\n\r\n\r\n return (\r\n
    \r\n {renderDotMenu()}\r\n
    \r\n \r\n {\r\n props.post.status === 0 ? (\r\n\r\n \r\n DRAFT\r\n \r\n\r\n ) : null\r\n }\r\n\r\n \r\n
    \r\n\r\n
    \r\n {renderBookmarkOverlay()}\r\n {renderShareOverlay()}\r\n \r\n\r\n

    \r\n {title}\r\n

    \r\n\r\n {\r\n mediaItems.length > 1 ?\r\n (\r\n <>\r\n \r\n {`${currentDisplayedMedia + 1}/${mediaItems.length}`}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n prevPicture()\r\n }}>\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPicture()\r\n }}>\r\n \r\n \r\n \r\n\r\n ) : null\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n {(products != null && products.length > 0) || (content != null || (products != null && products.length > 0)) ?\r\n
    \r\n {displayTextContent()}\r\n
    \r\n
    \r\n Read more\r\n
    \r\n
    \r\n\r\n {\r\n products && products.length > 0 ? (\r\n
    \r\n {renderProductPagination()}\r\n {mapProductImages()}\r\n
    \r\n ) : null\r\n }\r\n
    : null}\r\n
    \r\n
    \r\n //
    \r\n )\r\n\r\n}\r\n\r\nexport default connect(null, { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal })(BlogFeedPost);","import React, { useState, useEffect } from \"react\";\r\nimport { Link, NavLink } from \"react-router-dom\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\n\r\nimport ThreeDotsHorizontalIcon from \"../icons/ThreeDotsHorizontalIcon\";\r\nimport RightArrowIconSmall from \"../icons/RightArrowIconSmall\";\r\nimport ShareBar from \"../Share/ShareBar\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport PostThreeDotMenu from \"../../views/Post/PostThreeDotMenu\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport BlueTickIconXY from \"../icons/BlueTickIconXY\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"sharedUtils/postFunctions\"\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { getPostShareLink, getBlogShareLink, getLockerShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\n/**\r\n * @description: A post component for a single column feed\r\n * @param {{post:object,redirectUrl:string, likePost:Function, savePost:Function, likeCount:Number, likedByUser:boolean, savedByUser:boolean, deletePost:Function}} props\r\n */\r\nconst PostFeedPost = (props) => {\r\n const [currentDisplayedMedia, setMedia] = useState(0);\r\n const [showDotMenu, setShowDotMenu] = useState(false);\r\n const [productPage, setProductPage] = useState(0);\r\n const { name, imageUrl, userName } = props.post?.user;\r\n const { postedOn, content, productItems, properties, shareCode, title } = props.post;\r\n const { likeCount, likedByUser, savedByUser, commentCount } = props;\r\n const products = trimProductsArray(productItems.$values).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n });\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const mediaPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPicture(),\r\n onSwipedRight: () => prevPicture(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const mediaItems = getProperties(properties)\r\n .filter(property => property.parentId == null && (property.role === 0 || property.role === 1 || property.role === 3))\r\n .map(property => {\r\n return {\r\n url: property.value,\r\n role: property.role,\r\n id: property.id,\r\n height: property.height,\r\n width: property.width\r\n }\r\n });\r\n\r\n const collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const notOverflowedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n const [contentOverflowed, setContentOverflowed] = useState(false);\r\n const [contentStyle, setContentStyle] = useState(notOverflowedContentStyle);\r\n const [collapsed, setCollapsed] = useState(true);\r\n const [shareLink, setShareLink] = useState(\"\");\r\n\r\n const contentRef = React.createRef();\r\n\r\n useEffect(() => {\r\n async function getShareLink() {\r\n let shareLink = await getPostShareLink(props.post?.shareCode);\r\n setShareLink(shareLink);\r\n };\r\n getShareLink();\r\n\r\n let contentOverflowed = contentRef?.current?.offsetHeight < contentRef?.current?.scrollHeight || contentRef?.current?.offsetWidth < contentRef?.current?.scrollWidth;\r\n if (contentOverflowed) {\r\n setContentOverflowed(contentOverflowed);\r\n setContentStyle(collapsedContentStyle);\r\n }\r\n }, []);\r\n\r\n\r\n function handleTextMarkup(text) {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n } else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n const toggleDotMenu = () => {\r\n setShowDotMenu(!showDotMenu);\r\n }\r\n\r\n function displayTextContent() {\r\n //let formattedContent = handleCommentMarkup(content, true);\r\n let formattedContent = handleTextMarkup(content, true);\r\n if (content !== undefined) {\r\n if (!contentOverflowed) {\r\n return
    \r\n \r\n {userName}\r\n {formattedContent}\r\n
    \r\n } else {\r\n if (collapsed) {\r\n return (<>\r\n
    \r\n \r\n {userName}\r\n \r\n {formattedContent}\r\n
    \r\n\r\n
    \r\n { e.preventDefault(); setContentStyle(expandedContentStyle); setCollapsed(false) }}>\r\n see more\r\n \r\n
    \r\n );\r\n } else {\r\n return (<>\r\n
    \r\n \r\n {userName}\r\n \r\n {formattedContent}\r\n
    \r\n
    \r\n { e.preventDefault(); setContentStyle(collapsedContentStyle); setCollapsed(true) }}>\r\n see less\r\n \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n const prevPage = () => {\r\n if (products.length > 4) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((products.length - 1) / 4);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (products.length > 4) {\r\n let page = productPage + 1;\r\n if (page * 4 >= products.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n\r\n let renderBookmarkOverlay = () => {\r\n return ( {\r\n if (props.loggedInUser) {\r\n e.preventDefault()\r\n props.savePost(shareCode);\r\n } else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderShareOverlay = () => {\r\n return ( {\r\n props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n const renderProductPagination = () => {\r\n if (products && products.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n function mapProductImages() {\r\n if (products && products.length > 0) {\r\n return products.slice(productPage * 4, productPage * 4 + 4).map((product, i) => {\r\n const url = \"/Product/ProductPage/\" + product.shareCode + \"?r=1\";\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n\r\n })\r\n }\r\n }\r\n\r\n function prevPicture() {\r\n if (currentDisplayedMedia > 0) {\r\n let newMedia = currentDisplayedMedia;\r\n setMedia(--newMedia);\r\n } else {\r\n setMedia(mediaItems.length - 1);\r\n }\r\n }\r\n\r\n function nextPicture() {\r\n if (currentDisplayedMedia < mediaItems.length - 1) {\r\n let newMedia = currentDisplayedMedia;\r\n setMedia(++newMedia);\r\n } else {\r\n setMedia(0);\r\n }\r\n }\r\n\r\n function toggleModal(isCommenting) {\r\n props.togglePostPageModal(props.post, props.loggedInUser, isCommenting, props.setPost);\r\n }\r\n\r\n const renderDotMenu = () => {\r\n if (props.loggedInUser) {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n const displayPin = () => {\r\n if (props.showPins) {\r\n let disablePointer = props.loggedInUser?.id !== props.post.user.id;\r\n let disablePointerClass = disablePointer ? \"disabled-pin-icon\" : \"\";\r\n if (props.pinnedDate) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n props.togglePinned(props.post.shareCode);\r\n }\r\n\r\n }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.togglePinned(props.post.shareCode);\r\n }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n const redirectUrl = getProperties(properties).filter(property => property.role === 6)[0]?.value;\r\n\r\n\r\n return (\r\n
    \r\n {renderDotMenu()}\r\n
    \r\n \r\n {\r\n props.post.status === 0 ? (\r\n\r\n \r\n DRAFT\r\n \r\n\r\n ) : null\r\n }\r\n\r\n \r\n
    \r\n\r\n
    \r\n {renderBookmarkOverlay()}\r\n {renderShareOverlay()}\r\n \r\n\r\n {\r\n [2, 4].includes(props.post.type) ? (\r\n

    \r\n {title}\r\n

    \r\n ) : null\r\n }\r\n\r\n {\r\n mediaItems.length > 1 ?\r\n (\r\n <>\r\n \r\n {`${currentDisplayedMedia + 1}/${mediaItems.length}`}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n prevPicture()\r\n }}>\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPicture()\r\n }}>\r\n \r\n \r\n \r\n\r\n ) : null\r\n }\r\n\r\n
    \r\n\r\n
    \r\n {(content != null || (products != null && products.length > 0)) ?\r\n
    \r\n {displayTextContent()}\r\n {\r\n products && products.length > 0 ? (\r\n
    \r\n {renderProductPagination()}\r\n {mapProductImages()}\r\n
    \r\n ) : null\r\n }\r\n
    : null}\r\n
    \r\n
    \r\n //
    \r\n )\r\n\r\n}\r\n\r\nexport default connect(null, { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal })(PostFeedPost);","import React, { useState, useEffect } from \"react\";\r\nimport { Link, NavLink } from \"react-router-dom\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\n\r\nimport ThreeDotsHorizontalIcon from \"../icons/ThreeDotsHorizontalIcon\";\r\nimport RightArrowIconSmall from \"../icons/RightArrowIconSmall\";\r\nimport ShareBar from \"../Share/ShareBar\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport PostThreeDotMenu from \"../../views/Post/PostThreeDotMenu\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport BlueTickIconXY from \"../icons/BlueTickIconXY\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"sharedUtils/postFunctions\"\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { getPostShareLink, getBlogShareLink, getLockerShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\n/**\r\n * @description: A post component for a single column feed\r\n * @param {{post:object,redirectUrl:string, likePost:Function, savePost:Function, likeCount:Number, likedByUser:boolean, savedByUser:boolean, deletePost:Function}} props\r\n */\r\nconst LockerFeedPost = (props) => {\r\n const [currentDisplayedMedia, setMedia] = useState(0);\r\n const [showDotMenu, setShowDotMenu] = useState(false);\r\n const [productPage, setProductPage] = useState(0);\r\n const { name, imageUrl, userName } = props.post?.user;\r\n const { postedOn, content, productItems, properties, shareCode, title } = props.post;\r\n const { likeCount, likedByUser, savedByUser, commentCount } = props;\r\n const products = trimProductsArray(productItems.$values).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n });\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const mediaPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPicture(),\r\n onSwipedRight: () => prevPicture(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const mediaItems = getProperties(properties)\r\n .filter(property => property.parentId == null && (property.role === 0 || property.role === 1 || property.role === 3))\r\n .map(property => {\r\n return {\r\n url: property.value,\r\n role: property.role,\r\n id: property.id,\r\n height: property.height,\r\n width: property.width\r\n }\r\n });\r\n\r\n const collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const notOverflowedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n const [contentOverflowed, setContentOverflowed] = useState(false);\r\n const [contentStyle, setContentStyle] = useState(notOverflowedContentStyle);\r\n const [collapsed, setCollapsed] = useState(true);\r\n const [shareLink, setShareLink] = useState(\"\");\r\n\r\n const contentRef = React.createRef();\r\n\r\n useEffect(() => {\r\n async function getShareLink() {\r\n let shareLink = await getLockerShareLink(props.post?.shareCode);\r\n setShareLink(shareLink);\r\n };\r\n getShareLink();\r\n\r\n let contentOverflowed = contentRef?.current?.offsetHeight < contentRef?.current?.scrollHeight || contentRef?.current?.offsetWidth < contentRef?.current?.scrollWidth;\r\n if (contentOverflowed) {\r\n setContentOverflowed(contentOverflowed);\r\n setContentStyle(collapsedContentStyle);\r\n }\r\n }, []);\r\n\r\n\r\n function handleTextMarkup(text) {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n } else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n\r\n let dateObject = new Date(postedOn);\r\n let parsedDate = postedOn ? convertToLocaleDateTimeString(dateObject, false) : \"\"\r\n let history = useHistory();\r\n\r\n const toggleDotMenu = () => {\r\n setShowDotMenu(!showDotMenu);\r\n }\r\n\r\n let postIndicators = () => {\r\n return mediaItems.map((pic, i) => {\r\n return (\r\n
  • \r\n )\r\n })\r\n }\r\n\r\n const prevPage = () => {\r\n if (products.length > 4) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((products.length - 1) / 4);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (products.length > 4) {\r\n let page = productPage + 1;\r\n if (page * 4 >= products.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const renderProductCount = () => {\r\n const type = [2, 4];\r\n if (type.includes(props.post.type)) {\r\n if (products.length === 1) {\r\n return \"1 product\"\r\n } else if (products.length > 1) {\r\n return products.length + \" products\"\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n\r\n let renderBookmarkOverlay = () => {\r\n return ( {\r\n if (props.loggedInUser) {\r\n e.preventDefault()\r\n props.savePost(shareCode);\r\n } else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderShareOverlay = () => {\r\n return ( {\r\n props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n const renderProductPagination = () => {\r\n if (products && products.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {renderProductCount()}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {renderProductCount()}\r\n \r\n );\r\n }\r\n\r\n function mapProductImages() {\r\n if (products && products.length > 0) {\r\n return products.slice(productPage * 4, productPage * 4 + 4).map((product, i) => {\r\n let customStyle = { padding: \"0px !important\" };\r\n const url = \"/Product/ProductPage/\" + product.shareCode + \"?r=1\";\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n\r\n })\r\n }\r\n }\r\n\r\n function prevPicture() {\r\n if (currentDisplayedMedia > 0) {\r\n let newMedia = currentDisplayedMedia;\r\n setMedia(--newMedia);\r\n } else {\r\n setMedia(mediaItems.length - 1);\r\n }\r\n }\r\n\r\n function nextPicture() {\r\n if (currentDisplayedMedia < mediaItems.length - 1) {\r\n let newMedia = currentDisplayedMedia;\r\n setMedia(++newMedia);\r\n } else {\r\n setMedia(0);\r\n }\r\n }\r\n\r\n function toggleModal(isCommenting) {\r\n if ([2].includes(props.post.type)) {\r\n props.toggleLockerPageModal(props.post, props.loggedInUser, isCommenting, props.setPost)\r\n } else if ([4].includes(props.post.type)) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, isCommenting, props.setPost);\r\n } else {\r\n props.togglePostPageModal(props.post, props.loggedInUser, isCommenting, props.setPost);\r\n }\r\n }\r\n\r\n const renderDotMenu = () => {\r\n if (props.loggedInUser) {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n const displayPin = () => {\r\n if (props.showPins) {\r\n let disablePointer = props.loggedInUser?.id !== props.post.user.id;\r\n let disablePointerClass = disablePointer ? \"disabled-pin-icon\" : \"\";\r\n if (props.pinnedDate) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n props.togglePinned(props.post.shareCode);\r\n }\r\n\r\n }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.togglePinned(props.post.shareCode);\r\n }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n const blogProductCountStyle = {\r\n bottom: 0,\r\n left: '50%',\r\n marginBottom: 0,\r\n transform: 'translate(-50%, -50%)',\r\n width: '40%',\r\n borderRadius: '999px',\r\n textAlign: 'center',\r\n backgroundColor: '#d46240',\r\n fontFamily: 'Archivo, sans-serif',\r\n fontSize: '.75rem',\r\n fontWeight: 500,\r\n color: '#fff',\r\n opacity: .8,\r\n position: \"absolute\",\r\n };\r\n\r\n const redirectUrl = getProperties(properties).filter(property => property.role === 6)[0]?.value;\r\n\r\n\r\n return (\r\n
    \r\n {renderDotMenu()}\r\n
    \r\n \r\n {\r\n props.post.status === 0 ? (\r\n\r\n \r\n DRAFT\r\n \r\n\r\n ) : null\r\n }\r\n\r\n \r\n
    \r\n\r\n
    \r\n {renderBookmarkOverlay()}\r\n {renderShareOverlay()}\r\n \r\n\r\n {\r\n [2, 4].includes(props.post.type) ? (\r\n

    \r\n {title}\r\n

    \r\n ) : null\r\n }\r\n\r\n {\r\n mediaItems.length > 1 ?\r\n (\r\n <>\r\n \r\n {`${currentDisplayedMedia + 1}/${mediaItems.length}`}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n prevPicture()\r\n }}>\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPicture()\r\n }}>\r\n \r\n \r\n \r\n\r\n ) : null\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n {products != null && products.length > 0 ?\r\n
    \r\n {\r\n products && products.length > 0 ? (\r\n
    \r\n {renderProductPagination()}\r\n {mapProductImages()}\r\n
    \r\n ) : null\r\n }\r\n
    : null}\r\n
    \r\n
    \r\n //
  • \r\n )\r\n\r\n}\r\n\r\nexport default connect(null, { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal })(LockerFeedPost);","import React from \"react\";\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { connect } from \"react-redux\";\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst CurrentDealFeedPost = (props) => {\r\n\r\n let renderUserTile = () => {\r\n if (props.showUserTile === true) {\r\n return (
    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n const userId = props.loggedInUser?.proStatusId === 1 ? props.loggedInUser.id : -1;\r\n\r\n const redirectToMerchatUrl = `/m/${props.deal?.merchantId}?userId=${userId}&redirectUrl=${props.deal?.url}¤tdeal=true`;\r\n\r\n let renderPost = () => {\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n

    {props.deal.merchantName}

    \r\n
    \r\n \"Merchant\r\n
    \r\n

    {props.deal.description}

    \r\n
    \r\n Shop Now\r\n \r\n { e.preventDefault(); props.toggleProductShareModal(redirectToMerchatUrl); }}\r\n >Share\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n let gridItem = () => {\r\n return (\r\n
    \r\n\r\n {renderUserTile()}\r\n
    \r\n {renderPost()}\r\n
    \r\n
    \r\n\r\n )\r\n }\r\n\r\n return (\r\n gridItem()\r\n )\r\n}\r\n\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(CurrentDealFeedPost);","import React, { useState, useRef, useEffect } from \"react\";\r\nimport BlogFeedPost from \"./BlogFeedPost\";\r\nimport PostFeedPost from \"./PostFeedPost\";\r\nimport LockerFeedPost from \"./LockerFeedPost\";\r\nimport CurrentDealFeedPost from \"./CurrentDealFeedPost\";\r\n\r\nconst FeedPost = (props) => {\r\n const { post } = props;\r\n\r\n let content;\r\n\r\n if (post.type === 2) {\r\n content = (\r\n \r\n );\r\n } else if (post.type === 4) {\r\n content = (\r\n \r\n );\r\n } else if (post.type === 5) {\r\n content = (\r\n \r\n );\r\n } else {\r\n content = (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n {content}\r\n
    \r\n );\r\n};\r\n\r\nexport default FeedPost;\r\n\r\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\n//import LeftArrowIcon from \"./icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"sharedUtils/postFunctions\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\"\r\nimport { Hidden } from \"@material-ui/core\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport { getPostShareLink, getLockerShareLink, getBlogShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport ShareIosIcon from \"../icons/ShareIosIcon\";\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst BlogFeedPostGridItem = (props) => {\r\n let history = useHistory();\r\n let [currentDisplayedMedia, setMedia] = useState(0);\r\n const [productPage, setProductPage] = useState(0);\r\n const [contentOverlowed, setContentOverflowed] = useState(0);\r\n const [expanded, setExpanded] = useState(false);\r\n const [titleOverflowed, setTitleOverFlowed] = useState(0);\r\n const [titleExpanded, setTitleExpanded] = useState(false);\r\n\r\n const pRef = useRef(null);\r\n const titleRef = useRef(null);\r\n\r\n const { shareCode, title, productItems, properties, type, postedOn } = props.post;\r\n const shareLink = getBlogShareLink(shareCode);\r\n const trimmedProducts = trimProductsArray(productItems.$values).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n }).map((i) => { return i; });\r\n const trimmedProperties = getProperties(properties);\r\n\r\n let dateObject = new Date(postedOn);\r\n let parsedDate = postedOn ? convertToLocaleDateTimeString(dateObject, false) : \"\"\r\n\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n useEffect(() => {\r\n if (pRef.current) {\r\n const lineHeight = parseInt(getComputedStyle(pRef.current).lineHeight, 10);\r\n const maxHeight = lineHeight * 4 + 20;\r\n const isOverflowing = pRef.current.offsetHeight > maxHeight;\r\n setContentOverflowed(isOverflowing);\r\n }\r\n if (titleRef.current) {\r\n const lineHeight = parseInt(getComputedStyle(titleRef.current).lineHeight, 10);\r\n const maxHeight = lineHeight * 2;\r\n const isOverflowing = titleRef.current.offsetHeight > maxHeight;\r\n setTitleOverFlowed(isOverflowing);\r\n }\r\n }, []);\r\n\r\n const prevPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((trimmedProducts.length - 1) / 3);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage + 1;\r\n if (page * 3 >= trimmedProducts.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const mediaItems = trimmedProperties\r\n .filter(property => property.role === 0 || property.role == 1 || property.role === 8)\r\n .map(property => {\r\n return {\r\n url: property.value,\r\n role: property.role,\r\n id: property.id,\r\n height: 1,\r\n width: 1\r\n }\r\n });\r\n\r\n const renderProductPagination = () => {\r\n if (trimmedProducts && trimmedProducts.length > 3) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (trimmedProducts && trimmedProducts?.length > 0) {\r\n return trimmedProducts.slice(productPage * 3, productPage * 3 + 3).map((product, i) => {\r\n let url = \"/Product/ProductPage/\" + product.shareCode\r\n url += props.disableRedirects ? \"?r=0&b=0&showBrandNav=true\" : \"?r=1\";\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let displayPin = (isAbsolute) => {\r\n let style = { position: \"absolute\", zIndex: 1, width: \"100%\", textAlign: \"right\", padding: \"7px\" };\r\n //rgba(229,89,52,0.5)\r\n if (props.showPins) {\r\n let disablePointer = props.loggedInUser?.id !== props.post.user.id;\r\n let disablePointerClass = disablePointer ? \"disabled-pin-icon\" : \"\";\r\n if (props.pinnedDate) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n props.togglePinned(props.post.shareCode);\r\n }\r\n\r\n }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.togglePinned(props.post.shareCode);\r\n }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n let renderUserTile = () => {\r\n if (props.showUserTile === true) {\r\n return (
    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n let renderProductCount = () => {\r\n if (trimmedProducts.length === 1) {\r\n return \"1 product\"\r\n } else if (trimmedProducts.length > 1) {\r\n return trimmedProducts.length + \" products\"\r\n }\r\n return \"\";\r\n }\r\n\r\n let renderContent = () => {\r\n const noProductsExist = !(trimmedProducts) || trimmedProducts.length === 0;\r\n\r\n if (![\"sm\", \"md\"].includes(props.deviceSize) && !props.brandEmbed) {\r\n return (\r\n
    \r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n if (props.brandEmbed) {\r\n window.open(getBlogShareLink(props.post.shareCode) + \"?showBrandNav=true\");\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n }\r\n\r\n }}>\r\n {props.post.content}\r\n

    \r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n if (props.brandEmbed) {\r\n window.open(getBlogShareLink(props.post.shareCode) + \"?showBrandNav=true\");\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n }\r\n\r\n }}\r\n style={{ color: \"white\", textDecoration: \"underline\" }}>Read more

    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n let renderTitle = () => {\r\n if ([\"sm\", \"md\"].includes(props.deviceSize) || props.brandEmbed) {\r\n return (\r\n
    \r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n if (props.brandEmbed) {\r\n window.open(getBlogShareLink(props.post.shareCode) + \"?showBrandNav=true\");\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n }\r\n\r\n }}>\r\n {title}\r\n

    \r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal);\r\n } else {\r\n if (props.brandEmbed) {\r\n window.open(getBlogShareLink(props.post.shareCode) + \"?showBrandNav=true\");\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n }\r\n\r\n }}\r\n className={`position-absolute w-100 ${!(trimmedProducts) || trimmedProducts.length === 0 ? \"blog-feed-post-grid-item-read-hidden-no-products\" : \"blog-feed-post-grid-item-read-hidden\"}`} style={{ bottom: props.brandEmbed ? 0 : \"\", fontSize: \"12px\", cursor: \"pointer\", color: \"white\", padding: \"20px 30px\", textAlign: \"center\", color: \"white\", textDecoration: \"underline\" }}>\r\n Read more\r\n

    \r\n
    \r\n )\r\n } else if (!props.brandEmbed) {\r\n return (\r\n
    \r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n if (props.brandEmbed) {\r\n window.open(getBlogShareLink(props.post.shareCode) + \"?showBrandNav=true\");\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n }\r\n\r\n }}>\r\n {title}\r\n

    \r\n\r\n
    \r\n )\r\n }\r\n return (\r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n if (props.brandEmbed) {\r\n window.open(getBlogShareLink(props.post.shareCode) + \"?showBrandNav=true\");\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n {title}\r\n

    \r\n )\r\n }\r\n\r\n let renderPost = () => {\r\n const radius = { borderRadius: props.showUserTile ? \"\" : trimmedProducts?.length > 0 ? \"15px 15px 0 0\" : \"15px\" }\r\n return (\r\n <>\r\n
    \r\n {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, props.setPost);\r\n }\r\n else {\r\n window.open(props.redirectUrl);\r\n }\r\n }}\r\n width={mediaItems[currentDisplayedMedia]?.width}\r\n height={mediaItems[currentDisplayedMedia]?.height}\r\n style={{ cursor: \"pointer\", radius }}\r\n lazy={!!props.aboveTheFold ? !props.aboveTheFold : true}\r\n />\r\n
    \r\n\r\n {renderTitle()}\r\n {renderContent()}\r\n\r\n {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n window.open(getBlogShareLink(props.post.shareCode));\r\n }\r\n\r\n }} style={{ cursor: \"pointer\", display: props.hideItemCount ? \"none\" : \"\", top: props.brandEmbed ? \"92%\" : \"\", bottom: props.brandEmbed ? \"unset\" : \"\", width: [\"sm\", \"md\"].includes(props.deviceSize) ? \"75%\" : \"\" }}>\r\n {renderProductCount()}\r\n \r\n \r\n );\r\n }\r\n\r\n let gridItem = () => {\r\n if (trimmedProducts?.length > 0) {\r\n return (\r\n
    \r\n\r\n {renderUserTile()}\r\n
    \r\n {displayPin()}\r\n
    \r\n {renderPost()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n } else {\r\n return (\r\n
    \r\n {renderUserTile()}\r\n
    \r\n {displayPin()}\r\n {renderPost()}\r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n return (\r\n gridItem()\r\n )\r\n}\r\n\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(BlogFeedPostGridItem);","import React, { useState, useRef, useEffect } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\n//import LeftArrowIcon from \"./icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"sharedUtils/postFunctions\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\"\r\nimport { Hidden } from \"@material-ui/core\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport { getPostShareLink, getLockerShareLink, getBlogShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport ShareIosIcon from \"../icons/ShareIosIcon\";\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst PostFeedPostGridItem = (props) => {\r\n let history = useHistory();\r\n let [currentDisplayedMedia, setMedia] = useState(0);\r\n const [productPage, setProductPage] = useState(0);\r\n const [contentOverlowed, setContentOverflowed] = useState(0);\r\n const [expanded, setExpanded] = useState(false);\r\n const [titleOverflowed, setTitleOverFlowed] = useState(0);\r\n const [titleExpanded, setTitleExpanded] = useState(false);\r\n\r\n const pRef = useRef(null);\r\n const titleRef = useRef(null);\r\n\r\n const { shareCode, title, productItems, properties, type, postedOn } = props.post;\r\n const trimmedProducts = trimProductsArray(productItems?.$values).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n }).map((i) => { return i; });\r\n const trimmedProperties = getProperties(properties);\r\n\r\n let dateObject = new Date(postedOn);\r\n let parsedDate = postedOn ? convertToLocaleDateTimeString(dateObject, false) : \"\"\r\n\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n useEffect(() => {\r\n if (pRef.current) {\r\n const lineHeight = parseInt(getComputedStyle(pRef.current).lineHeight, 10);\r\n const maxHeight = lineHeight * 4 + 20;\r\n const isOverflowing = pRef.current.offsetHeight > maxHeight;\r\n setContentOverflowed(isOverflowing);\r\n }\r\n if (titleRef.current) {\r\n const lineHeight = parseInt(getComputedStyle(titleRef.current).lineHeight, 10);\r\n const maxHeight = lineHeight * 2;\r\n const isOverflowing = titleRef.current.offsetHeight > maxHeight;\r\n setTitleOverFlowed(isOverflowing);\r\n }\r\n }, []);\r\n\r\n const prevPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((trimmedProducts.length - 1) / 3);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage + 1;\r\n if (page * 3 >= trimmedProducts.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const mediaItems = trimmedProperties\r\n .filter(property => property.role === 0 || property.role == 1 || property.role === 8)\r\n .map(property => {\r\n return {\r\n url: property.value,\r\n role: property.role,\r\n id: property.id,\r\n height: 1,\r\n width: 1\r\n }\r\n });\r\n\r\n const renderProductPagination = () => {\r\n if (trimmedProducts && trimmedProducts.length > 3) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (trimmedProducts && trimmedProducts?.length > 0) {\r\n return trimmedProducts.slice(productPage * 3, productPage * 3 + 3).map((product, i) => {\r\n let url = \"/Product/ProductPage/\" + product.shareCode\r\n url += props.disableRedirects ? \"?r=0&b=0&showBrandNav=true\" : \"?r=1\";\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let displayPin = (isAbsolute) => {\r\n let style = { position: \"absolute\", zIndex: 1, width: \"100%\", textAlign: \"right\", padding: \"7px\" };\r\n //rgba(229,89,52,0.5)\r\n if (props.showPins) {\r\n let disablePointer = props.loggedInUser?.id !== props.post.user.id;\r\n let disablePointerClass = disablePointer ? \"disabled-pin-icon\" : \"\";\r\n if (props.pinnedDate) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n props.togglePinned(props.post.shareCode);\r\n }\r\n\r\n }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.togglePinned(props.post.shareCode);\r\n }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n let renderUserTile = () => {\r\n if (props.showUserTile === true) {\r\n return (
    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n let renderPost = () => {\r\n const radius = { borderRadius: props.showUserTile ? \"\" : trimmedProducts?.length > 0 ? \"15px 15px 0 0\" : \"15px\" }\r\n return (\r\n <>\r\n
    \r\n {\r\n if (!props.disableRedirects) {\r\n props.togglePostPageModal(props.post, props.loggedInUser, null, props.setPost); \r\n }\r\n else if (props.brandEmbed) {\r\n window.open(props.redirectUrl, '_blank');\r\n } else {\r\n window.open(props.redirectUrl);\r\n }\r\n }}\r\n width={mediaItems[currentDisplayedMedia]?.width}\r\n height={mediaItems[currentDisplayedMedia]?.height}\r\n style={{ cursor: \"pointer\", radius }}\r\n lazy={!!props.aboveTheFold ? !props.aboveTheFold : true}\r\n />\r\n
    \r\n \r\n );\r\n }\r\n\r\n let gridItem = () => {\r\n if (trimmedProducts?.length > 0) {\r\n return (\r\n
    \r\n\r\n {renderUserTile()}\r\n
    \r\n {displayPin()}\r\n
    \r\n {renderPost()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n } else {\r\n return (\r\n
    \r\n {renderUserTile()}\r\n
    \r\n {displayPin()}\r\n {renderPost()}\r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n return (\r\n gridItem()\r\n )\r\n}\r\n\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(PostFeedPostGridItem);","import React, { useState, useRef, useEffect } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\n//import LeftArrowIcon from \"./icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"sharedUtils/postFunctions\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\"\r\nimport { Hidden } from \"@material-ui/core\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport { getPostShareLink, getLockerShareLink, getBlogShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport ShareIosIcon from \"../icons/ShareIosIcon\";\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst LockerFeedPostGridItem = (props) => {\r\n let history = useHistory();\r\n let [currentDisplayedMedia, setMedia] = useState(0);\r\n const [productPage, setProductPage] = useState(0);\r\n const [contentOverlowed, setContentOverflowed] = useState(0);\r\n const [expanded, setExpanded] = useState(false);\r\n const [titleOverflowed, setTitleOverFlowed] = useState(0);\r\n const [titleExpanded, setTitleExpanded] = useState(false);\r\n\r\n const pRef = useRef(null);\r\n const titleRef = useRef(null);\r\n\r\n const { shareCode, title, productItems, properties, type, postedOn } = props.post;\r\n const shareLink = getLockerShareLink(shareCode);\r\n const trimmedProducts = trimProductsArray(productItems.$values).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n }).map((i) => { return i; });\r\n const trimmedProperties = getProperties(properties);\r\n\r\n let dateObject = new Date(postedOn);\r\n let parsedDate = postedOn ? convertToLocaleDateTimeString(dateObject, false) : \"\"\r\n\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n useEffect(() => {\r\n if (pRef.current) {\r\n const lineHeight = parseInt(getComputedStyle(pRef.current).lineHeight, 10);\r\n const maxHeight = lineHeight * 4 + 20;\r\n const isOverflowing = pRef.current.offsetHeight > maxHeight;\r\n setContentOverflowed(isOverflowing);\r\n }\r\n if (titleRef.current) {\r\n const lineHeight = parseInt(getComputedStyle(titleRef.current).lineHeight, 10);\r\n const maxHeight = lineHeight * 2;\r\n const isOverflowing = titleRef.current.offsetHeight > maxHeight;\r\n setTitleOverFlowed(isOverflowing);\r\n }\r\n }, []);\r\n\r\n const prevPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((trimmedProducts.length - 1) / 3);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage + 1;\r\n if (page * 3 >= trimmedProducts.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const mediaItems = trimmedProperties\r\n .filter(property => property.role === 0 || property.role == 1 || property.role === 8)\r\n .map(property => {\r\n return {\r\n url: property.value,\r\n role: property.role,\r\n id: property.id,\r\n height: 1,\r\n width: 1\r\n }\r\n });\r\n\r\n const renderProductPagination = () => {\r\n if (trimmedProducts && trimmedProducts.length > 3) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (trimmedProducts && trimmedProducts?.length > 0) {\r\n return trimmedProducts.slice(productPage * 3, productPage * 3 + 3).map((product, i) => {\r\n let url = \"/Product/ProductPage/\" + product.shareCode\r\n url += props.disableRedirects ? \"?r=0&b=0&showBrandNav=true\" : \"?r=1\";\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let displayPin = (isAbsolute) => {\r\n let style = { position: \"absolute\", zIndex: 1, width: \"100%\", textAlign: \"right\", padding: \"7px\" };\r\n //rgba(229,89,52,0.5)\r\n if (props.showPins) {\r\n let disablePointer = props.loggedInUser?.id !== props.post.user.id;\r\n let disablePointerClass = disablePointer ? \"disabled-pin-icon\" : \"\";\r\n if (props.pinnedDate) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n props.togglePinned(props.post.shareCode);\r\n }\r\n\r\n }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n if (props.loggedInUser?.id === props.post.user.id) {\r\n return (\r\n {\r\n e.preventDefault();\r\n props.togglePinned(props.post.shareCode);\r\n }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n let renderUserTile = () => {\r\n if (props.showUserTile === true) {\r\n return (
    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n let renderProductCount = () => {\r\n if (trimmedProducts.length === 1) {\r\n return \"1 product\"\r\n } else if (trimmedProducts.length > 1) {\r\n return trimmedProducts.length + \" products\"\r\n }\r\n return \"\";\r\n }\r\n\r\n let renderTitle = () => {\r\n return (\r\n

    {\r\n if (!props.disableRedirects) {\r\n props.toggleBlogPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n window.open(getLockerShareLink(props.post.shareCode));\r\n }\r\n\r\n }} style={{ cursor: \"pointer\", fontSize: props.brandEmbed ? \"16px\" : \"\" }}>\r\n {title}\r\n

    \r\n )\r\n }\r\n\r\n let renderPost = () => {\r\n const radius = { borderRadius: props.showUserTile ? \"\" : trimmedProducts?.length > 0 ? \"15px 15px 0 0\" : \"15px\" }\r\n return (\r\n <>\r\n
    \r\n {\r\n if (!props.disableRedirects) {\r\n props.toggleLockerPageModal(props.post, props.loggedInUser, null, props.setPost);\r\n }\r\n else {\r\n window.open(props.redirectUrl);\r\n }\r\n }}\r\n width={mediaItems[currentDisplayedMedia]?.width}\r\n height={mediaItems[currentDisplayedMedia]?.height}\r\n style={{ cursor: \"pointer\", radius }}\r\n lazy={!!props.aboveTheFold ? !props.aboveTheFold : true}\r\n />\r\n
    \r\n\r\n {renderTitle()}\r\n\r\n {\r\n if (!props.disableRedirects) {\r\n props.toggleLockerPageModal(props.post, props.loggedInUser, null, null, props.toggleSignUpModal)\r\n } else {\r\n window.open(getLockerShareLink(props.post.shareCode));\r\n }\r\n\r\n }} style={{ cursor: \"pointer\", display: props.hideItemCount ? \"none\" : \"\", top: props.brandEmbed ? \"92%\" : \"\", bottom: props.brandEmbed ? \"unset\" : \"\", width: [\"sm\", \"md\"].includes(props.deviceSize) ? \"75%\" : \"\" }}>\r\n {renderProductCount()}\r\n \r\n \r\n );\r\n }\r\n\r\n let gridItem = () => {\r\n if (trimmedProducts?.length > 0) {\r\n return (\r\n
    \r\n\r\n {renderUserTile()}\r\n
    \r\n {displayPin()}\r\n
    \r\n {renderPost()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n } else {\r\n return (\r\n
    \r\n {renderUserTile()}\r\n
    \r\n {displayPin()}\r\n {renderPost()}\r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n return (\r\n gridItem()\r\n )\r\n}\r\n\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(LockerFeedPostGridItem);","import React from \"react\";\r\nimport { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { connect } from \"react-redux\";\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst CurrentDealFeedPostGridItem = (props) => {\r\n\r\n let renderUserTile = () => {\r\n if (props.showUserTile === true) {\r\n return (
    \r\n \r\n
    );\r\n }\r\n }\r\n\r\n\r\n const userId = props.loggedInUser?.proStatusId === 1 ? props.loggedInUser.id : -1;\r\n\r\n const redirectToMerchatUrl = `/m/${props.deal?.merchantId}?userId=${userId}&redirectUrl=${props.deal?.url}¤tdeal=true`;\r\n\r\n let renderPost = () => {\r\n if (props.screenWidth < 480) {\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n

    {props.deal.merchantName}

    \r\n
    \r\n \"Merchant\r\n
    \r\n

    {props.deal.description}

    \r\n
    \r\n Shop Now\r\n { e.preventDefault(); props.toggleProductShareModal(redirectToMerchatUrl); }}\r\n >Share
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n

    {props.deal.merchantName}

    \r\n
    \r\n \"Merchant\r\n
    \r\n

    {props.deal.description}

    \r\n
    \r\n Shop Now\r\n { e.preventDefault(); props.toggleProductShareModal(redirectToMerchatUrl); }}\r\n >Share
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n let gridItem = () => {\r\n return (\r\n
    \r\n\r\n {renderUserTile()}\r\n
    \r\n {renderPost()}\r\n
    \r\n
    \r\n\r\n )\r\n }\r\n\r\n return (\r\n gridItem()\r\n )\r\n}\r\n\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleBlogPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(CurrentDealFeedPostGridItem);","import React, { Component } from \"react\";\r\nimport BlogFeedPostGridItem from \"./BlogFeedPostGridItem\";\r\nimport PostFeedPostGridItem from \"./PostFeedPostGridItem\";\r\nimport LockerFeedPostGridItem from \"./LockerFeedPostGridItem\";\r\nimport CurrentDealFeedPostGridItem from \"./CurrentDealFeedPostGridItem\";\r\n\r\nclass FeedPostGridItem extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n render() {\r\n const { post, loggedInUser, redirectUrl, deviceSize, showUserTile, togglePinned, toggleSignUpModal, savePost, showPins } = this.props;\r\n\r\n let content;\r\n\r\n if (post.type === 2) {\r\n content = (\r\n \r\n );\r\n } else if (post.type === 5) {\r\n content = (\r\n \r\n );\r\n } else if (post.type === 4) {\r\n content = (\r\n \r\n );\r\n } else {\r\n content = (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n {content}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default FeedPostGridItem;\r\n","\r\nvar jsonref = require(\"jsonref\");\r\n\r\n/**\r\n * @description Accepts a userId and makes an api call to retrieve user suggestions\r\n * @param {any} userId \r\n * @returns {[{\r\n * $id:string,\r\n * user:{\r\n * $id:string,\r\n * imageUrl:string,\r\n * proStatusId: Number,\r\n * userName: string,\r\n * name:string,\r\n * merchantProducts: {\r\n * $type:string,\r\n * $values:[]\r\n * },\r\n * sectors: {\r\n * $type:string,\r\n * $values: []\r\n * },\r\n * id:Number\r\n * }\r\n * }]} An array of user objects if successful\r\n */\r\nasync function fetchUserSuggestions(userId,skip,take) {\r\n let request = await fetch(`/userSuggestions/get?userId=${userId}&skip=${skip}&take=${take}`);\r\n let response = await request.json().then(async(results) => {\r\n let parsed = await jsonref.parse(results, { scope: window.location })\r\n return parsed\r\n })\r\n .catch(err => {\r\n console.log(err);\r\n return []\r\n });\r\n return response;\r\n}\r\n\r\n\r\nlet blankUserSuggestion = {\r\n $id: \"\",\r\n user: {\r\n $id: \"\",\r\n imageUrl: \"\",\r\n proStatusId: 0,\r\n userName: \"\",\r\n name: \"\",\r\n merchantProducts: {\r\n $type: \"\",\r\n $values: [],\r\n },\r\n sectors: {\r\n $type: \"\",\r\n $values: [],\r\n },\r\n id: 0,\r\n },\r\n posts: {\r\n $type: \"\",\r\n $values: [\r\n {\r\n $id: \"\",\r\n comments: {\r\n $type: \"\",\r\n $values: [],\r\n },\r\n content: \"\",\r\n flags: {\r\n $type: \"\",\r\n $values:[]\r\n },\r\n id: 0,\r\n likes: {\r\n $type: \"\",\r\n $values:[]\r\n },\r\n productItems: {\r\n $type: \"\",\r\n $values:[]\r\n },\r\n properties: {\r\n $type: \"\",\r\n $values: [{\r\n $id: \"\",\r\n id: 0,\r\n reference: \"\",\r\n role: 0,\r\n }]\r\n },\r\n sectors: {\r\n $type: \"\",\r\n $values: {}\r\n },\r\n shareCode: \"\",\r\n status: 1,\r\n type: 1\r\n }\r\n ]\r\n }\r\n};\r\n\r\n/**\r\n * @Description Accepts a post and pulls out pictures from it. Posts can be found is userSuggestion.Posts.$values and it's an array of post objects\r\n * @param {{properties:{$type:\"\",$values:[{$id:string, id:Number, reference:string, role: Number}]}} post\r\n */\r\nfunction mapPostMedia(post) {\r\n return post.properties.$values.map((property) => property.value);\r\n}\r\n\r\n\r\nexport {\r\n fetchUserSuggestions,\r\n blankUserSuggestion,\r\n mapPostMedia\r\n}","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link } from \"react-router-dom\";\r\nimport BlueTickIcon from \"components/icons/BlueTickIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport { fetchUserSuggestions, blankUserSuggestion, mapPostMedia } from \"sharedUtils/userSuggestion\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\n\r\nimport { toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\n\r\n\r\n/**\r\n *\r\n * @param {{\r\n * user:object,\r\n * loggedInUser:object\r\n * }} props\r\n */\r\n\r\nconst ProfileInfoCardOnboarding = props => {\r\n\r\n React.useEffect(() => {\r\n if (props.user != undefined) {\r\n setWhoToFollows([{ user: props.user }])\r\n setLoading(false)\r\n }\r\n else {\r\n getData()\r\n }\r\n \r\n }, []);\r\n\r\n const [whoToFollows, setWhoToFollows] = React.useState([]);\r\n const [loading, setLoading] = React.useState(true);\r\n\r\n let getData = async () => {\r\n let suggestions = await fetchUserSuggestions(props.loggedInUser.id);\r\n setWhoToFollows(suggestions)\r\n\r\n const populated = suggestions?.length > 0;\r\n props.setWhoToFollowsPopulated(populated);\r\n\r\n setLoading(false);\r\n }\r\n\r\n let mapImages = (whoToFollow) => {\r\n let posts = [];\r\n\r\n for (let i = 0; i < whoToFollow.posts?.$values?.length && i < 4; ++i) {\r\n let properties = whoToFollow.posts?.$values[i]?.properties?.$values?.filter(x => x.role === 0 || x.role === 8 );\r\n if (properties.length > 0) {\r\n posts.push(
    \r\n
    \r\n \r\n
    \r\n
    );\r\n }\r\n }\r\n return posts;\r\n };\r\n\r\n let onFollowClick = async (whoToFollow) => {\r\n let index = whoToFollows.indexOf(whoToFollow);\r\n\r\n let newWhoToFollows = [...whoToFollows];\r\n newWhoToFollows[index].isFollowing = newWhoToFollows[index].isFollowing === true ? false : true;\r\n\r\n let url = \"/api/Account/\"\r\n if (whoToFollows[index].isFollowing) {\r\n url += \"Follow\"\r\n } else {\r\n url += \"Unfollow\"\r\n }\r\n url += \"?id=\" + whoToFollows[index].user.id;\r\n\r\n setWhoToFollows(newWhoToFollows);\r\n\r\n let response = await getRequest(url);\r\n\r\n if (!props.fetchFollowing) props.toggleFetchFollowing();\r\n }\r\n\r\n let renderWhoToFollow = (whoToFollow) => {\r\n /*if (props.clickable) {\r\n return (\r\n {renderUserDetails(whoToFollow)}\r\n )\r\n }*/\r\n\r\n return renderUserDetails(whoToFollow);\r\n }\r\n\r\n let renderUserDetails = (whoToFollow) => {\r\n return (\r\n \r\n );\r\n }\r\n\r\n let renderFollowButton = (i) => {\r\n if (whoToFollows[i].isFollowing === true) {\r\n return ();\r\n }\r\n return ();\r\n }\r\n\r\n if (loading) {\r\n return \r\n }\r\n\r\n return whoToFollows.map((whoToFollow, i) => {\r\n return (
    \r\n
    \r\n {renderWhoToFollow(whoToFollow)}\r\n {renderFollowButton(i)}\r\n
    \r\n
    \r\n {mapImages(whoToFollow)}\r\n
    \r\n
    )\r\n });\r\n};\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFetchFollowing })(ProfileInfoCardOnboarding);","import React from \"react\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport FeedPost from \"components/Feed/FeedPost\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\nimport { trimProductsArray, getProperties } from \"sharedUtils/postFunctions\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { fetchUserSuggestions, blankUserSuggestion, mapPostMedia } from \"sharedUtils/userSuggestion\";\r\nimport ProfileInfoCardOnboarding from \"components/ProfileInfoCardOnboarding\";\r\nimport { DateTime } from \"luxon\";\r\nimport { Link } from 'react-router-dom';\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\n\r\nclass Feed extends React.Component {\r\n\r\n /**\r\n * \r\n * @param {{\r\n * isGrid:boolean,\r\n * loggedInUser:object\r\n * posts:[object]\r\n * fetchMore:Function\r\n * finishedFetching:boolean\r\n * showFollowSuggestions:boolean\r\n * deviceSize:string\r\n * deletePost:Function\r\n * updateParent:Function\r\n * showPins:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n posts: [],\r\n whoToFollowsPopulated: false,\r\n finishedLoading: false,\r\n maxHeight: 100,\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.posts) {\r\n this.setState({ posts: [...this.props.posts] });\r\n }\r\n else {\r\n this.setState({ posts: [] });\r\n }\r\n \r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (this.props.posts !== null && this.props.posts !== undefined && this.props.posts !== prevProps.posts) {\r\n this.setState({ posts: [...this.props.posts] })\r\n }\r\n }\r\n\r\n likePost = async (shareCode) => {\r\n\r\n let postsCopy = [...this.state.posts];\r\n let i = postsCopy.findIndex(post => post.shareCode === shareCode);\r\n\r\n let likedByUser = postsCopy[i].likedByUser;\r\n let num = likedByUser === true ? -1 : 1;\r\n\r\n postsCopy[i].likeCount += num;\r\n postsCopy[i].likedByUser = !likedByUser;\r\n\r\n await this.setState({ posts: postsCopy }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n savePost = async (shareCode) => {\r\n let postsCopy = [...this.state.posts];\r\n let i = postsCopy.findIndex(post => post.shareCode === shareCode);\r\n\r\n let url = this.state.posts[i].savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n\r\n postsCopy[i].savedByUser = !this.state.posts[i].savedByUser;\r\n\r\n this.setState({ posts: postsCopy });\r\n\r\n let reqBody = { shareCode };\r\n let data = await postRequest(url, reqBody);\r\n }\r\n\r\n setPost = (post) => {\r\n let posts = [...this.state.posts];\r\n let i = posts.findIndex((p) => { return p.id === post.id });\r\n posts[i] = post;\r\n\r\n this.setState({ posts });\r\n }\r\n\r\n deletePost = (shareCode) => {\r\n let locationToDelete = this.props.posts.findIndex((post) => post.shareCode === shareCode);\r\n let updatedPosts = [...this.props.posts];\r\n updatedPosts.splice(locationToDelete, 1);\r\n if (this.props.updateParent) {\r\n this.props.updateParent(updatedPosts)\r\n } \r\n \r\n }\r\n\r\n togglePinned = async(shareCode) => {\r\n let posts = [...this.state.posts];\r\n let location = posts.findIndex((post) => post.shareCode === shareCode);\r\n\r\n let postRef = posts[location];\r\n let update = postRef.pinnedDate === null || postRef.pinnedDate === undefined ? DateTime.now().toUTC().toString() : null;\r\n posts[location].pinnedDate = update;\r\n\r\n this.setState({posts})\r\n\r\n let updateObj = {\r\n pinnedDate: postRef.pinnedDate,\r\n title: postRef.title,\r\n content: postRef.content,\r\n id: postRef.id,\r\n user: {\r\n id: postRef.user.id,\r\n },\r\n status : postRef.status\r\n }\r\n\r\n let url = `/api/Post/TogglePinnedPost`;\r\n\r\n let res = await postRequest(url, updateObj);\r\n\r\n if (this.props.updateParent) {\r\n this.props.updateParent(posts)\r\n }\r\n }\r\n\r\n mapPosts = () => {\r\n let { posts } = this.state;\r\n let { isGrid } = this.props;\r\n\r\n \r\n\r\n if (posts != undefined || posts != null) {\r\n return posts.map((post, i) => {\r\n let redirectUrl = post.type === 2 ? `/Locker/LockerPage/${post?.shareCode}` : post.type === 4 ? `/blog/blogPage/${post?.shareCode}` : `/post/postPage/${post?.shareCode}`\r\n if (isGrid === true) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n\r\n \r\n\r\n )\r\n }\r\n })\r\n\r\n }\r\n }\r\n\r\n setWhoToFollowsPopulated = (isPopulated) => {\r\n this.setState({ whoToFollowsPopulated: isPopulated, finishedLoading: true })\r\n }\r\n\r\n displaySuggestions = () => {\r\n if (!this.state.whoToFollowsPopulated && this.state.finishedLoading && this.props.finishedFetching === true) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n You've reached the end of your feed. We can suggest some Creators to follow, if you select some Interests.\r\n Click here to do that now.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n )\r\n } else if (this.props.finishedFetching === true) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n You've reached the end of your feed. Here are some users we think you might enjoy following.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n let { isGrid } = this.props;\r\n\r\n if (isGrid === true) {\r\n return (\r\n
    0 ? \"p-2\" : \"\"}`} style={{ position: \"relative\", width: \"100%\" }}>\r\n }\r\n style={{ overflow: \"initial\" }}\r\n >\r\n {this.mapPosts()}\r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n
    \r\n
    \r\n }\r\n style={{ overflow: \"initial\" }}\r\n >\r\n {this.mapPosts()}\r\n \r\n
    \r\n {this.props.showFollowSuggestions ?\r\n
    \r\n {this.displaySuggestions()}\r\n
    \r\n : <>\r\n }\r\n
    \r\n )\r\n\r\n }\r\n }\r\n}\r\n\r\nexport default Feed;","import React from \"react\"\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,opacity:Number}} props\r\n */\r\nconst NextIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NextIcon;","import React from \"react\"\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,opacity:Number}} props\r\n */\r\nconst PreviousIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PreviousIcon;","import * as React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\nimport CreatorDashboardHeader from './CreatorDashboardHeader';\r\nimport CreatorSettings from './CreatorSettings';\r\nimport CreatorDashboardProfile from \"./CreatorDashboardProfile\"\r\nimport MyProducts from \"../Account/MyProducts\"\r\nimport CreatorDashboardContactUs from \"./CreatorDashboardContactUs\"\r\nimport Brands from \"../Account/Brands\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport CheckIcon from \"icons/CheckIcon\";\r\nimport { getMerchantShareLink } from \"sharedUtils/shareLinkPrefixes\"\r\nimport Modal from \"components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport { toggleFollowersFollowingModal, closeAllModals, toggleFetchFollowing, toggleCreateLockerModal, toggleProductPageModal, toggleShareModal, toggleSharePostModal, toggleShareBlogModal, toggleAddProductOrDeepLinkModal } from \"stateManagement/reducers/modalReducer\";\r\nimport Feed from \"components/Feed/Feed\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Popover, PopoverBody } from \"reactstrap\";\r\nimport RockporchMountainIcon from \"components/icons/RockporchMountainIcon\";\r\nimport { Helmet } from 'react-helmet';\r\nimport { InlineWidget } from \"react-calendly\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport Select, { components } from 'react-select'\r\nimport { asDate } from \"sharedUtils/timeUtils\";\r\nimport { getReferralShareLink } from \"sharedUtils/shareLinkPrefixes\"\r\nimport {\r\n Carousel,\r\n CarouselItem,\r\n CarouselControl,\r\n CarouselIndicators,\r\n CarouselCaption\r\n} from 'reactstrap';\r\nimport NextIcon from \"components/icons/NextIcon\";\r\nimport PreviousIcon from \"components/icons/PreviousIcon\"\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nconst CustomSingleValue = ({ children, data, handleInfoClick, toggleDropdown, ...props }) => (\r\n \r\n {data.label}\r\n { handleInfoClick(data.value); }}\r\n onTouchStart={(e) => { handleInfoClick(data.value, \"touch\"); }}\r\n\r\n style={{ zIndex: \"999\", display: data.value < 3 ? \"\" : \"none\", backgroundColor: \"transparent\", position: \"relative\", bottom: \"2px\", left: \"3px\", cursor: \"pointer\", outline: \"none\", border: 0, padding: 0, }}>\r\n \r\n \r\n \r\n);\r\n\r\nclass CreatorDashboard extends React.Component {\r\n infoTab = -1;\r\n menuIsOpen = false;\r\n mobile = false;\r\n constructor(props){\r\n super(props);\r\n\r\n this.handleInfoClick = this.handleInfoClick.bind(this);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 1 })).toUTC(),\r\n endDate: asDate(DateTime.now()).toUTC()\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 7 })).toUTC(),\r\n endDate: asDate(DateTime.now().plus({ days: 1 })).toUTC()\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 30 })).toUTC(),\r\n endDate: asDate(DateTime.now().plus({ days: 1 })).toUTC()\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n lastYear: {\r\n value: 5,\r\n label: \"Last Year\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n this.state = {\r\n activeIndex: 0,\r\n activeInfoIndex: 0,\r\n seeMore: false,\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n this.selectOptions.lastYear,\r\n ],\r\n defaultValue: this.selectOptions.last7Days,\r\n currentValue: this.selectOptions.last7Days,\r\n },\r\n selectContentOptions: {\r\n options: [\r\n { value: 0, label: \"Profile Details\" },\r\n { value: 1, label: \"Saved Links\" },\r\n { value: 2, label: \"Lockers\" },\r\n { value: 3, label: \"Posts\" },\r\n { value: 4, label: \"Brand Partners\" },\r\n { value: 5, label: \"Refer A Creator\" },\r\n ],\r\n defaultValue: { value: 0, label: \"Profile Details\" },\r\n currentValue: { value: 0, label: \"Profile Details\" },\r\n },\r\n analytics: null,\r\n modalOpen: false,\r\n shareLink: \"\",\r\n taskList: [],\r\n analyticsLoading: false,\r\n creatorDisplay: false,\r\n basicDisplay: true,\r\n sectors: [],\r\n persistentSectors: [],\r\n allSectors: [],\r\n tab: 0,\r\n editMode: false,\r\n creatorSettingsEditMode: false,\r\n cancelEdit: false,\r\n cancelCreatorSettingsEdit: false,\r\n loggedInUser: {},\r\n profileBanner: \"images/Profile-Banner.png\",\r\n uploadingProfileBanner: false,\r\n isSavingPaymentEmail: false,\r\n followers: 0,\r\n following: 0,\r\n isGrid: true,\r\n lockers: [],\r\n products: [],\r\n posts: [],\r\n activityFeed: [],\r\n showMessageDetails: false,\r\n isFollowing: false,\r\n isLoading: true,\r\n finishedFetching: false,\r\n finishedFetchingProducts: false,\r\n selectedFile: {},\r\n selectedFileUrl: null,\r\n uploadingBackground: false,\r\n selectedCase: 3, //1:Activity, 2:Lockers, 3:Products, 4:Posts, 5:About\r\n postCount: 0,\r\n productCount: 0,\r\n lockerCount: 0,\r\n finishedFetchingActivity: false,\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false,\r\n paymentEmail: \"\",\r\n paymentEmailObject: null,\r\n persistentPaymentEmail: \"\",\r\n taskActionId: 1,\r\n selectToggle: false,\r\n isSavingBasicSettings: false,\r\n isSavingCreatorSettings: false,\r\n userInformation: null,\r\n persistentUserInformation: null,\r\n basicUserInformation: null,\r\n creatorSettingsInformation: null,\r\n hideTasks: false,\r\n hideTaskActions: false,\r\n }\r\n }\r\n \r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n\r\n let sharePath = \"/prflink/\" + this.props.loggedInUser.userName;\r\n let shareLink = await getMerchantShareLink(sharePath);\r\n this.setState({ shareLink });\r\n\r\n document.documentElement.addEventListener('dragleave', this.handleDragLeave);\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.updatePersistantUserInformation(this.props.loggedInUser);\r\n\r\n //this.handleSelect(this.state.selectOptions.defaultValue);\r\n this.getCreatorDashboardAnalytics();\r\n\r\n\r\n const params = getQueryStringParams(window.location.search);\r\n const tab = Math.floor(params.tab);\r\n const tasks = Math.floor(params.tasks);\r\n\r\n if (!isNaN(tab) && Number.isInteger(tab) && tab >= 0 && tab <= 5) {\r\n if (tab === 5) {\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n } else {\r\n this.setState({ tab: Math.floor(tab) });\r\n const selectedOption = this.state.selectContentOptions.options.find(option => option.value === tab);\r\n if (!!(selectedOption)) {\r\n this.handleContentSelect(selectedOption);\r\n }\r\n }\r\n }\r\n\r\n let queryTaskActions = false;\r\n\r\n if (!isNaN(tasks) && Number.isInteger(tasks) && tasks === 1) {\r\n queryTaskActions = true;\r\n }\r\n\r\n await this.fetchTaskList(true, false, queryTaskActions, true);\r\n\r\n\r\n await Promise.all([\r\n this.getPaymentEmail(),\r\n this.fetchCounts(this.props.loggedInUser.id),\r\n this.fetchIsFollowing(this.props.loggedInUser.id),\r\n this.fetchProducts(0, 96),\r\n this.fetchActivityFeed(0, 12)]);\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (!!(prevProps.deviceSize) && !!(this.props.deviceSize) && prevProps.deviceSize !== this.props.deviceSize) {\r\n this.setState({ activeIndex: 0 })\r\n }\r\n if (!!(this.props.reloadCreatorDashboardAnalyticsData) && prevProps.reloadCreatorDashboardAnalyticsData != null && prevProps.reloadCreatorDashboardAnalyticsData != undefined && prevProps.reloadCreatorDashboardAnalyticsData !== this.props.reloadCreatorDashboardAnalyticsData) {\r\n const selectOption = this.state.selectOptions.currentValue;\r\n this.handleSelect(selectOption);\r\n }\r\n\r\n if (prevProps.screenWidth !== this.props.screenWidth) {\r\n this.mobile = false;\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n document.documentElement.removeEventListener('dragleave', this.handleDragLeave);\r\n }\r\n\r\n toggleDisplay = (basic = true) => {\r\n this.setState({ creatorDisplay: basic ? false : true, basicDisplay: basic ? true : false });\r\n }\r\n\r\n handleDragLeave = (e) => {\r\n if (e.screenX === 0) {\r\n // this.postTaskItemCompleted();\r\n }\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.getCreatorDashboardAnalytics(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n handleContentSelect = (selectedOption) => {\r\n if (!!(selectedOption.selectedOption)) {\r\n selectedOption = { ...selectedOption.selectedOption };\r\n }\r\n if (selectedOption) {\r\n if (selectedOption.value === 5) {\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n } else {\r\n const selectContentOptions = { ...this.state.selectContentOptions };\r\n selectContentOptions.currentValue = selectedOption;\r\n let tab = typeof selectedOption.value === 'number' ? selectedOption.value : this.state.tab;\r\n this.setState({ selectContentOptions, tab });\r\n this.updateQueryString(selectedOption.value)\r\n }\r\n }\r\n }\r\n\r\n toggleDropdown = (e, fromWhere = \"\") => {\r\n const classList = e.target.classList;\r\n\r\n if (fromWhere === \"touch\") {\r\n this.mobile = true;\r\n } else if (this.mobile) {\r\n return;\r\n }\r\n // svg on the icon has classList.value === '';\r\n if (e.target.tagName !== \"svg\" || !!(classList.value)) {\r\n this.menuIsOpen = !this.menuIsOpen;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n updateQueryString = (tab) => {\r\n const { history } = this.props;\r\n\r\n // Build the new search string with updated query parameters\r\n const newSearch = `?tab=${tab}`;\r\n\r\n // Use history.replace to update the URL without adding a new entry to the history stack\r\n history.replace({\r\n search: newSearch,\r\n });\r\n };\r\n\r\n getCreatorDashboardAnalytics = async (startDate, endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let getAnalyticsUrl = '/api/Merchant/GetCreatorDashboardAnalytics';\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n if (getAnalyticsUrl.includes(\"?\")) {\r\n getAnalyticsUrl += `&offset=${offset}`\r\n } else {\r\n getAnalyticsUrl += `?offset=${offset}`\r\n }\r\n\r\n this.setState({ analyticsLoading: true });\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n this.setState({ analytics, loading: false, analyticsLoading: false });\r\n }\r\n\r\n getPaymentEmail = async () => {\r\n let paymentEmail = await getRequest(\"api/Account/GetPaymentEmail\");\r\n \r\n this.setState({ persistentPaymentEmail: paymentEmail?.email ?? \"\", paymentEmailObject: paymentEmail, paymentEmail: paymentEmail?.email ?? \"\", email: paymentEmail?.email ?? \"\" });\r\n }\r\n\r\n updateBasicUserInformation = (propsUserInformation) => {\r\n this.setState({ basicUserInformation: propsUserInformation });\r\n }\r\n\r\n updateCreatorSettingsInformation = (propsUserInformation) => {\r\n this.setState({ creatorSettingsInformation: propsUserInformation });\r\n }\r\n\r\n parseUserInfo = (propsUserInformation) => {\r\n if (!!(propsUserInformation)) {\r\n return {\r\n name: propsUserInformation.name ?? this.state.persistentUserInformation?.name ?? \"\",\r\n firstName: propsUserInformation.firstName ?? this.state.persistentUserInformation?.firstName ?? \"\",\r\n lastName: propsUserInformation.lastName ?? this.state.persistentUserInformation?.lastName ?? \"\",\r\n email: propsUserInformation.email ?? this.state.persistentUserInformation?.email ?? \"\",\r\n address: propsUserInformation.address ?? this.state.persistentUserInformation?.address ?? \"\",\r\n city: propsUserInformation.city ?? this.state.persistentUserInformation?.city ?? \"\",\r\n state: propsUserInformation.state ?? this.state.persistentUserInformation?.state ?? \"\",\r\n country: propsUserInformation.country ?? this.state.persistentUserInformation?.country ?? \"\",\r\n website: propsUserInformation.website ?? this.state.persistentUserInformation?.website ?? \"\",\r\n postalCode: propsUserInformation.postalCode ?? this.state.persistentUserInformation?.postalCode ?? \"\",\r\n phoneNumber: propsUserInformation.phoneNumber ?? this.state.persistentUserInformation?.phoneNumber ?? \"\",\r\n tagLine: propsUserInformation.tagLine ?? this.state.persistentUserInformation?.tagLine ?? \"\",\r\n bio: propsUserInformation.bio ?? this.state.persistentUserInformation?.bio ?? \"\",\r\n userName: propsUserInformation.userName ?? this.state.persistentUserInformation?.userName ?? \"\",\r\n imageUrl: propsUserInformation.imageUrl ?? this.state.persistentUserInformation?.imageUrl ?? \"\",\r\n\r\n proStatusId: propsUserInformation.proStatusId ?? this.state.persistentUserInformation?.proStatusId ?? null,\r\n\r\n googleUsername: propsUserInformation.googleUsername ?? this.state.persistentUserInformation?.googleUsername ?? \"\",\r\n facebookUsername: propsUserInformation.facebookUsername ?? this.state.persistentUserInformation?.facebookUsername ?? \"\",\r\n instagramUsername: propsUserInformation.instagramUsername ?? this.state.persistentUserInformation?.instagramUsername ?? \"\",\r\n tikTokUsername: propsUserInformation.tikTokUsername ?? this.state.persistentUserInformation?.tikTokUsername ?? \"\",\r\n stravaUsername: propsUserInformation.stravaUsername ?? this.state.persistentUserInformation?.stravaUsername ?? \"\",\r\n\r\n onboardingComplete: propsUserInformation.onboardingComplete ?? this.state.persistentUserInformation?.onboardingComplete ?? null,\r\n profileBannerUrl: propsUserInformation.profileBannerUrl ?? this.state.persistentUserInformation?.profileBanner ?? \"\",\r\n\r\n quickStart: propsUserInformation.quickStart ?? this.state.persistentUserInformation?.quickStart ?? null,\r\n rpManagerUserId: propsUserInformation.rpManagerUserId ?? this.state.persistentUserInformation?.rpManagerUserId ?? null\r\n }\r\n }\r\n }\r\n\r\n updatePaymentEmail = (paymentEmail) => {\r\n this.setState({ paymentEmail });\r\n }\r\n\r\n updatePersistantUserInformation = (propsUserInformation) => {\r\n this.setState({ persistentUserInformation: this.parseUserInfo(propsUserInformation) });\r\n }\r\n\r\n fetchTaskList = async (setActionId = false, hideTasks = false, queryStringTasks = false, initialCall = false) => {\r\n let url = `/api/Creator/GetTaskList?userId=${this.props.loggedInUser.id}`;\r\n const taskList = await getRequest(url);\r\n\r\n if (!!(taskList) && taskList.length > 0) {\r\n // Sort the taskList\r\n taskList.sort((a, b) => {\r\n if (a.ordinal !== null && b.ordinal !== null) {\r\n if (a.ordinal !== b.ordinal) {\r\n return a.ordinal - b.ordinal;\r\n } else {\r\n // If ordinals are equal, sort by id\r\n return a.id - b.id;\r\n }\r\n } else if (a.ordinal !== null) {\r\n // Place items with valid ordinal before those with null ordinal\r\n return -1;\r\n } else if (b.ordinal !== null) {\r\n // Place items with valid ordinal before those with null ordinal\r\n return 1;\r\n } else {\r\n // If both ordinals are null, sort by id\r\n return a.id - b.id;\r\n }\r\n });\r\n\r\n const taskListWithNoUserId = taskList.filter(item => !(item.userTaskId));\r\n const taskActionId = !!(taskListWithNoUserId) && taskListWithNoUserId.length > 0 ? taskListWithNoUserId[0].id : 1;\r\n\r\n if (queryStringTasks) {\r\n this.setState({ taskList, taskActionId: 1, hideTaskActions: false });\r\n } else {\r\n this.setState({ taskList, taskActionId: setActionId ? taskActionId : this.state.taskActionId, hideTaskActions: hideTasks ? hideTasks : setActionId && (!(taskListWithNoUserId) || taskListWithNoUserId.length === 0) ? true : false, hideTasks: initialCall && (!(taskListWithNoUserId) || taskListWithNoUserId.length === 0) ? true : this.state.hideTasks });\r\n }\r\n } \r\n }\r\n\r\n postTaskItemCompleted = async (hideTaskActions = false) => {\r\n let { taskList, taskActionId } = this.state;\r\n\r\n let url = `/api/Creator/PostUserCreatorDashboardTaskItemTaskCompleted`;\r\n let taskItem = taskList.filter(item => item.id === taskActionId)[0];\r\n let upload = {\r\n id: taskItem.id,\r\n taskName: taskItem.taskName ?? \"\",\r\n ordinal: taskItem.ordinal ?? null,\r\n userTaskId: taskItem.userTaskId ?? null,\r\n userId: taskItem.userId ?? null,\r\n }\r\n\r\n await postRequest(url, upload);\r\n setTimeout(() => {\r\n this.fetchTaskList(false, hideTaskActions);\r\n }, 1000)\r\n }\r\n\r\n downwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n upwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleChevronClick = () => {\r\n this.setState({ selectToggle: !this.state.selectToggle });\r\n };\r\n\r\n next = (arrayCount) => {\r\n this.setState({ activeIndex: this.state.activeIndex < arrayCount - 1 ? this.state.activeIndex + 1 : 0 })\r\n }\r\n\r\n previous = (arrayCount) => {\r\n this.setState({ activeIndex: this.state.activeIndex > 0 ? this.state.activeIndex - 1 : arrayCount - 1 })\r\n }\r\n\r\n infoNext = (arrayCount) => {\r\n this.setState({ activeInfoIndex: this.state.activeInfoIndex < arrayCount - 1 ? this.state.activeInfoIndex + 1 : 0 })\r\n }\r\n\r\n infoPrevious = (arrayCount) => {\r\n this.setState({ activeInfoIndex: this.state.activeInfoIndex > 0 ? this.state.activeInfoIndex - 1 : arrayCount - 1 })\r\n }\r\n\r\n goToIndex = (activeIndex) => {\r\n this.setState({ activeIndex });\r\n }\r\n\r\n goToInfoIndex = activeInfoIndex => {\r\n this.setState({ activeInfoIndex })\r\n }\r\n\r\n renderAnalytics = () => {\r\n let menu = [\r\n {\r\n title: \"Sales generated\",\r\n name: \"salesGenerated\",\r\n actionType: \"url\",\r\n action: \"/Account/Analytics?date=\" + this.state.selectOptions.currentValue.value + \"&tab=1\",\r\n linkText: \"View analytics\",\r\n money: true\r\n },\r\n {\r\n title: \"Commissionable links created\",\r\n name: \"commissionableLinksCreated\",\r\n actionType: \"modal\",\r\n action: this.props.toggleAddProductOrDeepLinkModal,\r\n linkText: \"Create a commissionable link\",\r\n money: false\r\n },\r\n {\r\n title: \"Lockers created\",\r\n name: \"lockersCreated\",\r\n actionType: \"modal\",\r\n action: this.props.toggleCreateLockerModal,\r\n linkText: \"Create a Locker\",\r\n money: false\r\n },\r\n {\r\n title: \"Clicks\",\r\n name: \"clicks\",\r\n actionType: \"modal\",\r\n action: this.goToSavedLinks,\r\n linkText: \"Share a link\",\r\n money: false\r\n },\r\n {\r\n title: \"Commissions earned\",\r\n name: \"commissionsEarned\",\r\n actionType: \"url\",\r\n action: \"/Account/Analytics?date=\" + this.state.selectOptions.currentValue.value + \"&tab=1\",\r\n linkText: \"View analytics\",\r\n money: true\r\n },\r\n ];\r\n\r\n const flexContainerStyles = {\r\n fontFamily: \"Archivo, sf_pro_displayregular, sans-serif\",\r\n fontSize: \"14px\",\r\n gap: \"10px\",\r\n display: 'flex',\r\n overflowX: 'auto',\r\n paddingBottom: '10px',\r\n whiteSpace: 'nowrap',\r\n };\r\n\r\n const itemStyles = {\r\n flex: '0 0 auto',\r\n padding: '10px 30px 10px 10px',\r\n // borderRight: '1px solid #ccc', // Add vertical separator between items\r\n };\r\n\r\n const lastItemStyles = {\r\n ...itemStyles,\r\n borderRight: 'none', // Remove border for the last item\r\n };\r\n\r\n const selectStyle = {\r\n padding: '2px 20px 2px 2px',\r\n width: '53px', /* Adjust width to leave space for the arrow */\r\n border: '1px solid #ccc',\r\n borderRadius: '5px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n textIndent: \"3px\",\r\n fontSize: \"10px\",\r\n cursor: \"pointer\",\r\n background: \"white\",\r\n };\r\n\r\n const itemsPerSlide = this.props.deviceSize === \"sm\" ? 1 : this.props.deviceSize === \"md\" ? 2 : this.props.deviceSize === \"lg\" ? 3 : 4; // Number of items per slide\r\n const menuChunks = [];\r\n\r\n // Divide 'menu' into chunks to display multiple items per slide\r\n for (let i = 0; i < menu.length; i += itemsPerSlide) {\r\n menuChunks.push(menu.slice(i, i + itemsPerSlide));\r\n }\r\n\r\n const menuPortalTarget = document.body; // Render menu outside the containing div\r\n\r\n const menuRender = menuChunks.map((chunk, i) => {\r\n return (\r\n \r\n
    \r\n {chunk.map((item, j) => (\r\n\r\n
    \r\n
    \r\n {\r\n item.money ?\r\n ${item.name === \"salesGenerated\" ? this.state.analytics?.totalSales?.toFixed(2) ?? 0 : this.state.analytics?.totalCommissions?.toFixed(2) ?? 0}\r\n :\r\n {item.name === \"commissionableLinksCreated\" ? this.state.analytics?.commissionableLinksCreated ?? 0 : item.name === \"clicks\" ? this.state.analytics?.totalClicks ?? 0 : this.state.analytics?.lockersCreated ?? 0}\r\n }\r\n
    \r\n
    \r\n {item.title}\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n );\r\n });\r\n\r\n if (![\"xl\"].includes(this.props.deviceSize)) {\r\n return (\r\n
    \r\n
    \r\n this.previous(menuRender.length)} className={`creator-dashboard-prev-next`} height={75} width={36} opacity={0.1} style={{ position: \"relative\", right: [\"sm\"].includes(this.props.deviceSize) ? \"\" : \"20px\", transform: \"scaleY(2.5)\" }} />\r\n
    \r\n this.next(menuRender.length)}\r\n previous={() => this.previous(menuRender.length)}\r\n style={{ overflow: \"visible\" }}\r\n interval={null}\r\n keyboard={false}\r\n controls={false}\r\n className={`${this.props.deviceSize === \"sm\" ? \"creator-dashboard-analytics-carousel-slide\" : \"creator-dashboard-analytics-carousel-slide\"}`}\r\n >\r\n \r\n {menuRender}\r\n {/* this.previous(menuRender.length)} />*/}\r\n {/* this.next(menuRender.length)} />*/}\r\n \r\n
    \r\n this.next(menuRender.length)} className={`creator-dashboard-prev-next`} height={75} width={36} opacity={0.1} style={{ position: \"relative\", left: [\"sm\"].includes(this.props.deviceSize) ? \"\" : \"20px\", transform: \"scaleY(2.5)\" }} />\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n {menu.map((item, i) => (\r\n
    \r\n
    \r\n
    \r\n {\r\n item.money ?\r\n ${item.name === \"salesGenerated\" ? this.state.analytics?.totalSales?.toFixed(2) ?? 0 : this.state.analytics?.totalCommissions?.toFixed(2) ?? 0}\r\n :\r\n {item.name === \"commissionableLinksCreated\" ? this.state.analytics?.commissionableLinksCreated ?? 0 : item.name === \"clicks\" ? this.state.analytics?.totalClicks ?? 0 : this.state.analytics?.lockersCreated ?? 0}\r\n }\r\n
    \r\n
    \r\n {item.title}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ))}\r\n
    \r\n );\r\n }\r\n\r\n handleTaskActionClick = (task) => {\r\n if (!(task.userTaskId)) {\r\n this.setState({ taskActionId: task.id })\r\n }\r\n }\r\n\r\n goToSavedLinks = () => {\r\n this.setState({ tab: 1 });\r\n let contentMenuElement = document.getElementById('contentMenu');\r\n if (contentMenuElement) {\r\n contentMenuElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }\r\n\r\n nextTask = () => {\r\n this.postTaskItemCompleted();\r\n const actionId = this.state.taskActionId;\r\n this.setState({ taskActionId: this.taskAction === this.state.taskList.length ? actionId + 1 : actionId + 1 })\r\n }\r\n\r\n previousTask = () => {\r\n this.postTaskItemCompleted();\r\n const actionId = this.state.taskActionId;\r\n this.setState({ taskActionId: actionId > 1 ? actionId - 1 : this.state.taskList.length })\r\n }\r\n\r\n finishTasks = () => {\r\n this.postTaskItemCompleted(true);\r\n this.setState({ hideTaskActions: true })\r\n }\r\n\r\n renderTaskOrderingIcon = (character, selected = false) => {\r\n selected = this.state.hideTaskActions ? false : selected;\r\n\r\n return (\r\n \r\n {!!(character) ? character : '✔'}\r\n \r\n );\r\n }\r\n\r\n renderTasks = () => {\r\n if (this.state.taskList?.length > 0) {\r\n return (\r\n
    \r\n \r\n
    766 ? \"between\" : \"around\"} ${this.props.deviceSize === \"sm\" ? \"flex-column mb-4 mx-auto\" : \"\"}`} style={{\r\n display: this.state.hideTasks ? \"none\" : \"\", fontFamily: \"Archivo, sf_pro_displayregular, sans-serif\", fontSize: \"12px\", width: this.props.deviceSize === \"sm\" ? \"85%\" : \"\",\r\n }}>\r\n {this.state.taskList.map((task, i) => (\r\n
    \r\n
    this.handleTaskHeaderClick(task.id)}\r\n >\r\n {this.renderTaskOrderingIcon(!!(task.userTaskId) ? \"\" : task.id, task.id === this.state.taskActionId)}\r\n \r\n {task.taskName}\r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n {this.renderTaskActions()}\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n };\r\n\r\n handleTaskHeaderClick = (taskId) => {\r\n this.setState({ hideTaskActions: this.state.taskActionId === taskId && !this.state.hideTaskActions ? true : false, taskActionId: taskId })\r\n }\r\n\r\n toggleGrid = () => {\r\n let newIsGrid = !this.state.isGrid;\r\n this.setState({ isGrid: newIsGrid });\r\n }\r\n\r\n fetchCounts = async (userId) => {\r\n let url = `api/Post/GetPostCount?userId=${userId}&onlyPublished=true`;\r\n let count = await getRequest(url);\r\n\r\n let sum = count.length > 0 ? count.reduce(function (a, b) {\r\n return { count: a.count + b.count };\r\n }) : { count: 0 };\r\n let totalCount = sum.count;\r\n let lockerCount = 0;\r\n let lockers = count.find(({ userPostTypeId }) => userPostTypeId === 2);\r\n\r\n if (lockers) {\r\n lockerCount = lockers.count;\r\n }\r\n\r\n let productCountUrl = `/Products/GetUserMerchantProductCount?userId=${userId}`\r\n let productCount = (await getRequest(productCountUrl)).count;\r\n\r\n this.setState({ postCount: totalCount - lockerCount, lockerCount, productCount });\r\n }\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n this.setState({ isFollowing: data });\r\n }\r\n\r\n fetchActivityFeed = async (skip, take) => {\r\n let url = this.props.loggedInUser != null ? '/api/post/getPostsByUserAuthorized' : '/api/post/getPostsByUser';\r\n\r\n let data = await getRequest(`${url}?userName=${this.props.loggedInUser.userName}&skip=${skip}&take=${take}`);\r\n\r\n let lockers = data.filter((post) => post.type === 2);\r\n let lockerIds = this.state.lockers.map((locker) => locker.id);\r\n\r\n let posts = data.filter((post) => post.type === 1 || post.type === 4);\r\n let postIds = this.state.posts.map((post) => post.id);\r\n\r\n let lockersToAdd = lockers.filter((locker) => !lockerIds.includes(locker.id));\r\n let postsToAdd = posts.filter((post) => !postIds.includes(post.id));\r\n\r\n this.setState({\r\n activityFeed: this.state.activityFeed.concat(data),\r\n finishedFetchingActivity: data.length < take ? true : false,\r\n finishedFetchingPosts: data.length < take ? true : this.state.finishedFetchingPosts,\r\n finishedFetchingLockers: data.length < take ? true : this.state.finishedFetchingLockers,\r\n lockers: [...this.state.lockers, ...lockersToAdd],\r\n posts: [...this.state.posts, ...postsToAdd]\r\n });\r\n }\r\n\r\n fetchProducts = async (skip, take) => {\r\n this.setState({ finishedFetchingProducts: false })\r\n\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n\r\n let products = await getRequest(`${basePath}?userName=${this.props.loggedInUser.userName}&skip=${skip}&take=${take}&onlyPostedProducts=true`);\r\n let fullProducts = products.map((product) => {\r\n product.user = this.state.userInformation\r\n return product;\r\n });\r\n\r\n let productList = [...this.state.products, ...fullProducts];\r\n\r\n this.setState({ products: productList });\r\n\r\n if (!take) {\r\n this.setState({ finishedFetchingProducts: true })\r\n } else if (products.length < take) {\r\n this.setState({ finishedFetchingProducts: true })\r\n }\r\n }\r\n\r\n fetchLockers = async (skip, take) => {\r\n var postResults = await getRequest(`/api/post/getPostsByUser?userName=${this.props.loggedInUser.userName}&skip=${skip}&take=${take}&onlyLockers=true`);\r\n\r\n let lockers = postResults.filter((post) => post.type === 2);\r\n let lockerIds = this.state.lockers.map((locker) => locker.id);\r\n\r\n let lockersToAdd = lockers.filter((locker) => !lockerIds.includes(locker.id));\r\n\r\n this.setState({ lockers: [...this.state.lockers, ...lockersToAdd], finishedFetchingLockers: postResults.length < take ? true : false });\r\n }\r\n\r\n fetchPosts = async (skip, take) => {\r\n var postResults = await getRequest(`/api/post/getPostsByUser?userName=${this.props.loggedInUser.userName}&skip=${skip}&take=${take}&onlyPosts=true`);\r\n\r\n let posts = postResults.filter((post) => post.type !== 2);\r\n let postIds = this.state.posts.map((post) => post.id);\r\n let postsToAdd = posts.filter((post) => !postIds.includes(post.id));\r\n\r\n this.setState({ posts: [...this.state.posts, ...postsToAdd], finishedFetchingPosts: postResults.length < take ? true : false });\r\n }\r\n\r\n onTabChange = (tabIndex) => {\r\n this.setState({ tab: tabIndex });\r\n this.updateQueryString(tabIndex);\r\n\r\n if (this.infoTab !== tabIndex) {\r\n this.infoTab = -1;\r\n this.setState({ activeInfoIndex: 0 });\r\n }\r\n };\r\n\r\n\r\n setSectors = (sectors, allSectors) => {\r\n this.setState({ sectors, allSectors, persistentSectors: sectors });\r\n }\r\n\r\n updateSectors = (sectors) => {\r\n this.setState({ sectors })\r\n }\r\n\r\n saveBasicSettings = async (e) => {\r\n e.preventDefault();\r\n if (!!(this.state.basicUserInformation) && !!(this.state.sectors)) {\r\n this.setState({ isSavingBasicSettings: true });\r\n const userInformation = this.parseUserInfo(this.state.basicUserInformation);\r\n\r\n let selectedSectorIds = this.state.sectors.map((sector) => { return sector.sectorId });\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n \r\n await postRequest(userUrl, userInformation);\r\n await postRequest('/api/Sector/UpdateUserSectors', selectedSectorIds);\r\n\r\n this.setState({ isSavingBasicSettings: false, editMode: false,userInformation, persistentUserInformation: userInformation, persistentSectors: this.state.sectors });\r\n }\r\n }\r\n \r\n saveCreatorSettings = async (e) => {\r\n e.preventDefault();\r\n if (!!(this.state.creatorSettingsInformation) && !!(this.state.sectors)) {\r\n this.setState({ isSavingCreatorSettings: true });\r\n const userInformation = this.parseUserInfo(this.state.creatorSettingsInformation);\r\n\r\n let selectedSectorIds = this.state.sectors.map((sector) => { return sector.sectorId });\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n\r\n await postRequest(userUrl, userInformation);\r\n await postRequest('/api/Sector/UpdateUserSectors', selectedSectorIds);\r\n\r\n this.setState({ persistentPaymentEmail: this.state.paymentEmail, isSavingCreatorSettings: false, creatorSettingsEditMode: false, userInformation, persistentUserInformation: userInformation, persistentSectors: this.state.sectors });\r\n }\r\n }\r\n\r\n savePaymentEmail = async () => {\r\n this.setState({ isSavingPaymentEmail: true });\r\n\r\n const email = { email: this.state.paymentEmail };\r\n\r\n let emailUrl = '/api/Account/UpdatePaymentEmail';\r\n await postRequest(emailUrl, email);\r\n\r\n this.setState({ persistentPaymentEmail: this.state.paymentEmail, isSavingPaymentEmail: false });\r\n }\r\n\r\n profilePageRedirect = () => {\r\n let { history } = this.props;\r\n history.push('/Profile/' + this.props.loggedInUser.userName)\r\n };\r\n\r\n addLockerModal = () => {\r\n this.props.toggleCreateLockerModal();\r\n this.postTaskItemCompleted();\r\n };\r\n\r\n createCommissionableLink = () => {\r\n this.props.toggleAddProductOrDeepLinkModal();\r\n this.postTaskItemCompleted();\r\n }\r\n\r\n toggleEditMode = (e, taskAction = false) => {\r\n this.setState({ editMode: !this.state.editMode, tab: 0 })\r\n let contentMenuElement = document.getElementById('contentMenu');\r\n if (contentMenuElement) {\r\n contentMenuElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n if (taskAction) {\r\n this.postTaskItemCompleted();\r\n }\r\n };\r\n\r\n cancelEdit = () => {\r\n this.setState({ editMode: false, cancelEdit: true });\r\n }\r\n\r\n cancelCreatorSettingsEdit = () => {\r\n this.setState({ creatorSettingsEditMode: false, cancelCreatorSettingsEdit: true });\r\n }\r\n\r\n resetCancelEdit = () => {\r\n this.setState({ editMode: false, cancelEdit: false });\r\n }\r\n\r\n resetCancelCreatorSettingsEdit = () => {\r\n this.setState({ creatorSettingsEditMode: false, cancelCreatorSettingsEdit: false });\r\n }\r\n\r\n editCreatorSettingsRedirect = () => {\r\n this.setState({ creatorSettingsEditMode: !this.state.creatorSettingsEditMode, tab: 0 })\r\n let contentMenuElement = document.getElementById('creatorSettings');\r\n if (contentMenuElement) {\r\n contentMenuElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n };\r\n\r\n shareLink = () => {\r\n this.setState({ tab: 1 })\r\n const option = this.state.selectContentOptions.options.filter(o => o.value === 1)[0];\r\n this.handleContentSelect(option);\r\n let contentMenu = document.getElementById('contentMenu');\r\n setTimeout(() => {\r\n if (contentMenu) {\r\n contentMenu.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }, 50)\r\n\r\n this.postTaskItemCompleted();\r\n };\r\n\r\n editPaypalEmail = () => {\r\n this.toggleDisplay(false);\r\n this.setState({ creatorSettingsEditMode: true, tab: 0 })\r\n setTimeout(() => {\r\n let contentMenuElement = document.getElementById('paypalAddress');\r\n let paymentEmailElement = document.getElementById('paymentEmail')\r\n if (contentMenuElement) {\r\n contentMenuElement.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n if (paymentEmailElement) {\r\n paymentEmailElement.focus();\r\n }\r\n }, 50);\r\n // this.postTaskItemCompleted();\r\n };\r\n\r\n redirectToCalendly = () => {\r\n const url = 'https://calendly.com/rockporch/30min';\r\n const popupWindow = window.open(url, '_blank', 'width=600,height=700');\r\n\r\n if (popupWindow) {\r\n popupWindow.focus(); // Focus on the newly opened popup window\r\n } else {\r\n // If the browser blocks popups, provide an alternative action (e.g., open the link in the current window)\r\n window.location.href = url;\r\n }\r\n\r\n this.postTaskItemCompleted();\r\n };\r\n\r\n\r\n\r\n toggleShowLearnMore = () => {\r\n this.setState({ learnMore: true });\r\n setTimeout(() => {\r\n this.setState({ learnMore: false });\r\n }, 5000);\r\n }\r\n\r\n displayContent = (isGrid = this.state.isGrid) => {\r\n const smallSizes = [\"sm\", \"md\"];\r\n switch (this.state.tab) {\r\n case 0: {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    My Profile
    \r\n

    \r\n The world wants to get to know YOU! So tell them a little more about who you are, what you love, and what moves you.

    \r\n

    \r\n Plus, when you send your followers to your RockPorch profile, they’ll know they’ve landed in the right place!\r\n

    \r\n
    \r\n \r\n {\r\n this.props.deviceSize === \"sm\" ?\r\n <>\r\n
    \r\n

    this.toggleDisplay(true)} style={{ cursor: \"pointer\", padding: \"0 10px 10px 10px\", borderBottom: this.state.basicDisplay ? \"1px solid #d46240\" : \"\", fontWeight: \"bold\", fontSize: \"14px\" }}>Basic Information

    \r\n

    this.toggleDisplay(false)} style={{ cursor: \"pointer\", fontWeight: \"bold\", fontSize: \"14px\", padding: \"0 10px 10px 10px\", borderBottom: this.state.creatorDisplay ? \"1px solid #d46240\" : \"\" }}>Creator Settings

    \r\n
    \r\n
    \r\n
    Basic Information
    \r\n
    \r\n \r\n \r\n :\r\n
    \r\n
    Basic Information
    \r\n
    \r\n }\r\n\r\n {\r\n this.state.editMode && this.props.deviceSize !== \"sm\" ?\r\n
    \r\n Cancel Edit\r\n\r\n this.saveBasicSettings(e)} isLoading={this.state.isSavingBasicSettings} style={{ borderRadius: \"3px\", bottom: \"5px\", marginLeft: \"10px\" }} className=\"btn btn-primary\">Save Changes\r\n
    \r\n :\r\n this.props.deviceSize !== \"sm\" ?\r\n
    \r\n Edit Profile\r\n
    \r\n :\r\n <>\r\n }\r\n\r\n {\r\n this.state.editMode && this.props.deviceSize === \"sm\" ?\r\n
    \r\n Cancel Edit\r\n\r\n this.saveBasicSettings(e)} style={{ borderRadius: \"3px\", bottom: \"5px\", marginLeft: \"10px\", fontSize: \"12px\" }} className=\"btn btn-primary\">Save Changes\r\n
    \r\n :\r\n this.props.deviceSize === \"sm\" ?\r\n
    \r\n

    Edit Information

    \r\n
    \r\n :\r\n <>\r\n }\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    {this.props.deviceSize === \"sm\" ? \"Personal Information\" : \"Creator Settings\"}
    \r\n\r\n {\r\n this.state.creatorSettingsEditMode && this.props.deviceSize !== \"sm\" ?\r\n
    \r\n Cancel Edit\r\n\r\n this.saveCreatorSettings(e)} isLoading={this.state.isSavingCreatorSettings} style={{ borderRadius: \"3px\", bottom: \"5px\", marginLeft: \"10px\" }} className=\"btn btn-primary\">Save Changes\r\n
    \r\n :\r\n this.props.deviceSize !== \"sm\" ?\r\n
    \r\n Edit Creator Settings\r\n
    \r\n :\r\n <>\r\n }\r\n
    \r\n {\r\n this.props.deviceSize === \"sm\" && this.state.creatorSettingsEditMode ?\r\n
    \r\n Cancel Edit\r\n\r\n this.saveCreatorSettings(e)} style={{ borderRadius: \"3px\", bottom: \"5px\", marginLeft: \"10px\", fontSize: \"12px\" }} className=\"btn btn-primary\">Save Changes\r\n
    \r\n :\r\n this.props.deviceSize === \"sm\" ?\r\n
    \r\n

    Edit Information

    \r\n
    \r\n :\r\n <>\r\n }\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n )\r\n }\r\n case 1: {\r\n return ( \r\n
    \r\n
    \r\n
    Saved Links
    \r\n

    \r\n Manage your commissionable links. Here, you can easily add new commissionable links, grab existing commissionable links, and add product reviews and activity tags to improve searchability.\r\n

    \r\n
    \r\n
    \r\n Create Commissionable Link\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n case 2: {\r\n return (\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    My Lockers
    \r\n

    \r\n Add new lockers and edit your existing lockers to make sharing and shopping quick and easy.\r\n

    \r\n
    \r\n
    \r\n Create Locker\r\n
    \r\n
    \r\n
    0 ? \"gray-bg px-md-5\" : \"\"} px-0 mt-1 top-section-child`}>\r\n this.fetchLockers(this.state.lockers.length, 24)}\r\n updateParent={(updates) => this.setState({ lockers: updates })}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n className={`p-3`}\r\n creatorDashboard={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n case 3: {\r\n return (\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    My Posts
    \r\n

    \r\n Add photos and pull social posts from Instagram, Facebook, YouTube, and TikTok directly to your RockPorch account.\r\n

    \r\n
    \r\n
    \r\n Create Post\r\n
    \r\n
    \r\n
    0 ? \"gray-bg px-md-5\" : \"\"} px-0 mt-1 top-section-child`}>\r\n this.fetchActivityFeed(this.state.activityFeed.length, 24)}\r\n updateParent={(updates) => this.setState({ activityFeed: updates })}\r\n showPins={true}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n creatorDashboard={true}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n case 4: {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n default: {\r\n return <>\r\n }\r\n }\r\n }\r\n\r\n taskAction = (actionId, multiplesNumber) => {\r\n switch (actionId) {\r\n case 1: {\r\n return (\r\n
    \r\n Connect PayPal Account\r\n
    \r\n );\r\n }\r\n case 2: {\r\n return (\r\n
    \r\n Watch a quick video to learn how!\r\n
    \r\n );\r\n }\r\n case 3: {\r\n return (\r\n
    \r\n Watch a quick video to learn how!\r\n Get inspiration from other RockPorch creators!\r\n
    \r\n\r\n );\r\n }\r\n case 4: {\r\n return (\r\n \r\n );\r\n }\r\n \r\n default: {\r\n return <>\r\n }\r\n }\r\n }\r\n\r\n redirectToBookmarkVideo = () => {\r\n const url = 'https://www.youtube.com/watch?v=n4q9UqBzkDk';\r\n const popupWindow = window.open(url, '_blank', 'width=600,height=700');\r\n\r\n if (popupWindow) {\r\n popupWindow.focus(); // Focus on the newly opened popup window\r\n } else {\r\n // If the browser blocks popups, provide an alternative action (e.g., open the link in the current window)\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n redirectToCreateCommissionableLinkVideo = () => {\r\n const url = 'https://youtu.be/BKEsZhkyoMs?si=ls8-u-ACFm2AdKDC';\r\n const popupWindow = window.open(url, '_blank', 'width=600,height=700');\r\n\r\n if (popupWindow) {\r\n popupWindow.focus(); // Focus on the newly opened popup window\r\n } else {\r\n // If the browser blocks popups, provide an alternative action (e.g., open the link in the current window)\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n redirectToCreateFirstLockerVideo = () => {\r\n const url = 'https://youtu.be/vkGqKtt6a5M';\r\n const popupWindow = window.open(url, '_blank', 'width=600,height=700');\r\n\r\n if (popupWindow) {\r\n popupWindow.focus(); // Focus on the newly opened popup window\r\n } else {\r\n // If the browser blocks popups, provide an alternative action (e.g., open the link in the current window)\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n redirectToCreateStoriesVideo = () => {\r\n const url = 'https://help.instagram.com/813938898787367';\r\n const popupWindow = window.open(url, '_blank', 'width=600,height=700');\r\n\r\n if (popupWindow) {\r\n popupWindow.focus(); // Focus on the newly opened popup window\r\n } else {\r\n // If the browser blocks popups, provide an alternative action (e.g., open the link in the current window)\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n redirectToShareLinkVideo = () => {\r\n const url = 'https://youtu.be/sPttH4seRD4';\r\n const popupWindow = window.open(url, '_blank', 'width=600,height=700');\r\n\r\n if (popupWindow) {\r\n popupWindow.focus(); // Focus on the newly opened popup window\r\n } else {\r\n // If the browser blocks popups, provide an alternative action (e.g., open the link in the current window)\r\n window.location.href = url;\r\n }\r\n }\r\n\r\n redirectToExplore = () => {\r\n const url = '/Explore';\r\n this.props.history.push(url);\r\n }\r\n\r\n handleInfoClick = (infoTab, whereFrom = \"\") => {\r\n if (whereFrom === \"touch\") {\r\n this.mobile = true;\r\n } else if (this.mobile) {\r\n return;\r\n }\r\n this.infoTab = infoTab === this.infoTab ? -1 : infoTab;\r\n this.forceUpdate();\r\n if (this.infoTab === -1) {\r\n this.setState({ activeInfoIndex: 0 });\r\n }\r\n }\r\n\r\n renderCalendly = () => {\r\n const styles = {\r\n height: '450px'\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n renderTaskActions = () => {\r\n let bookmarkOrigin = window.location.origin;\r\n let buttonStyle = {\r\n background: \"#D2E3E0\"\r\n };\r\n\r\n switch (this.state.taskActionId) {\r\n case 1: {\r\n return (\r\n
    \r\n

    \r\n CONNECT YOUR PAYPAL\r\n

    \r\n

    \r\n Sales aren't sales until you get paid... we pay out commissions on the 1st of every month (if it's less than $20.00 we roll it over til the next month).\r\n

    \r\n
    \r\n {this.taskAction(this.state.taskActionId)}\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n case 2: {\r\n return (\r\n
    \r\n

    \r\n ADD A PRODUCT AND GENERATE YOUR FIRST COMMISSIONABLE LINK\r\n

    \r\n

    \r\n First, decide what product\r\n you’d like to share with your followers. Then, generate a commissionable link to the product.\r\n Whenever someone clicks on your commissionable links, you’ll earn a commission on any purchase they make from that brand for 30 DAYS! PLUS, links last forever, so.... you can earn from them now, next month, or even next year!\r\n

    \r\n
    \r\n {this.taskAction(this.state.taskActionId)}\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n case 5: {\r\n return (\r\n
    \r\n

    \r\n Drag the button below to your browser's bookmark bar. When on a merchant partner's page, click the RockPorch bookmark to get the shareable link.\r\n {\r\n e.preventDefault();\r\n // this.toggleShowLearnMore();\r\n }}>\r\n Learn more\r\n \r\n\r\n this.setState({ learnMore: true })}\r\n >\r\n \r\n You must be on an individual product page to add a product to My Products, otherwise the tool will create a Deep Link instead.\r\n \r\n \r\n

    \r\n\r\n \r\n e.preventDefault()}\r\n >\r\n +Add to RockPorch\r\n \r\n
    \r\n \r\n );\r\n }\r\n case 3: {\r\n return (\r\n
    \r\n

    \r\n SHARE YOUR FIRST COMMISSIONABLE LINK\r\n

    \r\n

    \r\n Create an Instagram story, reel, YouTube video, or blog post and feature your product. Add your commissionable link to\r\n your content in-platform (or if YouTube, in the comments) and share away!\r\n

    \r\n
    \r\n {this.taskAction(this.state.taskActionId)}\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n case 4: {\r\n return (\r\n
    \r\n
    \r\n

    \r\n OUR MOST SUCCESSFUL CREATORS START STRONG!\r\n \r\n

    \r\n

    \r\n You’re most likely to\r\n jumpstart your earnings by sharing 10 links in your first 10 days of becoming\r\n a RockPorch creator.\r\n

    \r\n {/**/}\r\n {/*

    this.setState({ seeMore: !this.state.seeMore })} style={{ cursor: \"pointer\", color: \"#d46240\", textDecoration: \"underline\" }}>{this.state.seeMore ? \"See less...\" : \"See more...\"}

    */}\r\n
    \r\n
    \r\n

    \r\n Want to make it easy to create new links? Simply install the Link Generator Bookmark. \r\n Just drag the button below to your browser's bookmark bar. When on a brand partner's page, just click the RockPorch bookmark to get your shareable, commissionable link. No more back and forth\r\n between brand sites and your RockPorch dashboard... and you’re off to the races!\r\n

    \r\n

    \r\n Tip: You can access the\r\n bookmark tool on mobile, too\r\n

    \r\n\r\n \r\n e.preventDefault()}\r\n >\r\n + RockPorch Tool\r\n \r\n

    Drag button to your browser bookmark bar

    \r\n
    \r\n {this.taskAction(this.state.taskActionId)}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n default: {\r\n return (\r\n
    \r\n

    \r\n

    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n \r\n }\r\n\r\n toggleProfileShareModal = () => {\r\n this.setState({ modalOpen: !this.state.modalOpen });\r\n }\r\n\r\n displayShareModal = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n resetInfoIcon = () => {\r\n this.infoTab = -1;\r\n this.forceUpdate();\r\n this.setState({ activeInfoIndex: 0 });\r\n }\r\n\r\n renderInfoIcon = () => {\r\n let buttonStyle = {\r\n background: \"#D2E3E0\"\r\n };\r\n\r\n const tab1Items = [\r\n \r\n
    \r\n

    \r\n UPDATE YOUR EXISTING LINKS\r\n

    \r\n

    \r\n If you have existing affiliate links in the market, update them using your RockPorch commissionable links. WHY IS THIS IMPORTANT?\r\n

    \r\n

    \r\n Because you'll increase your chances for getting paid brand campaigns. Our brand partners consider your sales data (among other things) when evaluating creators for campaigns. Having all your sales consolidated in one platform means a more impressive \"resume.\"\r\n

    \r\n
    \r\n
    ,\r\n \r\n
    \r\n

    \r\n CREATE A STORIES HIGHLIGHT\r\n

    \r\n

    \r\n Keep your top product recs front and center and easy to find for your fans by saving every social story that includes a commissionable link to a \"Links,\" \"Products,\" or similar highlight.

    \r\n
    \r\n
    \r\n HOW TO CREATE A STORIES HIGHLIGHT\r\n
    \r\n
    \r\n
    \r\n
    \r\n ]\r\n\r\n switch (this.state.tab) {\r\n case 0: {\r\n return (\r\n
    \r\n

    \r\n SHARE YOUR PROFILE URL\r\n dismiss\r\n

    \r\n

    \r\n Add your RockPorch Profile URL to your social profile or link bio. Now you can send your followers directly to your RockPorch profile to find products you have shared with them (and you'll earn commissions every time they purchase.)\r\n

    \r\n
    \r\n
    \r\n SHARE MY PROFILE URL\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n case 1: {\r\n return (\r\n
    \r\n dismiss\r\n\r\n
    \r\n this.infoPrevious(tab1Items.length)} className={`creator-dashboard-prev-next`} height={75} width={36} opacity={0.1} style={{ transform: \"scaleY(2.5)\" }} />\r\n
    \r\n this.next(tab1Items.length)}\r\n previous={() => this.previous(tab1Items.length)}\r\n style={{ overflow: \"visible\" }}\r\n interval={null}\r\n keyboard={false}\r\n controls={false}\r\n className=\"creator-dashboard-info-carousel-slide\"\r\n >\r\n {tab1Items}\r\n {/* this.previous(menuRender.length)} />*/}\r\n {/* this.next(menuRender.length)} />*/}\r\n \r\n
    \r\n this.infoNext(tab1Items.length)} className={`creator-dashboard-prev-next`} height={75} width={36} opacity={0.1} style={{ transform: \"scaleY(2.5)\" }} />\r\n
    \r\n
    \r\n );\r\n }\r\n case 2: {\r\n return (\r\n
    \r\n

    \r\n CREATE YOUR FIRST ROCKPORCH LOCKER\r\n dismiss\r\n

    \r\n

    \r\n RockPorch Lockers are like an Amazon Storefront, with a SOUL! \r\n

    \r\n

    \r\n Create any kind of curated list of products you like, but a good starting place might be an evergreen collection of your essentials like “Top 10 Never Camp/Run/Hike Without.” \r\n

    \r\n

    \r\n Or if you get asked often, “Where did you get that?,” create a “Most Asked About Products” Locker. No more hunting down products to share with your people. Now, just send them the commissionable link to your Locker.\r\n

    \r\n
    \r\n
    \r\n WATCH A QUICK VIDEO TO LEARN HOW\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n case 3: {\r\n return (\r\n
    \r\n

    \r\n SHARE YOUR PROFILE URL\r\n dismiss\r\n

    \r\n

    \r\n Add your RockPorch Profile URL to your social profile or link bio. Now you can send your followers directly to your RockPorch profile to find products you have shared with them (and you'll earn commissions every time they purchase.)\r\n

    \r\n
    \r\n
    \r\n SHARE MY PROFILE URL\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n default: {\r\n return (\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n renderOption = ({ value, label }) => {\r\n const selectedOption = this.state.selectContentOptions?.options?.find(option => option.value === value);\r\n\r\n if (value < 3) {\r\n return (\r\n
    { this.onTabChange(value); this.handleContentSelect({ selectedOption }); }}\r\n onTouchStart={() => { this.onTabChange(value); this.handleContentSelect({ selectedOption }); }}\r\n >\r\n {label}\r\n
    \r\n );\r\n }\r\n return (\r\n
    { this.onTabChange(value); this.handleContentSelect({ selectedOption }); }}\r\n onTouchStart={() => { this.onTabChange(value); this.handleContentSelect({ selectedOption }); }}\r\n >\r\n {label}\r\n
    \r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.displayShareModal()}\r\n
    \r\n \r\n RockPorch - Creator Dashboard\r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n {this.renderTasks()}\r\n
    \r\n\r\n
    \r\n {this.renderAnalytics()}\r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n [\"sm\"].includes(this.props.deviceSize) ?\r\n
    this.toggleDropdown(e, \"divClick\")} onTouchStart={(e) => this.toggleDropdown(e, \"touch\")}>\r\n { this.handleContentSelect(e) }}\r\n options={this.state.selectContentOptions.options}\r\n value={this.state.selectContentOptions.currentValue}\r\n components={{ SingleValue: (props) => , Option: this.renderOption }}\r\n menuIsOpen={this.menuIsOpen}\r\n styles={{\r\n control: (provided) => ({\r\n ...provided,\r\n fontSize: \"16px\",\r\n outerHeight: \"16px\",\r\n background: \"transparent\",\r\n minHeight: 0,\r\n fontFamily: \"Archivo, sf_pro_displayregular, sans-serif\",\r\n }),\r\n container: (provided) => ({\r\n ...provided,\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n width: \"100%\",\r\n }),\r\n indicatorSeparator: (provided) => ({\r\n ...provided,\r\n display: \"none\"\r\n }),\r\n indicatorContainer: (provided) => ({\r\n ...provided,\r\n padding: 0,\r\n }),\r\n valueContainer: (provided) => ({\r\n ...provided,\r\n lineHeight: \"20px\",\r\n }),\r\n menu: (provided) => ({\r\n ...provided,\r\n position: 'absolute', // Set the menu position to absolute\r\n zIndex: '9999', // Ensure higher z-index to overlap other elements\r\n width: \"100%\",\r\n }),\r\n singleValue: (provided) => ({\r\n ...provided,\r\n width: \"100%\",\r\n }),\r\n }}\r\n />\r\n
    \r\n :\r\n
    \r\n
      766 ? \"13px\" : \"\" }}>\r\n
    • this.onTabChange(0)}>\r\n Profile Details\r\n
    • \r\n
    • this.onTabChange(1)}>\r\n Saved Links\r\n
    • \r\n
    • this.onTabChange(2)}>\r\n Lockers\r\n
    • \r\n
    • this.onTabChange(3)}>\r\n Posts\r\n
    • \r\n
    • this.onTabChange(4)}>\r\n Brand Partners\r\n
    • \r\n
    • {\r\n e.preventDefault();\r\n this.props.toggleShareModal(getReferralShareLink(this.props.loggedInUser?.userName))\r\n }}>\r\n Refer A Creator\r\n
    • \r\n
    \r\n
    \r\n }\r\n
    \r\n {\r\n this.state.tab === this.infoTab ?\r\n
    \r\n {this.renderInfoIcon()}\r\n
    \r\n\r\n :\r\n <>\r\n }\r\n
    \r\n {this.displayContent()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n\r\n }\r\n\r\n};\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer };\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFollowersFollowingModal, closeAllModals, toggleProductPageModal, toggleFetchFollowing, toggleCreateLockerModal, toggleShareModal, toggleSharePostModal, toggleShareBlogModal, toggleAddProductOrDeepLinkModal })(withRouter(CreatorDashboard));","import React from \"react\"\r\n\r\nconst GridIconAlternate = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GridIconAlternate;","import React from \"react\";\r\nimport GridIconAlternate from \"components/icons/GridIconAlternate\";\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{types:[],interests:[],toggleAction:Function, isGrid:boolean, className:string}} props \r\n */\r\nconst FeedFilterBar = (props) => {\r\n let renderToggleIcon = () => {\r\n return props.isGrid === true ? : \r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {props.children || }\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default FeedFilterBar;","import { Link } from \"react-router-dom\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport ThreeDotsHorizontalIcon from \"components/icons/ThreeDotsHorizontalIcon\";\r\nimport ShareBar from \"components/Share/ShareBar\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport PlusIcon from \"components/icons/PlusIcon\";\r\nimport Tick from \"components/icons/Tick\";\r\nimport BookmarkIcon from \"../icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"../icons/ShareIosIcon\";\r\nimport InformationIcon from \"../icons/InformationIcon\";\r\nimport SaleIcon from \"../icons/SaleIcon\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\n\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\n\r\nimport Modal from \"components/Modal\";\r\nimport ProductReviewUsersList from \"components/ProductReviewUsers/ProductReviewUsersList\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{product:object, redirectUrl:string, likeProduct:Function, saveProduct:Function,likedByUser:boolean,savedByUser:boolean,likeCount:Number, addToInventory:Function}} props\r\n */\r\nconst ProductPost = (props) => {\r\n const { userMerchantProductId, shareCode, imageUrl, name, description, price, likes, rating, ratingCount, user } = props.product;\r\n const { likeCount, likedByUser, savedByUser } = props;\r\n const [showFullContent, setShowFullContent] = useState(false);\r\n const [shareLink, setShareLink] = useState(\"\");\r\n const coupon = shareCode;\r\n\r\n const collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const notOverflowedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n const [contentOverflowed, setContentOverflowed] = useState(false);\r\n const [contentStyle, setContentStyle] = useState(notOverflowedContentStyle);\r\n const [collapsed, setCollapsed] = useState(true);\r\n\r\n const [showAddedToInventoryPrompt, setAddedPrompt] = useState(false);\r\n\r\n const [showUserReviewList, setShowReviewList] = useState(false);\r\n const [ratingsUserMerchantProductId, setRatingUserMerchantProduct] = useState(0);\r\n\r\n const contentRef = React.createRef();\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n async function getShareLink() {\r\n let shareLink = await getProductShareLink(props.product?.shareCode);\r\n setShareLink(shareLink);\r\n };\r\n getShareLink();\r\n\r\n let contentOverflowed = contentRef?.current?.offsetHeight < contentRef?.current?.scrollHeight || contentRef?.current?.offsetWidth < contentRef?.current?.scrollWidth;\r\n if (contentOverflowed) {\r\n setContentOverflowed(contentOverflowed);\r\n setContentStyle(collapsedContentStyle);\r\n }\r\n }, []);\r\n\r\n function cropText(text) {\r\n if (text !== undefined) {\r\n if (!contentOverflowed) {\r\n return
    \r\n {text}\r\n
    \r\n } else {\r\n if (collapsed) {\r\n return (<>\r\n
    \r\n {text}\r\n
    \r\n\r\n
    \r\n { e.preventDefault(); setContentStyle(expandedContentStyle); setCollapsed(false) }}>\r\n see more\r\n \r\n
    \r\n );\r\n } else {\r\n return (<>\r\n
    \r\n\r\n {text}\r\n
    \r\n
    \r\n { e.preventDefault(); setContentStyle(collapsedContentStyle); setCollapsed(true) }}>\r\n see less\r\n \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n let customStyle = { textAlign: \"justify\", marginTop: \"1em\" }\r\n let buttonStyle = { backgroundColor: \"transparent\", fontSize: \"xx-small\", border: \"0px solid transparent\" }\r\n if (text?.length < 240) {\r\n return

    {text}

    \r\n }\r\n else if (text !== undefined && showFullContent === true) {\r\n return (\r\n

    \r\n {text}\r\n \r\n

    \r\n )\r\n }\r\n else if (text !== undefined && showFullContent === false) {\r\n return (\r\n

    \r\n {text.slice(0, 240)}\r\n \r\n

    \r\n )\r\n }\r\n }\r\n\r\n let renderBookmarkOverlay = () => {\r\n return ( {\r\n if (props.loggedInUser) {\r\n e.preventDefault()\r\n props.savePost(shareCode);\r\n } else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\", left: \"63px\" }}> \r\n \r\n );\r\n }\r\n\r\n let renderShareOverlay = () => {\r\n return ( {\r\n props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\", left: \"95px\" }}> \r\n \r\n );\r\n }\r\n\r\n let renderInfoOverlay = () => {\r\n return ( {\r\n props.toggleProductPageModal(props.product, props.loggedInUser, false, () => null, { type: null, shareCode: null, parentState: null }, false, !!(props.isSearch))\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderAddProductOverlay = () => {\r\n if (props.loggedInUser != null && (props.loggedInUser.proStatusId === 1) && !(props.product.approvedCreatorsOnly)) {\r\n if (props.inUserInventory !== true && showAddedToInventoryPrompt === false) {\r\n return (\r\n {\r\n e.preventDefault();\r\n setAddedPrompt(true);\r\n\r\n props.addToInventory(props.product.merchantProductId);\r\n }}>\r\n \r\n \r\n )\r\n } else if (showAddedToInventoryPrompt === true || props.inUserInventory === true) {\r\n return (\r\n \r\n e.preventDefault()} >\r\n \r\n \r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n\r\n function displayAddProduct() {\r\n if (props.loggedInUser != null && (props.loggedInUser.proStatusId === 1)) {\r\n if (props.inUserInventory !== true && showAddedToInventoryPrompt === false) {\r\n return (\r\n {\r\n e.preventDefault();\r\n setAddedPrompt(true);\r\n\r\n //setTimeout(() => setAddedPrompt(false),2500)\r\n\r\n props.addToInventory(props.product.merchantProductId);\r\n\r\n\r\n }}>\r\n \r\n Add to Inventory\r\n \r\n )\r\n }\r\n else if (showAddedToInventoryPrompt === true || props.inUserInventory === true) {\r\n return (\r\n e.preventDefault()} className=\"d-inline-flex align-items-center\" style={{ pointerEvents: \"none\" }}>\r\n \r\n In Inventory\r\n \r\n\r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n const renderRatingsModal = ratingsUserMerchantProductId => {\r\n if (props.loggedInUser) {\r\n setRatingUserMerchantProduct(ratingsUserMerchantProductId);\r\n setShowReviewList(true);\r\n }\r\n else {\r\n props.toggleSignUpModal();\r\n }\r\n }\r\n\r\n const toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n } \r\n\r\n const renderProductDetails = () => {\r\n return (\r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={() => {\r\n if (props.product?.ratingCount > 0) {\r\n renderRatingsModal(props.product.userMerchantProductId)\r\n }\r\n }}\r\n />\r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n renderRatingsModal(props.product.userMerchantProductId);\r\n }}>\r\n {props.product?.ratingCount > 0 ? `(${props.product?.ratingCount})` : null}\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    {props.product.manufacturer?.toLowerCase().includes(\"rcktemp\") ? props.product.merchant : props.product.manufacturer}{props.product.sale ? : \"\"}
    \r\n
    \r\n {/*
    */}\r\n {/*
    {props.product.name.toUpperCase()}
    */}\r\n {/*
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {toTitleCase(props.product.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {props.product.sale && !!(props.product.salePrice) ? \"$\" + props.product.salePrice.toFixed(2) : <>}
    ${props.product.sale && !!(props.product.salePrice) && !!(props.product.originalPrice) ? props.product.originalPrice.toFixed(2) : props.product.price.toFixed(2)}
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n const displayUserReviewList = () => {\r\n return (\r\n setShowReviewList(!showUserReviewList)}\r\n >\r\n \r\n\r\n \r\n )\r\n }\r\n\r\n\r\n const url = \"/Product/ProductPage/\" + props.product.shareCode + \"?r=1\";\r\n\r\n return (\r\n
    \r\n {displayUserReviewList()}\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {renderBookmarkOverlay()}\r\n {renderShareOverlay()}\r\n {renderAddProductOverlay()}\r\n {renderInfoOverlay()}\r\n {props.showRecommendations ? props.renderThumbsUpOverlay(props.product, true) : <>}\r\n {renderSaleOverlay(props.product.sale)}\r\n \r\n \r\n \r\n {props.displayStarRatings ? renderProductDetails() : <>}\r\n
    \r\n\r\n
    \r\n\r\n {\r\n description !== undefined ? (\r\n
    \r\n {cropText(description)}\r\n
    \r\n ) : null\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n )\r\n\r\n}\r\n\r\n\r\n\r\nexport default connect(null, { toggleShareModal, toggleProductPageModal })(ProductPost);","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport FeedPost from \"components/Feed/FeedPost\";\r\nimport ProductPost from \"components/Feed/ProductPost\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport FeedThreeColumn from \"components/Feed/FeedThreeColumn\";\r\nimport FeedSingleColumn from \"components/Feed/FeedSingleColumn\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport InformationIcon from \"../icons/InformationIcon\";\r\nimport { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport ShareIosIcon from \"../icons/ShareIosIcon\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport BookmarkIcon from \"../icons/BookmarkIcon\";\r\nimport PlusIcon from \"../icons/PlusIcon\";\r\nimport SaleIcon from \"../icons/SaleIcon\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\nimport Tick from \"../icons/Tick\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\nimport RatingIcon from \"../../components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"../../components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"../../components/icons/RatingIconEmpty\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\nimport Modal from \"components/Modal\";\r\nimport ProductReviewUsersList from \"components/ProductReviewUsers/ProductReviewUsersList\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * products:[\r\n * {\r\n * description:string, \r\n * imageUrl:string, \r\n * likedByUser:boolean, \r\n * likes:Number, \r\n * merchantProductId:Number,\r\n * name:string,\r\n * price:Number,\r\n * rating:Number,\r\n * ratingCount:Number,\r\n * savedByUser:boolean,\r\n * shareCode:string,\r\n * url:string,\r\n * userDescription:string,\r\n * userMerchantProductId: Number\r\n * }\r\n * ], \r\n * isGrid:boolean,\r\n * finishedFetching:Function,\r\n * fetchMore:Function\r\n * }} props\r\n */\r\nclass ProductFeed extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n products: [],\r\n showAddedToInventoryPrompt: false,\r\n showRecommendations: true,\r\n displayStarRatings: false,\r\n ratingsUserMerchantProductId: 0,\r\n }\r\n }\r\n\r\n componentDidMount() { \r\n this.setState({ products: this.props.products });\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (this.props.products != undefined && this.props.products != null && this.props.products !== prevProps.products) {\r\n this.setState({ products: [...this.props.products] })\r\n }\r\n }\r\n\r\n addProductToInventory = async (merchantProductId) => {\r\n var addModel = { MerchantProductId: merchantProductId };\r\n let products = [...this.state.products];\r\n let loc = products.findIndex(prod => prod.merchantProductId === merchantProductId);\r\n\r\n products[loc].inUserInventory = !products[loc].inUserInventory;\r\n\r\n this.setState({ products });\r\n\r\n var url = \"/Products/AddProduct\";\r\n await postRequest(url, addModel);\r\n }\r\n\r\n likeProduct = async (shareCode) => {\r\n let productsCopy = [...this.state.products];\r\n let i = productsCopy.findIndex(prod => prod.shareCode === shareCode);\r\n if (i > -1) {\r\n let num = productsCopy[i].likedByUser === true ? -1 : 1;\r\n let coupon = shareCode.split(\"/\")[4];\r\n\r\n productsCopy[i].likes = productsCopy[i].likes + num;\r\n productsCopy[i].likedByUser = !productsCopy[i].likedByUser;\r\n this.setState({ products: productsCopy });\r\n await postRequest(`/products/like?shareCode=${shareCode}`);\r\n }\r\n\r\n }\r\n\r\n saveProduct = async (shareCode) => {\r\n let productsCopy = [...this.state.products];\r\n let i = productsCopy.findIndex(prod => prod.shareCode === shareCode);\r\n if (i > -1) {\r\n let saved = !productsCopy[i].savedByUser;\r\n let path = productsCopy[i].savedByUser === true ? \"Unsave\" : \"Save\";\r\n\r\n productsCopy[i].savedByUser = saved;\r\n\r\n this.setState({ products: productsCopy });\r\n await postRequest(`/Products/${path}?id=${productsCopy[i].userMerchantProductId}`);\r\n }\r\n\r\n }\r\n\r\n setProduct = (product) => {\r\n let products = [...this.state.products];\r\n let i = products.findIndex((p) => { return p.id === product.id });\r\n products[i] = product;\r\n\r\n this.setState({ products });\r\n }\r\n\r\n renderBookmarkOverlay = (shareCode, savedByUser) => {\r\n return ( {\r\n if (this.props.loggedInUser) {\r\n e.preventDefault()\r\n await this.saveProduct(shareCode);\r\n } else {\r\n this.props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n}\r\n\r\n renderShareOverlay = (shareLink) => {\r\n return ( {\r\n this.props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderThumbsUpOverlay = (product, singleColumn = false) => {\r\n if (this.state.showRecommendations) {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n return this.toggleCreatorsModal(productId)} style={{ cursor: \"pointer\", left: singleColumn ? \"25px\" : \"22px\", top: singleColumn ? \"22px\" : \"\" }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n }\r\n }\r\n\r\n\r\n toggleCreatorsModal = (productId) => {\r\n const followersFollowing = \"creators\";\r\n this.props.toggleFollowersFollowingModal(!!(this.props.loggedInUser) ? this.props.loggedInUser.id : -1, followersFollowing, productId);\r\n }\r\n\r\n renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n renderAddProductOverlay = (product) => {\r\n if (this.props.loggedInUser != null && (this.props.loggedInUser.proStatusId === 1) && !(product.approvedCreatorsOnly)) {\r\n if (product.inUserInventory !== true) {\r\n return (\r\n {\r\n e.preventDefault();\r\n this.addProductToInventory(product.merchantProductId);\r\n }}>\r\n \r\n \r\n )\r\n } else if (product.inUserInventory === true) {\r\n return (\r\n { e.preventDefault(); }} >\r\n \r\n \r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n renderRatingsModal = ratingsUserMerchantProductId => {\r\n if (this.props.loggedInUser) {\r\n this.setState({ ratingsUserMerchantProductId, showUserReviewList: true });\r\n }\r\n else {\r\n this.props.toggleSignUpModal();\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null, { type: null, shareCode: null, parentState: null }, false, !!(this.props.isSearch))\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n mapProducts = () => {\r\n let sizes = [\"sm\"];\r\n let deviceSize = sizes.includes(this.props.deviceSize);\r\n let { products } = this.state;\r\n let { isGrid } = this.props;\r\n return products.map((product, i) => {\r\n if (isGrid === true) {\r\n return (\r\n
    \r\n
    \r\n {this.renderInfoOverlay(product)}\r\n {this.renderAddProductOverlay(product)}\r\n {this.renderThumbsUpOverlay(product)}\r\n {deviceSize ? this.renderSaleOverlay(product.sale) : <>}\r\n \r\n
    \r\n\r\n
    \r\n\r\n {this.state.displayStarRatings ?\r\n
    \r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={() => {\r\n if (product.ratingCount > 0) {\r\n this.renderRatingsModal(product.userMerchantProductId)\r\n }\r\n }} />\r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n this.renderRatingsModal(product.userMerchantProductId);\r\n }}>\r\n {product.ratingCount > 0 ? `(${product.ratingCount})` : null}\r\n \r\n \r\n
    \r\n : <>\r\n }\r\n\r\n
    \r\n
    {product.manufacturer?.toLowerCase().includes(\"rcktemp\") ? product.merchant : product.manufacturer}{product.sale && !deviceSize ? : \"\"}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(product.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {product.sale && !!(product.salePrice) ? \"$\" + product.salePrice.toFixed(2) : <>}
    ${product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice.toFixed(2) : product.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n\r\n })\r\n }\r\n\r\n displayUserReviewList = () => {\r\n return (\r\n this.setState({ showUserReviewList: !this.state.showUserReviewList })}\r\n >\r\n \r\n\r\n \r\n )\r\n }\r\n\r\n render() {\r\n let { isGrid } = this.props;\r\n\r\n if (isGrid === true) {\r\n return (\r\n
    \r\n {this.displayUserReviewList()}\r\n }\r\n style={{ overflow: \"initial\" }}\r\n >\r\n
    \r\n {this.mapProducts()}\r\n
    \r\n \r\n\r\n
    \r\n\r\n )\r\n }\r\n else {\r\n return (\r\n
    \r\n
    \r\n }\r\n style={{ overflow: \"initial\" }}\r\n >\r\n {this.mapProducts()}\r\n\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { interactionState: storeState.interactionReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal })(ProductFeed);","import React, { Component } from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport FeedFilterBar from \"components/FeedFilterBar\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport Feed from \"components/Feed/Feed\";\r\nimport ProductFeed from \"components/Feed/ProductFeed\";\r\nimport NoResults from \"components/NoResults\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport GridIconAlternate from \"components/icons/GridIconAlternate\";\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nexport default class Saves extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n lockers: [],\r\n products: [],\r\n posts: [],\r\n isGrid: true,\r\n selectedCase: 2,\r\n isLoading: true,\r\n finishedFetchingPosts: false,\r\n finishedFetchingLockers: false,\r\n finishedFetchingProducts: false\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n //let data = await this.fetchSavedPosts();\r\n let products = await this.fetchSavedProducts(0, 12);\r\n let finishedFetchingProducts = !(products) || products?.length < 12;\r\n let posts = await this.fetchSavedPosts([1, 3, 4], 0, 12);\r\n let lockers = await this.fetchSavedPosts([2], 0, 12);\r\n\r\n this.setState({\r\n products: products, finishedFetchingProducts, posts: posts, lockers: lockers, isLoading: false,\r\n selectedCase: products.length > 0 ? 2 : posts.length > 0 ? 3 : 1\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * @param {Array} postTypes\r\n * @param {number} skip\r\n * @param {number} take\r\n * @returns {Array}\r\n */\r\n fetchSavedPosts = async (postTypes, skip, take) => {\r\n let url = `/api/post/getSavedPosts`;\r\n\r\n let params = new URLSearchParams();\r\n if (postTypes?.length > 0) {\r\n postTypes.forEach((postType) => params.append(\"postTypeIds\", postType));\r\n }\r\n params.append(\"skip\", skip);\r\n params.append(\"take\", take);\r\n\r\n let fullUrl = params.toString().length > 0 ? `${url}?${params.toString()}` : url;\r\n let data = await getRequest(fullUrl);\r\n if (data === undefined || data === null) {\r\n return [];\r\n }\r\n else {\r\n return data;\r\n }\r\n\r\n //this.setState({ posts: posts,lockers:lockers });\r\n\r\n }\r\n\r\n fetchSavedProducts = async (skip, take) => {\r\n let url = `/Products/GetSavedProducts?skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n if (data === undefined || data === null) {\r\n return [];\r\n }\r\n else {\r\n return data;\r\n }\r\n //this.setState({ products: data });\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Products\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Posts\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n },\r\n {\r\n name: \"Lockers\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n }\r\n ]\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n fetchMoreProducts = async () => {\r\n let skip = this.state.posts.length;\r\n\r\n let newProducts = await this.fetchSavedProducts(skip, 24);\r\n let finishedFetching = newProducts?.length < 24\r\n let updatedProducts = [...this.state.products, ...newProducts];\r\n\r\n this.setState({products: updatedProducts, finishedFetchingProducts: finishedFetching})\r\n }\r\n\r\n fetchMorePostsOrLockers = async () => {\r\n let { selectedCase } = this.state;\r\n let postTypes = (selectedCase === 3) ? [1, 3, 4] : (selectedCase === 1) ? [2] : [1, 2, 3];\r\n\r\n let postsToChange = (selectedCase === 3) ? this.state.posts : this.state.lockers;\r\n let skip = postsToChange.length;\r\n\r\n let newPosts = await this.fetchSavedPosts(postTypes, skip, 24);\r\n\r\n let updatedPosts = [...postsToChange, ...newPosts];\r\n let finishedFetching = newPosts?.length < 10\r\n if (selectedCase === 3) {\r\n\r\n this.setState({ posts: updatedPosts, finishedFetchingPosts: finishedFetching })\r\n }\r\n else if (selectedCase === 1) {\r\n this.setState({ lockers: updatedPosts, finishedFetchingLockers: finishedFetching })\r\n }\r\n\r\n }\r\n\r\n displayFeed = () => {\r\n let { selectedCase } = this.state;\r\n\r\n if (selectedCase === 2) {\r\n if (this.state.products?.length === 0) {\r\n return ;\r\n }\r\n if (this.state.isGrid === true) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n } else {\r\n return \r\n }\r\n\r\n } else if (selectedCase === 1 || selectedCase === 3) {\r\n let postsToShow = (selectedCase === 1) ? this.state.lockers : this.state.posts;\r\n if (postsToShow?.length === 0) {\r\n return (\r\n \r\n )\r\n } else {\r\n let finishedFetching = (selectedCase === 1) ? this.state.finishedFetchingLockers : this.state.finishedFetchingPosts;\r\n return (\r\n \r\n\r\n )\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n updatePosts = (newPosts) => {\r\n let { selectedCase } = this.state;\r\n\r\n if (selectedCase === 1) {\r\n this.setState({ lockers: newPosts });\r\n }\r\n else {\r\n this.setState({ posts: newPosts });\r\n }\r\n \r\n }\r\n\r\n render() {\r\n let breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/Saves', text: 'Saves', active: true }];\r\n let { deviceSize } = this.props;\r\n let { isGrid } = this.state;\r\n let isSmOrMd = deviceSize == \"sm\" || deviceSize == \"md\";\r\n if (this.state.isLoading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n RockPorch - Saves\r\n \r\n \r\n )\r\n }\r\n else {\r\n return (\r\n <>\r\n \r\n RockPorch - Saves\r\n \r\n
    \r\n \r\n

    My Saves

    \r\n

    View saved content here

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n {this.displayFeed()}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nconst AvatarIconSmall = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\nexport default AvatarIconSmall;","import * as React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport PenIcon from \"./icons/PenIcon\"\r\nimport AvatarIconSmall from \"./icons/AvatarIconSmall\";\r\nimport BellIcon from \"./icons/BellIcon\";\r\nimport GridIcon from \"./icons/GridIcon\";\r\nimport AnalyticsIcon from \"./icons/AnalyticsIcon\";\r\nimport GreyTickIcon from \"./icons/GreyTickIcon\";\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport LightningIcon from \"components/icons/LightningIcon\";\r\nimport ShoppingCartIcon from \"components/icons/ShoppingCartIcon\";\r\nimport WritingIcon from \"components/icons/WritingIcon\";\r\n\r\nconst AccountSidebar = (props) => {\r\n const isCreator = props?.loggedInUser?.proStatusId === 1;\r\n\r\n const renderGoPro = () => {\r\n if (props?.loggedInUser?.proStatusId === 0) {\r\n return (
  • \r\n
    \r\n
    Apply as Creator
    \r\n
    \r\n
  • )\r\n }\r\n }\r\n\r\n return (\r\n
      \r\n
    • \r\n
      \r\n
      Interests
      \r\n
      \r\n
    • \r\n\r\n
    • \r\n
      \r\n
      Account Settings
      \r\n
      \r\n
    • \r\n
    • \r\n
      \r\n \r\n
      \r\n \r\n
      \r\n
      My Saves
      \r\n \r\n
      \r\n
    • \r\n\r\n {renderGoPro()}\r\n
    \r\n );\r\n};\r\n\r\nexport default AccountSidebar;","import * as React from \"react\";\r\nimport AccountSidebar from \"../../components/AccountSidebar\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\n\r\nimport { Form, FormGroup, Label, Input, PopoverBody } from \"reactstrap\";\r\nimport { getRequest, postRequest } from \"../../sharedUtils/httpUtils\";\r\n\r\nimport { WithContext as ReactTags } from 'react-tag-input';\r\nimport { Popover, PopoverHeader } from \"reactstrap\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nlet readOnlyFields = [\"profileUrl\"];\r\n\r\nlet userFormData = {\r\n displayName: \"\",\r\n profileUrl: \"\",\r\n profileBannerUrl: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n website: \"\",\r\n youtube: \"\",\r\n facebook: \"\",\r\n instagram: \"\",\r\n tikTok: \"\",\r\n strava: \"\",\r\n};\r\n\r\nconst EditProfile = (props) => {\r\n\r\n const [formData, setFormData] = React.useState(userFormData);\r\n const [profilePicUrl, setProfilePicUrl] = React.useState(\"\");\r\n const [profilePic, setProfilePic] = React.useState(\"\");\r\n const [savingProfile, setSavingProfile] = React.useState(false);\r\n const [profilePicUpdated, setProfilePicUpdated] = React.useState(false);\r\n const [uploadingImage, setUploadingImage] = React.useState(false);\r\n const [showSavedProfile, setShowSavedProfile] = React.useState(false);\r\n const [profilePicUploadError, setProfilePicUploadError] = React.useState(false);\r\n\r\n let selectedFile = \"\";\r\n\r\n //const setSelectedFile = async (e) => {\r\n // setUploadingImage(true);\r\n // //e.preventDefault();\r\n // setProfilePic(e.target.files[0]);\r\n\r\n // const formData = new FormData();\r\n // formData.append(\"File\", e.target.files[0]);\r\n\r\n // let uploadProfilePicUrl = '/api/Account/UploadProfilePic';\r\n\r\n // let user = await postRequest(uploadProfilePicUrl, formData, null, false);\r\n // setProfilePicUrl(user.imageUrl);\r\n // setProfilePic(\"\");\r\n\r\n // setProfilePicUpdated(true);\r\n // setUploadingImage(false);\r\n\r\n // props.setLoggedInUser(user);\r\n\r\n // setTimeout(() => setProfilePicUpdated(false), 3000);\r\n //}\r\n\r\n const setSelectedFile = async (e) => {\r\n e.preventDefault();\r\n\r\n if (e.target.files?.length > 0 && e.target.files[0].type?.startsWith('image/')) {\r\n const file = e.target.files[0];\r\n\r\n setUploadingImage(true);\r\n setProfilePic(file);\r\n\r\n const formData = new FormData();\r\n formData.append('File', file);\r\n\r\n let uploadProfilePicUrl = '/api/Account/UploadProfilePic';\r\n\r\n postRequest(uploadProfilePicUrl, formData, null, false)\r\n .then((user) => {\r\n setProfilePicUrl(user.imageUrl);\r\n setProfilePicUpdated(true);\r\n props.setLoggedInUser(user);\r\n setTimeout(() => setProfilePicUpdated(false), 3000);\r\n })\r\n .catch((error) => {\r\n console.error(\"Error uploading profile pic:\", error);\r\n });\r\n\r\n setUploadingImage(false);\r\n e.target.value = null;\r\n } else {\r\n setProfilePicUploadError(true);\r\n }\r\n };\r\n\r\n\r\n const getData = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n setFormData(convertToFormData(props.loggedInUser));\r\n setProfilePicUrl(props.loggedInUser.imageUrl || \"/images/avatar2.svg\");\r\n };\r\n\r\n React.useEffect(() => { getData() }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const convertToFormData = (user) => {\r\n return {\r\n displayName: user.name || \"\",\r\n firstName: user.firstName || \"\",\r\n lastName: user.lastName || \"\",\r\n bio: user.bio || \"\",\r\n tagLine: user.tagLine || \"\",\r\n website: user.website || \"\",\r\n youtube: user.googleUsername || \"\",\r\n facebook: user.facebookUsername || \"\",\r\n instagram: user.instagramUsername || \"\",\r\n tikTok: user.tikTokUsername || \"\",\r\n strava: user.stravaUsername || \"\"\r\n };\r\n }\r\n\r\n const convertToUserModel = () => {\r\n return {\r\n name: formData.displayName,\r\n firstName: formData.firstName,\r\n lastName: formData.lastName,\r\n bio: formData.bio,\r\n tagLine: formData.tagLine,\r\n website: formData.website,\r\n googleUsername: formData.youtube,\r\n facebookUsername: formData.facebook,\r\n instagramUsername: formData.instagram,\r\n tikTokUsername: formData.tikTok,\r\n stravaUsername: formData.strava,\r\n imageUrl: props.loggedInUser.imageUrl,\r\n userName: props.loggedInUser.userName,\r\n email: props.loggedInUser.email,\r\n\r\n phoneNumber: props.loggedInUser.phoneNumber,\r\n proStatusId: props.loggedInUser.proStatusId,\r\n address: props.loggedInUser.address,\r\n city: props.loggedInUser.city,\r\n state: props.loggedInUser.state,\r\n postalCode: props.loggedInUser.postalCode,\r\n country: props.loggedInUser.country,\r\n\r\n onboardingComplete: props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: props.loggedInUser.profileBannerUrl,\r\n\r\n quickStart: props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n const onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n if (formKey === 'bio') {\r\n e.target.style.height = 'inherit';\r\n e.target.style.height = `${e.target.scrollHeight}px`;\r\n }\r\n\r\n setFormData({ ...formData, [formKey]: newData });\r\n\r\n };\r\n\r\n const onClickImageUpload = (event) => {\r\n event.preventDefault();\r\n document.getElementById(\"profiePicInput\").click();\r\n };\r\n\r\n const onSubmit = async (event) => {\r\n event.preventDefault();\r\n setSavingProfile(true);\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, convertToUserModel());\r\n props.setLoggedInUser(user);\r\n setShowSavedProfile(true);\r\n\r\n setTimeout(() => { setSavingProfile(false); setShowSavedProfile(false) }, 2000);\r\n \r\n };\r\n\r\n const mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n if (readOnlyFields.includes(field.name) || uploadingImage) {\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n readOnly=\"readonly\"\r\n />\r\n \r\n );\r\n } else {\r\n if (field.name === \"bio\") {\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n style={{overflow: \"hidden\"}}\r\n />\r\n );\r\n }\r\n if (field.prepend) {\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {field.prepend}\r\n
    \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n maxLength={field.name === \"displayName\" ? 20 : undefined}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n maxLength={field.name === \"displayName\" ? 20 : undefined}\r\n />\r\n \r\n );\r\n }\r\n });\r\n }\r\n\r\n const mapInputFieldsSocial = () => {\r\n let fields = [\r\n { name: \"instagram\", title: \"Instagram Username\", prepend: 'www.instagram.com/' },\r\n { name: \"facebook\", title: \"Facebook Username\", prepend: 'www.facebook.com/' },\r\n { name: \"youtube\", title: \"YouTube Channel\", prepend: 'www.youtube.com/' },\r\n { name: \"tikTok\", title: \"TikTok Username\", prepend: 'www.tiktok.com/@' },\r\n { name: \"strava\", title: \"Strava Username\", prepend: 'www.strava.com/athletes/' },\r\n ];\r\n return mapInputFields(fields);\r\n };\r\n\r\n const mapInputFieldsPublic = () => {\r\n let fields = [\r\n { name: \"displayName\", title: \"Name\" },\r\n //{ name: \"profileUrl\", title: \"Profile Url\" },\r\n { name: \"tagLine\", title: \"Tag Line\" },\r\n { name: \"bio\", title: \"Bio\" },\r\n { name: \"website\", title: \"Website\",prepend:\"https://\" }\r\n ];\r\n return mapInputFields(fields);\r\n };\r\n\r\n const renderSubmit = () => {\r\n let submitDisabled = true;\r\n\r\n for (let key in formData) {\r\n if (formData[key] !== null && formData[key] !== \"\") {\r\n submitDisabled = false;\r\n break;\r\n }\r\n }\r\n\r\n if (profilePic !== \"\") {\r\n submitDisabled = false;\r\n }\r\n\r\n if (submitDisabled) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n const breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/EditProfile', text: 'Edit Profile', active: true }];\r\n return (\r\n
    \r\n\r\n \r\n RockPorch - Edit Profile\r\n \r\n \r\n

    Edit Profile

    \r\n

    Manage what people see about you

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n [\"sm\", \"md\"].includes(props.deviceSize) === false ? (\r\n
    \r\n \r\n
    \r\n ): \r\n }\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Public Profile
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n { onClickImageUpload(e) }}\r\n id=\"changeProfilePic\"\r\n >\r\n {uploadingImage ?\r\n
    \r\n Loading...\r\n
    : \"Change\"}\r\n \r\n setProfilePicUploadError(false)} placement=\"left\" isOpen={profilePicUploadError} target=\"changeProfilePic\">\r\n \r\n Make sure to select a single image file\r\n \r\n \r\n setProfilePicUpdated(false)}\r\n >\r\n Profile Picture Updated\r\n \r\n
    {\r\n props.history.push(`/Profile/${props.loggedInUser.userName}`);\r\n }}>\r\n Go to profile
    \r\n
    {\r\n this.setDefaultProfilePicture();\r\n }}>\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n
    \r\n {profilePic && (\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n {!profilePic && (\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {mapInputFieldsPublic()}\r\n\r\n
    Social Profiles
    \r\n {mapInputFieldsSocial()}\r\n\r\n {renderSubmit()}\r\n\r\n setSavingProfile(false)}\r\n >\r\n Profile changes saved\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default EditProfile;\r\n","import * as React from \"react\";\r\nimport { FormGroup, Label, Input } from \"reactstrap\";\r\nimport { NavLink, withRouter } from \"react-router-dom\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport 'react-phone-number-input/style.css'\r\nimport PhoneInput from 'react-phone-number-input'\r\nimport { Helmet } from 'react-helmet';\r\n\r\n\r\nclass CreatorApplication extends React.Component {\r\n\r\n state = {\r\n pageNumber: 0,\r\n spinner: false,\r\n referralUserIdFlag: true,\r\n upcomingInput: \"\",\r\n showPlatformUserNameMounted: false,\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (prevProps.formData?.upcomingProjects.length < this.props.formData?.upcomingProjects.length) {\r\n this.setState({ upcomingInput: \"\" });\r\n }\r\n }\r\n\r\n showPlatformUserName = () => {\r\n let platforms = [\r\n { name: \"instagram\", title: \"Instagram Username\", prepend: 'www.instagram.com/' },\r\n { name: \"facebook\", title: \"Facebook Username\", prepend: 'www.facebook.com/' },\r\n { name: \"youtube\", title: \"YouTube Channel\", prepend: 'www.youtube.com/' },\r\n { name: \"tiktok\", title: \"TikTok Username\", prepend: 'www.tiktok.com/@' },\r\n { name: \"blog\", title: \"Blog URL\", prepend: 'https://' },\r\n ];\r\n\r\n if (this.props.formData.platform !== \"\") {\r\n let platform = this.props.formData.platform.toLowerCase();\r\n if (!this.state.showPlatformUserNameMounted && this.props.formData[\"platformUsername\"] === \"\") {\r\n this.props.formData[\"platformUsername\"] = !!this.props.formData[platform] ? this.props.formData[platform] : \"\";\r\n }\r\n if (!this.state.showPlatformUserNameMounted) {\r\n this.setState({ showPlatformUserNameMounted: true });\r\n }\r\n\r\n let selectedPlatform = platforms.filter((p) => p.name === platform)[0];\r\n\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {selectedPlatform.prepend}\r\n
    \r\n this.props.onInputChange(e)}\r\n value={this.props.formData[\"platformUsername\"]}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n return (\r\n \r\n \r\n this.props.onInputChange(e)}\r\n value={this.props.formData[field.name]}\r\n />\r\n \r\n );\r\n });\r\n }\r\n\r\n onInputChange = (e) => {\r\n this.setState({ upcomingInput: e.target.value });\r\n };\r\n\r\n renderNext = () => {\r\n const hearAboutUsRendered = this.state.referralUserIdFlag && !(this.props.loggedInUser?.referralUserId);\r\n const audienceNotUsOrUsPlusState = this.props.formData?.audience !== \"United States\" || (this.props.formData?.audience === \"United States\" && !!(this.props.formData?.usState));\r\n\r\n if (this.state.pageNumber === 1 && this.props.formData.mediaPermission !== \"\") {\r\n return (
    \r\n \r\n \r\n
    );\r\n } else if (this.state.pageNumber === 1 && this.props.formData.mediaPermission === \"\") {\r\n return (
    \r\n \r\n \r\n
    );\r\n } else if (this.props.formData?.realName.trim() === \"\" || this.props.formData?.phone.trim().length < 12|| this.props.formData?.platformUsername.trim() === \"\" || this.props.formData?.audience.trim() === \"\" || !audienceNotUsOrUsPlusState || this.props.formData?.platform.trim() === \"\" || this.props.formData?.followers.trim() === \"\" || (hearAboutUsRendered && this.props.formData?.hearAboutUs === \"\") ) {\r\n return ();\r\n }\r\n return ();\r\n }\r\n\r\n renderBackApply = () => {\r\n if (this.props.formData?.learnMore != \"\" && this.state.upcomingInput.length === 0) {\r\n return (
    \r\n \r\n \r\n
    );\r\n }\r\n\r\n if (!(this.props.formData?.learnMore) || this.state.upcomingInput.length > 0) {\r\n return (
    \r\n \r\n \r\n
    );\r\n }\r\n\r\n return (
    \r\n \r\n \r\n
    );\r\n }\r\n\r\n apply = async () => {\r\n this.setState({ spinner: true });\r\n\r\n let formData = this.props.formData;\r\n if (formData.hearAboutUs === \"referred\") {\r\n formData.hearAboutUs = \"\";\r\n }\r\n\r\n let userUrl = '/api/Account/ApplyForPro';\r\n await postRequest(userUrl, formData);\r\n\r\n this.setState({ pageNumber: this.state.pageNumber + 1 })\r\n this.setState({ spinner: false });\r\n this.props.history.push('/Nav/Explore');\r\n }\r\n\r\n renderStates = () => {\r\n const states = [\r\n \"None\", \"Alabama\", \"Alaska\", \"Arizona\", \"Arkansas\", \"California\", \"Colorado\",\r\n \"Connecticut\", \"Delaware\", \"Florida\", \"Georgia\", \"Hawaii\", \"Idaho\", \"Illinois\",\r\n \"Indiana\", \"Iowa\", \"Kansas\", \"Kentucky\", \"Louisiana\", \"Maine\", \"Maryland\",\r\n \"Massachusetts\", \"Michigan\", \"Minnesota\", \"Mississippi\", \"Missouri\", \"Montana\",\r\n \"Nebraska\", \"Nevada\", \"New Hampshire\", \"New Jersey\", \"New Mexico\", \"New York\",\r\n \"North Carolina\", \"North Dakota\", \"Ohio\", \"Oklahoma\", \"Oregon\", \"Pennsylvania\",\r\n \"Rhode Island\", \"South Carolina\", \"South Dakota\", \"Tennessee\", \"Texas\", \"Utah\",\r\n \"Vermont\", \"Virginia\", \"Washington\", \"West Virginia\", \"Wisconsin\", \"Wyoming\"\r\n ];\r\n return states.map((state, i) => {\r\n if (i === 0) {\r\n return \r\n })\r\n }\r\n\r\n renderPage0 = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {this.props.creatorApp ?\r\n

    Tell Us About Yourself

    :\r\n
    Your Info
    }\r\n

    We just need to know a few things about you

    \r\n {this.mapInputFields([{ title: \"Full Name\", name: \"realName\" }])}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.showPlatformUserName()}\r\n {this.mapInputFields([{ title: `${this.props.formData[\"platform\"]} Follower Count `, name: \"followers\" }])}\r\n \r\n \r\n this.handleHearAboutUsChange(e)}\r\n value={this.props.formData.hearAboutUs}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {this.renderNext()}\r\n
    \r\n
    \r\n
    \r\n
    );\r\n }\r\n\r\n handleFileChange = (event) => {\r\n const file = event.target.files[0];\r\n\r\n if (file) {\r\n this.props.handleUpload(file, this.state.upcomingInput);\r\n }\r\n };\r\n\r\n renderPage1 = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Content Permission

    \r\n

    By signing up for the RockPorch platform, you agree that media you load onto RockPorch\r\n may appear in promotional posts that showcase the RockPorch website as a whole\r\n (such as a scroll through our feed for a reel demonstrating functionality of the platform).\r\n

    \r\n

    \r\n We also like to feature Creators from time to time on our website and social media channels, with your explicit permission. \r\n

    \r\n\r\n \r\n \r\n
    this.props.onInputChange(e)}>\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderNext(true)}\r\n
    \r\n
    \r\n
    \r\n
    );\r\n }\r\n\r\n renderSavedFileNames() {\r\n const { formData } = this.props;\r\n const upcomingProjects = formData?.upcomingProjects;\r\n\r\n if (upcomingProjects) {\r\n // Split the upcomingProjects string by commas into an array and trim each string\r\n const savedFileNames = upcomingProjects.split(',').map((fileName) => {\r\n const index = fileName.indexOf('!@#');\r\n if (index !== -1) {\r\n return fileName.substring(0, index);\r\n }\r\n return fileName.trim();\r\n });\r\n\r\n return (\r\n
    \r\n
    Saved attachments:
    \r\n
      \r\n {savedFileNames.map((fileName, index) => {\r\n // Use regex to replace \"!@#\" with spaces and hyphens\r\n const formattedFileName = fileName.replace(/!@#/g, ' - ');\r\n\r\n return (\r\n
    • {formattedFileName}
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n renderPage2 = () => {\r\n const savedFileNames = this.props.savedFileNames;\r\n if (this.props.creatorApp) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Tell Us About Yourself

    \r\n \r\n \r\n
    this.props.onInputChange(e)}>\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n this.onInputChange(e)}\r\n value={this.state.upcomingInput}\r\n placeholder=\"Describe your attachment here...\"\r\n style={{ marginRight: '10px' }}\r\n />\r\n (this.fileInput = input)}\r\n />\r\n {this.props.isLoading ?\r\n \r\n :\r\n this.fileInput.click()}\r\n disabled={this.state.upcomingInput.length === 0}\r\n >\r\n Add\r\n \r\n }\r\n
    \r\n \r\n There was an error uploading the spreadsheet. Try again.\r\n

    \r\n
    \r\n {this.renderSavedFileNames()}\r\n
    \r\n {this.renderBackApply()}\r\n
    \r\n
    \r\n
    \r\n
    );\r\n }\r\n }\r\n\r\n\r\n handleHearAboutUsChange = async e => {\r\n await this.props.onInputChange(e);\r\n };\r\n\r\n\r\n renderPage = () => {\r\n if (this.state.pageNumber === 0) {\r\n return this.renderPage0();\r\n } else if (this.state.pageNumber === 1) {\r\n return this.renderPage1();\r\n } \r\n return this.renderPage2();\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n \r\n RockPorch - Apply as Creator\r\n \r\n {this.renderPage()}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default CreatorApplication;","import * as React from \"react\";\r\nimport AccountSidebar from \"../../components/AccountSidebar\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport Modal from \"../../components/Modal\";\r\nimport CreatorApplication from \"../../components/CreatorApplication\";\r\n\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport { postRequest } from \"../../sharedUtils/httpUtils\";\r\n\r\nlet readOnlyFields = [\"profileUrl\"];\r\n\r\nlet userFormData = {\r\n youtube: \"\",\r\n facebook: \"\",\r\n instagram: \"\",\r\n realName: \"\",\r\n audience: \"\",\r\n postFrequency: \"\",\r\n timeCommitment: \"\",\r\n platform: \"\",\r\n platformUsername: \"\",\r\n followers: \"\"\r\n};\r\n\r\nconst GoPro = (props) => {\r\n const [formData, setFormData] = React.useState(userFormData);\r\n\r\n const [savingProfile, setSavingProfile] = React.useState(false);\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n\r\n const toggleModal = () => {\r\n setModalOpen(!modalOpen);\r\n }\r\n\r\n const getData = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n setFormData(convertToFormData(props.loggedInUser));\r\n };\r\n\r\n React.useEffect(() => { getData() }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const convertToFormData = (user) => {\r\n return {\r\n youtube: user.googleUsername,\r\n facebook: user.facebookUsername,\r\n instagram: user.instagramUsername,\r\n realName: \"\",\r\n audience: \"\",\r\n postFrequency: \"\",\r\n timeCommitment: \"\",\r\n platform: \"\",\r\n platformUsername: \"\",\r\n followers: \"\"\r\n };\r\n }\r\n\r\n const convertToUserModel = () => {\r\n return {\r\n name: props.loggedInUser.name,\r\n firstName: props.loggedInUser.firstName,\r\n lastName: props.loggedInUser.lastName,\r\n bio: props.loggedInUser.bio,\r\n tagLine: props.loggedInUser.tagLine,\r\n website: props.loggedInUser.website,\r\n googleUsername: formData.youtube,\r\n facebookUsername: formData.facebook,\r\n instagramUsername: formData.instagram,\r\n imageUrl: props.loggedInUser.imageUrl,\r\n userName: props.loggedInUser.userName,\r\n email: props.loggedInUser.email,\r\n phoneNumber: props.loggedInUser.phoneNumber,\r\n proStatusId: props.loggedInUser.proStatusId,\r\n address: props.loggedInUser.address,\r\n city: props.loggedInUser.city,\r\n state: props.loggedInUser.state,\r\n postalCode: props.loggedInUser.postalCode,\r\n country: props.loggedInUser.country,\r\n onboardingComplete: props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: props.loggedInUser.profileBannerUrl\r\n }\r\n }\r\n\r\n const onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n setFormData({ ...formData, [formKey]: newData });\r\n };\r\n\r\n const saveUser = async () => {\r\n setSavingProfile(true);\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, convertToUserModel());\r\n\r\n props.setLoggedInUser(user);\r\n setSavingProfile(false);\r\n };\r\n\r\n const mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n if (readOnlyFields.includes(field.name)) {\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n readonly=\"readonly\"\r\n />\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n />\r\n \r\n );\r\n }\r\n });\r\n }\r\n\r\n const renderModal = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/GoPro', text: 'Apply as Creator', active: true }];\r\n return (\r\n
    \r\n \r\n

    Apply as Creator

    \r\n

    Apply to share content and earn commissions

    \r\n
    \r\n\r\n
    \r\n {renderModal()}\r\n
    \r\n
    \r\n {\r\n [\"sm\", \"md\"].includes(props.deviceSize) === false ? (\r\n
    \r\n \r\n
    \r\n ) : \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Why Apply as Creator

    \r\n
      \r\n
    • Apply to be a Creator on the RockPorch platform to gain instant access to the highest quality active lifestyle and outdoor brands.
    • \r\n
    • Monetize your content across multiple channels like RockPorch, Facebook, YouTube, and even locked platforms like Instagram.
    • \r\n
    • Product-specific linking allows you to spend more time creating and less time answering one-off questions. Plus, at RockPorch, your answers can lead to sales -- meaning you get paid for what you share.
    • \r\n
    \r\n

    Creator Requirements

    \r\n
      \r\n
    • Requires RockPorch Approval
    • \r\n
    • Content aligned with RockPorch
    • \r\n
    • Demonstrates a positive influence
    • \r\n
    • Strong follower engagement
    • \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default GoPro;\r\n","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { FormGroup, Input, Label } from \"reactstrap\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport PhoneInput from 'react-phone-number-input'\r\n\r\nimport {\r\n CitySelect,\r\n CountrySelect,\r\n StateSelect,\r\n} from \"react-country-state-city\"\r\nimport \"./react-country-state-city.css\";\r\n\r\nclass CreatorAppProfile extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n countryId: \"\",\r\n stateId: \"\",\r\n sectors: [],\r\n allSectors: [],\r\n stillAvailableSectors: [],\r\n fetchingSectors: true,\r\n toggleAdditionalCategories: false,\r\n agreeToTerms: false,\r\n anonymous: false,\r\n userInformation: {\r\n id: 0,\r\n name: \"\",\r\n email: \"\",\r\n address: \"\",\r\n city: \"\",\r\n state: \"\",\r\n country: \"\",\r\n website: \"\",\r\n postalCode: \"\",\r\n phoneNumber: \"\",\r\n tagLine: \"\",\r\n bio: \"\",\r\n userName: \"\",\r\n googleUsername: \"\",\r\n facebookUsername: \"\",\r\n instagramUsername: \"\",\r\n tikTokUsername: \"\",\r\n stravaUsername: \"\",\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n\r\n if (!(this.props.userInformation)) {\r\n this.setState({ anonymous: true });\r\n }\r\n\r\n this.getSectors(!(this.props.userInformation));\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (this.state.userInformation !== prevState.userInformation) {\r\n this.props.updateUserInformation(this.state.userInformation);\r\n }\r\n if (this.props.cancelEdit) {\r\n this.parseUserInfo();\r\n this.setPersistentSectors();\r\n this.props.resetCancelEdit();\r\n }\r\n }\r\n\r\n setPersistentSectors = () => {\r\n if (!!(this.props.persistentSectors)) {\r\n const sectors = this.props.persistentSectors;\r\n\r\n const stillAvailableSectors = this.state.allSectors.filter((allSector) => {\r\n return !sectors.find((sector) => {\r\n return allSector.sectorId === sector.sectorId\r\n })\r\n });\r\n\r\n this.setState({ sectors, stillAvailableSectors });\r\n }\r\n }\r\n\r\n addUserSector = (sector) => {\r\n const sectors = [...this.state.sectors, sector];\r\n const stillAvailableSectors = this.state.stillAvailableSectors.filter(s => s.sectorId !== sector.sectorId)\r\n this.setState({ sectors, stillAvailableSectors });\r\n this.props.updateSectors(sectors);\r\n }\r\n\r\n deleteUserSector = (sector) => {\r\n const sectors = this.state.sectors.filter(s => s.sectorId !== sector.sectorId)\r\n this.setState({ sectors, stillAvailableSectors: [sector, ...this.state.stillAvailableSectors] });\r\n this.props.updateSectors(sectors);\r\n }\r\n\r\n parseUserInfo = () => {\r\n if (!!(this.props.userInformation)) {\r\n const propsUserInformation = !!(this.props.persistentUserInformation) ? this.props.persistentUserInformation : this.props.userInformation;\r\n\r\n const userInformation = {\r\n name: propsUserInformation.name ?? \"\",\r\n firstName: propsUserInformation.firstName ?? \"\",\r\n lastName: propsUserInformation.lastName ?? \"\",\r\n email: propsUserInformation.email ?? \"\",\r\n address: propsUserInformation.address ?? \"\",\r\n website: propsUserInformation.website ?? \"\",\r\n phoneNumber: propsUserInformation.phoneNumber ?? \"\",\r\n tagLine: propsUserInformation.tagLine ?? \"\",\r\n bio: propsUserInformation.bio ?? \"\",\r\n userName: propsUserInformation.userName ?? \"\",\r\n\r\n city: propsUserInformation.city ?? \"\",\r\n state: propsUserInformation.state ?? \"\",\r\n postalCode: propsUserInformation.postalCode ?? \"\",\r\n country: propsUserInformation.country ?? \"\",\r\n\r\n googleUsername: propsUserInformation.googleUsername ?? \"\",\r\n facebookUsername: propsUserInformation.facebookUsername ?? \"\",\r\n instagramUsername: propsUserInformation.instagramUsername ?? \"\",\r\n tikTokUsername: propsUserInformation.tikTokUsername ?? \"\",\r\n stravaUsername: propsUserInformation.stravaUsername ?? \"\",\r\n };\r\n this.setState({ userInformation })\r\n }\r\n }\r\n\r\n getSectors = async (anonymous) => {\r\n let sectors = await getRequest('/api/Sector/GetSectors') ?? [];\r\n if (anonymous) {\r\n this.setState({\r\n allSectors: sectors,\r\n sectors: [],\r\n stillAvailableSectors: sectors,\r\n fetchingSectors: false,\r\n toggleAdditionalCategories: true,\r\n });\r\n this.props.setSectors([], sectors);\r\n\r\n return;\r\n }\r\n let userSectors = await getRequest(`/api/Sector/GetSectorsByUser?userid=${this.props.userInformation.id}`) ?? [];\r\n let activeSectors = [];\r\n\r\n for (var i = 0; i < userSectors.length; ++i) {\r\n for (var j = 0; j < sectors.length; ++j) {\r\n if (userSectors[i].sectorId === sectors[j].sectorId) {\r\n activeSectors.push(sectors[j]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const stillAvailableSectors = sectors.filter(s => !activeSectors.includes(s));\r\n\r\n this.setState({\r\n allSectors: sectors,\r\n sectors: activeSectors,\r\n stillAvailableSectors,\r\n fetchingSectors: false,\r\n toggleAdditionalCategories: activeSectors?.length === 0 ? true : this.state.toggleAdditionalCategories,\r\n });\r\n this.props.setSectors(activeSectors, sectors);\r\n }\r\n\r\n renderSectors = () => {\r\n const { fetchingSectors, sectors } = this.state;\r\n\r\n if (fetchingSectors === true) {\r\n return \r\n } else if (sectors.length === 0) {\r\n return

    None

    \r\n }\r\n else {\r\n return sectors.map((sector, i) => {\r\n return \r\n });\r\n }\r\n }\r\n\r\n onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n if (formKey === 'bio') {\r\n e.target.style.height = 'inherit';\r\n e.target.style.height = `${e.target.scrollHeight}px`;\r\n }\r\n const userInformation = this.state.userInformation;\r\n userInformation[formKey] = newData;\r\n\r\n this.setState({ userInformation });\r\n this.props.updateUserInformation(userInformation);\r\n };\r\n\r\n onSubmit = (e) => {\r\n e.preventDefault();\r\n this.props.saveBasicSettings(this.state.userInformation);\r\n }\r\n\r\n downwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n upwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleHearAboutUsChange = async e => {\r\n await this.props.onInputChange(e);\r\n };\r\n\r\n mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n if (!!(field.name) && field.name.includes(\"-\")) {\r\n const [id, name] = field.name.split('-'); // Splitting the inputName into id and field\r\n return (\r\n \r\n this.props.onInputAdditionalPlatformsChange(e)}\r\n value={this.props.formData.additionalPlatforms.find(item => item.id === id)?.followers}\r\n />\r\n \r\n );\r\n }\r\n return (\r\n \r\n {\r\n !!(field.title) ?\r\n \r\n :\r\n <>\r\n }\r\n this.props.onInputChange(e)}\r\n value={this.props.formData[field.name]}\r\n />\r\n \r\n );\r\n });\r\n }\r\n\r\n renderEditSectors = () => {\r\n return (\r\n
    \r\n
    What are you most passionate about?
    \r\n\r\n
    My Passion List
    \r\n
    \r\n
      \r\n {\r\n this.state.sectors.length === 0 ?\r\n

      None

      \r\n :\r\n this.state.sectors.map((sector, i) => {\r\n return (\r\n
    • \r\n
      \r\n {sector.name}\r\n
      \r\n
      this.deleteUserSector(sector)}>\r\n \r\n
      \r\n
    • \r\n );\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n
    this.setState({ toggleAdditionalCategories: !this.state.toggleAdditionalCategories })}>\r\n
    Additional Categories
    \r\n {this.state.toggleAdditionalCategories ? this.upwardChevron() : this.downwardChevron()}\r\n
    \r\n
    \r\n
      \r\n {\r\n this.state.stillAvailableSectors.map((sector, i) => {\r\n return (\r\n
    • \r\n
      \r\n {sector.name}\r\n
      \r\n
      this.addUserSector(sector)}>\r\n Add\r\n
      \r\n
    • \r\n );\r\n })\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n );\r\n }\r\n\r\n renderAdditionalPlatforms = () => {\r\n return this.props.formData.additionalPlatforms.map((platformObj, i) => {\r\n if (i === this.props.formData.additionalPlatforms.length - 1) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n Additional Social Platform (not required)\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n {this.showPlatformUserName(\"additionalPlatform\")}\r\n\r\n
    \r\n
    \r\n Follower Count\r\n
    \r\n {this.mapInputFields([{ name: \"additionalPlatform-followers\" }])}\r\n
    \r\n
    \r\n \r\n \r\n );\r\n }\r\n return (\r\n <>\r\n
    \r\n
    \r\n { e.preventDefault(); this.props.deleteAdditionalPlatform(platformObj.id); }} style={{ display: ![\"sm\", \"md\"].includes(this.props.deviceSize) || i === this.props.formData.additionalPlatforms.length - 1 ? \"none\" : \"\", position: \"absolute\", top: \"4px\", right: \"17px\", textDecoration: \"underline\", color: \"black\", fontSize: \"10px\", }}>remove platform\r\n\r\n
    \r\n Additional Social Platform (not required)\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n {this.showPlatformUserName(platformObj.id)}\r\n\r\n
    \r\n
    \r\n Follower Count\r\n
    \r\n {this.mapInputFields([{ name: platformObj.id + \"-followers\" }])}\r\n
    \r\n { e.preventDefault(); this.props.deleteAdditionalPlatform(platformObj.id); }} style={{ display: [\"sm\", \"md\"].includes(this.props.deviceSize) || i === this.props.formData.additionalPlatforms.length - 1 ? \"none\" : \"\", position: \"absolute\", bottom: \"-4px\", right: \"17px\", textDecoration: \"underline\", color: \"black\", fontSize: \"10px\", }}>remove platform\r\n\r\n
    \r\n \r\n );\r\n })\r\n }\r\n\r\n\r\n isReadyToApply = () => {\r\n if (this.state.anonymous) {\r\n return (\r\n !!(this.props.formData?.firstName?.trim()) &&\r\n !!(this.props.formData?.lastName?.trim()) &&\r\n !!(this.props.formData?.userName?.trim()) &&\r\n !!(this.props.formData?.city?.trim()) &&\r\n !!(this.props.formData?.state?.trim()) &&\r\n !!(this.props.formData?.country?.trim()) &&\r\n !!(this.props.formData?.email?.trim()) &&\r\n !!(this.props.formData?.phoneNumber?.trim()) &&\r\n !!(this.props.formData?.hearAboutUs?.trim()) &&\r\n !!(this.props.formData?.postFrequency?.trim()) &&\r\n !!(this.props.formData?.platform?.trim()) &&\r\n !!(this.props.formData?.platformUsername?.trim()) &&\r\n !!(this.props.formData?.followers?.trim()) &&\r\n !!(this.props.formData?.timeCommitment?.trim()) &&\r\n !this.props.emailExists &&\r\n this.props.validEmail &&\r\n this.props.validPassword &&\r\n this.props.validUserName &&\r\n !this.props.usernameExists &&\r\n this.props.formData?.password?.length > 0 &&\r\n this.props.formData?.userName?.length > 0 &&\r\n this.props.formData?.email?.length > 0 &&\r\n this.props.formData?.password === this.props.formData.confirmedPassword &&\r\n this.props.formData?.email === this.props.formData.confirmedEmail &&\r\n this.props.agreeToTerms &&\r\n this.props.formData?.howWillUseRockporch?.length > 0 &&\r\n this.props.formData?.interested_in_product_seeding_campaigns?.length > 0\r\n );\r\n }\r\n return (\r\n !!(this.props.formData?.firstName?.trim()) &&\r\n !!(this.props.formData?.lastName?.trim()) &&\r\n !!(this.props.formData?.userName?.trim()) &&\r\n !!(this.props.formData?.city?.trim()) &&\r\n !!(this.props.formData?.state?.trim()) &&\r\n !!(this.props.formData?.country?.trim()) &&\r\n !!(this.props.formData?.email?.trim()) &&\r\n !!(this.props.formData?.phoneNumber?.trim()) &&\r\n !!(this.props.formData?.hearAboutUs?.trim()) &&\r\n !!(this.props.formData?.postFrequency?.trim()) &&\r\n !!(this.props.formData?.platform?.trim()) &&\r\n !!(this.props.formData?.platformUsername?.trim()) &&\r\n !!(this.props.formData?.followers?.trim()) &&\r\n !!(this.props.formData?.timeCommitment?.trim()) &&\r\n !this.props.emailExists &&\r\n this.props.validEmail &&\r\n this.props.formData?.email?.length > 0 &&\r\n this.props.agreeToTerms &&\r\n this.props.formData?.howWillUseRockporch?.length > 0 &&\r\n this.props.formData?.interested_in_product_seeding_campaigns?.length > 0\r\n );\r\n }\r\n\r\n showPlatformUserName = (id) => {\r\n let platforms = [\r\n { name: \"instagram\", title: \"Instagram Username\", prepend: 'www.instagram.com/' },\r\n { name: \"facebook\", title: \"Facebook Username\", prepend: 'www.facebook.com/' },\r\n { name: \"youtube\", title: \"YouTube Channel\", prepend: 'www.youtube.com/' },\r\n { name: \"tiktok\", title: \"TikTok Username\", prepend: 'www.tiktok.com/@' },\r\n ];\r\n\r\n if (!!(id) && this.props.formData.additionalPlatforms.some(item => item.id === id && !!(item.platform))) {\r\n //platforms = platforms.filter(item =>\r\n // !this.props.additionalPlatforms.some(additionalPlatform =>\r\n // additionalPlatform.platform.toLowerCase() === item.platform.toLowerCase()\r\n // )\r\n //);\r\n\r\n //let platform = this.props.formData.platformTemp?.toLowerCase() ?? \"\";\r\n //if (!this.state.showPlatformTempUserNameMounted && this.props.formData[\"platformTempUsername\"] === \"\") {\r\n // this.props.formData[id + \"-userName\"] = !!this.props.formData[platform] ? this.props.formData[platform] : \"\";\r\n //}\r\n //if (!this.state.showPlatformTempUserNameMounted) {\r\n // this.setState({ showPlatformTempUserNameMounted: true });\r\n //}\r\n\r\n let platformUserName = this.props.formData.additionalPlatforms.find(item => item.id === id)?.platform;\r\n\r\n let selectedPlatform = platforms.filter((p) => p.name === platformUserName.toLowerCase())[0];\r\n\r\n return (\r\n
    \r\n
    \r\n {selectedPlatform?.title}\r\n
    \r\n \r\n
    \r\n
    \r\n {selectedPlatform?.prepend}\r\n
    \r\n this.props.onInputAdditionalPlatformsChange(e)}\r\n value={this.props.formData.additionalPlatforms.find(item => item.id === id)?.userName || ''}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n );\r\n } else if (!(id) && this.props.formData.platform !== \"\") {\r\n let platform = this.props.formData.platform.toLowerCase();\r\n if (!this.state.showPlatformUserNameMounted && this.props.formData[\"platformUsername\"] === \"\") {\r\n this.props.formData[\"platformUsername\"] = !!this.props.formData[platform] ? this.props.formData[platform] : \"\";\r\n }\r\n if (!this.state.showPlatformUserNameMounted) {\r\n this.setState({ showPlatformUserNameMounted: true });\r\n }\r\n\r\n let selectedPlatform = platforms.filter((p) => p.name === platform)[0];\r\n\r\n return (\r\n
    \r\n
    \r\n {selectedPlatform.title}*\r\n
    \r\n \r\n
    \r\n
    \r\n {selectedPlatform.prepend}\r\n
    \r\n this.props.onInputChange(e)}\r\n value={this.props.formData[\"platformUsername\"]}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n );\r\n }\r\n };\r\n\r\n handleSubmit = () => {\r\n\r\n if (this.isReadyToApply()) {\r\n this.props.apply();\r\n } else {\r\n this.props.highlightRequiredFields();\r\n }\r\n }\r\n\r\n render() {\r\n const referredByFriendSelected = this.props.formData.hearAboutUs === \"referred\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Username*\r\n
    \r\n {\r\n this.state.anonymous ?\r\n
    \r\n \r\n this.props.onNewUserNameInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.userName}\r\n />\r\n \r\n

    A username can only contain letters, numbers, dashes, underscores and periods and be no more than 20 characters.

    \r\n

    This username already exists.

    \r\n
    \r\n :\r\n

    {this.props.formData.userName}

    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n First Name*\r\n
    \r\n\r\n \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.firstName}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n Last Name*\r\n
    \r\n\r\n \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.lastName}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n\r\n {\r\n this.state.anonymous ?\r\n
    \r\n
    \r\n
    \r\n Password*\r\n
    \r\n\r\n \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.password}\r\n />\r\n \r\n

    Passwords must contain a number and a lowercase and uppercase letter and be 8 characers long

    \r\n\r\n
    \r\n
    \r\n
    \r\n Confirm Password*\r\n
    \r\n\r\n \r\n this.props.onInputChange(e)}\r\n value={this.props.formData.confirmedPassword}\r\n disabled={this.props.isSaving}\r\n />\r\n \r\n

    0 && this.props.formData.confirmedPassword.length > 0 && this.props.formData.password !== this.props.formData.confirmedPassword ? \"\" : \"none\" }}>Password doesn't match.

    \r\n
    \r\n
    \r\n :\r\n <>\r\n }\r\n\r\n
    \r\n {this.state.anonymous ?\r\n <>\r\n
    \r\n
    \r\n Email*\r\n
    \r\n
    \r\n \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.email}\r\n />\r\n \r\n

    Email is already associated with a RockPorch account.

    \r\n

    Email must be in valid format.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Confirm Email*\r\n
    \r\n \r\n this.props.onInputChange(e)}\r\n value={this.props.formData.confirmedEmail}\r\n disabled={this.props.isSaving}\r\n />\r\n \r\n

    0 && this.props.formData.confirmedEmail.length > 0 && this.props.formData.email !== this.props.formData.confirmedEmail ? \"\" : \"none\" }}>Email doesn't match.

    \r\n
    \r\n \r\n :\r\n
    \r\n
    \r\n Email*\r\n
    \r\n

    {this.props.formData.email}

    \r\n
    \r\n }\r\n\r\n {this.state.anonymous ?\r\n <>\r\n :\r\n
    \r\n
    \r\n Phone Number*\r\n
    \r\n \r\n this.props.onInputChangePhone(e)}\r\n value={this.props.formData.phoneNumber}\r\n disabled={this.props.isSaving}\r\n />\r\n \r\n
    \r\n }\r\n
    \r\n\r\n {\r\n this.state.anonymous ?\r\n
    \r\n
    \r\n
    \r\n Phone Number*\r\n
    \r\n\r\n \r\n this.props.onInputChangePhone(e)}\r\n value={this.props.formData.phoneNumber}\r\n disabled={this.props.isSaving}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n :\r\n <>\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n Country*\r\n
    \r\n \r\n {\r\n this.props.onInputChange({ target: { name: \"country\", value: e.name } })\r\n this.setState({ countryId: e.id });\r\n }}\r\n placeHolder=\"Select Country\"\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n State*\r\n
    \r\n \r\n {\r\n console.log(e);\r\n this.props.onInputChange({ target: { name: \"state\", value: e.name } })\r\n this.setState({ stateId: e.id });\r\n }}\r\n placeHolder=\"Select State\"\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n City*\r\n
    \r\n \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.city}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n How did you hear about us?*\r\n
    \r\n\r\n \r\n this.handleHearAboutUsChange(e)}\r\n value={this.props.formData.hearAboutUs}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {referredByFriendSelected && (\r\n
    \r\n {this.mapInputFields([{ title: \"Who referred you?\", name: \"referredByFriend\" }])}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n How many posts do you make in a week?*\r\n
    \r\n \r\n this.props.onInputChange(e)}\r\n value={this.props.formData.postFrequency}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Primary Social Platform*\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n {this.showPlatformUserName()}\r\n\r\n
    \r\n
    \r\n Follower Count*\r\n
    \r\n {this.mapInputFields([{ name: \"followers\" }])}\r\n
    \r\n
    \r\n\r\n {this.renderAdditionalPlatforms()}\r\n\r\n
    \r\n
    \r\n
    \r\n Enter a link to your website or blog (if applicable)\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.blog}\r\n style={{ marginLeft: \"-18px\" }}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n What’s going on in your life that brought you to apply to RockPorch today?\r\n
    \r\n\r\n \r\n this.props.onInputChange(e)}\r\n disabled={this.props.isSaving}\r\n value={this.props.formData.whyRockporchToday}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n How do you intend to use RockPorch?*\r\n
    \r\n\r\n \r\n \r\n
    this.props.onInputChange(e)}>\r\n
    \r\n this.props.onInputChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n this.props.onInputChange(e)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n this.props.onInputChange(e)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n this.props.onInputChange(e)}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n this.props.onInputChange(e)}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Interested in product seeding campaigns?*\r\n
    \r\n \r\n this.props.onInputChange(e)}\r\n value={this.props.formData.interested_in_product_seeding_campaigns}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Would you consider/desire becoming a full-time content creator?*\r\n
    \r\n \r\n
    this.props.onInputChange(e)}>\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n {this.renderEditSectors()}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n

    Please complete all required fields above

    \r\n\r\n Submit Application\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(CreatorAppProfile);\r\n","import React, { Component } from \"react\";\r\nimport AccountSidebar from \"../../components/AccountSidebar\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport Modal from \"../../components/Modal\";\r\nimport CreatorApplication from \"../../components/CreatorApplication\";\r\nimport CreatorAppProfile from \"../../components/CreatorAppProfile\";\r\nimport CreatorDashboardContactUs from \"../../views/CreatorDashboard/CreatorDashboardContactUs\";\r\nimport { debounce } from \"throttle-debounce\";\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\nimport { NavLink } from \"react-router-dom\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport { postRequest, postSpreadsheet } from \"../../sharedUtils/httpUtils\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nclass CreatorApp extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n validUserName: true,\r\n usernameExists: false,\r\n validPassword: true,\r\n validEmail: true,\r\n toggleModal: false,\r\n submitWithUnansweredRequiredFields: false,\r\n formData: {\r\n firstName: \"\",\r\n lastName: \"\",\r\n phone: \"\",\r\n whyRockporchToday: \"\",\r\n youtube: \"\",\r\n facebook: \"\",\r\n instagram: \"\",\r\n tikTok: \"\",\r\n blog: \"\",\r\n realName: \"\",\r\n audience: \"\",\r\n postFrequency: \"\",\r\n timeCommitment: \"\",\r\n platform: \"\",\r\n platformUsername: \"\",\r\n followers: \"\",\r\n additionalPlatforms: [{ id: \"additionalPlatform\", platform: \"\", userName: \"\", followers: \"\" }],\r\n affiliateMarketingExperience: \"\",\r\n mediaPermission: \"yes\",\r\n hearAboutUs: \"\",\r\n usState: \"\",\r\n learnMore: \"\",\r\n upcomingProjects: \"\",\r\n name: \"\",\r\n userName: \"\",\r\n email: \"\",\r\n confirmedEmail: \"\",\r\n phoneNumber: \"\",\r\n city: \"\",\r\n state: \"\",\r\n country: \"\",\r\n password: \"\",\r\n confirmedPassword: \"\",\r\n howWillUseRockporch: \"\",\r\n interested_in_product_seeding_campaigns: \"\",\r\n },\r\n agreeToTerms: false,\r\n savingProfile: false,\r\n modalOpen: false,\r\n postingExcel: false,\r\n excelError: false,\r\n uploadedFileNames: [],\r\n isSaving: false,\r\n isSavingCreatorSettings: false,\r\n userInformation: null,\r\n persistentUserInformation: null,\r\n basicUserInformation: null,\r\n basicDisplay: true,\r\n sectors: [],\r\n persistentSectors: [],\r\n allSectors: [],\r\n editMode: false,\r\n referralUserId: null,\r\n userIsCreator: false,\r\n };\r\n }\r\n\r\n highlightRequiredFields = () => {\r\n this.setState({ submitWithUnansweredRequiredFields: true });\r\n }\r\n\r\n onNewUserNameInputChange = async (e) => {\r\n e.preventDefault();\r\n this.setState({ usernameExists: false })\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n\r\n formData[formKey] = newData;\r\n\r\n this.setState({ formData });\r\n\r\n let userNameRegex = /^[a-zA-Z0-9.\\-_]{1,20}$/\r\n let validUserName = userNameRegex.test(formData.userName);\r\n\r\n if (validUserName) {\r\n this.debounceNewUserNameInputChange();\r\n this.setState({ validUserName: true })\r\n } else if (formData.userName.length > 0) {\r\n this.setState({ validUserName: false })\r\n } else {\r\n this.setState({ validUserName: true })\r\n }\r\n }\r\n\r\n checkPasswordCriteria = (password) => {\r\n\r\n const hasUpperCase = /[A-Z]{1,}/.test(password);\r\n const hasLowerCase = /[a-z]{1,}/.test(password);\r\n const hasDigit = /\\d{1,}/.test(password);\r\n\r\n const validPassword = hasUpperCase && hasLowerCase && hasDigit && password.length > 7;\r\n this.setState({ validPassword });\r\n }\r\n\r\n checkEmailCriteria = (email) => {\r\n this.setState({ emailExists: false })\r\n\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n let validEmail = emailRegex.test(email);\r\n\r\n if (validEmail) {\r\n this.debounceEmailInputChange();\r\n this.setState({ validEmail: true })\r\n } else if (email.length > 0) {\r\n this.setState({ validEmail: false })\r\n } else {\r\n this.setState({ validEmail: true })\r\n }\r\n }\r\n\r\n\r\n debounceNewUserNameInputChange = debounce(300, async () => {\r\n await this.checkUserNameExists();\r\n });\r\n\r\n debounceEmailInputChange = debounce(300, async () => {\r\n await this.checkEmailExists();\r\n });\r\n\r\n\r\n checkUserNameExists = async () => {\r\n if (!!(this.state.formData.userName)) {\r\n let url = `/api/Account/GetUserNameExists?username=${this.state.formData.userName}`;\r\n\r\n let usernameExists = await getRequest(url);\r\n\r\n this.setState({ usernameExists });\r\n }\r\n }\r\n\r\n checkEmailExists = async () => {\r\n let url = `/api/Account/CheckEmailAnonymous?email=${this.state.formData.email}`;\r\n\r\n let response = await getRequest(url);\r\n let emailExists = response && (!(this.props.loggedInUser) || this.state.formData.email !== this.props.loggedInUser.email)\r\n\r\n this.setState({ emailExists });\r\n }\r\n\r\n toggleModal = () => {\r\n this.setState((prevState) => ({ modalOpen: !prevState.modalOpen }));\r\n };\r\n\r\n getData = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n if (!!(this.props.loggedInUser)) {\r\n this.setState({ formData: this.convertToFormData(this.props.loggedInUser) });\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n if (!!(this.props.loggedInUser) && !!(this.props.loggedInUser.proStatusId) && this.props.loggedInUser.proStatusId === 1) {\r\n this.setState({ userIsCreator: true, modalOpen: true });\r\n }\r\n\r\n const link1 = document.createElement('link');\r\n link1.rel = 'preconnect';\r\n link1.href = 'https://fonts.googleapis.com';\r\n\r\n const link2 = document.createElement('link');\r\n link2.rel = 'preconnect';\r\n link2.href = 'https://fonts.gstatic.com';\r\n link2.crossOrigin = ''; // For crossorigin attribute\r\n\r\n const link3 = document.createElement('link');\r\n link3.href = 'https://fonts.googleapis.com/css2?family=Montserrat:wght@500;700&display=swap';\r\n link3.rel = 'stylesheet';\r\n\r\n document.head.appendChild(link1);\r\n document.head.appendChild(link2);\r\n document.head.appendChild(link3);\r\n\r\n // Save the link elements in the component state for cleanup\r\n this.linkElements = [link1, link2, link3];\r\n\r\n const referralUserId = getQueryStringParams(window.location.search).ref;\r\n\r\n if (!isNaN(parseInt(referralUserId)) && parseInt(referralUserId) > 0) {\r\n this.setState({ referralUserId: parseInt(referralUserId) });\r\n }\r\n\r\n\r\n this.getData();\r\n\r\n this.updatePersistantUserInformation(this.props.loggedInUser);\r\n\r\n // preload splashPageBanner to avoid rendering delay\r\n const image = new Image();\r\n image.src = '/images/splashPageBanner-min.png';\r\n this.image = image;\r\n }\r\n\r\n componentWillUnmount() {\r\n this.linkElements.forEach((link) => {\r\n document.head.removeChild(link);\r\n });\r\n // unmount preloaded image\r\n if (this.image) {\r\n this.image.onload = null;\r\n }\r\n }\r\n\r\n convertToFormData = (user) => {\r\n return {\r\n firstName: user.firstName ?? \"\",\r\n lastName: user.lastName ?? \"\",\r\n whyRockporchToday: \"\",\r\n name: user.name,\r\n userName: user.userName,\r\n email: user.email,\r\n phoneNumber: user.phoneNumber,\r\n phone: user.phoneNumber,\r\n city: user.city,\r\n state: user.state,\r\n country: user.country,\r\n youtube: user.googleUsername,\r\n facebook: user.facebookUsername,\r\n instagram: user.instagramUsername,\r\n tikTok: user.tikTokUsername,\r\n blog: user.website,\r\n realName: user.name,\r\n audience: \"\",\r\n postFrequency: \"\",\r\n timeCommitment: \"\",\r\n platform: \"\",\r\n platformUsername: \"\",\r\n followers: \"\",\r\n additionalPlatforms: [{ id: \"additionalPlatform\", platform: \"\", userName: \"\", followers: \"\" }],\r\n affiliateMarketingExperience: \"\",\r\n mediaPermission: \"yes\",\r\n hearAboutUs: \"\",\r\n usState: \"\",\r\n learnMore: \"\",\r\n upcomingProjects: \"\",\r\n password: \"\",\r\n confirmedPassword: \"\",\r\n howWillUseRockporch: \"\",\r\n };\r\n }\r\n\r\n convertToUserModel = () => {\r\n const formData = this.state.formData;\r\n\r\n return {\r\n name: formData?.firstName.trim() + \" \" + formData.lastName.trim() ?? this.props.loggedInUser?.name ?? \"\",\r\n firstName: formData?.firstName ?? this.props.loggedInUser?.firstName ?? \"\",\r\n lastName: formData?.lastName ?? this.props.loggedInUser?.lastName ?? \"\",\r\n bio: formData?.bio ?? this.props.loggedInUser?.bio ?? null,\r\n tagLine: formData?.tagLine ?? this.props.loggedInUser?.tagLine ?? null,\r\n website: formData?.blog ?? this.props.loggedInUser?.website ?? null,\r\n googleUsername: formData?.youtube ?? this.props.loggedInUser?.googleUsername ?? null,\r\n facebookUsername: formData?.facebook ?? this.props.loggedInUser?.facebookUsername ?? \"\",\r\n instagramUsername: formData?.instagram ?? this.props.loggedInUser?.instagramUsername ?? null,\r\n tikTokUsername: formData?.tikTok ?? this.props.loggedInUser?.tikTokUsername ?? null,\r\n imageUrl: formData?.imageUrl ?? this.props.loggedInUser?.imageUrl ?? null,\r\n userName: formData?.userName ?? this.props.loggedInUser?.userName ?? \"\",\r\n email: formData?.email ?? this.props.loggedInUser?.email ?? \"\",\r\n phoneNumber: formData?.phoneNumber ?? this.props.loggedInUser?.phoneNumber ?? \"\",\r\n proStatusId: formData?.proStatusId ?? this.props.loggedInUser?.proStatusId ?? null,\r\n address: formData?.address ?? this.props.loggedInUser?.address ?? null,\r\n city: formData?.city ?? this.props.loggedInUser?.city ?? \"\",\r\n state: formData?.state ?? this.props.loggedInUser?.state ?? \"\",\r\n postalCode: formData?.postalCode ?? this.props.loggedInUser?.postalCode ?? null,\r\n country: formData?.country ?? this.props.loggedInUser?.country ?? \"\",\r\n onboardingComplete: formData?.onboardingComplete ?? this.props.loggedInUser?.onboardingComplete ?? null,\r\n profileBannerUrl: formData?.profileBannerUrl ?? this.props.loggedInUser?.profileBannerUrl ?? null,\r\n referralUserId: this.state.referralUserId,\r\n };\r\n }\r\n\r\n\r\n onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n if (formKey === \"password\") {\r\n this.checkPasswordCriteria(e.target.value);\r\n }\r\n\r\n if (formKey === \"email\") {\r\n this.checkEmailCriteria(e.target.value);\r\n }\r\n\r\n this.setState(prevState => ({\r\n formData: { ...prevState.formData, [formKey]: newData }\r\n }));\r\n }; \r\n\r\n onUserRelatedInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n const userInformation = this.state.userInformation;\r\n userInformation[formKey] = newData;\r\n\r\n this.setState({ userInformation });\r\n this.updateUserInformation(userInformation);\r\n };\r\n\r\n onInputAdditionalPlatformsChange = (e) => {\r\n const inputName = e.target.name;\r\n const [id, field] = inputName.split('-'); // Splitting the inputName into id and field\r\n const value = e.target.value;\r\n this.setState((prevState) => {\r\n // Find the index of the element in additionalPlatforms array\r\n const index = prevState.formData.additionalPlatforms.findIndex((item) => item.id === id);\r\n\r\n // Clone the existing state to avoid mutation\r\n const formData = { ...prevState.formData };\r\n\r\n if (index !== -1) {\r\n // Clone the specific object to update its property\r\n const updatedObject = { ...formData.additionalPlatforms[index] };\r\n\r\n // Update the field in the cloned object\r\n updatedObject[field] = value ?? \"\";\r\n\r\n // Update the specific element in the additionalPlatforms array\r\n formData.additionalPlatforms[index] = updatedObject;\r\n }\r\n\r\n return { formData };\r\n });\r\n };\r\n\r\n renderConfirmationModal = () => {\r\n if (this.state.userIsCreator) {\r\n return (\r\n this.props.history.push('/CreatorDashboard')}>\r\n
    \r\n
    \r\n \"\"\r\n
    \r\n\r\n
    \r\n

    You are already an approved Creator!

    \r\n

    Click here to go to your Creator Dashboard

    \r\n
    \r\n this.props.history.push('/CreatorDashboard')} style={{ borderRadius: \"3px\", bottom: \"5px\", width: \"292px\" }} className=\"btn btn-primary\">Creator Dashboard\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n return (\r\n this.setState({ modalOpen: !this.state.modalOpen })}>\r\n
    \r\n
    \r\n \"\"\r\n
    \r\n\r\n
    \r\n

    Thank you for your application

    \r\n

    Someone from the creator development team will be in touch regarding your application within 48 hours

    \r\n
    \r\n this.setState({ modalOpen: false })} style={{ borderRadius: \"3px\", bottom: \"5px\", width: \"292px\" }} className=\"btn btn-primary\">Explore RockPorch\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n\r\n onInputChangePhone = (input) => {\r\n let formKey = \"phoneNumber\";\r\n let newData = !!(input) ? input : \"\";\r\n\r\n this.setState(prevState => ({\r\n formData: { ...prevState.formData, [formKey]: newData }\r\n }));\r\n }\r\n\r\n isAdditionalPlatformAddable = () => {\r\n const tempObject = this.state.formData.additionalPlatforms.find(item => item.id === \"additionalPlatform\");\r\n\r\n if (tempObject) {\r\n return !!(tempObject.platform) && !!(tempObject.userName) && !!(tempObject.followers);\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n addAdditionalPlatform = () => {\r\n if (this.isAdditionalPlatformAddable()) {\r\n const newPlatformWithId = { ...this.state.formData.additionalPlatforms.find(item => item.id === \"additionalPlatform\") };\r\n newPlatformWithId.id = newPlatformWithId.platform + \"%\" + newPlatformWithId.userName;\r\n\r\n let additionalPlatform = { id: \"additionalPlatform\", platform: \"\", userName: \"\", followers: \"\" };\r\n let additionalPlatforms = [...this.state.formData.additionalPlatforms.filter(item => item.id !== \"additionalPlatform\"), newPlatformWithId, additionalPlatform];\r\n let formData = { ...this.state.formData, additionalPlatforms };\r\n this.setState({ formData });\r\n }\r\n }\r\n\r\n deleteAdditionalPlatform = (id) => {\r\n let additionalPlatforms = [...this.state.formData.additionalPlatforms];\r\n\r\n additionalPlatforms = additionalPlatforms.filter(item => item.id !== id);\r\n if (id === \"additionalPlatform\") {\r\n let additionalPlatform = { id: \"additionalPlatform\", platform: \"\", username: \"\", followers: \"\" };\r\n additionalPlatforms = [...additionalPlatforms, ...additionalPlatform];\r\n }\r\n\r\n let formData = { ...this.state.formData, additionalPlatforms };\r\n this.setState({ formData });\r\n }\r\n\r\n waitForModalClose = () => {\r\n return new Promise(resolve => {\r\n const checkModalOpen = () => {\r\n if (!this.state.modalOpen) {\r\n resolve();\r\n } else {\r\n setTimeout(checkModalOpen, 100); // Adjust the delay as needed\r\n }\r\n };\r\n\r\n checkModalOpen();\r\n });\r\n }\r\n\r\n apply = async () => {\r\n this.setState({ isSaving: true });\r\n\r\n if (!!(this.props.loggedInUser)) {\r\n await this.saveUser();\r\n } else {\r\n await this.createNewUser();\r\n }\r\n\r\n let selectedSectorIds = this.state.sectors.map((sector) => { return sector.sectorId });\r\n await postRequest('/api/Sector/UpdateUserSectors', selectedSectorIds);\r\n\r\n let formData = this.state.formData;\r\n if (formData.hearAboutUs === \"referred\") {\r\n formData.hearAboutUs = \"\";\r\n }\r\n formData.realName = this.state.formData.firstName.trim() + \" \" + this.state.formData.lastName.trim();\r\n formData.usState = this.state.formData.state;\r\n formData.phone = this.state.formData.phoneNumber;\r\n formData.password = \"\";\r\n formData.confirmedPassword = \"\";\r\n\r\n let additionalPlatforms = this.state.formData.additionalPlatforms.filter(item => item.platform.length > 0 && item.userName.length > 0);\r\n formData.additionalPlatforms = additionalPlatforms;\r\n\r\n let userUrl = '/api/Account/ApplyForPro';\r\n await postRequest(userUrl, formData);\r\n\r\n this.setState({ isSaving: false, modalOpen: true });\r\n\r\n await this.waitForModalClose();\r\n\r\n this.props.history.push('/Nav/Explore');\r\n }\r\n\r\n handleAgreeToTerms = () => {\r\n this.setState({ agreeToTerms: !this.state.agreeToTerms });\r\n }\r\n\r\n createNewUser = async () => {\r\n const userModel = this.convertToUserModel();\r\n userModel.password = this.state.formData.password;\r\n let userUrl = '/api/Account/CreateNewUser';\r\n\r\n let user = await postRequest(userUrl, userModel);\r\n this.props.setLoggedInUser(user);\r\n };\r\n\r\n saveUser = async () => {\r\n const userModel = this.convertToUserModel();\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, userModel);\r\n\r\n //let url = `api/CreatorApplicationAdmin/SendCreatorAppSubmissionEmail`;\r\n //await postRequest(url, userModel);\r\n\r\n this.props.setLoggedInUser(user);\r\n };\r\n\r\n handleUpload = async (file, description) => {\r\n this.setState({ excelError: false, postingExcel: true });\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n\r\n const response = await postSpreadsheet(\"/api/Account/UploadCreatorAppAttachment\", formData);\r\n if (!!response && !!response.url) {\r\n // Append the new attachmentUrl to the existing value in the state\r\n this.setState((prevState) => ({\r\n formData: {\r\n ...prevState.formData,\r\n upcomingProjects: prevState.formData.upcomingProjects\r\n ? prevState.formData.upcomingProjects + \",\" + description + \"!@#\" + response.url\r\n : description + \"!@#\" + response.url,\r\n },\r\n }));\r\n }\r\n\r\n this.setState({ excelError: !(response), postingExcel: false });\r\n };\r\n\r\n parseUserInfo = (propsUserInformation) => {\r\n if (!!(propsUserInformation)) {\r\n return {\r\n name: propsUserInformation.name ?? this.state.persistentUserInformation?.name ?? \"\",\r\n email: propsUserInformation.email ?? this.state.persistentUserInformation?.email ?? \"\",\r\n address: propsUserInformation.address ?? this.state.persistentUserInformation?.address ?? \"\",\r\n city: propsUserInformation.city ?? this.state.persistentUserInformation?.city ?? \"\",\r\n state: propsUserInformation.state ?? this.state.persistentUserInformation?.state ?? \"\",\r\n country: propsUserInformation.country ?? this.state.persistentUserInformation?.country ?? \"\",\r\n website: propsUserInformation.website ?? this.state.persistentUserInformation?.website ?? \"\",\r\n postalCode: propsUserInformation.postalCode ?? this.state.persistentUserInformation?.postalCode ?? \"\",\r\n phoneNumber: propsUserInformation.phoneNumber ?? this.state.persistentUserInformation?.phoneNumber ?? \"\",\r\n tagLine: propsUserInformation.tagLine ?? this.state.persistentUserInformation?.tagLine ?? \"\",\r\n bio: propsUserInformation.bio ?? this.state.persistentUserInformation?.bio ?? \"\",\r\n userName: propsUserInformation.userName ?? this.state.persistentUserInformation?.userName ?? \"\",\r\n imageUrl: propsUserInformation.imageUrl ?? this.state.persistentUserInformation?.imageUrl ?? \"\",\r\n\r\n proStatusId: propsUserInformation.proStatusId ?? this.state.persistentUserInformation?.proStatusId ?? null,\r\n\r\n googleUsername: propsUserInformation.googleUsername ?? this.state.persistentUserInformation?.googleUsername ?? \"\",\r\n facebookUsername: propsUserInformation.facebookUsername ?? this.state.persistentUserInformation?.facebookUsername ?? \"\",\r\n instagramUsername: propsUserInformation.instagramUsername ?? this.state.persistentUserInformation?.instagramUsername ?? \"\",\r\n tikTokUsername: propsUserInformation.tikTokUsername ?? this.state.persistentUserInformation?.tikTokUsername ?? \"\",\r\n stravaUsername: propsUserInformation.stravaUsername ?? this.state.persistentUserInformation?.stravaUsername ?? \"\",\r\n\r\n onboardingComplete: propsUserInformation.onboardingComplete ?? this.state.persistentUserInformation?.onboardingComplete ?? null,\r\n profileBannerUrl: propsUserInformation.profileBannerUrl ?? this.state.persistentUserInformation?.profileBanner ?? \"\",\r\n\r\n quickStart: propsUserInformation.quickStart ?? this.state.persistentUserInformation?.quickStart ?? null,\r\n rpManagerUserId: propsUserInformation.rpManagerUserId ?? this.state.persistentUserInformation?.rpManagerUserId ?? null\r\n }\r\n }\r\n }\r\n\r\n setSectors = (sectors, allSectors) => {\r\n this.setState({ sectors, allSectors, persistentSectors: sectors });\r\n }\r\n\r\n updateSectors = (sectors) => {\r\n this.setState({ sectors })\r\n }\r\n\r\n updateBasicUserInformation = (propsUserInformation) => {\r\n this.setState({ userI: propsUserInformation });\r\n }\r\n\r\n updatePersistantUserInformation = (propsUserInformation) => {\r\n this.setState({ persistentUserInformation: this.parseUserInfo(propsUserInformation) });\r\n }\r\n\r\n mapInputFields = (fields) => {\r\n let readOnlyFields = [\"profileUrl\"];\r\n\r\n return fields.map((field, i) => {\r\n if (readOnlyFields.includes(field.name)) {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n readonly=\"readonly\"\r\n />\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n />\r\n \r\n );\r\n }\r\n });\r\n }\r\n\r\n renderModal = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n \r\n \"\"\r\n \r\n
    \r\n

    WHERE PASSION MEETS PURPOSE

    \r\n

    Join Your Fellow Passion-Driven Creators in the RockPorch Creator Community

    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n {this.renderConfirmationModal()}\r\n
    \r\n
    \r\n\r\n
    \r\n

    * Required field

    \r\n {/**/}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default CreatorApp;\r\n","import * as React from \"react\";\r\nimport { Form } from \"reactstrap\";\r\nimport FormInputField from \"../../components/FormInputField\";\r\n\r\nimport AccountSidebar from \"../../components/AccountSidebar\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\n\r\nimport { postRequest } from \"../../sharedUtils/httpUtils\";\r\nimport { debounce } from \"throttle-debounce\";\r\nimport { isValidPassword } from \"sharedUtils/validationUtils\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass AccountSettings extends React.Component {\r\n\r\n minLengthMessage = 'Minimum 8 characters';\r\n doesNotMatchMessage = 'Password does not match'\r\n requiredCharactersMessage = 'Password must contain one uppercase letter, one lowercase letter and one number'\r\n\r\n debounceEmailLookup = debounce(300, async () => {\r\n let emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/\r\n let validEmail = emailRegex.test(this.state.formData.email);\r\n\r\n if (validEmail) {\r\n if (this.state.formData.email === this.props.loggedInUser.email) {\r\n this.setState({ enableEmailSubmit: false, emailMessageStyle: \"\", emailMessage: \"\" });\r\n return;\r\n }\r\n\r\n var checkEmailUrl = \"api/Account/CheckEmail\";\r\n let response = await postRequest(checkEmailUrl, this.state.formData);\r\n\r\n if (response) {\r\n this.setState({ enableEmailSubmit: true, emailMessageStyle: \"\", emailMessage: \"\" });\r\n } else {\r\n this.setState({ enableEmailSubmit: false, emailMessageStyle: \"\", emailMessage: \"That email address is in use by another user\" });\r\n }\r\n } else {\r\n this.setState({ enableEmailSubmit: false, emailMessageStyle: \"\", emailMessage: \"Invalid email address\" });\r\n }\r\n });\r\n\r\n state = {\r\n formData: {\r\n email: \"\"\r\n },\r\n minLengthMessage: \"\",\r\n doesNotMatchMessage: \"\",\r\n requiredCharactersMessage:\"\",\r\n saving: false,\r\n password: \"\",\r\n newPassword: \"\",\r\n confirmPassword: \"\",\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n let formData = {};\r\n formData.email = this.props.loggedInUser.email;\r\n this.setState({ formData: formData });\r\n }\r\n\r\n onInputChange = (e) => {\r\n let formkey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n formData[formkey] = newData;\r\n\r\n if (formkey === \"newPassword\") {\r\n if (newData.length < 8 && newData.length > 0) {\r\n this.setState({ minLengthMessage: this.minLengthMessage, requiredCharactersMessage: \"\" });\r\n }\r\n else if (isValidPassword(newData) === false) {\r\n this.setState({ requiredCharactersMessage: this.requiredCharactersMessage, minLengthMessage:\"\" })\r\n }\r\n else {\r\n this.setState({ minLengthMessage: \"\", requiredCharactersMessage:\"\" });\r\n }\r\n }\r\n\r\n if (formkey === \"confirmPassword\" || formkey === \"newPassword\") {\r\n if (formData.newPassword !== formData.confirmPassword) {\r\n this.setState({ doesNotMatchMessage: this.doesNotMatchMessage });\r\n } else {\r\n this.setState({ doesNotMatchMessage: \"\" });\r\n }\r\n }\r\n this.setState({ formData: formData });\r\n };\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n this.setState({ saving: true });\r\n let userUrl = '/api/Account/UpdatePassword';\r\n let result = await postRequest(userUrl, { password: this.state.formData.password, newPassword: this.state.formData.newPassword });\r\n if (result) {\r\n this.setState({ passwordMessageStyle: \"\", passwordMessage: \"Password updated successfully\" });\r\n } else {\r\n this.setState({ passwordMessageStyle: \"form-text-alert\", passwordMessage: \"Unable to update password. Please try again.\" })\r\n }\r\n this.setState({ saving: false });\r\n };\r\n\r\n onEmailSubmit = async (event) => {\r\n event.preventDefault();\r\n this.setState({ saving: true });\r\n let userUrl = '/api/Account/UpdateEmail';\r\n let result = await postRequest(userUrl, this.state.formData);\r\n if (result) {\r\n this.setState({ emailMessageStyle: \"\", emailMessage: \"We've sent a confirmation email to the address you specified.\" });\r\n } else {\r\n this.setState({ emailMessageStyle: \"form-text-alert\", emailMessage: \"Unable to update email. Please try again.\" })\r\n }\r\n this.setState({ saving: false });\r\n };\r\n\r\n\r\n renderPasswordSubmit = () => {\r\n let isValid = isValidPassword(this.state.formData.password) && isValidPassword(this.state.formData.newPassword);\r\n if (this.state.formData?.password?.length > 0 && this.state.formData?.newPassword?.length >= 8 && this.state.formData?.confirmPassword === this.state.formData?.newPassword && isValid) {\r\n return ()\r\n }\r\n return \r\n }\r\n\r\n renderEmailSubmit = () => {\r\n if (this.state.enableEmailSubmit) {\r\n return ()\r\n }\r\n return \r\n }\r\n\r\n onEmailChange = async (e) => {\r\n e.preventDefault();\r\n let formData = this.state.formData;\r\n formData.email = e.target.value;\r\n this.setState({ formData: formData });\r\n\r\n this.debounceEmailLookup();\r\n }\r\n\r\n renderEmail = () => {\r\n return (
    \r\n
    Account Settings
    \r\n\r\n this.onEmailChange(e)}\r\n smallText={this.state.emailMessage}\r\n smallTextStyle={this.state.emailMessageStyle}\r\n />\r\n\r\n {this.renderEmailSubmit()}\r\n
    );\r\n }\r\n\r\n renderPassword = () => {\r\n return (
    \r\n
    Change your password
    \r\n\r\n \r\n\r\n \r\n\r\n \r\n {this.renderPasswordSubmit()}\r\n
    );\r\n }\r\n\r\n breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/AccountSettings', text: 'Account Settings', active: true }];\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n RockPorch - Account Settings\r\n \r\n \r\n

    Account Settings

    \r\n

    Manage login settings

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n [\"sm\", \"md\"].includes(this.props.deviceSize) === false ? (\r\n
    \r\n \r\n
    \r\n ) : \r\n }\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n {this.renderEmail()}\r\n {this.renderPassword()}\r\n\r\n
    \r\n
    Delete your account
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n }\r\n\r\n};\r\n\r\nexport default AccountSettings;\r\n","import * as React from \"react\";\r\nimport { Form } from \"reactstrap\";\r\nimport FormInputField from \"../../components/FormInputField\";\r\n\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\n\r\nimport { getRequest, postRequest } from \"../../sharedUtils/httpUtils\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass ProSettings extends React.Component {\r\n\r\n minLengthMessage = 'Minimum 8 characters';\r\n doesNotMatchMessage = 'Password does not match'\r\n\r\n state = {\r\n formData: {\r\n phoneNumber: \"\",\r\n address: \"\",\r\n city: \"\",\r\n state: \"\",\r\n postalCode: \"\",\r\n country: \"\",\r\n },\r\n minLengthMessage: \"\",\r\n doesNotMatchMessage: \"\",\r\n saving: false,\r\n email: \"\",\r\n formEmail: \"\",\r\n emailMessage: \"\"\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.setState({ formData: this.convertToFormData(this.props.loggedInUser) });\r\n\r\n this.getPaymentEmail();\r\n }\r\n\r\n getPaymentEmail = async () => {\r\n let paymentEmail = await getRequest(\"api/Account/GetPaymentEmail\");\r\n this.setState({ formEmail: paymentEmail?.email ?? \"\", email: paymentEmail?.email ?? \"\"});\r\n }\r\n\r\n onInputChangeEmail = (e) => {\r\n let emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/\r\n let validEmail = emailRegex.test(e.target.value);\r\n\r\n if (!validEmail) {\r\n this.setState({ formEmail: e.target.value, validEmail: validEmail, emailMessageStyle: \"\", emailMessage: \"Invalid email address\" });\r\n } else {\r\n this.setState({ formEmail: e.target.value, validEmail: validEmail, emailMessageStyle: \"\", emailMessage: \"\" });\r\n }\r\n }\r\n\r\n onInputChange = (e) => {\r\n let formkey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n formData[formkey] = newData;\r\n\r\n if (formkey === \"newPassword\") {\r\n if (newData.length < 8 && newData.length > 0) {\r\n this.setState({ minLengthMessage: this.minLengthMessage });\r\n } else {\r\n this.setState({ minLengthMessage: \"\" });\r\n }\r\n }\r\n\r\n if (formkey === \"confirmPassword\" || formkey === \"newPassword\") {\r\n if (formData.newPassword !== formData.confirmPassword) {\r\n this.setState({ doesNotMatchMessage: this.doesNotMatchMessage });\r\n } else {\r\n this.setState({ doesNotMatchMessage: \"\" });\r\n }\r\n }\r\n this.setState({ formData: formData });\r\n };\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n this.setState({ saving: true });\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, this.convertToUserModel());\r\n this.props.setLoggedInUser(user);\r\n this.setState({ saving: false });\r\n };\r\n\r\n onEmailSubmit = async (event) => {\r\n event.preventDefault();\r\n this.setState({ savingEmail: true });\r\n let userUrl = '/api/Account/UpdatePaymentEmail';\r\n let result = await postRequest(userUrl, { email: this.state.formEmail });\r\n if (result) {\r\n this.setState({ email: this.state.formEmail, savingEmail: false, emailMessageStyle: \"\", emailMessage: \"We've sent a confirmation email to the address you specified.\" });\r\n } else {\r\n this.setState({ savingEmail: false, emailMessageStyle: \"form-text-alert\", emailMessage: \"Unable to update email. Please try again.\" });\r\n }\r\n };\r\n\r\n renderSubmit = () => {\r\n let enabled = false;\r\n const properties = [\"phoneNumber\", \"address\", \"city\", \"state\", \"postalCode\", \"country\"];\r\n for (let i = 0; i < properties.length; ++i) {\r\n if (this.state.formData[properties[i]]?.length > 0) {\r\n enabled = true;\r\n }\r\n }\r\n\r\n if (enabled) {\r\n return ()\r\n }\r\n return \r\n }\r\n\r\n renderEmailSubmit = () => {\r\n if (this.state.email !== this.state.formEmail && this.state.validEmail) {\r\n return ()\r\n }\r\n return \r\n }\r\n\r\n\r\n renderPersonalInfo = () => {\r\n return (\r\n
    \r\n \r\n RockPorch - Creator Settings\r\n \r\n
    Personal Information
    \r\n
    \r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n \r\n this.onInputChange(e)} />\r\n
    \r\n
    \r\n \r\n this.onInputChange(e)} />\r\n
    \r\n
    \r\n \r\n this.onInputChange(e)} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.onInputChange(e)} />\r\n
    \r\n
    \r\n {this.renderSubmit()}\r\n \r\n
    );\r\n }\r\n\r\n renderPaymentInfo = () => {\r\n return (
    \r\n
    \r\n
    Commissions & Payments
    \r\n
    Connect Your PayPal Account
    \r\n

    Enter the email address associated with your PayPal account to get paid

    \r\n \r\n {this.renderEmailSubmit()}\r\n
    \r\n
    );\r\n }\r\n breadCrumbList = [{ link: '/Account/CreatorDashboard', text: 'Creator Dashboard' }, { link: '/Account/ProSettings', text: 'Creator Settings', active: true }];\r\n\r\n convertToFormData = (user) => {\r\n return {\r\n phoneNumber: user.phoneNumber ?? \"\",\r\n address: user.address ?? \"\",\r\n city: user.city ?? \"\",\r\n state: user.state ?? \"\",\r\n postalCode: user.postalCode ?? \"\",\r\n country: user.country ?? \"\"\r\n };\r\n }\r\n\r\n convertToUserModel = () => {\r\n return {\r\n name: this.props.loggedInUser.name,\r\n firstName: this.props.loggedInUser.firstName,\r\n lastName: this.props.loggedInUser.lastName,\r\n bio: this.props.loggedInUser.bio,\r\n tagLine: this.props.loggedInUser.tagLine,\r\n website: this.props.loggedInUser.website,\r\n googleUsername: this.props.loggedInUser.googleUsername,\r\n facebookUsername: this.props.loggedInUser.facebookUsername,\r\n instagramUsername: this.props.loggedInUser.instagramUsername,\r\n imageUrl: this.props.loggedInUser.imageUrl,\r\n userName: this.props.loggedInUser.userName,\r\n email: this.props.loggedInUser.email,\r\n phoneNumber: this.state.formData.phoneNumber,\r\n proStatusId: this.props.loggedInUser.proStatusId,\r\n\r\n address: this.state.formData.address,\r\n city: this.state.formData.city,\r\n state: this.state.formData.state,\r\n postalCode: this.state.formData.postalCode,\r\n country: this.state.formData.country,\r\n\r\n onboardingComplete: this.props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: this.props.loggedInUser.profileBannerUrl,\r\n\r\n quickStart: this.props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n

    Creator Settings

    \r\n

    Manage personal and payment information

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.renderPersonalInfo()}\r\n {this.renderPaymentInfo()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default ProSettings;\r\n","import React from \"react\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport Feed from \"components/Feed/Feed\";\r\nimport FeedFilterBar from \"components/FeedFilterBar\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass Drafts extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isGrid: false,\r\n selectedCase: 1,\r\n posts: [],\r\n lockers: [],\r\n finishedFetchingDrafts: false,\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n let postResults = await this.fetchDrafts(0, 24);\r\n\r\n this.setState({ posts: postResults });\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Posts\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Lockers\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n }\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n fetchDrafts = async (skip, take) => {\r\n let posts = await getRequest(`/api/Post/GetDraftPosts?skip=${skip}&take=${take}`)\r\n\r\n if (!(posts) || posts.length < take) {\r\n this.setState({ finishedFetchingDrafts: true });\r\n }\r\n\r\n if (posts === undefined || posts === null) {\r\n return [];\r\n } else {\r\n return posts;\r\n }\r\n }\r\n\r\n fetchMoreDrafts = async () => {\r\n let moreDrafts = await this.fetchDrafts(this.state.posts.length, 24);\r\n \r\n if (!(moreDrafts) || moreDrafts.length < 24) {\r\n this.setState({ finishedFetchingDrafts: true });\r\n }\r\n else {\r\n let updatedPosts = [...this.state.posts, ...moreDrafts];\r\n // De-duplicate as sometimes on mobile the Draft > Feed > InfiniteScroll component will run\r\n // the fetchMore() function before the original fetchDrafts has completed resulting in duplicates\r\n var uniquePosts = [];\r\n updatedPosts.forEach(post => {\r\n var uniquePost = uniquePosts.find(x => x.id === post.id);\r\n if (!uniquePost) {\r\n uniquePosts.push(post);\r\n }\r\n });\r\n this.setState({ posts: uniquePosts });\r\n }\r\n }\r\n\r\n updateFeed = (posts) => {\r\n this.setState({posts:posts})\r\n }\r\n\r\n deletePost = (shareCode) => {\r\n let locationToDelete = this.state.posts.findIndex((post) => post.shareCode === shareCode);\r\n let updatedPosts = [...this.state.posts];\r\n updatedPosts.splice(locationToDelete, 1);\r\n this.setState({ posts: updatedPosts });\r\n }\r\n\r\n render() {\r\n let breadCrumbList = [{ link: '/CreatorDashboard', text: 'Creator Dashboard' }, { link: '/Account/Drafts', text: 'Drafts', active: true }];\r\n let { loggedInUser } = this.props;\r\n let { posts, isGrid, selectedCase } = this.state;\r\n\r\n return (\r\n\r\n <>\r\n \r\n RockPorch - Drafts\r\n \r\n
    \r\n \r\n

    Drafts

    \r\n

    View and edit content in process

    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n\r\n this.setState({ isGrid: !this.state.isGrid })}\r\n isGrid={this.state.isGrid}\r\n innerClassName=\"row py-2 mt-0\"\r\n >\r\n {this.displayToggleButtons()}\r\n \r\n\r\n\r\n\r\n
    \r\n post.type !== 2) : selectedCase === 2 ? posts.filter(post => post.type === 2) : posts.filter(post => post.type === 2)}\r\n isGrid={isGrid}\r\n loggedInUser={loggedInUser}\r\n finishedFetching={this.state.finishedFetchingDrafts}\r\n fetchMore={this.fetchMoreDrafts}\r\n deletePost={this.deletePost}\r\n updateParent={this.updateFeed}\r\n />\r\n
    \r\n\r\n
    \r\n\r\n\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default Drafts;","import React, { useState, useEffect } from \"react\";\r\nimport AccountSidebar from \"../../components/AccountSidebar\";\r\nimport { Form, FormGroup, CustomInput } from \"reactstrap\";\r\nimport PropTypes from \"prop-types\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { User } from \"oidc-client\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nfunction CommunicationSettings(props) {\r\n const [loading, setLoading] = useState(false);\r\n const [userCommunicationPreference, setUserCommunicationPreference] = useState({ paymentEmail: false, salesEmail: false });\r\n\r\n useEffect(() => {\r\n const fetchUserCommunicationPreference = async () => {\r\n setLoading(true);\r\n\r\n const url = `api/Account/GetUserCommunicationPreference`\r\n const ucp = await getRequest(url);\r\n if (ucp != undefined && ucp != null) {\r\n setUserCommunicationPreference(ucp);\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n fetchUserCommunicationPreference();\r\n }, []);\r\n\r\n\r\n const onInputChange = async (e) => {\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n\r\n const ucp = { ...userCommunicationPreference };\r\n ucp[name] = !ucp[name];\r\n setUserCommunicationPreference(ucp);\r\n }\r\n\r\n const updateSettings = async () => {\r\n setLoading(true);\r\n\r\n const ucpObject = {\r\n paymentEmail: userCommunicationPreference.paymentEmail,\r\n salesEmail: userCommunicationPreference.salesEmail,\r\n }\r\n\r\n const userCommunicationPreferenceUrl = `api/Account/UpdateUserCommunicationPreference`;\r\n const ucp = await postRequest(userCommunicationPreferenceUrl, ucpObject);\r\n\r\n if (ucp != undefined && ucp != null) {\r\n setUserCommunicationPreference(ucp);\r\n }\r\n\r\n setLoading(false);\r\n }\r\n\r\n const breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/CommunicationSettings', text: 'Communication Preference', active: true }];\r\n\r\n\r\n return (\r\n
    \r\n \r\n RockPorch - Communication Preferences\r\n \r\n \r\n

    Communications Preferences

    \r\n

    Manage what information is sent to you

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n [\"sm\", \"md\"].includes(props.deviceSize) === false ? (\r\n
    \r\n \r\n
    \r\n ) : \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n

    Email me when:

    \r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n\r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n\r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n {\r\n props.loggedInUser.proStatusId === 1 ?\r\n\r\n \r\n onInputChange(e)} label=\"A sale is made\" id=\"salesEmailSwitch\" className=\"salesEmailSwitch\" />\r\n \r\n :\r\n <>\r\n }\r\n\r\n\r\n {/*

    Newsletter

    */}\r\n {/*
    */}\r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n\r\n \r\n updateSettings()}\r\n >Save\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CommunicationSettings;\r\n\r\nCommunicationSettings.propTypes = {\r\n Settings: PropTypes.shape({\r\n mentionsMe: PropTypes.bool,\r\n followsMe: PropTypes.bool,\r\n comments: PropTypes.bool,\r\n }),\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst SiteMapSection = (props) => {\r\n return (\r\n
    \r\n
      \r\n
    • \r\n {props.Title}\r\n
    • \r\n {props.Paths}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nSiteMapSection.propTypes = {\r\n Title: PropTypes.string,\r\n Paths: PropTypes.array,\r\n};\r\n\r\nexport default SiteMapSection;\r\n","var accountPaths = [\r\n { Name: \"Dashboard\", Path: \"/Account/Dashboard\" },\r\n { Name: \"My Saves\", Path: \"/Account/Storage\" },\r\n { Name: \"My Products\", Path: \"\" },\r\n { Name: \"Edit Profile\", Path: \"/Account/EditProfile\" },\r\n { Name: \"Account Settings\", Path: \"/Account/AccountSettings\" },\r\n { Name: \"Communication Settings\", Path: \"/Account/CommunicationSettings\" },\r\n { Name: \"Notifications\", Path: \"/Account/NotificationsAndMessages\" },\r\n { Name: \"Messages\", Path: \"/Account/NotificationsAndMessages\" },\r\n { Name: \"Go Pro\", Path: \"\" }\r\n];\r\n\r\nvar postPaths = [\r\n { Name: \"New Post Page\", Path: \"\" },\r\n { Name: \"Post Page - In Progress\", Path: \"\" },\r\n { Name: \"Post Page - Newly Created\", Path: \"\" },\r\n { Name: \"Post Modal\", Path: \"\" },\r\n { Name: \"Post Page Author\", Path: \"/Post/PostPageAuthor\" },\r\n { Name: \"Post Page\", Path: \"/Post/PostPage/asfgklnwep\" },\r\n { Name: \"Share a social post Modal - Instgram\", Path: \"/Post/Create\" },\r\n { Name: \"Share a social post Modal - Upload\", Path: \"/Post/Create\" },\r\n { Name: \"Share a social post modal - Peek\", Path: \"/Post/Create\" }\r\n];\r\n\r\nvar authPaths = [\r\n { Name: \"Sign Up\", Path: \"/Account/Register\" },\r\n { Name: \"Sign In\", Path: \"\" },\r\n { Name: \"Reset Password\", Path: \"\" },\r\n { Name: \"Onboard - Interests\", Path: \"\" },\r\n { Name: \"Onboard - Go Pro\", Path: \"\" },\r\n { Name: \"Onboard - Who to follow\", Path: \"/Onboard/WhoToFollow\" },\r\n];\r\n\r\nvar productPaths = [\r\n { Name: \"Add Product 01\", Path: \"/Product/AddProductModal\" },\r\n { Name: \"Add Product 02\", Path: \"\" },\r\n { Name: \"Add Product 04\", Path: \"\" },\r\n { Name: \"Add Product 05\", Path: \"\" },\r\n { Name: \"Mobile Product Card\", Path: \"\" },\r\n { Name: \"Product Modal\", Path: \"/Product/ProductModal\" },\r\n { Name: \"Product Page\", Path: \"/Product/ProductPage/eoSZIJcEB6\" },\r\n { Name: \"Buy\", Path: \"\" }\r\n];\r\n\r\nvar feedPaths = [\r\n { Name: \"My Home Feed\", Path: \"/HomeFeed\" },\r\n { Name: \"Explore Feed\", Path: \"/Explore\" },\r\n { Name: \"Search typeahead for recent searches\", Path: \"\" },\r\n { Name: \"Search Results\", Path: \"/SearchResults/cricket\" },\r\n];\r\n\r\nvar profilePaths = [\r\n { Name: \"My Profile\", Path: \"/Profile/samuel.obembe\", },\r\n { Name: \"Activity Feed - myself\", Path: \"\" },\r\n { Name: \"Lockers - myself\", Path: \"\" },\r\n { Name: \"Products - myself\", Path: \"\" },\r\n { Name: \"Locker Product Note - myself\", Path: \"\" },\r\n { Name: \"About - myself\", Path: \"\" },\r\n { Name: \"Activity Feed - another user\", Path: \"\" },\r\n { Name: \"Lockers - another user\", Path: \"\" },\r\n { Name: \"Products - another user\", Path: \"\" },\r\n { Name: \"Locker Product Note - another user\", Path: \"\" },\r\n { Name: \"About - another user\", Path: \"\" },\r\n { Name: \"Follow\", Path: \"\" },\r\n { Name: \"Comment\", Path: \"\" },\r\n];\r\n\r\nvar lockerPaths = [\r\n { Name: \"Create Locker - Modal 1\", Path: \"\" },\r\n { Name: \"Create Locker - Modal 2\", Path: \"\" },\r\n { Name: \"New Locker Page\", Path: \"/Locker/NewLockerPage\" },\r\n { Name: \"My Products Modal Selector\", Path: \"\" },\r\n { Name: \"Locker Modal\", Path: \"\" },\r\n { Name: \"Locker Page\", Path: \"/Locker/LockerPage\" },\r\n { Name: \"Comments Popup - Create(Author View)\", Path: \"\" },\r\n { Name: \"Comments Popup - Edit(Author View)\", Path: \"\" },\r\n { Name: \"Comments Popup - (Non-Author View)\", Path: \"\" }\r\n];\r\n\r\nexport default { accountPaths, postPaths, authPaths, productPaths, feedPaths, profilePaths, lockerPaths, };\r\n","import * as React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport SiteMapSection from \"../../components/SiteMapSection\";\r\nimport * as locations from \"../sitepaths\";\r\n\r\nconst SiteMap = () => {\r\n /**\r\n * @description Takes an array and renders links\r\n * @param {{Name:string,Path:string}[]} paths\r\n * @returns {JSX[]}\r\n */\r\n const renderPaths = (paths) => {\r\n return paths.map((location, i) => {\r\n return (\r\n
  • \r\n \r\n {location.Name}\r\n \r\n
  • \r\n );\r\n });\r\n };\r\n return (\r\n
    \r\n
    \r\n

    RockPorch

    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SiteMap;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { handleCommentMarkup,replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport BlueTickIconXY from \"components/icons/BlueTickIconXY\"\r\n\r\n/**\r\n * \r\n * @param {{notification:object, onClick:Function, commentText:string}} props\r\n */\r\nconst NotificationContent = (props) => {\r\n\r\n let { notification } = props;\r\n\r\n let notificationType = notification.userNotificationTypeId;\r\n\r\n let isCommentMentionNotification = [1, 2, 3, 4].includes(notificationType);\r\n let isCommentNotification = [6,7,8].includes(notificationType);\r\n\r\n let userName = isCommentMentionNotification === true || isCommentNotification === true ? `${notification.commentingUserName}` : `${notification.postingUserName}`\r\n\r\n let isCommentingOn = \"\";\r\n\r\n let mainNotificationText = () => {\r\n if (isCommentMentionNotification) {\r\n return \" mentioned you in a comment on a \"\r\n } else if (isCommentNotification) {\r\n return \" commented on your \"\r\n } else {\r\n return \" mentioned you in a \"\r\n }\r\n }\r\n\r\n let parseCommentText = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n switch (notificationType) {\r\n case 1:\r\n case 8:\r\n isCommentingOn = \"product\";\r\n break;\r\n case 2:\r\n case 4:\r\n case 6:\r\n isCommentingOn = \"post\";\r\n break;\r\n case 3:\r\n case 5:\r\n case 7:\r\n isCommentingOn = \"locker\";\r\n break;\r\n default:\r\n isCommentingOn = \"post\";\r\n }\r\n \r\n return (\r\n <>\r\n \r\n { `@${userName}` } \r\n \r\n\r\n {mainNotificationText()}\r\n \r\n props.onClick(e, notification)}>\r\n {isCommentingOn}\r\n \r\n : {parseCommentText(props.commentText)}\r\n \r\n )\r\n}\r\n\r\nexport default NotificationContent;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { handleCommentMarkup } from \"sharedUtils/markupUtils\";\r\nimport { getNotificationCount } from \"sharedUtils/notificationUtils\";\r\nimport NotificationDotIcon from \"../../components/icons/NotificationDotIcon\"\r\nimport { convertToAbbreviatedMonthAndDay } from \"../../sharedUtils/timeUtils\"\r\nimport BlueTickIconXY from \"components/icons/BlueTickIconXY\";\r\nimport NotificationContent from \"components/Notification/NotificationContent\";\r\nimport { togglePostPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\n\r\nclass Notifications extends React.Component {\r\n\r\n state = {\r\n notifications: [],\r\n notificationsPerPage: 10,\r\n page: 1,\r\n notificationCount: 0,\r\n pagingControls: []\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.getNotificationCount();\r\n this.getNotifications();\r\n }\r\n\r\n componentDidUpdate = async (prevProps, prevState, snapshot) => {\r\n if (this.props.display) {\r\n this.getNotificationCount();\r\n this.getNotifications();\r\n }\r\n };\r\n\r\n getNotificationCount = async () => {\r\n let notificationCount = await getNotificationCount(false);\r\n this.setState({ notificationCount: notificationCount });\r\n }\r\n\r\n getNotifications = async () => {\r\n let notificationsUrl = '/api/Account/GetNotifications?skip=' + (this.state.page - 1) * this.state.notificationsPerPage + '&take=' + this.state.notificationsPerPage;\r\n let notifications = await getRequest(notificationsUrl) ?? [];\r\n this.setState({ notifications: notifications });\r\n }\r\n\r\n renderHeaderLine = () => {\r\n return (\r\n

    Showing notifications {(this.state.page - 1) * this.state.notificationsPerPage + this.state.notifications.length > 0 ? 1 : 0} - {(this.state.page - 1) * this.state.notificationsPerPage + this.state.notifications.length} of {this.state.notificationCount}

    \r\n );\r\n }\r\n\r\n onClickNotification = async (notification) => {\r\n let notifications = this.state.notifications;\r\n\r\n let index = notifications.findIndex((n) => { return n.userNotificationId === notification.userNotificationId });\r\n\r\n if (!notifications[index].viewedDate) {\r\n notifications[index].viewedDate = Date.UTC;\r\n this.setState({ notifications: notifications });\r\n\r\n let notificationsUrl = '/api/Account/MarkNotificationAsViewed/' + notification.userNotificationId;\r\n await postRequest(notificationsUrl);\r\n }\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n return data;\r\n }\r\n\r\n onClickPost = async (e, notification) => {\r\n e.preventDefault();\r\n let loggedInUser = await getAuthorizedUserData();\r\n let isAuthorized = loggedInUser !== undefined && loggedInUser !== null;\r\n let post = await this.fetchPost(notification.userPostShareCode, isAuthorized);\r\n \r\n if (post.type === 2) {\r\n this.props.toggleLockerPageModal(post, loggedInUser, true, null)\r\n } else {\r\n this.props.togglePostPageModal(post, loggedInUser, true, null);\r\n }\r\n }\r\n\r\n fetchProduct = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`;\r\n let data = await getRequest(url);\r\n return data;\r\n }\r\n\r\n onClickProduct = async (e, notification) => {\r\n e.preventDefault();\r\n let loggedInUser = await getAuthorizedUserData();\r\n let isAuthorized = loggedInUser !== undefined && loggedInUser !== null;\r\n let product = await this.fetchProduct(notification.userMerchantProductCoupon, isAuthorized);\r\n\r\n this.props.toggleProductPageModal(product, loggedInUser, true, null);\r\n }\r\n\r\n renderNotification = (notification) => {\r\n if (notification.userNotificationTypeId === 1 || notification.userNotificationTypeId === 8) {\r\n return \r\n }\r\n else if (notification.userNotificationTypeId === 2 || notification.userNotificationTypeId === 6) {\r\n return \r\n }\r\n else if (notification.userNotificationTypeId === 3 || notification.userNotificationTypeId === 7 ) {\r\n return \r\n }\r\n else if (notification.userNotificationTypeId === 4 || notification.userNotificationTypeId === 5) {\r\n return \r\n }\r\n }\r\n\r\n renderNotifications = () => {\r\n return this.state.notifications.map((notification, i) => {\r\n return (\r\n
    this.onClickNotification(notification)} key={i}>\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n notification.viewedDate ?\r\n this.renderNotification(notification) :\r\n <>{this.renderNotification(notification)}\r\n }\r\n
    \r\n
    \r\n
    \r\n {\r\n notification.viewedDate ?\r\n <>\r\n {convertToAbbreviatedMonthAndDay(notification.createdDate, false)}\r\n :\r\n <>\r\n {convertToAbbreviatedMonthAndDay(notification.createdDate, false)}\r\n \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n });\r\n }\r\n\r\n onClickPage = async (page) => {\r\n await this.setState({ page: page });\r\n this.getNotifications();\r\n }\r\n\r\n renderPagingControls = () => {\r\n let pageCount = Math.ceil(this.state.notificationCount / this.state.notificationsPerPage);\r\n let pagingControls = [];\r\n for (let i = 1; i <= pageCount; ++i) {\r\n pagingControls.push(
  • );\r\n }\r\n\r\n return <>{pagingControls};\r\n }\r\n\r\n render() {\r\n if (this.props.display) {\r\n let pageCount = Math.ceil(this.state.notificationCount / this.state.notificationsPerPage);\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.renderHeaderLine()}\r\n
    \r\n
    \r\n
    \r\n {this.renderNotifications()}\r\n
    \r\n\r\n {\r\n pageCount > 1 ?\r\n :\r\n <>\r\n }\r\n
    \r\n
    ) \r\n }\r\n return <>;\r\n }\r\n}\r\n\r\nconst mapDispatch = { togglePostPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(Notifications);","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { getMessageCount } from \"sharedUtils/notificationUtils\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\nimport NotificationDotIcon from \"../../components/icons/NotificationDotIcon\"\r\nimport { convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"../../sharedUtils/timeUtils\"\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport BlueTickIconXY from \"components/icons/BlueTickIconXY\";\r\n\r\nclass Messages extends React.Component {\r\n \r\n state = {\r\n messages: [],\r\n messagesPerPage: 10,\r\n page: 1,\r\n messageCount: 0,\r\n pagingControls: [],\r\n showMessageDetails: false,\r\n sender: null,\r\n conversationId: null\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.getMessageCount();\r\n this.getMessages();\r\n this.props.setOnSelected(() => {\r\n this.onClickPage(1);\r\n });\r\n }\r\n\r\n getMessageCount = async () => {\r\n let messageCount = await getMessageCount(false);\r\n this.setState({ messageCount: messageCount });\r\n }\r\n\r\n getMessages = async () => {\r\n let messagesUrl = '/api/Account/GetMessageHeaders?skip=' + (this.state.page - 1) * this.state.messagesPerPage + '&take=' + this.state.messagesPerPage;\r\n let messages = await getRequest(messagesUrl) ?? [];\r\n this.setState({ messages: messages });\r\n }\r\n\r\n refreshState = async () => {\r\n this.getMessageCount();\r\n this.getMessages();\r\n }\r\n\r\n renderHeaderLine = () => {\r\n return (\r\n

    Showing messages {(this.state.page - 1) * this.state.messagesPerPage + this.state.messages.length > 0 ? 1 : 0} - {(this.state.page - 1) * this.state.messagesPerPage + this.state.messages.length} of {this.state.messageCount}

    \r\n );\r\n }\r\n\r\n onClickPage = async (page) => {\r\n await this.setState({ page: page });\r\n this.getMessages();\r\n }\r\n\r\n onClickMessage = async (message) => {\r\n let messages = this.state.messages;\r\n\r\n this.setState({ messages: messages, sender: message.sender, showMessageDetails: true, conversationId: message.conversationId });\r\n }\r\n\r\n renderMessages = () => {\r\n return this.state.messages.map((message, i) => {\r\n return (\r\n
    this.onClickMessage(message)} key={i}>\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {message.sender.userName} \r\n
    \r\n
    \r\n {message.text}\r\n
    \r\n
    \r\n
    \r\n {\r\n message.viewedDate ?\r\n <>\r\n {convertToAbbreviatedMonthAndDay(message.createdDate, false)}\r\n :\r\n <>\r\n {convertToAbbreviatedMonthAndDay(message.createdDate, false)}\r\n \r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n });\r\n }\r\n\r\n renderPagingControls = () => {\r\n let pageCount = Math.ceil(this.state.messageCount / this.state.messagesPerPage); \r\n let pagingControls = [];\r\n\r\n for (let i = 1; i <= pageCount; ++i) {\r\n pagingControls.push(
  • );\r\n }\r\n\r\n return <>{pagingControls};\r\n }\r\n\r\n onClickBack = async () => {\r\n await this.refreshState();\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n handleMessageInput = (e) => {\r\n this.setState({ newMessage: e.target.value });\r\n }\r\n\r\n onClickSend = async (message) => {\r\n let messages = this.state.messages;\r\n let index = messages.findIndex((m) => { return m.conversationId === message.conversationId });\r\n\r\n messages[index].text = message.text;\r\n messages[index].createdDate = message.createdDate;\r\n \r\n this.setState({ newMessage: \"\", messages: messages });\r\n }\r\n\r\n render() {\r\n if (this.props.display) {\r\n if (this.state.showMessageDetails) {\r\n return ;\r\n } else {\r\n let pageCount = Math.ceil(this.state.messageCount / this.state.messagesPerPage); \r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.renderHeaderLine()}\r\n
    \r\n
    \r\n
    \r\n {this.renderMessages()}\r\n
    \r\n\r\n {\r\n pageCount > 1 ?\r\n :\r\n <>\r\n }\r\n\r\n
    \r\n
    )\r\n }\r\n }\r\n return <>;\r\n }\r\n}\r\n\r\nexport default Messages;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport Notifications from \"./Notifications\"\r\nimport Messages from \"./Messages\"\r\nimport NotificationDotIcon from \"../../components/icons/NotificationDotIcon\"\r\nimport { getMessageCount, getNotificationCount } from \"sharedUtils/notificationUtils\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass NotificationsAndMessages extends React.Component {\r\n breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/NotificationsAndMessages', text: 'Messages', active: true }];\r\n \r\n state = {\r\n notificationsSelected: false,\r\n onMessagesSelected: () => { },\r\n unviewedMessageCount: 0,\r\n unviewedNotificationCount: 0\r\n }\r\n\r\n componentWillMount() {\r\n this.unlisten = this.props.history.listen((location, action) => {\r\n if (this.props.history.location.hash === \"#notifications\") {\r\n this.notificationsSelected();\r\n } else if (this.props.history.location.hash === \"#messages\") {\r\n this.messagesSelected();\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unlisten();\r\n clearInterval(this.timer);\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.refreshState();\r\n\r\n if (this.props.history.location.hash === \"#notifications\") {\r\n this.notificationsSelected();\r\n } else {\r\n this.messagesSelected();\r\n }\r\n }\r\n\r\n componentDidUpdate = async (prevProps) => {\r\n if (this.props.unviewedMessageCount !== prevProps.unviewedMessageCount ||\r\n this.props.unviewedNotificationCount !== prevProps.unviewedNotificationCount) {\r\n this.refreshState();\r\n }\r\n }\r\n\r\n refreshState = async () => {\r\n let unviewedMessageCount = await getMessageCount(true);\r\n let unviewedNotificationCount = await getNotificationCount(true);\r\n\r\n if (this.state.unviewedMessageCount !== unviewedMessageCount) {\r\n this.state.unviewedMessageCount = unviewedMessageCount;\r\n }\r\n\r\n if (this.state.unviewedNotificationCount !== unviewedNotificationCount) {\r\n this.state.unviewedNotificationCount = unviewedNotificationCount;\r\n }\r\n }\r\n\r\n setOnMessagesSelected = (func) => {\r\n this.state.onMessagesSelected = func;\r\n }\r\n\r\n notificationsSelected = () => {\r\n if (this.props.history.location.hash !== \"#notifications\") {\r\n this.props.history.push(\"#notifications\");\r\n }\r\n\r\n this.setState({ notificationsSelected: true });\r\n }\r\n\r\n messagesSelected = (clicked) => {\r\n if (this.props.history.location.hash !== \"#messages\") {\r\n this.props.history.push(\"#messages\");\r\n }\r\n\r\n this.setState({ notificationsSelected: false });\r\n\r\n if (clicked) {\r\n this.state.onMessagesSelected();\r\n }\r\n }\r\n\r\n setNotificationsSelected = (e, notificationsSelected) => {\r\n e.preventDefault();\r\n\r\n if (notificationsSelected) {\r\n this.notificationsSelected();\r\n } else {\r\n this.messagesSelected(true);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n RockPorch - Messages and Notifications\r\n \r\n
    \r\n \r\n

    Messages and Notifications

    \r\n

    Stay connected

    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default NotificationsAndMessages;","import React from \"react\";\r\nimport { NavbarBrand } from 'reactstrap';\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\n\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport authService from \"../../components/api-authorization/AuthorizeService\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\nvar jsonref = require('jsonref');\r\n\r\nclass ProductPageEmbed extends React.Component {\r\n commentsTextArea = React.createRef();\r\n browse = false;\r\n\r\n state = {\r\n redirect: false,\r\n loadingPartial: true,\r\n loading: true,\r\n loadingComments: false,\r\n loadingNextLinkedPosts: false,\r\n loadingPrevLinkedPosts: false,\r\n loadingBuy: false,\r\n commentInput: \"\",\r\n isFollowing: false,\r\n shareCode: \"\",\r\n linkedPostPage: 0,\r\n lastLinkedPostPage: 0,\r\n userDescriptionPage: 0,\r\n userDescriptions: [],\r\n productInfo: {\r\n userMerchantProductId: 0,\r\n userDescription: \"\",\r\n merchantProductId: 0,\r\n userRating: 0,\r\n rating: 0,\r\n displayRating: 0,\r\n ratingCount: 0,\r\n description: \"\",\r\n referalLink: {},\r\n manufacturer: \"\",\r\n name: \"\",\r\n price: 0,\r\n likes: 0,\r\n likedByUser: false,\r\n savedByUser: false,\r\n imageUrl: \"\",\r\n\r\n user: {\r\n name: \"\",\r\n userName: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n bio: \"\",\r\n proStatusId: 0\r\n },\r\n comments: [],\r\n linkedPosts: []\r\n },\r\n hidePageExtras: false,\r\n onlyIntegrated: true,\r\n shareLink: \"\",\r\n isUserMerchant: false,\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.setShowTopNav(false);\r\n\r\n let search = decodeURIComponent(this.props.location?.search);\r\n let params = new URLSearchParams(search);\r\n\r\n let pathname = decodeURIComponent(this.props.location?.pathname);\r\n\r\n let search2 = pathname.split('?');\r\n if (search == \"\" && search2.length > 0) {\r\n params = new URLSearchParams('?' + search2[1]);\r\n }\r\n\r\n let redirect = !this.props.isModal && (params.get('r') === '1' || params.get('r') == null);\r\n let browse = params.get('b') === '1';\r\n\r\n this.browse = browse; \r\n\r\n if (this.props.isModal !== true) {\r\n // this.props.closeAllModals()\r\n } else {\r\n this.setState({ hidePageExtras: false })\r\n }\r\n\r\n let shareCode = \"\";\r\n let productInfo = null;\r\n let loggedInUser = null;\r\n\r\n // feed\r\n if (this.props.match.params != undefined && this.props.match.params.product != undefined) {\r\n shareCode = this.props.match.params.product.shareCode;\r\n productInfo = this.props.match.params.product;\r\n productInfo.comments = [];\r\n productInfo.linkedPosts = [];\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params &&\r\n this.props.location.state.destinationState.params.product != undefined) {\r\n shareCode = this.props.location.state.destinationState.params.product.shareCode;\r\n productInfo = this.props.location.state.destinationState.params.product;\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n // direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n shareCode = decodeURIComponent(shareCode).split('?')[0];\r\n\r\n await this.setState({ shareCode });\r\n\r\n if (redirect) {\r\n await this.populateData(); // this will track the product view\r\n\r\n if (this.state.productInfo.integrated) {\r\n this.setState({ shareCode, redirect: true });\r\n }\r\n return;\r\n };\r\n\r\n let shareLink = await getProductShareLink(shareCode);\r\n\r\n await this.setState({ shareCode, productInfo, loggedInUser, shareLink, redirect, isUserMerchant: productInfo?.user?.id === this.props.loggedInUser?.id }, () => {\r\n this.populateData();\r\n });\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.setState({ hidePageExtras: false }, () => {\r\n setTimeout(() => {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }, 500);\r\n\r\n });\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props.match.params.shareCode != prevProps.match.params.shareCode) {\r\n this.setState({ loading: true });\r\n let isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n\r\n let product = this.props.location.state.destinationState.params.product;\r\n\r\n if (product == null || product == undefined) {\r\n\r\n product = await this.fetchProduct(shareCode);\r\n\r\n if (product == null || product == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1;\r\n }\r\n else {\r\n await this.getLikes(isAuthenticated, product.userMerchantProductId);\r\n await this.getSavedByUser(product.userMerchantProductId);\r\n await this.getRating(isAuthenticated, product.userMerchantProductId);\r\n await this.loadUserDescriptions(product.userMerchantProductId, this.state.loggedInUser ? this.state.loggedInUser.id : -1);\r\n\r\n\r\n }\r\n }\r\n this.loadLinkedPosts(0);\r\n\r\n this.setState({ productInfo: product, loading: false, isUserMerchant: product?.user?.id === this.props.loggedInUser?.id });\r\n }\r\n }\r\n\r\n fetchProduct = async (shareCode) => {\r\n let isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n let browse = this.browse ? \"&browse=true\" : \"\";\r\n let baseUrl = isAuthenticated === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let productUrl = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}${browse}`;\r\n\r\n let product = await getRequest(productUrl);\r\n\r\n\r\n return product;\r\n\r\n }\r\n\r\n async populateData() {\r\n var isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n let browse = this.browse ? \"&browse=true\" : \"\";\r\n\r\n let baseUrl = isAuthenticated === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let shareCode = this.props.match.params.shareCode;\r\n let productUrl = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}${browse}`;\r\n\r\n var data;\r\n if (this.state.productInfo && this.state.productInfo.userMerchantProductId && this.state.productInfo.userMerchantProductId !== 0) {\r\n data = this.state.productInfo;\r\n\r\n let trackBaseUrl = isAuthenticated ? `/Products/TrackProductViewAuthorized` : `/Products/TrackProductView`\r\n let trackProductViewUrl = `${trackBaseUrl}?userMerchantProductId=${data.userMerchantProductId}&referrer=${document.referrer}${browse}`;\r\n getRequest(trackProductViewUrl);\r\n } else {\r\n data = await getRequest(productUrl);\r\n \r\n if (data == null) {\r\n data = await getRequest(`/Products/Get?shareCode=${shareCode}&referrer=${document.referrer}${browse}`)\r\n }\r\n }\r\n\r\n if (data === undefined || data === null) {\r\n this.setState({ productInfo: null });\r\n this.props.history.push(\"/NotFound\");\r\n return -1;\r\n }\r\n\r\n await this.setState({ productInfo: data, loading: false, isUserMerchant: data?.user?.id === this.props.loggedInUser?.id });\r\n\r\n if (data.inUserInventory == null || data.inUserInventory == undefined) {\r\n await this.getInUserInventory(isAuthenticated, data.merchantProductId);\r\n }\r\n\r\n if (data.likes == null || data.likes === 0) {\r\n this.getLikes(isAuthenticated, data.userMerchantProductId);\r\n }\r\n\r\n if (data.ratingAverage == null || data.ratingAverage === 0) {\r\n this.getRating(isAuthenticated, data.userMerchantProductId);\r\n }\r\n\r\n if (data.savedByUser == null) {\r\n this.getSavedByUser(data.userMerchantProductId);\r\n }\r\n\r\n this.loadUserDescriptions(data.userMerchantProductId, this.state.loggedInUser ? this.state.loggedInUser.id : -1);\r\n\r\n this.setState({ loadingPartial: false });\r\n\r\n if (data.comments?.length == 0) { this.loadPreviousComments(0, 3); }\r\n this.loadLinkedPosts(0);\r\n\r\n if (this.state.loggedInUser) {\r\n let isFollowing = await getRequest(`/api/Account/IsFollowing?id=${this.state.productInfo.user.id}`);\r\n this.setState({ isFollowing: isFollowing });\r\n }\r\n }\r\n\r\n\r\n getInUserInventory = async (isAuthenticated, merchantProductId) => {\r\n if (isAuthenticated) {\r\n let url = `/Products/InInventory?merchantProductId=${merchantProductId}`;\r\n let prod = await getRequest(url);\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.inUserInventory = prod;\r\n this.setState({ productInfo });\r\n }\r\n }\r\n\r\n getLikes = async (isAuthenticated, userMerchantProductId) => {\r\n return;\r\n let url = isAuthenticated ? `/Products/GetLikesAuthorized/?userMerchantProductId=${userMerchantProductId}` : `/Products/GetLikes/?userMerchantProductId=${userMerchantProductId}`;\r\n\r\n var likes = await getRequest(url);\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.likes = likes?.count;\r\n productInfo.likedByUser = likes?.likedByUser;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n getRating = async (isAuthenticated, userMerchantProductId) => {\r\n let url = isAuthenticated ? `/Products/GetRatingAuthorized/${userMerchantProductId}` : `/Products/GetRating/${userMerchantProductId}`;\r\n\r\n var rating = await getRequest(url);\r\n if (rating == null) {\r\n rating = await getRequest(`/Products/GetRating/${userMerchantProductId}`);\r\n }\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.userRating = rating?.userRating;\r\n productInfo.rating = rating?.average;\r\n productInfo.ratingCount = rating?.count;\r\n productInfo.displayRating = rating?.average;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n\r\n \r\n getSavedByUser = async (userMerchantProductId) => {\r\n let url = `/Products/IsSaved/${userMerchantProductId}`;\r\n let savedByUser = await getRequest(url);\r\n\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.savedByUser = savedByUser;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n\r\n\r\n loadPreviousComments = async (skip = this.state.productInfo.comments.length, take = 25) => {\r\n this.setState({ loadingComments: true });\r\n\r\n let url = this.state.loggedInUser ? '/Products/GetCommentsAuthorized?shareCode=' : '/Products/GetComments?shareCode=';\r\n const token = await authService.getAccessToken();\r\n const response = await fetch(url + this.state.shareCode + \"&skip=\" + skip + \"&take=\" + take, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n let data = await response.json();\r\n\r\n data = await jsonref.parse(data, { scope: window.location });\r\n\r\n let comments = [...this.state.productInfo.comments]\r\n comments = data.concat(comments);\r\n this.setState({ productInfo: { ...this.state.productInfo, ...{ comments } } });\r\n this.setState({ loadingComments: false });\r\n }\r\n\r\n\r\n loadUserDescriptions = async (userMerchantProductId, userId) => {\r\n let userDescriptions = await getRequest(`/Products/GetWithUserDescriptions?userMerchantProductId=${userMerchantProductId}&userId=${userId}`);\r\n this.setState({ userDescriptions });\r\n }\r\n\r\n loadLinkedPosts = async (pageNumber) => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch((this.state.loggedInUser ? \"/Products/GetLinkedPostsAuthorized\" : \"/Products/GetLinkedPosts\") + \"?userMerchantProductId=\" + this.state.productInfo.userMerchantProductId + \"&page=\" + pageNumber, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n let linkedPosts = await response.json();\r\n\r\n linkedPosts = await jsonref.parse(linkedPosts, { scope: window.location });\r\n\r\n if (linkedPosts.length > 0) {\r\n this.setState({ lastLinkedPostPage: Math.ceil(linkedPosts[0].totalLinkedPosts / 4) - 1, linkedPostPage: pageNumber });\r\n }\r\n\r\n this.setState({ productInfo: { ...this.state.productInfo, ...{ linkedPosts } } });\r\n\r\n this.setState({ loadingNextLinkedPosts: false });\r\n this.setState({ loadingPrevLinkedPosts: false });\r\n }\r\n\r\n\r\n getUser = async (userId) => {\r\n return await getRequest(`/api/Account/GetById?userId=${userId}`);\r\n }\r\n\r\n renderFollowButton() {\r\n return (\r\n {\r\n e.preventDefault();\r\n let url = `/explore`;\r\n window.open(url);\r\n }}\r\n id=\"rp-nav-logo\" to=\"/Nav/Explore\" style={{ position: \"relative\", cursor: \"pointer\", width: \"100px\", marginRight: 0 }}>\r\n \r\n \r\n )\r\n }\r\n \r\n followAction = async () => {\r\n let url = `/prf/${this.state.productInfo?.user?.userName}`\r\n window.open(url);\r\n }\r\n\r\n contentSectionSmall = () => {\r\n let content = handleCommentMarkup(this.state.post?.content, true, true);\r\n return (\r\n

    \r\n {content}\r\n

    \r\n )\r\n }\r\n\r\n render() {\r\n const browse = this.browse ? \"&b=1\" : \"\";\r\n if (this.state.loading) {\r\n return (\r\n );\r\n }\r\n \r\n\r\n return (\r\n
    \r\n\r\n {/*
    */}\r\n {/*
    */}\r\n {/* */}\r\n {/*
    */}\r\n {/*
    */}\r\n {/* {this.renderFollowButton()}*/}\r\n {/*
    */}\r\n {/*
    */}\r\n
    \r\n \r\n {this.state.productInfo?.name}\r\n \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ProductPageEmbed;","import React, { useState } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\n\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst SwipeableProducts = (props) => {\r\n let history = useHistory();\r\n let [currentDisplayedMedia, setMedia] = useState(0);\r\n const [productPage, setProductPage] = useState(0);\r\n\r\n const { productItems } = props.productItems;\r\n const trimmedProducts = !!(props.product) ? props.productItems : trimProductsArray(props.productItems).map((i) => { return i; })\r\n\r\n const productPageHandlers = useSwipeable({\r\n onSwipedLeft: () => nextPage(),\r\n onSwipedRight: () => prevPage(),\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n\r\n const prevPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((trimmedProducts.length - 1) / 3);\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (trimmedProducts.length > 3) {\r\n let page = productPage + 1;\r\n if (page * 3 >= trimmedProducts.length) {\r\n page = 0;\r\n }\r\n\r\n setProductPage(page);\r\n }\r\n }\r\n\r\n\r\n const renderProductPagination = () => {\r\n if (trimmedProducts && trimmedProducts.length > 3) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (trimmedProducts && trimmedProducts?.length > 0) {\r\n return trimmedProducts.slice(productPage * 3, productPage * 3 + 3).map((product, i) => {\r\n const url = \"/Product/ProductPage/\" + product.shareCode + \"?r=1\";\r\n if (!!(props.redirect)) {\r\n return (\r\n
    \r\n
    props.redirect(e)}>\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let gridItem = () => {\r\n if (trimmedProducts?.length > 0) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n <>\r\n )\r\n }\r\n }\r\n\r\n return (\r\n gridItem()\r\n )\r\n}\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(SwipeableProducts);","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { NavbarBrand } from 'reactstrap';\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\n\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\n\r\nimport authService from \"../../components/api-authorization/AuthorizeService\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport PostPageProduct from \"../../components/PostPageProduct\";\r\nimport SaleIcon from \"../../components/icons/SaleIcon\";\r\nimport SwipeableProducts from \"./SwipeableProducts\";\r\n\r\nvar jsonref = require('jsonref');\r\n\r\nclass ProductPageEmbedBrand extends React.Component {\r\n browse = false;\r\n\r\n state = {\r\n displayStarRatings: false,\r\n redirect: false,\r\n loadingPartial: true,\r\n loading: true,\r\n isFollowing: false,\r\n shareCode: \"\",\r\n linkedPostPage: 0,\r\n productInfo: {\r\n userMerchantProductId: 0,\r\n userDescription: \"\",\r\n merchantProductId: 0,\r\n userRating: 0,\r\n rating: 0,\r\n displayRating: 0,\r\n ratingCount: 0,\r\n description: \"\",\r\n referalLink: {},\r\n manufacturer: \"\",\r\n name: \"\",\r\n price: 0,\r\n likes: 0,\r\n likedByUser: false,\r\n savedByUser: false,\r\n imageUrl: \"\",\r\n\r\n user: {\r\n name: \"\",\r\n userName: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n bio: \"\",\r\n proStatusId: 0\r\n },\r\n comments: [],\r\n linkedPosts: []\r\n },\r\n shareLink: \"\",\r\n }\r\n\r\n totalHeight = React.createRef();\r\n manufacturerRef = React.createRef();\r\n\r\n\r\n\r\n async componentDidMount() {\r\n const messageTotalHeight = () => {\r\n let totalHeight = this.totalHeight?.current?.offsetHeight;\r\n if (totalHeight > 100) {\r\n const messageObj = { shareCode: this.state.shareCode, height: totalHeight };\r\n const messageString = JSON.stringify(messageObj);\r\n\r\n window.parent.postMessage(messageString, \"*\");\r\n }\r\n }\r\n\r\n window.addEventListener('message', function (event) {\r\n messageTotalHeight();\r\n });\r\n\r\n this.props.setShowTopNav(false);\r\n\r\n let search = decodeURIComponent(this.props.location?.search);\r\n let params = new URLSearchParams(search);\r\n\r\n let pathname = decodeURIComponent(this.props.location?.pathname);\r\n\r\n let search2 = pathname.split('?');\r\n if (search == \"\" && search2.length > 0) {\r\n params = new URLSearchParams('?' + search2[1]);\r\n }\r\n\r\n let redirect = !this.props.isModal && (params.get('r') === '1' || params.get('r') == null);\r\n let browse = params.get('b') === '1';\r\n\r\n this.browse = browse;\r\n\r\n let shareCode = \"\";\r\n let productInfo = null;\r\n let loggedInUser = null;\r\n\r\n // feed\r\n if (this.props.match.params != undefined && this.props.match.params.product != undefined) {\r\n shareCode = this.props.match.params.product.shareCode;\r\n productInfo = this.props.match.params.product;\r\n productInfo.comments = [];\r\n productInfo.linkedPosts = [];\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params &&\r\n this.props.location.state.destinationState.params.product != undefined) {\r\n shareCode = this.props.location.state.destinationState.params.product.shareCode;\r\n productInfo = this.props.location.state.destinationState.params.product;\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n // direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n shareCode = decodeURIComponent(shareCode).split('?')[0];\r\n\r\n await this.setState({ shareCode });\r\n\r\n if (redirect) {\r\n await this.populateData(); // this will track the product view\r\n\r\n if (this.state.productInfo.integrated) {\r\n this.setState({ shareCode, redirect: true });\r\n }\r\n return;\r\n };\r\n\r\n let shareLink = await getProductShareLink(shareCode);\r\n\r\n await this.setState({ shareCode, productInfo, loggedInUser, shareLink, redirect }, () => {\r\n this.populateData();\r\n });\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props.match.params.shareCode != prevProps.match.params.shareCode) {\r\n this.setState({ loading: true });\r\n let isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n\r\n let product = this.props.location.state.destinationState.params.product;\r\n\r\n if (product == null || product == undefined) {\r\n\r\n product = await this.fetchProduct(shareCode);\r\n\r\n if (product == null || product == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1;\r\n }\r\n else {\r\n await this.getRating(isAuthenticated, product.userMerchantProductId);\r\n\r\n\r\n }\r\n }\r\n\r\n this.setState({ productInfo: product, loading: false });\r\n }\r\n }\r\n\r\n fetchProduct = async (shareCode) => {\r\n let isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n let browse = this.browse ? \"&browse=true\" : \"\";\r\n let baseUrl = isAuthenticated === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let productUrl = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}${browse}`;\r\n\r\n let product = await getRequest(productUrl);\r\n\r\n\r\n return product;\r\n\r\n }\r\n\r\n async populateData() {\r\n var isAuthenticated = this.state.loggedInUser ? true : await authService.isAuthenticated();\r\n let browse = this.browse ? \"&browse=true\" : \"\";\r\n\r\n let baseUrl = isAuthenticated === true ? `/Products/GetProductAuthorized` : `/Products/Get`;\r\n let shareCode = this.props.match.params.shareCode;\r\n let productUrl = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}${browse}`;\r\n\r\n var data;\r\n if (this.state.productInfo && this.state.productInfo.userMerchantProductId && this.state.productInfo.userMerchantProductId !== 0) {\r\n data = this.state.productInfo;\r\n\r\n let trackBaseUrl = isAuthenticated ? `/Products/TrackProductViewAuthorized` : `/Products/TrackProductView`\r\n let trackProductViewUrl = `${trackBaseUrl}?userMerchantProductId=${data.userMerchantProductId}&referrer=${document.referrer}${browse}`;\r\n getRequest(trackProductViewUrl);\r\n } else {\r\n data = await getRequest(productUrl);\r\n\r\n if (data == null) {\r\n data = await getRequest(`/Products/Get?shareCode=${shareCode}&referrer=${document.referrer}${browse}`)\r\n }\r\n }\r\n\r\n if (data === undefined || data === null) {\r\n this.setState({ productInfo: null });\r\n this.props.history.push(\"/NotFound\");\r\n return -1;\r\n }\r\n\r\n await this.setState({ productInfo: data, loading: false });\r\n\r\n if (data.ratingAverage == null || data.ratingAverage === 0) {\r\n this.getRating(isAuthenticated, data.userMerchantProductId);\r\n }\r\n\r\n this.setState({ loadingPartial: false });\r\n }\r\n\r\n getRating = async (isAuthenticated, userMerchantProductId) => {\r\n let url = isAuthenticated ? `/Products/GetRatingAuthorized/${userMerchantProductId}` : `/Products/GetRating/${userMerchantProductId}`;\r\n\r\n var rating = await getRequest(url);\r\n if (rating == null) {\r\n rating = await getRequest(`/Products/GetRating/${userMerchantProductId}`);\r\n }\r\n let productInfo = { ...this.state.productInfo };\r\n productInfo.userRating = rating?.userRating;\r\n productInfo.rating = rating?.average;\r\n productInfo.ratingCount = rating?.count;\r\n productInfo.displayRating = rating?.average;\r\n\r\n this.setState({ productInfo });\r\n }\r\n\r\n redirectToProductPage = () => {\r\n let url = `/prd/${this.state.shareCode}?r=0`;\r\n window.open(url);\r\n }\r\n\r\n dummyProductData = [{\r\n description: \"\",\r\n imageUrl: \"~/images/Logo.svg\",\r\n merchantProductId: 3788,\r\n name: \"Name\",\r\n price: 12,\r\n originalPrice: 12,\r\n salePrice: 12,\r\n sale: false,\r\n shareCode: \"a1\",\r\n url: \"https://www.rockporch.com\",\r\n user: { user: \"noone\" },\r\n comment: \"\",\r\n userDescription: \"\",\r\n userMerchantProductId: 1,\r\n manufacturer: \"No one\",\r\n merchant: \"No one\",\r\n integrated: true,\r\n ordinal: 0,\r\n id: 1,\r\n }];\r\n\r\n render() {\r\n const product = this.state.productInfo;\r\n\r\n const productInFeedStyle = {\r\n paddingBottom: this.totalHeight?.current?.offsetWidth <= 125 ? \"77%\" :\r\n this.totalHeight?.current?.offsetWidth <= 125 ? \"82.17%\" :\r\n this.totalHeight?.current?.offsetWidth <= 140 ? \"84.97%\" :\r\n this.totalHeight?.current?.offsetWidth <= 190 ? \"88.45%\" :\r\n \"92.04%\",\r\n position: \"relative\", top: \"10%\"\r\n }\r\n\r\n if (this.state.loading) {\r\n return (\r\n <>);\r\n }\r\n\r\n\r\n return (\r\n
    300 ? \"94%\" : this.totalHeight?.current?.offsetWidth > 200 ? \"88%\" : \"82%\", marginTop: \"10px\" }} ref={this.totalHeight}>\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n {this.state.displayStarRatings ? \r\n
    \r\n
    \r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={() => {\r\n if (product.ratingCount > 0) {\r\n this.redirectToProductPage();\r\n }\r\n }} />\r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n this.redirectToProductPage();\r\n }}>\r\n {product.ratingCount > 0 ? `(${product.ratingCount})` : null}\r\n \r\n \r\n
    \r\n
    \r\n : <>\r\n }\r\n \r\n
    \r\n
    \r\n
    {product.manufacturer?.toLowerCase().includes(\"rcktemp\") ? product.merchant : product.manufacturer}{product.sale && this.totalHeight?.current?.offsetWidth - this.manufacturerRef?.current?.offsetWidth > 43 ? : <>}
    \r\n
    \r\n
    \r\n
    {product.sale && !!(product.salePrice) ? \"$\" + product.salePrice.toFixed(2) : <>}
    ${product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice.toFixed(2) : product.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ProductPageEmbedBrand;","import React from \"react\";\r\n\r\nconst DraggablePhoto = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default DraggablePhoto;","import React, { forwardRef } from \"react\";\r\nimport SaleIcon from \"../icons/SaleIcon\";\r\n\r\nconst Photo = forwardRef(\r\n ({ displayIcon, deviceSize, renderInfoOverlay, dimensionsRef, removeItem, productItem, url, hover, index, faded, style, ...props }, ref) => {\r\n const inlineStyles = {\r\n opacity: faded ? \"0\" : \"1\",\r\n backgroundPosition: \"center\",\r\n backgroundSize: \"60%\",\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundColor: \"white\",\r\n backgroundImage: `url(${url})`,\r\n touchAction: \"none\",\r\n borderRight: !!(hover) && productItem.shareCode == hover ? \"3px solid #e55934\" : \"\",\r\n ...style\r\n };\r\n\r\n const renderSaleOverlay = (sale, faded) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n const toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n } \r\n\r\n return (\r\n \r\n
    \r\n\r\n
    \r\n {[\"sm\"].includes(deviceSize) ? renderSaleOverlay(productItem.sale, faded) : <>}\r\n {displayIcon(productItem.shareCode, faded)}\r\n
    \r\n {/*
    */}\r\n {/*
    */}\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {productItem.manufacturer?.toLowerCase().includes(\"rcktemp\") ? productItem.merchant : productItem.manufacturer}{productItem.sale && !!(productItem.salePrice) && ![\"sm\"].includes(deviceSize) && !faded ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {toTitleCase(productItem.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {productItem.sale && !!(productItem.salePrice) ? \"$\" + productItem.salePrice.toFixed(2) : <>}
    ${productItem.sale && !!(productItem.salePrice) && !!(productItem.originalPrice) ? productItem?.originalPrice?.toFixed(2) : productItem?.price?.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n);\r\n\r\nexport default Photo;","import React, { forwardRef } from \"react\";\r\nimport Photo from \"./Photo\";\r\nimport { useSortable } from \"@dnd-kit/sortable\";\r\nimport { CSS } from \"@dnd-kit/utilities\";\r\n\r\nconst SortablePhoto = forwardRef(\r\n (props, ref) => {\r\n const {\r\n attributes,\r\n isDragging,\r\n listeners,\r\n setNodeRef,\r\n transform,\r\n transition\r\n } = useSortable({ id: props.productItem.shareCode });\r\n\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default SortablePhoto;","import React from \"react\";\r\n\r\nconst Grid = ({ children }) => {\r\n return (\r\n \r\n {children}\r\n
    \r\n );\r\n}\r\n\r\n\r\nexport default Grid;","import React, { useState, useEffect, forwardRef, useRef, useCallback } from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport DraggablePhoto from \"./DraggablePhoto\";\r\nimport SortablePhoto from \"./SortablePhoto\";\r\nimport Grid from \"./Grid\";\r\nimport CommentIconPlusSign from \"components/icons/CommentIconPlusSign\";\r\n\r\nimport {\r\n DndContext,\r\n closestCenter,\r\n closestCorners,\r\n MouseSensor,\r\n TouchSensor,\r\n DragOverlay,\r\n useSensor,\r\n useSensors\r\n} from \"@dnd-kit/core\";\r\nimport { arrayMove, SortableContext } from \"@dnd-kit/sortable\";\r\n\r\n\r\nconst DisplayProducts = (props) => {\r\n \r\n const [items, setItems] = useState(props.products);\r\n const [prevItems, setPrevItems] = useState(props.products);\r\n\r\n const [startPosition, setStartPosition] = useState(null);\r\n const [endPosition, setEndPosition] = useState(null);\r\n const [id, setId] = useState(null);\r\n const [activeId, setActiveId] = useState(null);\r\n const [activeUrl, setActiveUrl] = useState(null);\r\n const [updated, setUpdated] = useState(false);\r\n\r\n const [hover, setHover] = useState(null);\r\n const sensors = useSensors(useSensor(MouseSensor), useSensor(TouchSensor, { activationConstraint: {distance: 10}}));\r\n\r\n\r\n const [height, setHeight] = useState(null);\r\n const [width, setWidth] = useState(null);\r\n const dimensionsRef = useCallback(node => {\r\n if (node !== null) {\r\n setHeight(node.getBoundingClientRect().height);\r\n setWidth(node.getBoundingClientRect().width);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.products?.length !== items.length) {\r\n setItems(props.products);\r\n };\r\n }, [props.products])\r\n\r\n useEffect(() => {\r\n if (updated && items !== prevItems) {\r\n saveProductsReorder();\r\n }\r\n setUpdated(false);\r\n }, [updated])\r\n\r\n const saveProductsReorder = async () => {\r\n let saveOridinalsModel = {\r\n id,\r\n max: startPosition > endPosition ? startPosition : endPosition,\r\n min: startPosition > endPosition ? endPosition : startPosition,\r\n finalOrdinal: endPosition,\r\n userPostId: props.postId,\r\n };\r\n let url = `/api/Post/SaveOrdinals`;\r\n await postRequest(url, saveOridinalsModel);\r\n props.reorderProductsInPost(items);\r\n }\r\n\r\n function displayIcon(shareCode, faded) {\r\n if (props.locker === true) {\r\n return (\r\n {\r\n e.preventDefault()\r\n props.showDescription(shareCode)\r\n }}>\r\n {}\r\n \r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n {}}>\r\n \r\n {items.map((productItem, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n { activeUrl ? (\r\n \r\n \r\n
    \r\n ) : null}\r\n \r\n\r\n \r\n );\r\n\r\n async function handleDragStart(event) {\r\n window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' });\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n setActiveUrl(items.filter(item => item.shareCode === event.active.id)[0].imageUrl);\r\n setPrevItems([...items]);\r\n }\r\n\r\n function handleDragOver(event) {\r\n setHover(event.over.id);\r\n }\r\n\r\n async function handleDragEnd(event) {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n\r\n setHover(null);\r\n\r\n const { active, over } = event;\r\n\r\n const activeIdentity = items.findIndex(item => item.shareCode == active.id);\r\n const overId = items.findIndex(item => item.shareCode == over.id);\r\n\r\n setId(items.filter(item => item.shareCode === active.id)[0].id);\r\n\r\n if (activeIdentity !== overId) {\r\n await setItems((items) => {\r\n const oldIndex = activeIdentity;\r\n const newIndex = overId;\r\n setStartPosition(oldIndex + 1);\r\n setEndPosition(newIndex + 1);\r\n\r\n return arrayMove(items, oldIndex, newIndex);\r\n });\r\n setUpdated(true);\r\n }\r\n }\r\n\r\n function handleDragCancel() {\r\n document.querySelector(\"body\").style.overflow = \"\";\r\n\r\n setActiveUrl(null);\r\n }\r\n\r\n};\r\n\r\nexport default DisplayProducts;","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\nimport PlusIcon from 'components/icons/PlusIcon';\r\nimport GridIcon from \"components/icons/GridIcon\";\r\nimport CameraIcon from \"components/icons/CameraIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport ProductsSelectorModal from \"components/UserMerchantProducts/ProductsSelectorModal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport Modal from \"components/Modal\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport MentionsInputTextArea from \"components/MentionsInputWrappers/MentionsInputTextArea\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport DisplayProducts from \"components/DisplayProducts/DisplayProducts\"\r\n\r\nimport EditProductCommentForm from \"views/Locker/EditProductCommentForm\";\r\n\r\nimport { toggleProductSelectModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nclass NewLockerPage extends React.Component {\r\n state = {\r\n bannerImage: \"\",\r\n deletingProduct: {\r\n isDeleting: false,\r\n coupon: \"\"\r\n },\r\n\r\n deletedLocker: false,\r\n isEditingProducts: false,\r\n isEditing: true,\r\n locker: {\r\n title: \"\",\r\n content: \"\",\r\n sectors: {\r\n $values: []\r\n },\r\n productItems: {\r\n $values: []\r\n },\r\n properties: {\r\n $type: \"\",\r\n values: []\r\n },\r\n shareCode: \"\"\r\n },\r\n unsortedLocker: {\r\n title: \"\",\r\n content: \"\",\r\n sectors: {\r\n $values: []\r\n },\r\n productItems: {\r\n $values: []\r\n },\r\n properties: {\r\n $type: \"\",\r\n values: []\r\n },\r\n shareCode: \"\"\r\n },\r\n loggedInUser: {},\r\n lockerNameChange: \"\",\r\n lockerContentChange: \"\",\r\n mentionSuggestions: [],\r\n publishingChanges: false,\r\n publishButtonMessage: {\r\n showMessage: false,\r\n messageText: \"\"\r\n },\r\n\r\n redirect: false,\r\n savingChanges: false,\r\n sectors: [],\r\n sectorFilter: \"\",\r\n selectedProduct: 0,\r\n selectedFiles: [],\r\n selectedImagePreviews: [],\r\n shareCode: \"\",\r\n showDescriptionModal: false,\r\n refreshingProducts: false,\r\n isForEdit: false,\r\n calledEditPost: false,\r\n draftRedirect: false,\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props?.location?.search?.toLowerCase().includes(\"?edit=true\")) {\r\n this.setState({ isForEdit: true })\r\n }\r\n this.props.closeAllModals()\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let locker = await this.fetchLocker(shareCode);\r\n this.verifyAndSetLocker(locker);\r\n let sectors = await this.fetchSectors();\r\n this.setState({ sectors });\r\n\r\n document.addEventListener(\"_productAddedEvent\", this.refreshLocker);\r\n\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.refreshLocker();\r\n }\r\n });\r\n }\r\n\r\n saveUser = async (loggedInUser) => {\r\n let serializedUser = {\r\n name: loggedInUser.name,\r\n firstName: loggedInUser.firstName,\r\n lastName: loggedInUser.lastName,\r\n bio: loggedInUser.bio,\r\n tagLine: loggedInUser.tagLine,\r\n website: loggedInUser.website,\r\n imageUrl: loggedInUser.imageUrl,\r\n userName: loggedInUser.userName,\r\n email: loggedInUser.email,\r\n\r\n phoneNumber: loggedInUser.phoneNumber,\r\n proStatusId: loggedInUser.proStatusId,\r\n address: loggedInUser.address,\r\n city: loggedInUser.city,\r\n state: loggedInUser.state,\r\n postalCode: loggedInUser.postalCode,\r\n country: loggedInUser.country,\r\n\r\n onboardingComplete: loggedInUser.onboardingComplete,\r\n profileBannerUrl: loggedInUser.profileBannerUrl,\r\n quickStart: loggedInUser.quickStart\r\n };\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n await postRequest(userUrl, serializedUser);\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n //this.props.closeAllModals();\r\n if (this.props.match.params.shareCode !== prevProps.match.params.shareCode) {\r\n let locker = await this.fetchLocker(this.props.match.params.shareCode); \r\n this.verifyAndSetLocker(locker);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"_productAddedEvent\", this.refreshLocker);\r\n window.removeEventListener(\"storage\", () => { });\r\n }\r\n\r\n addProductsToLocker = async (products) => {\r\n var userMerchantProductIds = products.map((prod) => prod.userMerchantProductId);\r\n var added = await postRequest(`/api/Post/addPostProducts?shareCode=${this.state.locker.shareCode}`, userMerchantProductIds);\r\n this.setState({ refreshingProducts: true });\r\n await this.refreshLocker();\r\n this.setState({ refreshingProducts: false });\r\n }\r\n\r\n removeCommentUsername = text => {\r\n const regex = /#!\\^.*?\\)\\)\\)/g;\r\n return text.replace(regex, '');\r\n } \r\n addSectorToLocker = (sector) => {\r\n let lockerCopy = { ...this.state.locker };\r\n\r\n let postSector = {\r\n sector: { ...sector, id: sector.sectorId }\r\n }\r\n lockerCopy.sectors.$values.push(postSector);\r\n this.setState({ locker: lockerCopy });\r\n }\r\n\r\n removeSectorFromLocker = (sector) => {\r\n let lockerCopy = { ...this.state.locker };\r\n let sectorSelected = lockerCopy.sectors?.$values?.findIndex(sec => sec.sector.id === sector.sectorId);\r\n lockerCopy.sectors.$values.splice(sectorSelected, 1);\r\n\r\n this.setState({ locker: lockerCopy });\r\n }\r\n\r\n cancelChanges = async () => {\r\n if (this.props.location.state?.justCreated === true) {\r\n let url = `/api/Locker/DeleteLocker`;\r\n let payload = {\r\n user: {\r\n id: this.state.locker.user.id\r\n },\r\n type: 2,\r\n shareCode: this.state.locker.shareCode,\r\n id: this.state.locker.id\r\n }\r\n await postRequest(url, payload);\r\n this.setState({\r\n deletedLocker: true,\r\n lockerNameChange: this.state.locker.title,\r\n lockerContentChange: this.state.locker.content,\r\n bannerImage: this.state.locker?.properties?.$values[0]?.value\r\n });\r\n return;\r\n } \r\n this.setState({ draftRedirect: true });\r\n return;\r\n }\r\n\r\n displayEditNavButtons = () => {\r\n let disabledPublishButton = this.state.locker.properties.$values?.length < 1 && this.state.selectedFiles?.length < 1 ;\r\n\r\n let disabledButtonClassName = disabledPublishButton ? \"disabled-primary-style-btn\":\"btn-primary\";\r\n return (\r\n <>\r\n {\r\n this.state.locker.status !== 1 ? (\r\n \r\n Save Draft\r\n \r\n\r\n ) : \r\n }\r\n\r\n\r\n \r\n {\r\n toast.error(\r\n
    \r\n

    Set Locker Image

    \r\n

    Make sure to select a single image file

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n } : this.publish}\r\n className={`btn btn-primary my-2 my-sm-0 ` + disabledButtonClassName}\r\n style={{ marginLeft: \"5px\", fontSize: this.props.deviceSize == \"sm\" ? \"15px\" : \"\" }}\r\n isLoading={this.state.publishingChanges}\r\n message={this.state.publishButtonMessage}\r\n isDisabled={false} \r\n >\r\n Post Locker\r\n \r\n
    \r\n \r\n )\r\n\r\n }\r\n\r\n displaySectors = () => {\r\n let filtered = this.state.sectors.filter(sec => sec.name.toLowerCase()\r\n .includes(this.state.sectorFilter.toLowerCase()));\r\n\r\n return filtered.map((sector, i) => {\r\n let sectorSelected = this.state.locker.sectors?.$values?.findIndex(sec => sec.sector.id === sector.sectorId);\r\n if (sectorSelected > -1) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n });\r\n }\r\n\r\n displayProducts = () => {\r\n if (this.state.refreshingProducts === true) {\r\n return \r\n }\r\n else {\r\n return trimProductsArray( this.state.locker?.productItems?.$values)?.map((productItem, i) => {\r\n let ump = productItem.userMerchantProduct;\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.toggleDescriptionModal(i)}\r\n isEditing={!this.state.isEditingProducts}\r\n />\r\n
    \r\n
    \r\n
    {productItem.manufacturer?.toLowerCase().includes(\"rcktemp\") ? productItem.merchant : productItem.manufacturer}{productItem.sale && !!(productItem.salePrice) ? : <>}
    \r\n
    \r\n
    \r\n
    {productItem.sale && !!(productItem.salePrice) ? \"$\" + productItem.salePrice.toFixed(2) : <>}
    ${productItem.sale && !!(productItem.salePrice) && !!(productItem.originalPrice) ? productItem.originalPrice.toFixed(2) : productItem.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n this.state.isEditingProducts === true ? (\r\n {\r\n e.preventDefault()\r\n this.removeProductFromLocker(productItem.shareCode)\r\n }}>\r\n {this.props.deviceSize === \"sm\" ? : }\r\n ) : null\r\n }\r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n }\r\n\r\n displayProductDescriptionModal = () => {\r\n let description = this.state.locker.productItems?.$values[this.state.selectedProduct]?.comment\r\n return (\r\n \r\n
    \r\n {\r\n await this.saveProductDescription(this.state.selectedProduct, description)\r\n this.toggleDescriptionModal()\r\n }}\r\n />\r\n
    \r\n\r\n
    \r\n\r\n )\r\n }\r\n\r\n fetchSectors = async () => {\r\n let url = `api/Sector/GetSectors`;\r\n let sectors = await getRequest(url);\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n if (sectors === undefined) {\r\n return [];\r\n }\r\n else {\r\n return sectors;\r\n }\r\n }\r\n\r\n fetchLocker = async (shareCode) => {\r\n let locker = await getRequest(`api/Post/getPostAuthorized?shareCode=${shareCode}`);\r\n return locker;\r\n }\r\n\r\n fetchUserSuggestions = async (query, callback) => {\r\n if (!query || query.length < 1) {\r\n return;\r\n }\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n let users = await getRequest(url);\r\n if (users === undefined) {\r\n this.setState({ mentionSuggestions: [] });\r\n }\r\n else {\r\n this.setState({ mentionSuggestions: users });\r\n\r\n }\r\n\r\n let mappedUsers = this.state.mentionSuggestions.map(user => ({ display: user.userName, id: user.id, name: user.name }));\r\n callback(mappedUsers);\r\n }\r\n\r\n publish = async () => {\r\n // this.state.calledEditPost ensures that /api/post/EditPost is only called once\r\n if (!this.state.calledEditPost) {\r\n this.setState({ calledEditPost: true })\r\n\r\n if (this.state.locker.productItems.$values.length === 0) {\r\n //alert(\"Add a product before publishing\");\r\n this.setState({ publishButtonMessage: { showMessage: true, messageText: \"Add a product before publishing\" } });\r\n\r\n setTimeout(() => this.setState({ publishButtonMessage: { showMessage: false, messageText: \"\" } }), 2000)\r\n return -1;\r\n }\r\n else {\r\n this.setState({ publishingChanges: true });\r\n let payload = {\r\n content: this.state.lockerContentChange,\r\n title: this.state.lockerNameChange,\r\n user: { id: this.state.locker.user.id },\r\n id: this.state.locker.id,\r\n statusId: 1,\r\n sectors: this.state.locker.sectors.$values.map((value) => {\r\n return {\r\n sector: { id: value.sector.id, name: value.sector.name }\r\n };\r\n }),\r\n };\r\n\r\n await this.saveChanges()\r\n\r\n var url = `/api/post/EditPost?isPublishing=${true}&isEditing=${this.state.isForEdit}¬ification=false`;\r\n\r\n var published = await postRequest(url, payload);\r\n\r\n if (published.title === \"Unauthorized\") {\r\n this.setState({ redirect: false, publishingChanges: false, calledEditPost: false });\r\n const url = `/Locker/LockerPage/${this.state.locker.shareCode}`\r\n window.location.replace(url);\r\n return;\r\n }\r\n\r\n if (published != undefined) {\r\n //alert(\"Successfully published post\");\r\n this.setState({ publishingChanges: false, redirect: true })\r\n\r\n }\r\n else {\r\n //alert(\"There was an issue publishing\");\r\n this.setState({ publishingChanges: false, calledEditPost: false })\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n removeProductFromLocker = async (coupon) => {\r\n let updatedLocker = { ...this.state.locker };\r\n let location = updatedLocker.productItems.$values.findIndex(prod => prod.userMerchantProduct.coupon === coupon);\r\n let product = updatedLocker.productItems.$values.find(prod => prod.userMerchantProduct.coupon === coupon);\r\n if (location > -1) {\r\n updatedLocker.productItems.$values.splice(location, 1);\r\n }\r\n\r\n this.setState({ locker: updatedLocker, deletingProduct: { isDeleting: false, coupon: \"\" } })\r\n\r\n let payload = {\r\n user: {\r\n id: this.state.locker.user?.id\r\n }\r\n };\r\n\r\n await postRequest(`/api/Locker/DeleteLockerProduct?userPostUserMerchantProductId=${product.id}`, payload);\r\n\r\n if (this.state.locker.productItems.$values.length === 0) {\r\n let payload2 = {\r\n content: this.state.locker.content,\r\n title: this.state.locker.title,\r\n user: { id: this.state.locker.user.id },\r\n id: this.state.locker.id,\r\n statusId: 0\r\n }\r\n let url = `/api/post/EditPost?isPublishing=${false}&isEditing=${this.state.isForEdit}`;\r\n await postRequest(url, payload2);\r\n }\r\n }\r\n\r\n refreshLocker = async () => {\r\n let shareCode = this.props.match.params.shareCode;\r\n let locker = await this.fetchLocker(shareCode);\r\n this.verifyAndSetLocker(locker);\r\n }\r\n\r\n saveChanges = async () => {\r\n this.setState({ savingChanges: true });\r\n await this.uploadMedia();\r\n await this.updateLockerContent();\r\n \r\n let newProperties = await this.fetchLocker(this.state.locker.shareCode);\r\n let newLocker = { ...this.state.locker, ...newProperties }\r\n if (newLocker !== undefined || newLocker !== null) {\r\n this.setState({ locker: newLocker, selectedFiles: [], selectedImagePreviews: [], savingChanges: false });\r\n }\r\n }\r\n\r\n /*\r\n saveSectors = async () => {\r\n let url = `/api/Sector/UpdateUserPostSectors?postId=${this.state.locker.id}`;\r\n let sectors = this.state.locker.sectors.$values.map(sec => sec.sector.id);\r\n await postRequest(url, sectors);\r\n }\r\n */\r\n\r\n saveProductDescription = async (productIndex, description) => {\r\n let locker = { ...this.state.locker };\r\n locker.productItems.$values[productIndex].comment = description;\r\n //locker.productItems.$values[productIndex].product.userDescription = description;\r\n this.setState({ locker });\r\n\r\n let product = locker.productItems.$values[productIndex];\r\n let payload = {\r\n id: product.id,\r\n comment: product.comment,\r\n userPostId: locker.id,\r\n userPostProductItemTypeId: locker.productItems.$values[productIndex].type,\r\n userMerchantProductId: locker.productItems.$values[productIndex].userMerchantProduct.id,\r\n ordinal: locker.productItems.$values[productIndex].ordinal\r\n }\r\n\r\n let url = `api/Locker/UpdateLockerProductDescription?comment=${product.comment}&userPostUserMerchantProductId=${product.id}`;\r\n\r\n var update = await postRequest(url, payload);\r\n }\r\n\r\n selectMediaToUpload = (e) => {\r\n e.preventDefault();\r\n\r\n if (e.target.files.length > 0) {\r\n const file = e.target.files[0];\r\n\r\n if (file?.type?.startsWith('image/')) {\r\n\r\n const url = URL.createObjectURL(file);\r\n this.setState({ selectedFiles: [file], bannerImage: url });\r\n } else {\r\n toast.error(\r\n
    \r\n

    Set Locker Image

    \r\n

    Make sure to select a single image file

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n e.target.value = null;\r\n }\r\n }\r\n\r\n toggleDescriptionModal = (shareCode) => {\r\n let productIndex = this.state.unsortedLocker?.productItems?.$values.findIndex(locker => locker.userMerchantProduct.coupon === shareCode);\r\n\r\n this.setState({ showDescriptionModal: !this.state.showDescriptionModal, selectedProduct: productIndex })\r\n }\r\n\r\n uploadMedia = async () => {\r\n if (this.state.selectedFiles.length > 0) {\r\n let url = `/api/Locker/uploadMedia?postId=${this.state.locker.id}&postUserId=${this.state.locker.user.id}`;\r\n let bannerExists = this.state.locker?.properties.$values.length > 0;\r\n\r\n if (bannerExists === true) {\r\n url += `&existingBanner=${this.state.locker?.properties.$values[0]?.value}&userPostPropertyId=${this.state.locker?.properties.$values[0]?.id}`\r\n }\r\n\r\n const formData = new FormData();\r\n\r\n for (let i = 0; i < this.state.selectedFiles.length; i++) {\r\n formData.append(`postImage${i}`, this.state.selectedFiles[i])\r\n }\r\n let newProperties = await postRequest(url, formData, null, false);\r\n return newProperties;\r\n }\r\n else return null;\r\n }\r\n\r\n updateLockerContent = async () => {\r\n var url = `/api/post/EditPost?isPublishing=${false}&isEditing=${this.state.isForEdit}`;\r\n\r\n let payload = {\r\n content: this.state.lockerContentChange,\r\n title: this.state.lockerNameChange,\r\n user: { id: this.state.locker.user.id },\r\n id: this.state.locker.id,\r\n sectors: this.state.locker.sectors.$values.map((value) => {\r\n return {\r\n sector: { id: value.sector.id, name: value.sector.name }\r\n };\r\n }),\r\n statusId: 0\r\n }\r\n\r\n var edit = await postRequest(url, payload);\r\n return edit;\r\n }\r\n\r\n verifyAndSetLocker = (locker) => {\r\n if (locker === undefined) {\r\n this.setState({ locker: \"notFound\" });\r\n }\r\n else {\r\n let shareCode = locker.shareCode;\r\n if (this.props.loggedInUser?.id !== locker.user?.id) {\r\n this.setState({ redirect: true })\r\n }\r\n else {\r\n let images = locker.properties?.$values;\r\n let imageSrc;\r\n if (images !== undefined && images.length > 0) {\r\n imageSrc = images[0].value;\r\n }\r\n else {\r\n imageSrc = \"images/blank-banner.png\"\r\n }\r\n this.setState({\r\n shareCode,\r\n locker,\r\n unsortedLocker: locker,\r\n loggedInUser: this.props.loggedInUser,\r\n lockerNameChange: locker.title,\r\n lockerContentChange: locker.content,\r\n bannerImage: imageSrc\r\n });\r\n }\r\n }\r\n }\r\n\r\n removeProductFromPost = async (coupon) => {\r\n let updatedLocker = { ...this.state.locker };\r\n let location = updatedLocker.productItems.$values.findIndex(prod => prod.userMerchantProduct.coupon === coupon);\r\n let product = updatedLocker.productItems.$values.find(prod => prod.userMerchantProduct.coupon === coupon);\r\n if (location > -1) {\r\n updatedLocker.productItems.$values.splice(location, 1);\r\n }\r\n\r\n this.setState({ locker: updatedLocker })\r\n\r\n let payload = {\r\n user: {\r\n id: this.state.locker.user?.id\r\n }\r\n };\r\n\r\n await postRequest(`/api/Locker/DeleteLockerProduct?userPostUserMerchantProductId=${product.id}`, payload);\r\n }\r\n\r\n reorderProductsInPost = (items) => {\r\n let reorderedItems = items.map((item, index) => {\r\n item.ordinal = index + 1;\r\n return item;\r\n });\r\n\r\n let newValues = this.state.locker?.productItems.$values.map(item => {\r\n for (let i = 0; i < reorderedItems?.length; i++) {\r\n if (reorderedItems[i].id == item.id) {\r\n item.ordinal = reorderedItems[i].ordinal;\r\n };\r\n };\r\n return item;\r\n }).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n });\r\n\r\n let locker = this.state.locker;\r\n locker.productItems.$values = newValues;\r\n this.setState({ locker });\r\n }\r\n\r\n renderInfoOverlay = (shareCode) => {\r\n return {\r\n this.props.toggleProductPageModal({ shareCode }, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n getPageTitle = () => {\r\n const shareCode = this.props.match?.params?.shareCode;\r\n\r\n return \"RockPorch - Edit Locker: \" + shareCode;\r\n };\r\n\r\n render() {\r\n let { title, content } = this.state.locker;\r\n\r\n let productGridRowClass = [\"sm\", \"md\"].includes(this.props.deviceSize) ? \"\" : \"\";\r\n if (this.state.draftRedirect && this.state.isForEdit) {\r\n return (\r\n \r\n )\r\n } else if (this.state.draftRedirect) {\r\n return (\r\n \r\n )\r\n } else if (this.state.locker === \"notFound\") {\r\n return (\r\n \r\n )\r\n } else {\r\n return (\r\n
    \r\n \r\n {this.getPageTitle()}\r\n \r\n \r\n {\r\n this.state.redirect === true ? (\r\n \r\n ) : \r\n }\r\n {this.displayProductDescriptionModal()}\r\n\r\n {\r\n this.state.deletedLocker === true ? (\r\n \r\n ) : \r\n }\r\n \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n\r\n this.selectMediaToUpload(e)}\r\n style={{ display: \"none\" }}\r\n />\r\n\r\n {\r\n this.state.isEditing === true ? (\r\n <>\r\n {\r\n document.getElementById(\"uploadLockerImage\").click()\r\n }}\r\n >\r\n \r\n {this.props.deviceSize === \"sm\" ? \"\" : \" Update Image\"}\r\n \r\n \r\n\r\n ) : null\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n { this.setState({ lockerNameChange: e.target.value }) }}\r\n value={this.state.lockerNameChange}\r\n />\r\n\r\n \r\n\r\n this.setState({ lockerContentChange: e.target.value })}\r\n data={this.fetchUserSuggestions}\r\n />\r\n\r\n\r\n { this.setState({ sectorFilter: e.target.value }) }}\r\n value={this.state.sectorFilter}\r\n placeholder=\"Search for interests..\"\r\n />\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displaySectors()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n\r\n
    \r\n {this.displayEditNavButtons()}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n {/*
    */}\r\n {/* {this.displayProducts()}*/}\r\n {/*
    */}\r\n\r\n
    \r\n this.toggleDescriptionModal(i)}\r\n />\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleModal: toggleProductSelectModal,\r\n closeAllModals\r\n}\r\n\r\nexport default connect(null, mapDispatch)(NewLockerPage);","import React from \"react\";\r\n//import Carousel from \"../components/Carousel\";\r\n/**\r\n * \r\n * @param {{images:[]}} props\r\n */\r\nconst PostAuthorBanner = (props) => {\r\n let renderCarousel = () => {\r\n if (props.images && props.images.length && props.images.length > 0) {\r\n return (\r\n
    \r\n \"Responsive\"\r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {props.children}\r\n
    \r\n
    \r\n\r\n )\r\n }\r\n }\r\n return (\r\n <>\r\n {renderCarousel()}\r\n \r\n )\r\n}\r\n\r\nexport default PostAuthorBanner;","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { Popover, PopoverBody } from \"reactstrap\"\r\nimport PlusIcon from \"components/icons/PlusIcon\";\r\nimport Carousel from \"components/Carousel\";\r\nimport PostAuthorBanner from \"../../components/PostAuthorBanner\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport PostBanner from \"components/PostBanner\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport ProductsSelectorModal from \"components/UserMerchantProducts/ProductsSelectorModal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport MentionsInputTextArea from \"components/MentionsInputWrappers/MentionsInputTextArea\";\r\nimport DisplayProducts from \"components/DisplayProducts/DisplayProducts\"\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { trimProductsArray, getProperties } from \"sharedUtils/postFunctions\";\r\nimport { toggleProductSelectModal, toggleProductPageModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\n\r\nclass PostPageAuthor extends React.Component {\r\n state = {\r\n likes: 0,\r\n comments: 0,\r\n isEditing: true,\r\n isPublished: false,\r\n isPublishing: false,\r\n isSaving: false,\r\n postText: \"\",\r\n interests: [],\r\n images: [],\r\n showModal: false,\r\n post: {},\r\n notAuthorized: false,\r\n postContentChange: \"\",\r\n finishedLoading: false,\r\n currentMediaItemIndex: 0,\r\n sectors: [],\r\n deletedPost: false,\r\n sectorFilter: \"\",\r\n mentionSuggestions: [],\r\n postCount: 1,\r\n showReminder: false,\r\n seenReminder: false,\r\n isForEdit: false,\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props?.location?.search?.toLowerCase().includes(\"?edit=true\")) {\r\n this.setState({ isForEdit: true })\r\n }\r\n this.props.closeAllModals();\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n let isAuthenticated = this.props?.loggedInUser === undefined ? false : true;\r\n if (this.props.location.state?.post === undefined) {\r\n let post = await this.fetchPost(this.props.match.params.shareCode, isAuthenticated);\r\n\r\n let isAuthorized = post.user?.id == this.props.loggedInUser.id\r\n\r\n this.setState({ post: post, postContentChange: post.content, finishedLoading: true, notAuthorized: !isAuthorized });\r\n }\r\n else {\r\n let post = this.props.location.state.post;\r\n let isAuthorized = post.user?.id == this.props.loggedInUser.id;\r\n this.setState({ post: post, postContentChange: post.content, finishedLoading: true, notAuthorized: !isAuthorized });\r\n }\r\n\r\n let postCount = await this.getPostCount();\r\n let sectors = await this.fetchSectors();\r\n this.setState({ sectors, postCount });\r\n }\r\n\r\n async componentDidUpdate(prevProps,prevState) {\r\n if (this.props.match.params.shareCode !== prevProps.match.params.shareCode) {\r\n this.props.closeAllModals();\r\n let isAuthenticated = this.props?.loggedInUser === undefined ? false : true;\r\n this.setState({ finishedLoading: false });\r\n let post = await this.fetchPost(this.props.match.params.shareCode, isAuthenticated);\r\n this.setState({ post, postContentChange: post.content, finishedLoading: true });\r\n }\r\n }\r\n\r\n addProductsToPost = async (products) => {\r\n let newState = { ...this.state };\r\n\r\n products.forEach((prod) => prod.coupon = prod.shareCode);\r\n let productMap = products.map((prod) => { \r\n prod.merchant = { name: prod.merchant };\r\n prod.product = { manufacturer: { name: prod.manufacturer } };\r\n return {\r\n userMerchantProduct: { ...prod, product: prod }\r\n }\r\n });\r\n\r\n var userMerchantProductIds = products.map((prod) => prod.userMerchantProductId);\r\n var added = await postRequest(`/api/Post/addPostProducts?shareCode=${this.state.post.shareCode}`, userMerchantProductIds);\r\n\r\n added.forEach((prod) => {\r\n var index = productMap.findIndex((productItem) => { return productItem.userMerchantProduct.userMerchantProductId === prod.userMerchantProductId });\r\n productMap[index].id = prod.id;\r\n })\r\n productMap = productMap.reverse();\r\n newState.post.productItems.$values = [...productMap, ...this.state.post.productItems.$values];\r\n this.setState({ post: newState.post, seenReminder: true });\r\n }\r\n\r\n addSectorToPost = (sector) => {\r\n let postCopy = { ...this.state.post };\r\n\r\n let postSector = {\r\n sector: { ...sector, id: sector.sectorId }\r\n }\r\n postCopy.sectors.$values.push(postSector);\r\n this.setState({ post: postCopy });\r\n\r\n }\r\n\r\n removeSectorFromPost = (sector) => {\r\n let postCopy = { ...this.state.post };\r\n let sectorSelected = postCopy.sectors?.$values?.findIndex(sec => sec.sector.id === sector.sectorId);\r\n postCopy.sectors.$values.splice(sectorSelected, 1);\r\n\r\n this.setState({ post: postCopy });\r\n }\r\n\r\n deletePost = async () => {\r\n let url = `/api/Locker/DeleteLocker`;\r\n let payload = {\r\n user: {\r\n id: this.state.post.user.id\r\n },\r\n type: 2,\r\n shareCode: this.state.post.shareCode,\r\n id: this.state.post.id\r\n }\r\n await postRequest(url, payload);\r\n this.setState({\r\n deletedPost: true,\r\n postText: \"\",\r\n });\r\n }\r\n\r\n displayLoadSpinner = () => {\r\n return (\r\n
    \r\n Loading...\r\n
    \r\n )\r\n\r\n }\r\n\r\n displayEditBannerOrImage = () => {\r\n if (this.state.images.length === 0) {\r\n return \r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n displaySectors = () => {\r\n let filtered = this.state.sectors.filter(sec => sec.name.toLowerCase()\r\n .includes(this.state.sectorFilter.toLowerCase()));\r\n\r\n return filtered.map((sector, i) => {\r\n let sectorSelected = this.state.post.sectors?.$values?.findIndex(sec => sec.sector.id === sector.sectorId);\r\n if (sectorSelected > -1) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n });\r\n }\r\n\r\n removeCommentUsername = text => {\r\n const regex = /#!\\^.*?\\)\\)\\)/g;\r\n return text.replace(regex, '');\r\n }\r\n\r\n toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n } \r\n\r\n displayProducts = () => {\r\n if (this.state.post?.productItems?.$values) {\r\n return trimProductsArray(this.state.post?.productItems?.$values).map((productItem, i) => {\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {productItem.manufacturer?.toLowerCase().includes(\"rcktemp\") ? productItem.merchant : productItem.manufacturer}{productItem.sale && !!(productItem.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(productItem.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {productItem.sale && !!(productItem.salePrice) ? \"$\" + productItem.salePrice.toFixed(2) : <>}
    ${productItem.sale && !!(productItem.salePrice) && !!(productItem.originalPrice) ? productItem.originalPrice.toFixed(2) : productItem.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`;\r\n let post = await getRequest(url);\r\n return post;\r\n }\r\n\r\n fetchSectors = async () => {\r\n let url = `api/Sector/GetSectors`;\r\n let sectors = await getRequest(url);\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n if (sectors === undefined) {\r\n return [];\r\n }\r\n else {\r\n return sectors;\r\n }\r\n }\r\n\r\n getPostCount = async () => {\r\n let url = `api/Post/GetPostCount?userId=${this.props.loggedInUser.id}`;\r\n let count = await getRequest(url);\r\n let sum = count.length > 0 ? count.reduce(function (a, b) {\r\n return { count: a.count + b.count };\r\n }) : { count: 0 };\r\n return sum.count;\r\n }\r\n\r\n fetchUserSuggestions = async (query, callback) => {\r\n if (!query || query.length < 1) {\r\n return;\r\n }\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n let users = await getRequest(url);\r\n if (users === undefined) {\r\n this.setState({ mentionSuggestions: [] });\r\n }\r\n else {\r\n this.setState({ mentionSuggestions: users });\r\n\r\n }\r\n\r\n let mappedUsers = this.state.mentionSuggestions.map(user => ({ display: user.userName, id: user.id, name: user.name }));\r\n callback(mappedUsers);\r\n }\r\n\r\n handleInput = (e) => {\r\n this.setState({ [e.target.name]: e.target.value })\r\n }\r\n\r\n publish = async () => {\r\n if (this.state.postCount == 1 && !this.state.seenReminder && this.state.post.productItems.$values.length === 0) {\r\n this.setState({ showReminder: true });\r\n document.getElementById(\"addProdButton\").scrollIntoView();;\r\n return;\r\n }\r\n\r\n let payload = {\r\n content: this.state.postContentChange,\r\n title: \"\",\r\n user: { id: this.state.post.user.id },\r\n id: this.state.post.id,\r\n statusId: 1,\r\n sectors: this.state.post.sectors.$values.map((value) => {\r\n return {\r\n sector: { id: value.sector.id, name: value.sector.name }\r\n };\r\n })\r\n }\r\n\r\n this.setState({ isPublishing: true })\r\n\r\n var url = `/api/post/EditPost?isPublishing=${true}&isEditing=${this.state.isForEdit}`;\r\n var published = await postRequest(url, payload);\r\n\r\n if (published.title === \"Unauthorized\") {\r\n this.setState({ notAuthorized: true, isPublished: false, isPublishing: false });\r\n return;\r\n }\r\n if (published === undefined) {\r\n this.setState({ isPublished: false, isPublishing: false })\r\n }\r\n else {\r\n this.setState({ isPublished: true, isPublishing: false });\r\n }\r\n }\r\n\r\n removeProductFromPost = async (coupon) => {\r\n let updatedPost = { ...this.state.post };\r\n let location = updatedPost.productItems.$values.findIndex(prod => prod.userMerchantProduct.coupon === coupon);\r\n let product = updatedPost.productItems.$values.find(prod => prod.userMerchantProduct.coupon === coupon);\r\n if (location > -1) {\r\n updatedPost.productItems.$values.splice(location, 1);\r\n }\r\n\r\n this.setState({ post: updatedPost })\r\n\r\n let payload = {\r\n user: {\r\n id: this.state.post.user?.id\r\n }\r\n };\r\n\r\n await postRequest(`/api/Locker/DeleteLockerProduct?userPostUserMerchantProductId=${product.id}`, payload);\r\n }\r\n\r\n saveChanges = async () => {\r\n await this.saveContent();\r\n await this.saveSectors();\r\n }\r\n\r\n saveSectors = async () => {\r\n let url = `/api/Sector/UpdateUserPostSectors?postId=${this.state.post.id}`;\r\n let sectors = this.state.post.sectors.$values.map(sec => sec.sector.id);\r\n await postRequest(url, sectors);\r\n }\r\n\r\n saveContent = async () => {\r\n this.setState({ isSaving: true })\r\n let url = `/api/post/EditPost?isPublishing=${false}&isEditing=${this.state.isForEdit}`;\r\n let payload = {\r\n content: this.state.postContentChange,\r\n title: \"\",\r\n user: { id: this.state.post.user.id },\r\n id: this.state.post.id,\r\n statusId: 0\r\n }\r\n\r\n var edit = await postRequest(url, payload);\r\n\r\n this.setState({ isSaving: false });\r\n return edit;\r\n }\r\n\r\n toggleIsEditing = () => {\r\n let newIsEditing = !this.state.isEditing;\r\n this.setState({ isEditing: newIsEditing });\r\n }\r\n\r\n toggleIsPublished = () => {\r\n let newIsPublished = !this.state.isPublished;\r\n this.setState({ isPublished: newIsPublished });\r\n }\r\n\r\n reorderProductsInPost = (items) => {\r\n let reorderedItems = items.map((item, index) => {\r\n item.ordinal = index + 1;\r\n return item;\r\n });\r\n\r\n let newValues = this.state.post?.productItems.$values.map(item => {\r\n for (let i = 0; i < reorderedItems?.length; i++) {\r\n if (reorderedItems[i].id == item.id) {\r\n item.ordinal = reorderedItems[i].ordinal;\r\n };\r\n };\r\n return item;\r\n }).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n });\r\n\r\n let post = this.state.post;\r\n post.productItems.$values = newValues;\r\n this.setState({ post });\r\n }\r\n\r\n renderInfoOverlay = (shareCode) => {\r\n return {\r\n this.props.toggleProductPageModal({ shareCode }, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n truncateContentForTitle(str) {\r\n if (str.length <= 20) {\r\n return str;\r\n } else {\r\n return str.substr(0, 20) + \"...\";\r\n }\r\n }\r\n\r\n\r\n getPageTitle = () => {\r\n const shareCode = this.props.match?.params?.shareCode;\r\n\r\n return \"RockPorch - Edit Post: \" + shareCode;\r\n };\r\n\r\n render() {\r\n\r\n let postImages = getProperties(this.state.post?.properties)\r\n ?.filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n }) ?? [];\r\n\r\n let { currentMediaItemIndex } = this.state;\r\n\r\n let searchInterestRowClass = [\"sm\", \"md\"].includes(this.props.deviceSize) ? \"\" : \"\";\r\n\r\n if (this.state.post === undefined) {\r\n return \r\n }\r\n\r\n if (this.state.finishedLoading === false) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n {this.getPageTitle()}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {this.getPageTitle()}\r\n \r\n {\r\n this.state.isPublished === true ? (\r\n \r\n ) : \r\n }\r\n\r\n {\r\n this.state.notAuthorized === true ? () : ()\r\n }\r\n\r\n\r\n {\r\n this.state.deletedPost === true ? (\r\n \r\n ) : \r\n }\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n\r\n this.setState({ postContentChange: e.target.value })}\r\n data={this.fetchUserSuggestions}\r\n />\r\n\r\n
    \r\n \r\n
    \r\n\r\n {/*\r\n\r\n */}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {this.displaySectors()}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n {/*\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {this.displaySectors()}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n */}\r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n {\r\n this.props.location.state?.justCreated === true ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n {\r\n this.state.post.status != 1 ? (\r\n \r\n ) : \r\n }\r\n\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {/* {this.displayProducts()}*/}\r\n {/*
    */}\r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n { this.setState({ showReminder: false, seenReminder: true }) }}\r\n >\r\n Don't forget to add products to your post! Click here to add a product.\r\n \r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default connect(null, { toggleProductSelectModal, toggleProductPageModal, closeAllModals })(PostPageAuthor);","import React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link, Redirect } from \"react-router-dom\";\r\nimport { Popover, PopoverBody } from \"reactstrap\"\r\nimport PlusIcon from \"components/icons/PlusIcon\";\r\nimport Carousel from \"components/Carousel\";\r\nimport PostAuthorBanner from \"../../components/PostAuthorBanner\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport PostBanner from \"components/PostBanner\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport ProductsSelectorModal from \"components/UserMerchantProducts/ProductsSelectorModal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport MentionsInputTextArea from \"components/MentionsInputWrappers/MentionsInputTextArea\";\r\nimport DisplayProducts from \"components/DisplayProducts/DisplayProducts\"\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { trimProductsArray, getProperties } from \"sharedUtils/postFunctions\";\r\nimport { toggleProductSelectModal, toggleProductPageModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\n\r\nclass NewBlogPage extends React.Component {\r\n state = {\r\n likes: 0,\r\n comments: 0,\r\n isEditing: true,\r\n isPublished: false,\r\n isPublishing: false,\r\n isSaving: false,\r\n postText: \"\",\r\n interests: [],\r\n images: [],\r\n showModal: false,\r\n post: {},\r\n notAuthorized: false,\r\n postContentChange: \"\",\r\n finishedLoading: false,\r\n currentMediaItemIndex: 0,\r\n sectors: [],\r\n deletedPost: false,\r\n sectorFilter: \"\",\r\n mentionSuggestions: [],\r\n postCount: 1,\r\n showReminder: false,\r\n seenReminder: false,\r\n isForEdit: false,\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props?.location?.search?.toLowerCase().includes(\"?edit=true\")) {\r\n this.setState({ isForEdit: true })\r\n }\r\n this.props.closeAllModals();\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n let isAuthenticated = this.props?.loggedInUser === undefined ? false : true;\r\n if (this.props.location.state?.post === undefined) {\r\n let post = await this.fetchPost(this.props.match.params.shareCode, isAuthenticated);\r\n\r\n let isAuthorized = post.user?.id == this.props.loggedInUser.id\r\n\r\n this.setState({ post: post, postContentChange: post.content, postTitleChange: post.title, finishedLoading: true, notAuthorized: !isAuthorized });\r\n\r\n }\r\n else {\r\n let post = this.props.location.state.post;\r\n let isAuthorized = post.user?.id == this.props.loggedInUser.id;\r\n this.setState({ post: post, postContentChange: post.content, postTitleChange: post.title, finishedLoading: true, notAuthorized: !isAuthorized });\r\n\r\n }\r\n\r\n let postCount = await this.getPostCount();\r\n let sectors = await this.fetchSectors();\r\n this.setState({ sectors, postCount });\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props.match.params.shareCode !== prevProps.match.params.shareCode) {\r\n this.props.closeAllModals();\r\n let isAuthenticated = this.props?.loggedInUser === undefined ? false : true;\r\n this.setState({ finishedLoading: false });\r\n let post = await this.fetchPost(this.props.match.params.shareCode, isAuthenticated);\r\n this.setState({ post, postContentChange: post.content, postTitleChange: post.title, finishedLoading: true });\r\n }\r\n }\r\n\r\n addProductsToPost = async (products) => {\r\n let newState = { ...this.state };\r\n\r\n products.forEach((prod) => prod.coupon = prod.shareCode);\r\n let productMap = products.map((prod) => {\r\n prod.merchant = { name: prod.merchant };\r\n prod.product = { manufacturer: { name: prod.manufacturer } };\r\n return {\r\n userMerchantProduct: { ...prod, product: prod }\r\n }\r\n });\r\n\r\n var userMerchantProductIds = products.map((prod) => prod.userMerchantProductId);\r\n var added = await postRequest(`/api/Post/addPostProducts?shareCode=${this.state.post.shareCode}`, userMerchantProductIds);\r\n\r\n added.forEach((prod) => {\r\n var index = productMap.findIndex((productItem) => { return productItem.userMerchantProduct.userMerchantProductId === prod.userMerchantProductId });\r\n productMap[index].id = prod.id;\r\n })\r\n productMap = productMap.reverse();\r\n newState.post.productItems.$values = [...productMap, ...this.state.post.productItems.$values];\r\n this.setState({ post: newState.post, seenReminder: true });\r\n }\r\n\r\n addSectorToPost = (sector) => {\r\n let postCopy = { ...this.state.post };\r\n\r\n let postSector = {\r\n sector: { ...sector, id: sector.sectorId }\r\n }\r\n postCopy.sectors.$values.push(postSector);\r\n this.setState({ post: postCopy });\r\n }\r\n\r\n removeSectorFromPost = (sector) => {\r\n let postCopy = { ...this.state.post };\r\n let sectorSelected = postCopy.sectors?.$values?.findIndex(sec => sec.sector.id === sector.sectorId);\r\n postCopy.sectors.$values.splice(sectorSelected, 1);\r\n\r\n this.setState({ post: postCopy });\r\n }\r\n\r\n deletePost = async () => {\r\n let url = `/api/Locker/DeleteLocker`;\r\n let payload = {\r\n user: {\r\n id: this.state.post.user.id\r\n },\r\n type: 2,\r\n shareCode: this.state.post.shareCode,\r\n id: this.state.post.id\r\n }\r\n await postRequest(url, payload);\r\n this.setState({\r\n deletedPost: true,\r\n postText: \"\",\r\n });\r\n }\r\n\r\n displayLoadSpinner = () => {\r\n return (\r\n
    \r\n Loading...\r\n
    \r\n )\r\n\r\n }\r\n\r\n displayEditBannerOrImage = () => {\r\n if (this.state.images.length === 0) {\r\n return \r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n displaySectors = () => {\r\n let filtered = this.state.sectors.filter(sec => sec.name.toLowerCase()\r\n .includes(this.state.sectorFilter.toLowerCase()));\r\n\r\n return filtered.map((sector, i) => {\r\n let sectorSelected = this.state.post.sectors?.$values?.findIndex(sec => sec.sector.id === sector.sectorId);\r\n if (sectorSelected > -1) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n });\r\n }\r\n\r\n removeCommentUsername = text => {\r\n const regex = /#!\\^.*?\\)\\)\\)/g;\r\n return text.replace(regex, '');\r\n }\r\n\r\n toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n displayProducts = () => {\r\n if (this.state.post?.productItems?.$values) {\r\n return trimProductsArray(this.state.post?.productItems?.$values).map((productItem, i) => {\r\n return (\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {productItem.manufacturer?.toLowerCase().includes(\"rcktemp\") ? productItem.merchant : productItem.manufacturer}{productItem.sale && !!(productItem.salePrice) && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : <>}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(productItem.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {productItem.sale && !!(productItem.salePrice) ? \"$\" + productItem.salePrice.toFixed(2) : <>}
    ${productItem.sale && !!(productItem.salePrice) && !!(productItem.originalPrice) ? productItem.originalPrice.toFixed(2) : productItem.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`;\r\n let post = await getRequest(url);\r\n return post;\r\n }\r\n\r\n fetchSectors = async () => {\r\n let url = `api/Sector/GetSectors`;\r\n let sectors = await getRequest(url);\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n if (sectors === undefined) {\r\n return [];\r\n }\r\n else {\r\n return sectors;\r\n }\r\n }\r\n\r\n getPostCount = async () => {\r\n let url = `api/Post/GetPostCount?userId=${this.props.loggedInUser.id}`;\r\n let count = await getRequest(url);\r\n let sum = count.length > 0 ? count.reduce(function (a, b) {\r\n return { count: a.count + b.count };\r\n }) : { count: 0 };\r\n return sum.count;\r\n }\r\n\r\n fetchUserSuggestions = async (query, callback) => {\r\n if (!query || query.length < 1) {\r\n return;\r\n }\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n let users = await getRequest(url);\r\n if (users === undefined) {\r\n this.setState({ mentionSuggestions: [] });\r\n }\r\n else {\r\n this.setState({ mentionSuggestions: users });\r\n\r\n }\r\n\r\n let mappedUsers = this.state.mentionSuggestions.map(user => ({ display: user.userName, id: user.id, name: user.name }));\r\n callback(mappedUsers);\r\n }\r\n\r\n handleInput = (e) => {\r\n this.setState({ [e.target.name]: e.target.value })\r\n }\r\n\r\n publish = async () => {\r\n if (this.state.postCount == 1 && !this.state.seenReminder && this.state.post.productItems.$values.length === 0) {\r\n this.setState({ showReminder: true });\r\n document.getElementById(\"addProdButton\").scrollIntoView();;\r\n return;\r\n }\r\n\r\n let payload = {\r\n content: this.state.postContentChange,\r\n title: this.state.postTitleChange,\r\n user: { id: this.state.post.user.id },\r\n id: this.state.post.id,\r\n statusId: 1,\r\n sectors: this.state.post.sectors.$values.map((value) => {\r\n return {\r\n sector: { id: value.sector.id, name: value.sector.name }\r\n };\r\n })\r\n }\r\n\r\n this.setState({ isPublishing: true })\r\n\r\n var url = `/api/post/EditPost?isPublishing=${true}&isEditing=${this.state.isForEdit}`;\r\n var published = await postRequest(url, payload);\r\n\r\n if (published.title === \"Unauthorized\") {\r\n this.setState({ notAuthorized: true, isPublished: false, isPublishing: false });\r\n return;\r\n }\r\n if (published === undefined) {\r\n this.setState({ isPublished: false, isPublishing: false })\r\n }\r\n else {\r\n this.setState({ isPublished: true, isPublishing: false });\r\n }\r\n }\r\n\r\n removeProductFromPost = async (coupon) => {\r\n let updatedPost = { ...this.state.post };\r\n let location = updatedPost.productItems.$values.findIndex(prod => prod.userMerchantProduct.coupon === coupon);\r\n let product = updatedPost.productItems.$values.find(prod => prod.userMerchantProduct.coupon === coupon);\r\n if (location > -1) {\r\n updatedPost.productItems.$values.splice(location, 1);\r\n }\r\n\r\n this.setState({ post: updatedPost })\r\n\r\n let payload = {\r\n user: {\r\n id: this.state.post.user?.id\r\n }\r\n };\r\n\r\n await postRequest(`/api/Locker/DeleteLockerProduct?userPostUserMerchantProductId=${product.id}`, payload);\r\n }\r\n\r\n saveChanges = async () => {\r\n await this.saveContent();\r\n await this.saveSectors();\r\n }\r\n\r\n saveSectors = async () => {\r\n let url = `/api/Sector/UpdateUserPostSectors?postId=${this.state.post.id}`;\r\n let sectors = this.state.post.sectors.$values.map(sec => sec.sector.id);\r\n await postRequest(url, sectors);\r\n }\r\n\r\n saveContent = async () => {\r\n this.setState({ isSaving: true })\r\n let url = `/api/post/EditPost?isPublishing=${false}&isEditing=${this.state.isForEdit}`;\r\n let payload = {\r\n content: this.state.postContentChange,\r\n title: this.state.postTitleChange,\r\n user: { id: this.state.post.user.id },\r\n id: this.state.post.id,\r\n statusId: 0\r\n }\r\n\r\n var edit = await postRequest(url, payload);\r\n\r\n this.setState({ isSaving: false });\r\n return edit;\r\n }\r\n\r\n toggleIsEditing = () => {\r\n let newIsEditing = !this.state.isEditing;\r\n this.setState({ isEditing: newIsEditing });\r\n }\r\n\r\n toggleIsPublished = () => {\r\n let newIsPublished = !this.state.isPublished;\r\n this.setState({ isPublished: newIsPublished });\r\n }\r\n\r\n reorderProductsInPost = (items) => {\r\n let reorderedItems = items.map((item, index) => {\r\n item.ordinal = index + 1;\r\n return item;\r\n });\r\n\r\n let newValues = this.state.post?.productItems.$values.map(item => {\r\n for (let i = 0; i < reorderedItems?.length; i++) {\r\n if (reorderedItems[i].id == item.id) {\r\n item.ordinal = reorderedItems[i].ordinal;\r\n };\r\n };\r\n return item;\r\n }).sort(function (a, b) {\r\n return a.ordinal - b.ordinal;\r\n });\r\n\r\n let post = this.state.post;\r\n post.productItems.$values = newValues;\r\n this.setState({ post });\r\n }\r\n\r\n renderInfoOverlay = (shareCode) => {\r\n return {\r\n this.props.toggleProductPageModal({ shareCode }, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n getPageTitle = () => {\r\n const shareCode = this.props.match?.params?.shareCode;\r\n\r\n return \"RockPorch - Edit Blog: \" + shareCode;\r\n };\r\n\r\n render() {\r\n\r\n let postImages = getProperties(this.state.post?.properties)\r\n ?.filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n }) ?? [];\r\n\r\n let { currentMediaItemIndex } = this.state;\r\n\r\n let searchInterestRowClass = [\"sm\", \"md\"].includes(this.props.deviceSize) ? \"\" : \"\";\r\n\r\n if (this.state.post === undefined) {\r\n return \r\n }\r\n\r\n if (this.state.finishedLoading === false) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n {this.getPageTitle()}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {this.getPageTitle()}\r\n \r\n {\r\n this.state.isPublished === true ? (\r\n \r\n ) : \r\n }\r\n\r\n {\r\n this.state.notAuthorized === true ? () : ()\r\n }\r\n\r\n\r\n {\r\n this.state.deletedPost === true ? (\r\n \r\n ) : \r\n }\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n\r\n this.setState({ postTitleChange: e.target.value })}\r\n data={() => { }}\r\n />\r\n\r\n \r\n\r\n this.setState({ postContentChange: e.target.value })}\r\n data={this.fetchUserSuggestions}\r\n />\r\n\r\n
    \r\n \r\n
    \r\n\r\n {/*\r\n\r\n */}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {this.displaySectors()}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n {/*\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {this.displaySectors()}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n */}\r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n {\r\n this.props.location.state?.justCreated === true ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n {\r\n this.state.post.status != 1 ? (\r\n \r\n ) : \r\n }\r\n\r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {/* {this.displayProducts()}*/}\r\n {/*
    */}\r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n { this.setState({ showReminder: false, seenReminder: true }) }}\r\n >\r\n Don't forget to add products to your post! Click here to add a product.\r\n \r\n\r\n
    \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default connect(null, { toggleProductSelectModal, toggleProductPageModal, closeAllModals })(NewBlogPage);","import React from \"react\";\r\nimport { Link, NavLink, Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport SwipeableProducts from \"./SwipeableProducts\";\r\nimport { trimProductsArray, getProperties } from \"../../sharedUtils/postFunctions\";\r\nimport { NavbarBrand } from 'reactstrap';\r\n\r\nimport CommentForm from \"components/CommentForm\";\r\nimport CommentTile from \"components/CommentTile\";\r\nimport PostBanner from \"components/PostBanner\";\r\nimport Modal from \"components/Modal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\n\r\nimport { toggleShareModal, toggleProductPageModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { getPostShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\n\r\nclass PostPageEmbed extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMessageDetails: false,\r\n likes: {\r\n count: 0,\r\n likedByUser: false\r\n },\r\n loggedInUser: null,\r\n isAuthorized: false,\r\n isFollowing: false,\r\n commentInput: \"\",\r\n shareCode: \"\",\r\n post: blankFeedPost,\r\n showDescriptionModal: false,\r\n selectedProduct: 0,\r\n isLoading: true,\r\n loadingComments: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n savedByUser: false,\r\n collapsed: true,\r\n contentStyle: this.notOverflowedContentStyle,\r\n contentOverflowed: false,\r\n maxHeight: \"41px\",\r\n checkHeight: 1,\r\n lastTotalHeight: 150,\r\n }\r\n }\r\n\r\n trimmedProducts = null;\r\n\r\n commentsTextArea = React.createRef();\r\n contentRef = React.createRef();\r\n bioRef = React.createRef();\r\n titleRef = React.createRef();\r\n picRef = React.createRef();\r\n userTileRef = React.createRef();\r\n editPostButtonRef = React.createRef();\r\n totalHeight = React.createRef();\r\n\r\n collapsedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n notOverflowedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n expandedContentStyle = { marginTop: \"0em\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n\r\n async componentDidMount() {\r\n\r\n window.addEventListener('message', this.messageTotalHeight);\r\n window.addEventListener('resize', this.messageTotalHeight);\r\n\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getPostShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.fetchPost(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ post: \"notFound\", isLoading: false, shareCode, shareLink })\r\n } else {\r\n this.setState({ post: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.fetchPost(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n let isFollowing = await this.fetchIsFollowing(data.user?.id);\r\n this.setState({ post: data, isFollowing, isLoading: false, loggedInUser, shareCode, shareLink });\r\n this.fetchComments(0, 3);\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n this.setState({ viewTracked: true });\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ post: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n this.setState({ isFollowing });\r\n if (post.comments.length === 0) {\r\n this.fetchComments(0, 3);\r\n }\r\n }\r\n if (!!(post)) {\r\n this.trimmedProducts = trimProductsArray(post.productItems?.$values).map((i) => { return i; })\r\n\r\n }\r\n }\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }\r\n\r\n const savedByUser = this.props?.match?.params?.post?.savedByUser;\r\n this.setState({ savedByUser });\r\n\r\n // THIS IS LOGIC TO CALCULATE THE HEIGHT OF THE CONTENT

    FOR 'SEE MORE'\r\n // FOR DEVICE SIZES THAT ARE NOT SMALL - it determines if height of ProfileInfoCard \r\n // is less than the expanded < p > and then puts it in contentOverflowed as well as \r\n // calculate the height of the of the 'SEE MORE'

    based on it's expanded size vs.\r\n // the size of the ProfileInfoCard and applies it to the styling.\r\n\r\n // SMALL DEVICES SET HEIGHT TO 2 LINES OF TEXT WHICH IS ~40px\r\n let contentOverflowed = false;\r\n\r\n const picHeight = this.picRef?.current?.offsetHeight;\r\n const userTileHeight = this.userTileRef?.current?.offsetHeight;\r\n const editButtonHeight = this.editPostButtonRef?.current?.offsetHeight;\r\n\r\n if (this.props.deviceSize === \"sm\" && this.contentRef?.current?.offsetHeight > 40) {\r\n this.setState({ contentOverflowed: true, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.setState({ contentStyle: this.expandedContentStyle });\r\n const bioHeight = this.bioRef?.current?.offsetHeight;\r\n const contentHeight = this.contentRef?.current?.offsetHeight;\r\n const titleHeight = this.titleRef?.current?.offsetHeight;\r\n\r\n this.setState({ contentStyle: this.notOverflowedContentStyle })\r\n\r\n const largeScreenContentHeight = editButtonHeight == undefined && editButtonHeight == null ? userTileHeight + titleHeight : userTileHeight + editButtonHeight + titleHeight;\r\n\r\n if (this.props.deviceSize !== \"sm\" && picHeight < largeScreenContentHeight) {\r\n const overflow = largeScreenContentHeight - picHeight;\r\n const maxHeight = contentHeight - overflow > 80 ? Math.floor((contentHeight - overflow) / 20) * 20 - 60 + \"px\" : \"41px\";\r\n\r\n this.setState({ contentOverflowed: true, maxHeight, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.collapsedContentStyle = { marginTop: \"0em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n this.notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n this.expandedContentStyle = { marginTop: \"0em\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n\r\n if (this.state.contentOverflowed) {\r\n this.setState({ contentStyle: this.collapsedContentStyle });\r\n } else if (!contentOverflowed && this.props.deviceSize !== \"sm\") {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n }\r\n }\r\n\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location.state.destinationState.params.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.fetchPost(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n else {\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n\r\n await this.fetchLikes(shareCode, isAuthorized);\r\n await this.fetchComments(0, 25);\r\n this.setState({ isFollowing });\r\n }\r\n }\r\n\r\n\r\n\r\n this.setState({ post, isLoading: false });\r\n\r\n }\r\n if (prevState.checkHeight !== this.state.checkHeight) {\r\n let totalHeight = document.documentElement.offsetHeight;\r\n\r\n if (this.state.lastTotalHeight !== totalHeight && totalHeight > 150) {\r\n this.setState({ lastTotalHeight: totalHeight });\r\n\r\n window.parent.postMessage({\r\n id: 'rpFrame-' + this.props.match.params.shareCode,\r\n height: totalHeight,\r\n }, '*');\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount = () => {\r\n window.removeEventListener('resize', this.messageTotalHeight);\r\n }\r\n\r\n messageTotalHeight = () => {\r\n this.setState({ checkHeight: { ...-this.state.checkHeight } });\r\n };\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ isFollowing: data });\r\n }\r\n\r\n // obsolete\r\n fetchLikes = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? `/api/post/getLikesAuthorized` : `/api/post/getLikes`;\r\n let url = `${baseUrl}?shareCode=${shareCode}`;\r\n let data = await getRequest(url);\r\n this.setState({ likes: data });\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n\r\n return data;\r\n //this.setState({ post: data });\r\n }\r\n\r\n followAction = async () => {\r\n let url = `/prf/${this.state.post.user.userName}`\r\n window.open(url);\r\n }\r\n\r\n fetchComments = async (skip = this.state.post.comments.length, take = 25) => {\r\n return;\r\n this.setState({ loadingComments: true });\r\n let baseUrl = this.state.loggedInUser !== undefined ? `/api/post/getCommentsAuthorized` : `/api/post/getComments`;\r\n let url = `${baseUrl}?shareCode=${this.state.shareCode}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n let newState = { ...this.state };\r\n newState.post.comments = [...data, ...this.state.post.comments];\r\n\r\n this.setState({ ...newState, loadingComments: false });\r\n }\r\n\r\n handleCommentInput = (e) => {\r\n this.setState({ commentInput: e.target.value });\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n likePost = async (shareCode) => {\r\n let num = this.state.post.likedByUser === true ? -1 : 1;\r\n let newLikes = {\r\n likeCount: this.state.post.likeCount + num,\r\n likedByUser: !this.state.post.likedByUser\r\n }\r\n let newPost = { ...this.state.post, ...newLikes };\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.likedByUser = newLikes.likedByUser;\r\n this.props.match.params.post.likeCount = newLikes.likeCount;\r\n }\r\n\r\n this.setState({ post: newPost }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n likeComment = async (comment, key) => {\r\n let num = this.state.post.comments[key].likedByUser === true ? -1 : 1;\r\n let newState = { ...this.state };\r\n newState.post.comments[key].likes += num;\r\n newState.post.comments[key].likedByUser = !newState.post.comments[key].likedByUser;\r\n\r\n this.setState(newState, async () => {\r\n let requestObject = {\r\n id: comment.id,\r\n likedByUser: num < 0\r\n }\r\n\r\n let url = `/api/post/likeComment`;\r\n let data = await postRequest(url, requestObject);\r\n });\r\n\r\n }\r\n\r\n savePost = async (shareCode) => {\r\n let reqBody = { shareCode };\r\n\r\n let route = this.state.post.savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n let data = await postRequest(route, reqBody);\r\n\r\n let newPost = { ...this.state.post };\r\n newPost.savedByUser = !this.state.post.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.savedByUser = newPost.savedByUser;\r\n }\r\n\r\n this.setState({ post: newPost });\r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n this.followAction();\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.followAction();\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let dataToPost = {\r\n text: this.state.commentInput\r\n }\r\n let shareCode = this.state.post.shareCode;\r\n let url = `/api/post/postComment?shareCode=${shareCode}&postType=${this.state.post.type}`;\r\n\r\n var createdOn = new Date();\r\n createdOn.setSeconds(createdOn.getSeconds() - 1);\r\n let dummyComment = {\r\n likedByUser: false,\r\n likes: 0,\r\n replyCount: 0,\r\n text: this.state.commentInput,\r\n user: this.state.loggedInUser,\r\n createdOn: new Date()\r\n };\r\n\r\n let comments = [...this.state.post.comments];\r\n comments.push(dummyComment);\r\n\r\n let newState = { ...this.state };\r\n newState.commentInput = \"\";\r\n newState.post.comments = comments;\r\n newState.post.commentCount += 1;\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.comments = [...newState.post.comments];\r\n this.props.match.params.post.commentCount = newState.post.commentCount;\r\n this.props.match.params.post.totalCount = newState.post.totalCount;\r\n }\r\n\r\n this.setState(newState, async () => {\r\n var response = await postRequest(url, dataToPost);\r\n this.setState({ submittingComment: false });\r\n });\r\n }\r\n\r\n prevPage = () => {\r\n let page = this.state.productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor(this.state.post.productItems?.$values?.length / 4);\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n nextPage = () => {\r\n let page = this.state.productPage + 1;\r\n if (page * 4 > this.state.post.productItems?.$values?.length) {\r\n page = 0;\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n renderProductPagination = () => {\r\n if (this.state.post.productItems?.$values?.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n this.prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {this.state.post.productItems?.$values?.length}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n this.nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderProductImages = () => {\r\n return trimProductsArray(this.state.post.productItems?.$values)?.map((val, i) => {\r\n return (\r\n

    \r\n
    \r\n
    \r\n {/*{this.renderInfoOverlay(val)}*/}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.post}\r\n loggedInUser={this.state.loggedInUser}\r\n parentModal={this.props.isModal === true ? { type: \"post\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.post } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}
    \r\n
    \r\n
    \r\n
    ${val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n renderComments = () => {\r\n let comments = this.state.post.comments;\r\n if (comments && comments.length && comments.length > 0) {\r\n return comments.map((comment, i) => {\r\n return ()\r\n })\r\n }\r\n\r\n }\r\n\r\n toggleDescriptionModal = (productIndex) => {\r\n let newModalState = !this.state.showDescriptionModal;\r\n this.setState({ showDescriptionModal: newModalState, selectedProduct: productIndex });\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n return (\r\n \r\n
    \r\n \r\n

    {this.state.post.productItems?.$values[this.state.selectedProduct].comment}

    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentForm = () => {\r\n if (this.state.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentSectionHeading = () => {\r\n let commentCount = this.state.post.comments.length;\r\n let totalComments = this.state.post.commentCount;\r\n if (commentCount === 0) {\r\n return \"No Comments\";\r\n }\r\n else if (commentCount === 1) {\r\n return `${commentCount} comment`\r\n }\r\n else {\r\n return `${commentCount} of ${totalComments} comments`\r\n }\r\n }\r\n\r\n renderSectors = () => {\r\n return this.state.post.sectors?.$values?.map((sector, i) => {\r\n return (\r\n \r\n )\r\n });\r\n }\r\n\r\n contentSection = () => {\r\n if (!this.state.contentOverflowed) {\r\n return (\r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content, true, true)}\r\n

    \r\n
    \r\n )\r\n } else {\r\n if (this.state.collapsed) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.expandedContentStyle, collapsed: false });\r\n }}>\r\n see more\r\n \r\n
    \r\n
    )\r\n\r\n } else {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.collapsedContentStyle, collapsed: true });\r\n }}>\r\n see less\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n contentSectionSmall = () => {\r\n let content = handleCommentMarkup(this.state.post?.content, true, true);\r\n return (\r\n

    \r\n {content}\r\n

    \r\n )\r\n }\r\n\r\n renderFollowButton() {\r\n return (\r\n {\r\n e.preventDefault();\r\n let url = `/explore`;\r\n window.open(url);\r\n }}\r\n id=\"rp-nav-logo\" to=\"/Nav/Explore\" style={{ position: \"relative\",cursor: \"pointer\", width: \"100px\", marginRight: 0 }}>\r\n \r\n \r\n )\r\n }\r\n\r\n redirectToPostPage = (e) => {\r\n e.preventDefault();\r\n let url = `/p/${this.state.shareCode}`;\r\n window.open(url);\r\n }\r\n\r\n render() {\r\n if (this.state.post === \"notFound\") {\r\n return

    Post not found

    \r\n }\r\n\r\n let commentCount = this.state.post?.comments?.length;\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n\r\n let { userName, imageUrl } = this.state.post?.user;\r\n let webLayouts = [\"md\", \"lg\", \"xl\"];\r\n let { deviceSize, isModal } = this.props;\r\n\r\n if (this.state.isLoading === true) {\r\n return \r\n }\r\n\r\n let parsedDate = convertToLocaleDateTimeString(new Date(this.state.post?.postedOn), false)\r\n\r\n if (this.state.showMessageDetails) {\r\n return \r\n }\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.post.status) === true && this.state.post.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {this.renderDescriptionModal()}\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {/*{this.renderBookmarkOverlay()}*/}\r\n {/*{this.renderShareOverlay()}*/}\r\n \r\n\r\n\r\n
    \r\n\r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n {\r\n this.state.post?.content == null || this.state.post?.content == undefined || this.state.post?.content === \"\" ?\r\n <> :\r\n
    \r\n
    \r\n {this.contentSectionSmall()}\r\n
    \r\n
    \r\n }\r\n \r\n\r\n {/*{*/}\r\n {/* this.state.post?.productItems?.$values?.length > 0 ? (*/}\r\n {/*
    */}\r\n {/*
    = 4 ? \" justify-content-left\" : \"justify-content-center\"} px-0 position-relative mt-2`}>*/}\r\n {/* {this.renderProductImages()}*/}\r\n {/*
    */}\r\n {/*
    */}\r\n\r\n {/* ) : null*/}\r\n {/*}*/}\r\n\r\n {\r\n this.state.post?.productItems?.$values?.length > 0 ? (\r\n
    \r\n \r\n
    \r\n ) : null\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleShareModal: toggleShareModal,\r\n closeAllModals: closeAllModals,\r\n toggleProductPageModal, toggleProductPageModal\r\n}\r\n\r\nexport default connect(null, mapDispatch)(PostPageEmbed);","import React from \"react\";\r\nimport { Link, NavLink, Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport SwipeableProducts from \"./SwipeableProducts\";\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"../../sharedUtils/postFunctions\";\r\nimport { NavbarBrand } from 'reactstrap';\r\n\r\nimport CommentForm from \"components/CommentForm\";\r\nimport CommentTile from \"components/CommentTile\";\r\nimport Modal from \"components/Modal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\n\r\nimport { toggleShareModal, toggleProductPageModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { getPostShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\nimport PostBanner from \"components/PostBanner\";\r\n\r\nclass BlogPageEmbed extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMessageDetails: false,\r\n likes: {\r\n count: 0,\r\n likedByUser: false\r\n },\r\n loggedInUser: null,\r\n isAuthorized: false,\r\n isFollowing: false,\r\n commentInput: \"\",\r\n shareCode: \"\",\r\n post: blankFeedPost,\r\n showDescriptionModal: false,\r\n selectedProduct: 0,\r\n isLoading: true,\r\n loadingComments: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n savedByUser: false,\r\n collapsed: true,\r\n contentStyle: this.notOverflowedContentStyle,\r\n contentOverflowed: false,\r\n maxHeight: \"41px\",\r\n checkHeight: 1,\r\n lastTotalHeight: 150,\r\n bannerWidth: 300,\r\n }\r\n }\r\n\r\n trimmedProducts = null;\r\n\r\n commentsTextArea = React.createRef();\r\n contentRef = React.createRef();\r\n bioRef = React.createRef();\r\n titleRef = React.createRef();\r\n picRef = React.createRef();\r\n userTileRef = React.createRef();\r\n editPostButtonRef = React.createRef();\r\n totalHeight = React.createRef();\r\n\r\n blogTitleRef = React.createRef();\r\n blogPageRef = React.createRef();\r\n pRef = React.createRef();\r\n bannerRef = React.createRef();\r\n\r\n collapsedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n notOverflowedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n expandedContentStyle = { marginTop: \"0em\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n\r\n async componentDidMount() {\r\n\r\n window.addEventListener('message', this.messageTotalHeight);\r\n window.addEventListener('resize', this.messageTotalHeight);\r\n\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getPostShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.fetchPost(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ post: \"notFound\", isLoading: false, shareCode, shareLink })\r\n } else {\r\n this.setState({ post: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.fetchPost(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n let isFollowing = await this.fetchIsFollowing(data.user?.id);\r\n this.setState({ post: data, isFollowing, isLoading: false, loggedInUser, shareCode, shareLink });\r\n this.fetchComments(0, 3);\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n this.setState({ viewTracked: true });\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ post: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n this.setState({ isFollowing });\r\n if (post.comments.length === 0) {\r\n this.fetchComments(0, 3);\r\n }\r\n }\r\n if (!!(post)) {\r\n this.trimmedProducts = trimProductsArray(post.productItems?.$values).map((i) => { return i; })\r\n\r\n }\r\n }\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }\r\n\r\n const savedByUser = this.props?.match?.params?.post?.savedByUser;\r\n this.setState({ savedByUser });\r\n\r\n // THIS IS LOGIC TO CALCULATE THE HEIGHT OF THE CONTENT

    FOR 'SEE MORE'\r\n // FOR DEVICE SIZES THAT ARE NOT SMALL - it determines if height of ProfileInfoCard \r\n // is less than the expanded < p > and then puts it in contentOverflowed as well as \r\n // calculate the height of the of the 'SEE MORE'

    based on it's expanded size vs.\r\n // the size of the ProfileInfoCard and applies it to the styling.\r\n\r\n // SMALL DEVICES SET HEIGHT TO 2 LINES OF TEXT WHICH IS ~40px\r\n let contentOverflowed = false;\r\n\r\n const picHeight = this.picRef?.current?.offsetHeight;\r\n const userTileHeight = this.userTileRef?.current?.offsetHeight;\r\n const editButtonHeight = this.editPostButtonRef?.current?.offsetHeight;\r\n\r\n if (this.props.deviceSize === \"sm\" && this.contentRef?.current?.offsetHeight > 40) {\r\n this.setState({ contentOverflowed: true, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.setState({ contentStyle: this.expandedContentStyle });\r\n const bioHeight = this.bioRef?.current?.offsetHeight;\r\n const contentHeight = this.contentRef?.current?.offsetHeight;\r\n const titleHeight = this.titleRef?.current?.offsetHeight;\r\n\r\n this.setState({ contentStyle: this.notOverflowedContentStyle })\r\n\r\n const largeScreenContentHeight = editButtonHeight == undefined && editButtonHeight == null ? userTileHeight + titleHeight : userTileHeight + editButtonHeight + titleHeight;\r\n\r\n if (this.props.deviceSize !== \"sm\" && picHeight < largeScreenContentHeight) {\r\n const overflow = largeScreenContentHeight - picHeight;\r\n const maxHeight = contentHeight - overflow > 80 ? Math.floor((contentHeight - overflow) / 20) * 20 - 60 + \"px\" : \"41px\";\r\n\r\n this.setState({ contentOverflowed: true, maxHeight, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.collapsedContentStyle = { marginTop: \"0em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n this.notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n this.expandedContentStyle = { marginTop: \"0em\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n\r\n if (this.state.contentOverflowed) {\r\n this.setState({ contentStyle: this.collapsedContentStyle });\r\n } else if (!contentOverflowed && this.props.deviceSize !== \"sm\") {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n }\r\n\r\n if (!!(this.bannerRef.current?.offsetWidth)) {\r\n this.setState({ bannerWidth: this.bannerRef.current.offsetWidth })\r\n }\r\n\r\n if (!!(this.pRef.current?.offsetHeight)) {\r\n this.setState({ contentHeight: this.pRef.current.offsetHeight })\r\n }\r\n }\r\n\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location.state.destinationState.params.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.fetchPost(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n else {\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n\r\n await this.fetchLikes(shareCode, isAuthorized);\r\n await this.fetchComments(0, 25);\r\n this.setState({ isFollowing });\r\n }\r\n }\r\n\r\n\r\n\r\n this.setState({ post, isLoading: false });\r\n\r\n }\r\n if (prevState.checkHeight !== this.state.checkHeight) {\r\n let totalHeight = document.documentElement.offsetHeight;\r\n\r\n if (this.state.lastTotalHeight !== totalHeight && totalHeight > 150) {\r\n this.setState({ lastTotalHeight: totalHeight });\r\n\r\n window.parent.postMessage({\r\n id: 'rpFrame-' + this.props.match.params.shareCode,\r\n height: totalHeight,\r\n }, '*');\r\n }\r\n }\r\n if (!!(this.bannerRef.current) && prevState.bannerWidth !== this.bannerRef.current.offsetWidth) {\r\n this.setState({ bannerWidth: this.bannerRef.current.offsetWidth });\r\n }\r\n\r\n if (!!(this.pRef.current) && prevState.contentHeight !== this.pRef.current.offsetHeight) {\r\n this.setState({ contentHeight: this.pRef.current.offsetHeight });\r\n }\r\n }\r\n\r\n componentWillUnmount = () => {\r\n window.removeEventListener('resize', this.messageTotalHeight);\r\n }\r\n\r\n messageTotalHeight = () => {\r\n this.setState({ checkHeight: { ...-this.state.checkHeight } });\r\n };\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ isFollowing: data });\r\n }\r\n\r\n // obsolete\r\n fetchLikes = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? `/api/post/getLikesAuthorized` : `/api/post/getLikes`;\r\n let url = `${baseUrl}?shareCode=${shareCode}`;\r\n let data = await getRequest(url);\r\n this.setState({ likes: data });\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ post: data });\r\n }\r\n\r\n followAction = async () => {\r\n let url = `/prf/${this.state.post.user.userName}`\r\n window.open(url);\r\n }\r\n\r\n renderProductCount = () => {\r\n const trimmedProducts = trimProductsArray(this.state.post?.productItems?.$values).map((i) => { return i; })\r\n\r\n if ([4].includes(this.state.post.type)) {\r\n if (trimmedProducts.length === 1) {\r\n return \"1 product\"\r\n } else if (trimmedProducts.length > 1) {\r\n return trimmedProducts.length + \" products\"\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n fetchComments = async (skip = this.state.post.comments.length, take = 25) => {\r\n return;\r\n this.setState({ loadingComments: true });\r\n let baseUrl = this.state.loggedInUser !== undefined ? `/api/post/getCommentsAuthorized` : `/api/post/getComments`;\r\n let url = `${baseUrl}?shareCode=${this.state.shareCode}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n let newState = { ...this.state };\r\n newState.post.comments = [...data, ...this.state.post.comments];\r\n\r\n this.setState({ ...newState, loadingComments: false });\r\n }\r\n\r\n handleCommentInput = (e) => {\r\n this.setState({ commentInput: e.target.value });\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n likePost = async (shareCode) => {\r\n let num = this.state.post.likedByUser === true ? -1 : 1;\r\n let newLikes = {\r\n likeCount: this.state.post.likeCount + num,\r\n likedByUser: !this.state.post.likedByUser\r\n }\r\n let newPost = { ...this.state.post, ...newLikes };\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.likedByUser = newLikes.likedByUser;\r\n this.props.match.params.post.likeCount = newLikes.likeCount;\r\n }\r\n\r\n this.setState({ post: newPost }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n likeComment = async (comment, key) => {\r\n let num = this.state.post.comments[key].likedByUser === true ? -1 : 1;\r\n let newState = { ...this.state };\r\n newState.post.comments[key].likes += num;\r\n newState.post.comments[key].likedByUser = !newState.post.comments[key].likedByUser;\r\n\r\n this.setState(newState, async () => {\r\n let requestObject = {\r\n id: comment.id,\r\n likedByUser: num < 0\r\n }\r\n\r\n let url = `/api/post/likeComment`;\r\n let data = await postRequest(url, requestObject);\r\n });\r\n\r\n }\r\n\r\n savePost = async (shareCode) => {\r\n let reqBody = { shareCode };\r\n\r\n let route = this.state.post.savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n let data = await postRequest(route, reqBody);\r\n\r\n let newPost = { ...this.state.post };\r\n newPost.savedByUser = !this.state.post.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.savedByUser = newPost.savedByUser;\r\n }\r\n\r\n this.setState({ post: newPost });\r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n this.followAction();\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.followAction();\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let dataToPost = {\r\n text: this.state.commentInput\r\n }\r\n let shareCode = this.state.post.shareCode;\r\n let url = `/api/post/postComment?shareCode=${shareCode}&postType=${this.state.post.type}`;\r\n\r\n var createdOn = new Date();\r\n createdOn.setSeconds(createdOn.getSeconds() - 1);\r\n let dummyComment = {\r\n likedByUser: false,\r\n likes: 0,\r\n replyCount: 0,\r\n text: this.state.commentInput,\r\n user: this.state.loggedInUser,\r\n createdOn: new Date()\r\n };\r\n\r\n let comments = [...this.state.post.comments];\r\n comments.push(dummyComment);\r\n\r\n let newState = { ...this.state };\r\n newState.commentInput = \"\";\r\n newState.post.comments = comments;\r\n newState.post.commentCount += 1;\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.comments = [...newState.post.comments];\r\n this.props.match.params.post.commentCount = newState.post.commentCount;\r\n this.props.match.params.post.totalCount = newState.post.totalCount;\r\n }\r\n\r\n this.setState(newState, async () => {\r\n var response = await postRequest(url, dataToPost);\r\n this.setState({ submittingComment: false });\r\n });\r\n }\r\n\r\n prevPage = () => {\r\n let page = this.state.productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor(this.state.post.productItems?.$values?.length / 4);\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n nextPage = () => {\r\n let page = this.state.productPage + 1;\r\n if (page * 4 > this.state.post.productItems?.$values?.length) {\r\n page = 0;\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n renderProductPagination = () => {\r\n if (this.state.post.productItems?.$values?.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n this.prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {this.state.post.productItems?.$values?.length}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n this.nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderProductImages = () => {\r\n return trimProductsArray(this.state.post.productItems?.$values)?.map((val, i) => {\r\n return (\r\n

    \r\n
    \r\n
    \r\n {/*{this.renderInfoOverlay(val)}*/}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.post}\r\n loggedInUser={this.state.loggedInUser}\r\n parentModal={this.props.isModal === true ? { type: \"post\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.post } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}
    \r\n
    \r\n
    \r\n
    ${val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n renderComments = () => {\r\n let comments = this.state.post.comments;\r\n if (comments && comments.length && comments.length > 0) {\r\n return comments.map((comment, i) => {\r\n return ()\r\n })\r\n }\r\n\r\n }\r\n\r\n toggleDescriptionModal = (productIndex) => {\r\n let newModalState = !this.state.showDescriptionModal;\r\n this.setState({ showDescriptionModal: newModalState, selectedProduct: productIndex });\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n return (\r\n \r\n
    \r\n \r\n

    {this.state.post.productItems?.$values[this.state.selectedProduct].comment}

    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentForm = () => {\r\n if (this.state.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentSectionHeading = () => {\r\n let commentCount = this.state.post.comments.length;\r\n let totalComments = this.state.post.commentCount;\r\n if (commentCount === 0) {\r\n return \"No Comments\";\r\n }\r\n else if (commentCount === 1) {\r\n return `${commentCount} comment`\r\n }\r\n else {\r\n return `${commentCount} of ${totalComments} comments`\r\n }\r\n }\r\n\r\n renderSectors = () => {\r\n return this.state.post.sectors?.$values?.map((sector, i) => {\r\n return (\r\n \r\n )\r\n });\r\n }\r\n\r\n renderContent = () => {\r\n const noProductsExist = !(this.trimmedProducts) || this.trimmedProducts.length === 0;\r\n const expanded = false;\r\n\r\n const style = {\r\n cursor: \"pointer\",\r\n color: \"white\",\r\n bottom: [\"sm\", \"md\"].includes(this.props.deviceSize) ? 80 : 0,\r\n padding: \"20px 30px\",\r\n textAlign: \"center\",\r\n width: this.state.bannerWidth,\r\n }\r\n\r\n const numberOfLines = this.state.contentHeight / 20;\r\n const margin = numberOfLines === 2 ? \"30px\" : numberOfLines === 1 ? \"50px\" : \"\";\r\n\r\n const contentStyle = {\r\n marginBottom: margin,\r\n color: \"white\",\r\n };\r\n\r\n if (this.state.post.type === 4) {\r\n return (\r\n
    \r\n {\r\n [\"sm\", \"md\"].includes(this.props.deviceSize) ?\r\n <>\r\n :\r\n

    \r\n {this.state.post?.content}\r\n

    \r\n }\r\n

    Read more

    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderTitle = () => {\r\n const { title } = this.state.post;\r\n const style = {\r\n width: this.state.bannerWidth,\r\n textAlign: \"center\",\r\n cursor: \"pointer\",\r\n color: \"white\"\r\n };\r\n return (\r\n
    \r\n
    \r\n {title}\r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n renderFollowButton() {\r\n return (\r\n {\r\n e.preventDefault();\r\n let url = `/explore`;\r\n window.open(url);\r\n }}\r\n id=\"rp-nav-logo\" to=\"/Nav/Explore\" style={{ position: \"relative\", cursor: \"pointer\", width: \"100px\", marginRight: 0 }}>\r\n \r\n \r\n )\r\n }\r\n\r\n displayBanner = () => {\r\n const redirectUrl = getProperties(this.state.post?.properties).filter(property => property.role === 6)[0]?.value;\r\n\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n return (\r\n
    \r\n window.open(redirectUrl)}\r\n imageStyle={{ cursor: \"pointer\" }}\r\n blogEmbed={true}\r\n />\r\n \r\n {this.renderTitle()}\r\n {this.renderContent()}\r\n \r\n {this.renderProductCount()}\r\n \r\n
    \r\n\r\n )\r\n }\r\n\r\n redirectToLockerPage = (e) => {\r\n e.preventDefault();\r\n let url = `/b/${this.state.shareCode}`;\r\n window.open(url);\r\n }\r\n\r\n\r\n render() {\r\n if (this.state.post === \"notFound\") {\r\n return

    Post not found

    \r\n }\r\n\r\n let commentCount = this.state.post?.comments?.length;\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n\r\n let { userName, imageUrl } = this.state.post?.user;\r\n let webLayouts = [\"md\", \"lg\", \"xl\"];\r\n let { deviceSize, isModal } = this.props;\r\n\r\n if (this.state.isLoading === true) {\r\n return \r\n }\r\n\r\n let parsedDate = convertToLocaleDateTimeString(new Date(this.state.post?.postedOn), false)\r\n\r\n if (this.state.showMessageDetails) {\r\n return \r\n }\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.post.status) === true && this.state.post.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {this.renderDescriptionModal()}\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {/*{this.renderBookmarkOverlay()}*/}\r\n {/*{this.renderShareOverlay()}*/}\r\n {/**/}\r\n {this.displayBanner()}\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n\r\n {/*{*/}\r\n {/* this.state.post?.productItems?.$values?.length > 0 ? (*/}\r\n {/*
    */}\r\n {/*
    = 4 ? \" justify-content-left\" : \"justify-content-center\"} px-0 position-relative mt-2`}>*/}\r\n {/* {this.renderProductImages()}*/}\r\n {/*
    */}\r\n {/*
    */}\r\n\r\n {/* ) : null*/}\r\n {/*}*/}\r\n\r\n {\r\n this.state.post?.productItems?.$values?.length > 0 ? (\r\n
    \r\n \r\n
    \r\n ) : null\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleShareModal: toggleShareModal,\r\n closeAllModals: closeAllModals,\r\n toggleProductPageModal, toggleProductPageModal\r\n}\r\n\r\nexport default connect(null, mapDispatch)(BlogPageEmbed);","import React, { useState, useEffect, useRef } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\n\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst FeaturedContent = (props) => {\r\n const [postPage, setPostPage] = useState(0);\r\n const [posts, setPosts] = useState([]);\r\n const [itemsPerPage, setItemsPerPage] = useState(4);\r\n const [postItems, setPostItems] = useState([\r\n { type: \"post\", shareCode: \"3zGPAidJU6wxx\" },\r\n { type: \"locker\", shareCode: \"MSMKwYGmdCErk\" },\r\n { type: \"post\", shareCode: \"cqTpkmHEVBbtA\" },\r\n { type: \"post\", shareCode: \"bPzr6e2SvD6q6\" },\r\n { type: \"post\", shareCode: \"A7hR8O5mcjNKb\" },\r\n { type: \"post\", shareCode: \"D1bDP4pXYdDrp\" },\r\n { type: \"post\", shareCode: \"mapIiS3TnlqRj\" },\r\n { type: \"post\", shareCode: \"7W7jj3AL2g7ZN\" },\r\n { type: \"post\", shareCode: \"SFTawDbC1nBjJ\" },\r\n { type: \"post\", shareCode: \"Wd24A2dMwwUBa\" },\r\n ]);\r\n\r\n const [intervalId, setIntervalId] = useState(null); // Add state for intervalId\r\n const [lastTotalHeight, setLastTotalHeight] = useState(150);\r\n\r\n const getHeightMessage = (e) => {\r\n if (e.data === 'get-rp-featured-content-height') {\r\n messageTotalHeight();\r\n }\r\n }\r\n\r\n const messageTotalHeight = () => {\r\n setCheckHeight({ ...-checkHeight });\r\n };\r\n\r\n useEffect(() => {\r\n props.setShowTopNav(false);\r\n populateData();\r\n\r\n window.addEventListener('message', messageTotalHeight);\r\n window.addEventListener('resize', messageTotalHeight);\r\n return () => {\r\n window.removeEventListener('message', getHeightMessage);\r\n window.removeEventListener('resize', messageTotalHeight);\r\n };\r\n }, []); \r\n\r\n useEffect(() => {\r\n if (props.deviceSize === \"sm\") {\r\n setItemsPerPage(2);\r\n } else {\r\n setItemsPerPage(4)\r\n }\r\n }, [props.deviceSize]);\r\n\r\n const [checkHeight, setCheckHeight] = useState(1);\r\n useEffect(() => {\r\n let totalHeight = document.documentElement.offsetHeight;\r\n\r\n if (lastTotalHeight !== totalHeight && totalHeight > 150) {\r\n setLastTotalHeight(totalHeight);\r\n\r\n window.parent.postMessage({\r\n id: 'rp-featured-content',\r\n height: totalHeight,\r\n }, '*');\r\n }\r\n }, [checkHeight])\r\n\r\n const populateData = async () => {\r\n let url = `api/Featured/GetFeaturedContent`;\r\n let data = await getRequest(url);\r\n\r\n if (data === undefined) {\r\n setPosts([]);\r\n }\r\n else {\r\n setPosts(data);\r\n setTimeout(messageTotalHeight, 1000);\r\n }\r\n }\r\n\r\n const resetInterval = () => {\r\n clearInterval(intervalId);\r\n const newIntervalId = setInterval(() => {\r\n nextPage();\r\n }, 5000);\r\n setIntervalId(newIntervalId);\r\n }\r\n\r\n const prevPage = () => {\r\n if (posts.length > itemsPerPage) {\r\n let page = postPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((posts.length - 1) / itemsPerPage);\r\n }\r\n\r\n setPostPage(page);\r\n\r\n resetInterval();\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n setPostPage(prevPage => {\r\n let page = prevPage + 1;\r\n if (page * itemsPerPage >= posts.length) {\r\n page = 0;\r\n }\r\n\r\n return page;\r\n });\r\n\r\n resetInterval();\r\n }\r\n\r\n const postPageHandlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n nextPage();\r\n resetInterval();\r\n },\r\n onSwipedRight: () => {\r\n prevPage();\r\n resetInterval();\r\n },\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n useEffect(() => {\r\n if (posts.length > 0 && !intervalId) { // Change condition to check if intervalId is falsy\r\n resetInterval();\r\n }\r\n return () => {\r\n clearInterval(intervalId);\r\n };\r\n }, [posts, intervalId]);\r\n\r\n const renderProductPagination = () => {\r\n if (posts && posts.length > itemsPerPage) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (posts && posts?.length > 0) {\r\n return posts.slice(postPage * itemsPerPage, postPage * itemsPerPage + itemsPerPage).map((post, i) => {\r\n let redirectUrl = post.type === 2 ? `/Locker/LockerPage/${post?.shareCode}?showBrandNav=true` : post.type === 4 ? `/Blog/BlogPage/${post?.shareCode}?showBrandNav=true` : `/post/postPage/${post?.shareCode}?showBrandNav=true`\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let gridItem = () => {\r\n if (posts?.length > 0) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n <>\r\n )\r\n }\r\n }\r\n\r\n return (\r\n gridItem()\r\n // \r\n )\r\n}\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(FeaturedContent);","import React, { useState, useEffect, useRef } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport ThumbsUpIcon from \"components/icons/ThumbsUpGeneric\";\r\n\r\n\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst FeaturedProducts = (props) => {\r\n const [productsPage, setProductsPage] = useState(0);\r\n const [products, setProducts] = useState([]);\r\n const [itemsPerPage, setItemsPerPage] = useState(4);\r\n const [postItems, setPostItems] = useState([\r\n { type: \"post\", shareCode: \"3zGPAidJU6wxx\" },\r\n { type: \"locker\", shareCode: \"MSMKwYGmdCErk\" },\r\n { type: \"post\", shareCode: \"cqTpkmHEVBbtA\" },\r\n { type: \"post\", shareCode: \"bPzr6e2SvD6q6\" },\r\n { type: \"post\", shareCode: \"A7hR8O5mcjNKb\" },\r\n { type: \"post\", shareCode: \"D1bDP4pXYdDrp\" },\r\n { type: \"post\", shareCode: \"mapIiS3TnlqRj\" },\r\n { type: \"post\", shareCode: \"7W7jj3AL2g7ZN\" },\r\n { type: \"post\", shareCode: \"SFTawDbC1nBjJ\" },\r\n { type: \"post\", shareCode: \"Wd24A2dMwwUBa\" },\r\n ]);\r\n\r\n const [intervalId, setIntervalId] = useState(null); // Add state for intervalId\r\n const [lastTotalHeight, setLastTotalHeight] = useState(150);\r\n\r\n const getHeightMessage = (e) => {\r\n if (e.data === 'get-rp-featured-products-height') {\r\n messageTotalHeight();\r\n }\r\n }\r\n\r\n const messageTotalHeight = () => {\r\n setCheckHeight({ ...-checkHeight });\r\n };\r\n\r\n useEffect(() => {\r\n props.setShowTopNav(false);\r\n populateData();\r\n\r\n window.addEventListener('message', getHeightMessage);\r\n window.addEventListener('resize', messageTotalHeight);\r\n return () => {\r\n window.removeEventListener('resize', messageTotalHeight);\r\n window.removeEventListener('message', getHeightMessage);\r\n };\r\n }, []); \r\n\r\n useEffect(() => {\r\n if (props.deviceSize === \"sm\") {\r\n setItemsPerPage(2);\r\n } else {\r\n setItemsPerPage(4)\r\n }\r\n }, [props.deviceSize]);\r\n\r\n const [checkHeight, setCheckHeight] = useState(1);\r\n useEffect(() => {\r\n let totalHeight = document.documentElement.offsetHeight;\r\n\r\n if (lastTotalHeight !== totalHeight && totalHeight > 150) {\r\n setLastTotalHeight(totalHeight);\r\n\r\n window.parent.postMessage({\r\n id: 'rp-featured-products',\r\n height: totalHeight,\r\n }, '*');\r\n }\r\n }, [checkHeight])\r\n\r\n const populateData = async () => {\r\n let url = `api/Featured/GetFeaturedProducts`;\r\n let data = await getRequest(url);\r\n\r\n if (data === undefined) {\r\n setProducts([]);\r\n }\r\n else {\r\n setProducts(data);\r\n setTimeout(messageTotalHeight, 1000);\r\n }\r\n }\r\n\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n const resetInterval = () => {\r\n clearInterval(intervalId);\r\n const newIntervalId = setInterval(() => {\r\n nextPage();\r\n }, 5000);\r\n setIntervalId(newIntervalId);\r\n }\r\n\r\n const productsPageHandlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n nextPage();\r\n resetInterval();\r\n },\r\n onSwipedRight: () => {\r\n prevPage();\r\n resetInterval();\r\n },\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n const prevPage = () => {\r\n if (products.length > itemsPerPage) {\r\n let page = productsPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((products.length - 1) / itemsPerPage);\r\n }\r\n setProductsPage(page);\r\n resetInterval();\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n setProductsPage(prevPage => {\r\n let page = prevPage + 1;\r\n if (page * itemsPerPage >= products.length) {\r\n page = 0;\r\n }\r\n\r\n return page;\r\n });\r\n\r\n resetInterval();\r\n }\r\n\r\n useEffect(() => {\r\n if (products.length > 0 && !intervalId) { \r\n resetInterval();\r\n }\r\n return () => {\r\n clearInterval(intervalId);\r\n };\r\n }, [products, intervalId]);\r\n\r\n\r\n const renderProductPagination = () => {\r\n if (products && products.length > itemsPerPage) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n const toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n const renderThumbsUpOverlay = (product, singleColumn = false) => {\r\n if (product.creatorCount > 0) {\r\n let url = \"/Product/ProductPage/\" + product.shareCode + \"?r=0&b=1&showBrandNav=true\";\r\n return (\r\n \r\n \r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (products && products?.length > 0) {\r\n return products.slice(productsPage * itemsPerPage, productsPage * itemsPerPage + itemsPerPage).map((product, i) => {\r\n //let redirectUrl = post.type === 2 ? `/Locker/LockerPage/${post?.shareCode}` : `/post/postPage/${post?.shareCode}`\r\n\r\n let sizes = [\"sm\"];\r\n let deviceSize = sizes.includes(props.deviceSize);\r\n return (\r\n
    \r\n {renderThumbsUpOverlay(product)}\r\n
    \r\n {deviceSize ? renderSaleOverlay(product.sale) : <>}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    {product.manufacturer?.toLowerCase().includes(\"rcktemp\") ? product.merchant : product.manufacturer}{product.sale && !deviceSize ? : \"\"}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {toTitleCase(product.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {product.sale && !!(product.salePrice) ? \"$\" + product.salePrice.toFixed(2) : <>}
    ${product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice.toFixed(2) : product.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let gridItem = () => {\r\n if (products?.length > 0) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n <>\r\n )\r\n }\r\n }\r\n\r\n return (\r\n gridItem()\r\n // \r\n // <>Featured Products\r\n )\r\n}\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(FeaturedProducts);","import React from \"react\";\r\n\r\n\r\nconst YoutubeIconLink = (props) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default YoutubeIconLink;","import React from \"react\";\r\n\r\n\r\nconst WebsiteLinkIcon = (props) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default WebsiteLinkIcon;","import React from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport FacebookIcon from \"components/icons/FacebookIcon\";\r\nimport InstagramIcon from \"components/icons/InstagramIcon\";\r\nimport TikTokIcon from \"components/icons/TikTokIcon\";\r\nimport StravaIcon from \"components/icons/StravaIcon\";\r\nimport YoutubeIcon from \"components/icons/YoutubeIconLink\";\r\nimport WebsiteIcon from \"components/icons/WebsiteLinkIcon\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * userInformation:object\r\n * deviceSize:string\r\n * isAuthenticated:boolean\r\n * profileBanner:string,\r\n * productCount:Number, \r\n * postCount:Number, \r\n * fetchProducts:Function,\r\n * fetchActivityFeed:Function,\r\n * fetchAbout:Function,\r\n * fetchLockers:Function\r\n * onClickMessage:Function\r\n * selectedCase: Number,\r\n * productCount:Number,\r\n * lockerCount:Number,\r\n * isFollowing:boolean,\r\n * isLoggedInUser:boolean,\r\n * followAction: Function,\r\n * showFollowersOrFollowing:Function\r\n * }} props \r\n */\r\n\r\nconst ProfileHeaderEmbed = (props) => {\r\n let { imageUrl, userName } = props.userInformation;\r\n\r\n let displayRightSideFunctionalityButtons = () => {\r\n return (\r\n
    \r\n
    \r\n {displayShareButton()}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n let displayShareButton = () => {\r\n let styles = {\r\n borderRadius: \"999px\",\r\n textAlign: \"center\",\r\n backgroundColor: \"#e55934\",\r\n fontFamily: '\"Archivo\", sans-serif',\r\n fontSize: !!(props.screenWidth) && props.screenWidth < 500 ? \"0.9rem\" : props.deviceSize === \"sm\" ? \"0.9rem\" : \"0.7rem\",\r\n fontWeight: 500,\r\n color: \"#fff\",\r\n cursor: \"pointer\",\r\n padding: !!(props.screenWidth) && props.screenWidth < 500 ? \"5px 20px\" : props.deviceSize === \"sm\" ? \"5px 20px\" : \"6px 12px\",\r\n position: props.deviceSize === 'sm' ? \"relative\" : \"\",\r\n bottom: props.deviceSize === 'sm' ? \"5px\" : \"6px\",\r\n left: \"5px\",\r\n };\r\n return (\r\n
    \r\n \r\n See Profile\r\n \r\n
    \r\n )\r\n }\r\n\r\n const profileRedirect = () => {\r\n const url = \"/prf/\" + props.userInformation?.userName + \"?showBrandNav=true\";\r\n window.open(url);\r\n };\r\n\r\n let avatarStyle = {\r\n width: props.deviceSize === \"sm\" ? \"120px\" : \"123px\",\r\n height: props.deviceSize === \"sm\" ? \"120px\" : \"123px\",\r\n border: \"8px solid rgb(229, 89, 52)\",\r\n borderRadius: \"50%\",\r\n marginBottom: props.deviceSize === \"sm\" ? \"20px\" : \"\",\r\n cursor: \"pointer\",\r\n objectFit: \"cover\",\r\n };\r\n\r\n const preStravaIconsExist = !!(props.userInformation?.facebookUsername) || !!(props.userInformation?.instagramUsername) || !!(props.userInformation?.tikTokUsername);\r\n const preWebsiteIconsExceptStrava = !!(props.userInformation?.facebookUsername) || !!(props.userInformation?.instagramUsername) || !!(props.userInformation?.tikTokUsername);\r\n const stravaExists = props.userInformation?.stravaUsername\r\n const youtubeExists = !!(props.userInformation?.googleUsername);\r\n return (\r\n <>\r\n
    \r\n
    \r\n {imageUrl?.length > 0 ? < ImageWrapper src={imageUrl} brandEmbed={true} size={`Profile`} onClick={profileRedirect} style={avatarStyle} alt=\"\" /> : < ImageWrapper src=\"/images/avatar2.svg\" onClick={profileRedirect} alt=\"\" style={avatarStyle} />}\r\n
    \r\n {props.deviceSize === \"sm\" ?\r\n

    {userName}

    \r\n :\r\n

    {userName}

    \r\n\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n {props.userInformation?.facebookUsername != null && props.userInformation?.facebookUsername != undefined && props.userInformation?.facebookUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.instagramUsername != null && props.userInformation?.instagramUsername != undefined && props.userInformation?.instagramUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.tikTokUsername != null && props.userInformation?.tikTokUsername != undefined && props.userInformation?.tikTokUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.stravaUsername != null && props.userInformation?.stravaUsername != undefined && props.userInformation?.stravaUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.googleUsername != null && props.userInformation?.googleUsername != undefined && props.userInformation?.googleUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.website != null && props.userInformation?.website != undefined && props.userInformation?.website !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n
    \r\n
    \r\n {displayRightSideFunctionalityButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n )\r\n}\r\n\r\nexport default ProfileHeaderEmbed","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport ProfileHeader from \"./ProfileHeaderEmbed\";\r\n\r\n\r\nclass ProfileEmbed extends React.Component {\r\n state = {\r\n userInformation: {\r\n id: 0,\r\n proStatusId: 0,\r\n bio: \"\",\r\n name: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n userName: \"\",\r\n followers: 0,\r\n following: 0,\r\n merchantProducts: {\r\n $values: []\r\n },\r\n sectors: {\r\n $values: []\r\n }\r\n },\r\n loggedInUser: {},\r\n isLoading: true,\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.setShowTopNav(false);\r\n let userName = !!(this.props.brandUsername) ? this.props.brandUsername : this.props.match?.params?.userName;\r\n\r\n let user = await this.fetchUserInformation(userName);\r\n if (user == undefined || user == null) {\r\n // this.props.history?.push(\"/NotFound\")\r\n }\r\n else {\r\n this.setState({ userInformation: user });\r\n this.setState({ isLoading: false });\r\n }\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (!(this.props.brandUsername) && this.props.match?.params?.userName !== prevProps.match?.params?.userName) {\r\n this.props.closeAllModals();\r\n\r\n this.setState({\r\n isLoading: true,\r\n }, async () => {\r\n let user = await (this.fetchUserInformation(this.props.match.params.userName));\r\n if (user === undefined || user == null) {\r\n this.props.history.push(\"/NotFound\");\r\n }\r\n else {\r\n this.setState({ userInformation: user });\r\n this.setState({ isLoading: false })\r\n }\r\n })\r\n }\r\n }\r\n\r\n fetchUserInformation = async (username) => {\r\n let url = `/api/account/getProfile?userName=${username}`;\r\n let data = await getRequest(url);\r\n if (data == null || data == undefined) {\r\n return null;\r\n }\r\n else {\r\n this.setState({ userInformation: data }, async () => {\r\n if (data.proStatusId !== 1) {\r\n this.setState({ selectedCase: 5 });\r\n }\r\n });\r\n return data;\r\n }\r\n }\r\n\r\n render() {\r\n let { isLoading } = this.state;\r\n if (isLoading === true) {\r\n return <>\r\n }\r\n else if (this.state.userInformation === \"notFound\") {\r\n return

    This user does not exist

    \r\n }\r\n else {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n }\r\n}\r\n\r\nexport default ProfileEmbed;","import React, { useState, useEffect } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { useSwipeable } from \"react-swipeable\"; \r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport ProfileEmbed from \"./ProfileEmbed\";\r\nimport { Link } from 'react-router-dom';\r\nimport ThumbsUpIcon from \"components/icons/ThumbsUpGeneric\";\r\n\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object,\r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string\r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst FeaturedPostsAndProduct = (props) => {\r\n const [postsProductsPage, setPostsProductsPage] = useState(0);\r\n const [postsProducts, setPostsProducts] = useState([]);\r\n const [sectors, setSectors] = useState([]);\r\n const [itemsPerPage, setItemsPerPage] = useState(4);\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n props.setShowTopNav(false);\r\n // populateData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!!(props.featuredData) && props.isActive && !isLoaded) {\r\n setPostsProducts(props.featuredData?.featuredContent?.postsProducts);\r\n setSectors(props.featuredData?.sectors);\r\n setIsLoaded(true);\r\n }\r\n }, [props.isActive, isLoaded, props.featuredData])\r\n\r\n\r\n useEffect(() => {\r\n if (props.deviceSize === \"sm\") {\r\n setItemsPerPage(2);\r\n } else {\r\n setItemsPerPage(4)\r\n }\r\n }, [props.deviceSize]);\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n const postsProductsPageHandlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n nextPage();\r\n },\r\n onSwipedRight: () => {\r\n prevPage();\r\n },\r\n preventDefaultTouchmoveEvent: true,\r\n trackMouse: true\r\n });\r\n\r\n\r\n const prevPage = () => {\r\n if (postsProducts.length > itemsPerPage) {\r\n let page = postsProductsPage - 1;\r\n if (page < 0) {\r\n page = Math.floor((postsProducts.length - 1) / itemsPerPage);\r\n }\r\n\r\n setPostsProductsPage(page);\r\n }\r\n }\r\n\r\n const nextPage = () => {\r\n if (postsProducts.length > itemsPerPage) {\r\n let page = postsProductsPage + 1;\r\n if (page * itemsPerPage >= postsProducts.length) {\r\n page = 0;\r\n }\r\n\r\n setPostsProductsPage(page);\r\n }\r\n }\r\n\r\n\r\n const renderProductPagination = () => {\r\n if (postsProducts && postsProducts.length > itemsPerPage) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n {\r\n e.preventDefault();\r\n nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n const toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n const renderThumbsUpOverlay = (product, singleColumn = false) => {\r\n if (product.creatorCount > 0) {\r\n let url = \"/Product/ProductPage/\" + product.shareCode + \"?r=0&b=1&showBrandNav=true\";\r\n return (\r\n \r\n \r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n let renderProducts = () => {\r\n if (postsProducts && postsProducts?.length > 0) {\r\n return postsProducts.slice(postsProductsPage * itemsPerPage, postsProductsPage * itemsPerPage + itemsPerPage).map((postsProduct, i) => {\r\n //let redirectUrl = post.type === 2 ? `/Locker/LockerPage/${post?.shareCode}` : `/post/postPage/${post?.shareCode}`\r\n let sizes = [\"sm\"];\r\n let deviceSize = sizes.includes(props.deviceSize);\r\n\r\n if (!(postsProduct.userMerchantProductId)) {\r\n let redirectUrl = postsProduct.type === 2 ? `/Locker/LockerPage/${postsProduct?.shareCode}?showBrandNav=true` : postsProduct.type === 4 ? `/Blog/BlogPage/${postsProduct?.shareCode}?showBrandNav=true` : `/post/postPage/${postsProduct?.shareCode}?showBrandNav=true`\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {renderThumbsUpOverlay(postsProduct)}\r\n {deviceSize ? renderSaleOverlay(postsProduct.sale) : <>}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    {postsProduct.manufacturer?.toLowerCase().includes(\"rcktemp\") ? postsProduct.merchant : postsProduct.manufacturer}{postsProduct.sale && !deviceSize ? : \"\"}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {toTitleCase(postsProduct.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {postsProduct.sale && !!(postsProduct.salePrice) ? \"$\" + postsProduct.salePrice.toFixed(2) : <>}
    ${postsProduct.sale && !!(postsProduct.salePrice) && !!(postsProduct.originalPrice) ? postsProduct.originalPrice.toFixed(2) : postsProduct.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n let gridItem = () => {\r\n if (postsProducts?.length > 0) {\r\n return (\r\n
    1149 ? \"103%\" : itemsPerPage < 4 ? \"\" : \"101.5%\", margin: props.screenWidth > 1149 ? \"0 -10% 0 -1.3%\" : itemsPerPage < 4 ? \"\" : \"0 -10% 0 -0.7%\", zIndex: \"898\", borderRadius: \"20px\", overflow: itemsPerPage < 4 ? \"visible\" : \"hidden\" }}>\r\n
    \r\n
    \r\n {renderProductPagination()}\r\n {renderProducts()}\r\n
    \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n <>\r\n )\r\n }\r\n }\r\n\r\n const redirect = (sector) => {\r\n const url = \"/Browse/\" + sector + \"?populatesearch=true\";\r\n window.open(url);\r\n // window.location.href = url;\r\n };\r\n\r\n let renderSectors = () => {\r\n if (sectors?.length > 0) {\r\n return sectors.map((sector, index) => {\r\n const encodedSector = encodeURIComponent(sector);\r\n return (\r\n \r\n )\r\n })\r\n }\r\n }\r\n\r\n const outerDivStyle = {\r\n background: `url(\"/images/${props.featuredData.userImage}\") no-repeat center center`,\r\n width: itemsPerPage < 4 ? \"\" :'45%',\r\n backgroundSize: 'cover',\r\n position: 'relative',\r\n paddingBottom: itemsPerPage < 4 ? \"100%\" : '27.08%',\r\n borderRadius: \"15px\",\r\n border: \"1px solid #E9ECEF\",\r\n display: itemsPerPage < 4 ? \"none\" : \"\",\r\n };\r\n\r\n const innerDivStyle = {\r\n width: '100%',\r\n height: '100%',\r\n position: 'absolute',\r\n left: 0,\r\n display: 'block',\r\n };\r\n\r\n return (\r\n
    767 ? \"mt-3\" : \"\"} mb-3 mx-auto`} style={{ width: \"95%\" }}>\r\n
    \r\n
    \r\n \r\n

    \r\n {!!(props.featuredData?.userText) ? props.featuredData.userText : \"\"}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    Top Content

    \r\n {gridItem()}\r\n
    \r\n {renderSectors()}\r\n
    \r\n
    \r\n // \r\n // <>Featured Posts and Products\r\n )\r\n}\r\n\r\nexport default FeaturedPostsAndProduct;","import React, { useState, useEffect, useRef } from \"react\";\r\nimport RightArrowIcon from \"components/icons/RightArrowIcon\";\r\nimport LeftArrowIcon from \"components/icons/LeftArrowIcon\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { trimProductsArray } from \"sharedUtils/postFunctions\";\r\nimport { Swipeable } from \"react-swipeable\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\nimport SaleIcon from \"components/icons/SaleIcon\";\r\nimport ProfileEmbed from \"./ProfileEmbed\";\r\nimport { Link } from 'react-router-dom';\r\nimport FeaturedPostsAndProduct from \"./FeaturedPostsAndProduct\";\r\nimport FeaturedContent from \"./FeaturedContent\";\r\nimport {\r\n Carousel,\r\n CarouselItem,\r\n CarouselControl,\r\n CarouselIndicators,\r\n CarouselCaption\r\n} from 'reactstrap';\r\n\r\n/**\r\n * @description A post component for a three column feed grid\r\n * @param {{\r\n * post?:object, \r\n * isPictureAndProducts:boolean,\r\n * showPins:boolean\r\n * redirectUrl:string \r\n * togglePinned : (shareCode)=>\r\n * isPinned:boolean\r\n * showUserTile: boolean\r\n * }} props\r\n */\r\nconst FeaturedPostsAndProducts = (props) => {\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const [animating, setAnimating] = useState(false);\r\n const [featuredData, setFeaturedData] = useState([]);\r\n const [carouselActive, setCarouselActive] = useState(true);\r\n\r\n const [lastTotalHeight, setLastTotalHeight] = useState(150);\r\n const [checkHeight, setCheckHeight] = useState(1);\r\n\r\n const getHeightMessage = (e) => {\r\n if (e.data === 'get-rp-featured-posts-products-height') {\r\n messageTotalHeight();\r\n }\r\n }\r\n\r\n const messageTotalHeight = () => {\r\n setCheckHeight({ ...-checkHeight });\r\n };\r\n\r\n useEffect(() => {\r\n props.setShowTopNav(false);\r\n\r\n // update the height onload\r\n populateData().then(() => {\r\n setTimeout(() => {\r\n sendHeight();\r\n }, 2000)\r\n });\r\n\r\n window.addEventListener('message', getHeightMessage);\r\n window.addEventListener('resize', messageTotalHeight);\r\n return () => {\r\n window.removeEventListener('resize', messageTotalHeight);\r\n window.removeEventListener('message', getHeightMessage);\r\n };\r\n }, []); \r\n\r\n const sendHeight = () => {\r\n let totalHeight = document.documentElement.offsetHeight;\r\n\r\n if (lastTotalHeight !== totalHeight && totalHeight > 150) {\r\n setLastTotalHeight(totalHeight);\r\n\r\n window.parent.postMessage({\r\n id: 'rp-featured-posts-products',\r\n height: totalHeight,\r\n }, '*');\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n sendHeight();\r\n }, [checkHeight])\r\n\r\n const populateData = async () => {\r\n let url = `api/Featured/GetFeaturedPostsAndProducts`;\r\n let data = await getRequest(url);\r\n\r\n if (data == undefined) {\r\n setFeaturedData([]);\r\n } else {\r\n //setPostsProducts(data.postsProducts.$values);\r\n setFeaturedData(data);\r\n\r\n const totalHeight = document.documentElement.offsetHeight;\r\n setLastTotalHeight(totalHeight);\r\n setTimeout(messageTotalHeight, 4000);\r\n }\r\n }\r\n\r\n const handleCarouselActive = () => {\r\n setCarouselActive(false);\r\n\r\n setTimeout(() => {\r\n setCarouselActive(true);\r\n }, 300);\r\n };\r\n\r\n const next = () => {\r\n if (animating) return;\r\n if (carouselActive) {\r\n const nextIndex = activeIndex === featuredData.length - 1 ? 0 : activeIndex + 1;\r\n setActiveIndex(nextIndex);\r\n setTimeout(messageTotalHeight, 1000);\r\n }\r\n }\r\n\r\n const previous = () => {\r\n if (animating) return;\r\n if (carouselActive) {\r\n const nextIndex = activeIndex === 0 ? featuredData.length - 1 : activeIndex - 1;\r\n setActiveIndex(nextIndex);\r\n setTimeout(messageTotalHeight, 1000);\r\n }\r\n }\r\n\r\n const goToIndex = (newIndex) => {\r\n if (animating) return;\r\n setActiveIndex(newIndex);\r\n setTimeout(messageTotalHeight, 1000);\r\n }\r\n\r\n const slides = featuredData.map((data, index) => {\r\n const isActive = index === activeIndex;\r\n return (\r\n setAnimating(true)}\r\n onExited={() => setAnimating(false)}\r\n key={index}\r\n >\r\n \r\n \r\n );\r\n });\r\n\r\n if (featuredData.length === 0) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {slides}\r\n \r\n \r\n
    \r\n //\r\n\r\n )\r\n}\r\nconst mapDispatch = { toggleShareModal, togglePostPageModal, toggleLockerPageModal, toggleProductPageModal }\r\n\r\nexport default connect(null, mapDispatch)(FeaturedPostsAndProducts);","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport SwipeableProducts from \"./SwipeableProducts\";\r\nimport { trimProductsArray, getProperties } from \"../../sharedUtils/postFunctions\";\r\n\r\nimport Modal from \"components/Modal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\n\r\nimport { closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { getPostShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\nclass PostPageEmbedBrand extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMessageDetails: false,\r\n likes: {\r\n count: 0,\r\n likedByUser: false\r\n },\r\n loggedInUser: null,\r\n isAuthorized: false,\r\n isFollowing: false,\r\n commentInput: \"\",\r\n shareCode: \"\",\r\n post: blankFeedPost,\r\n showDescriptionModal: false,\r\n selectedProduct: 0,\r\n isLoading: true,\r\n loadingComments: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n }\r\n }\r\n\r\n trimmedProducts = null;\r\n\r\n totalHeight = React.createRef();\r\n\r\n async componentDidMount() {\r\n const messageTotalHeight = () => {\r\n let totalHeight = this.totalHeight?.current?.offsetHeight;\r\n if (totalHeight > 100) {\r\n const messageObj = { shareCode: this.state.shareCode, height: totalHeight};\r\n const messageString = JSON.stringify(messageObj);\r\n\r\n window.parent.postMessage(messageString, \"*\");\r\n }\r\n }\r\n\r\n window.addEventListener('message', function (event) {\r\n messageTotalHeight();\r\n });\r\n\r\n\r\n\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getPostShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.fetchPost(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n } else {\r\n this.setState({ post: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.fetchPost(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n } else {\r\n this.setState({ post: data, isLoading: false, loggedInUser, shareCode, shareLink });\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n this.setState({ viewTracked: true });\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ post: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n }\r\n if (!!(post)) {\r\n this.trimmedProducts = trimProductsArray(post.productItems?.$values).map((i) => { return i; })\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location.state.destinationState.params.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.fetchPost(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n }\r\n\r\n this.setState({ post, isLoading: false });\r\n }\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n\r\n return data;\r\n }\r\n\r\n renderProductImages = () => {\r\n return trimProductsArray(this.state.post.productItems?.$values)?.map((val, i) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/*{this.renderInfoOverlay(val)}*/}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.post}\r\n loggedInUser={this.state.loggedInUser}\r\n parentModal={this.props.isModal === true ? { type: \"post\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.post } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}
    \r\n
    \r\n
    \r\n
    ${val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n toggleDescriptionModal = (productIndex) => {\r\n let newModalState = !this.state.showDescriptionModal;\r\n this.setState({ showDescriptionModal: newModalState, selectedProduct: productIndex });\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n return (\r\n \r\n
    \r\n \r\n

    {this.state.post.productItems?.$values[this.state.selectedProduct].comment}

    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n redirectToPostPage = (e) => {\r\n e.preventDefault();\r\n let url = `/p/${this.state.shareCode}`;\r\n window.open(url);\r\n }\r\n\r\n render() {\r\n if (this.state.post === \"notFound\") {\r\n return

    Post not found

    \r\n }\r\n\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3 && !property?.value.includes(\"blockquote\") || property?.role === 8))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n\r\n if (this.state.isLoading === true) {\r\n return <>\r\n }\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.post.status) === true && this.state.post.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n\r\n
    300 ? \"94%\" : this.totalHeight?.current?.offsetWidth > 200 ? \"88%\" : \"82%\", marginTop: \"10px\" }} ref={this.totalHeight}>\r\n {this.renderDescriptionModal()}\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    0 ? \"feed-slider\" : \"feed-slider-noproduct\"}`} style={{ paddingBottom: this.state.post?.productItems?.$values?.length > 0 ? \"\" : \"131.7%\" }}>\r\n
    \r\n
    \r\n 0 ? \"100%\" : \"101.1%\", borderRadius: this.state.post?.productItems?.$values?.length > 0 ? \"\" : \"0 0 20px 20px\" }}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n\r\n {\r\n this.state.post?.productItems?.$values?.length > 0 ? (\r\n
    \r\n \r\n
    \r\n ) : null\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n closeAllModals: closeAllModals,\r\n}\r\n\r\nexport default connect(null, mapDispatch)(PostPageEmbedBrand);","import React from \"react\";\r\nimport { Link, NavLink, Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport SwipeableProducts from \"./SwipeableProducts\";\r\nimport { trimProductsArray, getProperties, getThumbnail } from \"../../sharedUtils/postFunctions\";\r\nimport { NavbarBrand } from 'reactstrap';\r\n\r\nimport CommentForm from \"components/CommentForm\";\r\nimport CommentTile from \"components/CommentTile\";\r\nimport Modal from \"components/Modal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\n\r\nimport { toggleShareModal, toggleProductPageModal, closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"components/icons/ShareIosIcon\";\r\n\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToLocaleDateTimeString } from \"sharedUtils/timeUtils\"\r\nimport { handleCommentMarkup, replaceUrls } from \"sharedUtils/markupUtils\";\r\nimport { getPostShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\n\r\nclass LockerPageEmbed extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMessageDetails: false,\r\n likes: {\r\n count: 0,\r\n likedByUser: false\r\n },\r\n loggedInUser: null,\r\n isAuthorized: false,\r\n isFollowing: false,\r\n commentInput: \"\",\r\n shareCode: \"\",\r\n post: blankFeedPost,\r\n showDescriptionModal: false,\r\n selectedProduct: 0,\r\n isLoading: true,\r\n loadingComments: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n savedByUser: false,\r\n collapsed: true,\r\n contentStyle: this.notOverflowedContentStyle,\r\n contentOverflowed: false,\r\n maxHeight: \"41px\",\r\n checkHeight: 1,\r\n lastTotalHeight: 150,\r\n }\r\n }\r\n\r\n trimmedProducts = null;\r\n\r\n commentsTextArea = React.createRef();\r\n contentRef = React.createRef();\r\n bioRef = React.createRef();\r\n titleRef = React.createRef();\r\n picRef = React.createRef();\r\n userTileRef = React.createRef();\r\n editPostButtonRef = React.createRef();\r\n totalHeight = React.createRef();\r\n\r\n collapsedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n notOverflowedContentStyle = { marginTop: \"0em\", maxHeight: \"42px\", textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n expandedContentStyle = { marginTop: \"0em\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n\r\n async componentDidMount() {\r\n\r\n window.addEventListener('message', this.messageTotalHeight);\r\n window.addEventListener('resize', this.messageTotalHeight);\r\n\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getPostShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.fetchPost(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ post: \"notFound\", isLoading: false, shareCode, shareLink })\r\n } else {\r\n this.setState({ post: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.fetchPost(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n let isFollowing = await this.fetchIsFollowing(data.user?.id);\r\n this.setState({ post: data, isFollowing, isLoading: false, loggedInUser, shareCode, shareLink });\r\n this.fetchComments(0, 3);\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n this.setState({ viewTracked: true });\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ post: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n this.setState({ isFollowing });\r\n if (post.comments.length === 0) {\r\n this.fetchComments(0, 3);\r\n }\r\n }\r\n if (!!(post)) {\r\n this.trimmedProducts = trimProductsArray(post.productItems?.$values).map((i) => { return i; })\r\n\r\n }\r\n }\r\n\r\n if (this.commentsTextArea?.current != null && this.props.isModal === true && this.props.isCommenting === true) {\r\n this.commentsTextArea.current.scrollIntoView();\r\n this.commentsTextArea.current.focus();\r\n }\r\n\r\n const savedByUser = this.props?.match?.params?.post?.savedByUser;\r\n this.setState({ savedByUser });\r\n\r\n // THIS IS LOGIC TO CALCULATE THE HEIGHT OF THE CONTENT

    FOR 'SEE MORE'\r\n // FOR DEVICE SIZES THAT ARE NOT SMALL - it determines if height of ProfileInfoCard \r\n // is less than the expanded < p > and then puts it in contentOverflowed as well as \r\n // calculate the height of the of the 'SEE MORE'

    based on it's expanded size vs.\r\n // the size of the ProfileInfoCard and applies it to the styling.\r\n\r\n // SMALL DEVICES SET HEIGHT TO 2 LINES OF TEXT WHICH IS ~40px\r\n let contentOverflowed = false;\r\n\r\n const picHeight = this.picRef?.current?.offsetHeight;\r\n const userTileHeight = this.userTileRef?.current?.offsetHeight;\r\n const editButtonHeight = this.editPostButtonRef?.current?.offsetHeight;\r\n\r\n if (this.props.deviceSize === \"sm\" && this.contentRef?.current?.offsetHeight > 40) {\r\n this.setState({ contentOverflowed: true, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.setState({ contentStyle: this.expandedContentStyle });\r\n const bioHeight = this.bioRef?.current?.offsetHeight;\r\n const contentHeight = this.contentRef?.current?.offsetHeight;\r\n const titleHeight = this.titleRef?.current?.offsetHeight;\r\n\r\n this.setState({ contentStyle: this.notOverflowedContentStyle })\r\n\r\n const largeScreenContentHeight = editButtonHeight == undefined && editButtonHeight == null ? userTileHeight + titleHeight : userTileHeight + editButtonHeight + titleHeight;\r\n\r\n if (this.props.deviceSize !== \"sm\" && picHeight < largeScreenContentHeight) {\r\n const overflow = largeScreenContentHeight - picHeight;\r\n const maxHeight = contentHeight - overflow > 80 ? Math.floor((contentHeight - overflow) / 20) * 20 - 60 + \"px\" : \"41px\";\r\n\r\n this.setState({ contentOverflowed: true, maxHeight, contentStyle: this.collapsedContentStyle })\r\n }\r\n\r\n this.collapsedContentStyle = { marginTop: \"0em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n this.notOverflowedContentStyle = { marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: this.props.deviceSize === \"sm\" ? \"42px\" : this.state.maxHeight, textOverflow: \"ellipsis\", overflow: \"hidden\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n this.expandedContentStyle = { marginTop: \"0em\", paddingLeft: \"6px\", paddingRight: \"6px\" };\r\n\r\n if (this.state.contentOverflowed) {\r\n this.setState({ contentStyle: this.collapsedContentStyle });\r\n } else if (!contentOverflowed && this.props.deviceSize !== \"sm\") {\r\n this.setState({ contentStyle: this.expandedContentStyle })\r\n }\r\n }\r\n\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location.state.destinationState.params.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.fetchPost(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n else {\r\n let isFollowing = await this.fetchIsFollowing(post.user?.id);\r\n\r\n await this.fetchLikes(shareCode, isAuthorized);\r\n await this.fetchComments(0, 25);\r\n this.setState({ isFollowing });\r\n }\r\n }\r\n\r\n\r\n\r\n this.setState({ post, isLoading: false });\r\n\r\n }\r\n if (prevState.checkHeight !== this.state.checkHeight) {\r\n let totalHeight = document.documentElement.offsetHeight;\r\n\r\n if (this.state.lastTotalHeight !== totalHeight && totalHeight > 150) {\r\n this.setState({ lastTotalHeight: totalHeight });\r\n\r\n window.parent.postMessage({\r\n id: 'rpFrame-' + this.props.match.params.shareCode,\r\n height: totalHeight,\r\n }, '*');\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount = () => {\r\n window.removeEventListener('resize', this.messageTotalHeight);\r\n }\r\n\r\n messageTotalHeight = () => {\r\n this.setState({ checkHeight: {...-this.state.checkHeight} });\r\n };\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ isFollowing: data });\r\n }\r\n\r\n // obsolete\r\n fetchLikes = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? `/api/post/getLikesAuthorized` : `/api/post/getLikes`;\r\n let url = `${baseUrl}?shareCode=${shareCode}`;\r\n let data = await getRequest(url);\r\n this.setState({ likes: data });\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n return data;\r\n //this.setState({ post: data });\r\n }\r\n\r\n followAction = async () => {\r\n let url = `/prf/${this.state.post.user.userName}`\r\n window.open(url);\r\n }\r\n\r\n fetchComments = async (skip = this.state.post.comments.length, take = 25) => {\r\n return;\r\n this.setState({ loadingComments: true });\r\n let baseUrl = this.state.loggedInUser !== undefined ? `/api/post/getCommentsAuthorized` : `/api/post/getComments`;\r\n let url = `${baseUrl}?shareCode=${this.state.shareCode}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n let newState = { ...this.state };\r\n newState.post.comments = [...data, ...this.state.post.comments];\r\n\r\n this.setState({ ...newState, loadingComments: false });\r\n }\r\n\r\n handleCommentInput = (e) => {\r\n this.setState({ commentInput: e.target.value });\r\n }\r\n\r\n handleTextMarkup = (text) => {\r\n let urlHandled = replaceUrls(text);\r\n\r\n let markupHandled = urlHandled.map(retVal => {\r\n if (typeof retVal === 'string') {\r\n return handleCommentMarkup(retVal, true);\r\n }\r\n else {\r\n return retVal;\r\n }\r\n });\r\n\r\n return markupHandled;\r\n }\r\n\r\n likePost = async (shareCode) => {\r\n let num = this.state.post.likedByUser === true ? -1 : 1;\r\n let newLikes = {\r\n likeCount: this.state.post.likeCount + num,\r\n likedByUser: !this.state.post.likedByUser\r\n }\r\n let newPost = { ...this.state.post, ...newLikes };\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.likedByUser = newLikes.likedByUser;\r\n this.props.match.params.post.likeCount = newLikes.likeCount;\r\n }\r\n\r\n this.setState({ post: newPost }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n likeComment = async (comment, key) => {\r\n let num = this.state.post.comments[key].likedByUser === true ? -1 : 1;\r\n let newState = { ...this.state };\r\n newState.post.comments[key].likes += num;\r\n newState.post.comments[key].likedByUser = !newState.post.comments[key].likedByUser;\r\n\r\n this.setState(newState, async () => {\r\n let requestObject = {\r\n id: comment.id,\r\n likedByUser: num < 0\r\n }\r\n\r\n let url = `/api/post/likeComment`;\r\n let data = await postRequest(url, requestObject);\r\n });\r\n\r\n }\r\n\r\n savePost = async (shareCode) => {\r\n let reqBody = { shareCode };\r\n\r\n let route = this.state.post.savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n let data = await postRequest(route, reqBody);\r\n\r\n let newPost = { ...this.state.post };\r\n newPost.savedByUser = !this.state.post.savedByUser\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.savedByUser = newPost.savedByUser;\r\n }\r\n\r\n this.setState({ post: newPost });\r\n }\r\n\r\n renderBookmarkOverlay = () => {\r\n const shareCode = this.props?.match?.params?.post?.shareCode;\r\n return (\r\n {\r\n this.followAction();\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = () => {\r\n return ( {\r\n this.followAction();\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n postComment = async () => {\r\n this.setState({ submittingComment: true });\r\n\r\n let dataToPost = {\r\n text: this.state.commentInput\r\n }\r\n let shareCode = this.state.post.shareCode;\r\n let url = `/api/post/postComment?shareCode=${shareCode}&postType=${this.state.post.type}`;\r\n\r\n var createdOn = new Date();\r\n createdOn.setSeconds(createdOn.getSeconds() - 1);\r\n let dummyComment = {\r\n likedByUser: false,\r\n likes: 0,\r\n replyCount: 0,\r\n text: this.state.commentInput,\r\n user: this.state.loggedInUser,\r\n createdOn: new Date()\r\n };\r\n\r\n let comments = [...this.state.post.comments];\r\n comments.push(dummyComment);\r\n\r\n let newState = { ...this.state };\r\n newState.commentInput = \"\";\r\n newState.post.comments = comments;\r\n newState.post.commentCount += 1;\r\n\r\n if (this.props.match && this.props.match.params && this.props.match.params.post) {\r\n this.props.match.params.post.comments = [...newState.post.comments];\r\n this.props.match.params.post.commentCount = newState.post.commentCount;\r\n this.props.match.params.post.totalCount = newState.post.totalCount;\r\n }\r\n\r\n this.setState(newState, async () => {\r\n var response = await postRequest(url, dataToPost);\r\n this.setState({ submittingComment: false });\r\n });\r\n }\r\n\r\n prevPage = () => {\r\n let page = this.state.productPage - 1;\r\n if (page < 0) {\r\n page = Math.floor(this.state.post.productItems?.$values?.length / 4);\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n nextPage = () => {\r\n let page = this.state.productPage + 1;\r\n if (page * 4 > this.state.post.productItems?.$values?.length) {\r\n page = 0;\r\n }\r\n\r\n this.setState({ productPage: page });\r\n }\r\n\r\n renderProductPagination = () => {\r\n if (this.state.post.productItems?.$values?.length > 4) {\r\n return (\r\n <>\r\n {\r\n e.preventDefault();\r\n this.prevPage()\r\n }}>\r\n \r\n {\"<\"}\r\n \r\n \r\n\r\n \r\n {this.state.post.productItems?.$values?.length}\r\n \r\n\r\n {\r\n e.preventDefault();\r\n this.nextPage()\r\n }}>\r\n \r\n {\">\"}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderProductImages = () => {\r\n return trimProductsArray(this.state.post.productItems?.$values)?.map((val, i) => {\r\n return (\r\n

    \r\n
    \r\n
    \r\n {/*{this.renderInfoOverlay(val)}*/}\r\n this.toggleDescriptionModal(i)}\r\n post={this.state.post}\r\n loggedInUser={this.state.loggedInUser}\r\n parentModal={this.props.isModal === true ? { type: \"post\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.post } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}
    \r\n
    \r\n
    \r\n
    ${val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n renderComments = () => {\r\n let comments = this.state.post.comments;\r\n if (comments && comments.length && comments.length > 0) {\r\n return comments.map((comment, i) => {\r\n return ()\r\n })\r\n }\r\n\r\n }\r\n\r\n toggleDescriptionModal = (productIndex) => {\r\n let newModalState = !this.state.showDescriptionModal;\r\n this.setState({ showDescriptionModal: newModalState, selectedProduct: productIndex });\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n return (\r\n \r\n
    \r\n \r\n

    {this.state.post.productItems?.$values[this.state.selectedProduct].comment}

    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentForm = () => {\r\n if (this.state.loggedInUser) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n renderCommentSectionHeading = () => {\r\n let commentCount = this.state.post.comments.length;\r\n let totalComments = this.state.post.commentCount;\r\n if (commentCount === 0) {\r\n return \"No Comments\";\r\n }\r\n else if (commentCount === 1) {\r\n return `${commentCount} comment`\r\n }\r\n else {\r\n return `${commentCount} of ${totalComments} comments`\r\n }\r\n }\r\n\r\n renderSectors = () => {\r\n return this.state.post.sectors?.$values?.map((sector, i) => {\r\n return (\r\n \r\n )\r\n });\r\n }\r\n\r\n contentSection = () => {\r\n if (!this.state.contentOverflowed) {\r\n return (\r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n
    \r\n )\r\n } else {\r\n if (this.state.collapsed) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.expandedContentStyle, collapsed: false });\r\n }}>\r\n see more\r\n \r\n
    \r\n
    )\r\n\r\n } else {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {this.handleTextMarkup(this.state.post?.content)}\r\n

    \r\n\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n this.setState({ contentStyle: this.collapsedContentStyle, collapsed: true });\r\n }}>\r\n see less\r\n \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n }\r\n }\r\n\r\n contentSectionSmall = () => {\r\n let content = handleCommentMarkup(this.state.post?.content, true, true);\r\n return (\r\n

    \r\n {content}\r\n

    \r\n )\r\n }\r\n\r\n renderFollowButton() {\r\n return (\r\n {\r\n e.preventDefault();\r\n let url = `/explore`;\r\n window.open(url);\r\n }}\r\n id=\"rp-nav-logo\" to=\"/Nav/Explore\" style={{ position: \"relative\", cursor: \"pointer\", width: \"100px\", marginRight: 0 }}>\r\n \r\n \r\n )\r\n }\r\n\r\n displayBanner = () => {\r\n\r\n let properties = this.state.post?.properties?.$values;\r\n let productCount = this.state.post?.properties?.$values[0]?.userPost?.productItems?.$values?.length;\r\n let productCountBanner = `${productCount} ${productCount > 1 ? \"products\" : \"product\"}`;\r\n let imageSrc = properties?.length > 0 ? properties[0].value : \"images/blank-banner.png\"\r\n if (productCount != null && productCount != undefined && productCount > 0) {\r\n return (\r\n
    \r\n \r\n

    {this.state.post?.title}

    \r\n {productCountBanner}\r\n
    \r\n )\r\n }\r\n return (\r\n
    \r\n \r\n

    {this.state.post?.title}

    \r\n
    \r\n ) \r\n }\r\n\r\n redirectToLockerPage = (e) => {\r\n e.preventDefault();\r\n let url = `/l/${this.state.shareCode}`;\r\n window.open(url);\r\n }\r\n\r\n\r\n render() {\r\n if (this.state.post === \"notFound\") {\r\n return

    Post not found

    \r\n }\r\n\r\n let commentCount = this.state.post?.comments?.length;\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height\r\n }\r\n });\r\n\r\n let { userName, imageUrl } = this.state.post?.user;\r\n let webLayouts = [\"md\", \"lg\", \"xl\"];\r\n let { deviceSize, isModal } = this.props;\r\n\r\n if (this.state.isLoading === true) {\r\n return \r\n }\r\n\r\n let parsedDate = convertToLocaleDateTimeString(new Date(this.state.post?.postedOn), false)\r\n\r\n if (this.state.showMessageDetails) {\r\n return \r\n }\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.post.status) === true && this.state.post.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {this.renderDescriptionModal()}\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {this.renderFollowButton()}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {/*{this.renderBookmarkOverlay()}*/}\r\n {/*{this.renderShareOverlay()}*/}\r\n {/**/}\r\n {this.displayBanner()}\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n {\r\n this.state.post?.content == null || this.state.post?.content == undefined || this.state.post?.content === \"\" ?\r\n <> :\r\n
    \r\n
    \r\n {this.contentSectionSmall()}\r\n
    \r\n
    \r\n }\r\n\r\n\r\n {/*{*/}\r\n {/* this.state.post?.productItems?.$values?.length > 0 ? (*/}\r\n {/*
    */}\r\n {/*
    = 4 ? \" justify-content-left\" : \"justify-content-center\"} px-0 position-relative mt-2`}>*/}\r\n {/* {this.renderProductImages()}*/}\r\n {/*
    */}\r\n {/*
    */}\r\n\r\n {/* ) : null*/}\r\n {/*}*/}\r\n\r\n {\r\n this.state.post?.productItems?.$values?.length > 0 ? (\r\n
    \r\n \r\n
    \r\n ) : null\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n toggleShareModal: toggleShareModal,\r\n closeAllModals: closeAllModals,\r\n toggleProductPageModal, toggleProductPageModal\r\n}\r\n\r\nexport default connect(null, mapDispatch)(LockerPageEmbed);","import React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport SwipeableProducts from \"./SwipeableProducts\";\r\nimport { trimProductsArray, getProperties } from \"../../sharedUtils/postFunctions\";\r\n\r\nimport Modal from \"components/Modal\";\r\nimport PostPageProduct from \"components/PostPageProduct\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\n\r\nimport { closeAllModals } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { getPostShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\nclass LockerPageEmbedBrand extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMessageDetails: false,\r\n likes: {\r\n count: 0,\r\n likedByUser: false\r\n },\r\n loggedInUser: null,\r\n isAuthorized: false,\r\n isFollowing: false,\r\n commentInput: \"\",\r\n shareCode: \"\",\r\n post: blankFeedPost,\r\n showDescriptionModal: false,\r\n selectedProduct: 0,\r\n isLoading: true,\r\n loadingComments: false,\r\n productPage: 0,\r\n submittingComment: false,\r\n shareLink: \"\",\r\n }\r\n }\r\n\r\n trimmedProducts = null;\r\n\r\n totalHeight = React.createRef();\r\n\r\n async componentDidMount() {\r\n const messageTotalHeight = () => {\r\n let totalHeight = this.totalHeight?.current?.offsetHeight;\r\n if (totalHeight > 100) {\r\n const messageObj = { shareCode: this.state.shareCode, height: totalHeight };\r\n const messageString = JSON.stringify(messageObj);\r\n\r\n window.parent.postMessage(messageString, \"*\");\r\n }\r\n }\r\n\r\n window.addEventListener('message', function (event) {\r\n messageTotalHeight();\r\n });\r\n\r\n\r\n\r\n if (this.props.setShowTopNav) {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n let shareCode = \"\";\r\n let post = null;\r\n let loggedInUser = null;\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n if (this.props.isModal !== true) {\r\n window.scrollTo(scrollOptions);\r\n this.props.closeAllModals();\r\n }\r\n\r\n // from feed\r\n if (this.props.match.params != undefined && this.props.match.params.post != undefined) {\r\n shareCode = this.props.match.params.post.shareCode;\r\n post = this.props.match.params.post;\r\n loggedInUser = this.props.match.params.loggedInUser;\r\n // from modal\r\n } else if (this.props.location.state != undefined && this.props.location.state.destinationState != undefined && this.props.location.state.destinationState.params != undefined &&\r\n this.props.location.state.destinationState.params.post != undefined) {\r\n\r\n shareCode = this.props.location.state.destinationState.params.post.shareCode;\r\n post = { ...this.props.location.state.destinationState.params.post, comments: [] };\r\n loggedInUser = this.props.location.state.destinationState.params.loggedInUser;\r\n\r\n // from direct\r\n } else {\r\n shareCode = this.props.match.params.shareCode;\r\n loggedInUser = this.props.loggedInUser;\r\n }\r\n\r\n let shareLink = await getPostShareLink(shareCode);\r\n\r\n if (loggedInUser == undefined) {\r\n let data = await this.fetchPost(shareCode, false);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n } else {\r\n this.setState({ post: data, isLoading: false, shareCode, shareLink });\r\n }\r\n } else {\r\n if (post == undefined) {\r\n let data = await this.fetchPost(shareCode, true);\r\n if (data == undefined || data == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //this.setState({ post: \"notFound\", isLoading: false, loggedInUser, shareCode, shareLink })\r\n } else {\r\n this.setState({ post: data, isLoading: false, loggedInUser, shareCode, shareLink });\r\n }\r\n } else {\r\n let trackBaseUrl = this.state.loggedInUser !== undefined ? `api/Post/TrackPostViewAuthorized` : `api/Post/TrackPostView`\r\n let trackPostViewUrl = `${trackBaseUrl}?userPostId=${post.id}&referrer=${document.referrer}`;\r\n\r\n getRequest(trackPostViewUrl);\r\n this.setState({ viewTracked: true });\r\n\r\n if (post.comments == undefined || post.comments.length == undefined) {\r\n post.comments = [];\r\n };\r\n await this.setState({ post: post, isLoading: false, loggedInUser, shareCode, shareLink });\r\n\r\n if (post.comments.length === 0) {\r\n }\r\n }\r\n if (!!(post)) {\r\n this.trimmedProducts = trimProductsArray(post.productItems?.$values).map((i) => { return i; })\r\n }\r\n }\r\n }\r\n\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props?.match?.params?.shareCode != prevProps?.match?.params?.shareCode) {\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let shareCode = this.props.match.params.shareCode;\r\n let isAuthorized = this.props.loggedInUser !== null;\r\n let post = this.props.location.state.destinationState.params.post\r\n\r\n if (post == null || post == undefined) {\r\n post = await this.fetchPost(shareCode, isAuthorized);\r\n\r\n if (post == null || post == undefined) {\r\n this.props.history.push(\"/NotFound\");\r\n return -1\r\n }\r\n }\r\n\r\n this.setState({ post, isLoading: false });\r\n }\r\n }\r\n\r\n fetchPost = async (shareCode, isAuthorized) => {\r\n let baseUrl = isAuthorized === true ? \"/api/post/getPostAuthorized\" : \"/api/post/getPost\";\r\n let url = `${baseUrl}?shareCode=${shareCode}&referrer=${document.referrer}`\r\n let data = await getRequest(url);\r\n\r\n return data;\r\n }\r\n\r\n renderProductCount = () => {\r\n const trimmedProducts = trimProductsArray(this.state.post?.productItems?.$values).map((i) => { return i; })\r\n if (this.state.post?.productItems?.$values?.length > 0 && this.state.post?.productItems?.$values[0].type === 2) {\r\n if (trimmedProducts.length === 1) {\r\n return \"1 product\"\r\n } else if (trimmedProducts.length > 1) {\r\n return trimmedProducts.length + \" products\"\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n renderProductImages = () => {\r\n return trimProductsArray(this.state.post.productItems?.$values)?.map((val, i) => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n this.toggleDescriptionModal(i)}\r\n post={this.state.post}\r\n loggedInUser={this.state.loggedInUser}\r\n parentModal={this.props.isModal === true ? { type: \"post\", shareCode: this.props.match.params?.post?.shareCode, parentState: { ...this.state.post } } : null}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    {val.manufacturer?.toLowerCase().includes(\"rcktemp\") ? val.merchant : val.manufacturer}
    \r\n
    \r\n
    \r\n
    ${val.price.toFixed(2)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n toggleDescriptionModal = (productIndex) => {\r\n let newModalState = !this.state.showDescriptionModal;\r\n this.setState({ showDescriptionModal: newModalState, selectedProduct: productIndex });\r\n }\r\n\r\n renderDescriptionModal = () => {\r\n if (this.state.showDescriptionModal === true) {\r\n return (\r\n \r\n
    \r\n \r\n

    {this.state.post.productItems?.$values[this.state.selectedProduct].comment}

    \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n redirectToPostPage = (e) => {\r\n e.preventDefault();\r\n let url = `/l/${this.state.shareCode}`;\r\n window.open(url);\r\n }\r\n\r\n render() {\r\n if (this.state.post === \"notFound\") {\r\n return

    Post not found

    \r\n }\r\n let postImages = getProperties(this.state.post?.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3 && !property?.value.includes(\"blockquote\") || property?.role === 8))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n role: property?.role,\r\n id: property?.id,\r\n width: property?.width,\r\n height: property?.height,\r\n title: property?.title,\r\n }\r\n });\r\n let title = postImages[0].title;\r\n\r\n if (this.state.isLoading === true) {\r\n return <>\r\n }\r\n\r\n //if the post isn't published, redirect to HomeFeed\r\n if ([0, 2, 6].includes(this.state.post.status) === true && this.state.post.user.id !== this.state.loggedInUser?.id && this.props.isModal !== true) {\r\n return \r\n }\r\n\r\n return (\r\n\r\n
    300 ? \"94%\" : this.totalHeight?.current?.offsetWidth > 200 ? \"88%\" : \"82%\", marginTop: \"10px\" }} ref={this.totalHeight}>\r\n {this.renderDescriptionModal()}\r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    0 ? \"feed-slider\" : \"feed-slider-noproduct\"}`} style={{ paddingBottom: this.state.post?.productItems?.$values?.length > 0 ? \"\" : \"131.7%\" }}>\r\n
    \r\n
    \r\n 0 ? \"100%\" : \"101.1%\", borderRadius: this.state.post?.productItems?.$values?.length > 0 ? \"\" : \"0 0 20px 20px\" }}\r\n />\r\n
    \r\n

    \r\n {title}\r\n

    \r\n
    \r\n {this.totalHeight?.current?.offsetWidth > 185 ?\r\n \r\n {this.renderProductCount()}\r\n \r\n : <>\r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n this.state.post?.productItems?.$values?.length > 0 ? (\r\n
    \r\n \r\n
    \r\n ) : null\r\n }\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst mapDispatch = {\r\n closeAllModals: closeAllModals,\r\n}\r\n\r\nexport default connect(null, mapDispatch)(LockerPageEmbedBrand);","import React, { useState, useEffect } from \"react\";\r\nimport Modal from \"../../components/Modal\";\r\nimport ProductDetailSection from \"../../components/ProductDetailSection\";\r\nimport ProfileInfoCard from \"../../components/ProfileInfoCard\";\r\n\r\nvar jsonref = require('jsonref');\r\n\r\nlet blankProductData = {\r\n rating: 0,\r\n ratingCount: 0,\r\n description: \"\",\r\n referalLink: {},\r\n manufacturer: \"\",\r\n name: \"\",\r\n price: 0,\r\n likes: 0,\r\n imageUrl: \"\",\r\n\r\n user: {\r\n name: \"\",\r\n username: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n bio: \"\"\r\n }\r\n}\r\n\r\nconst ProductModal = () => {\r\n const [showModal, toggleModal] = useState(false);\r\n const [productData, setProductData] = useState(blankProductData);\r\n\r\n let resetModal = () => {\r\n toggleModal(!showModal);\r\n }\r\n\r\n useEffect(() => {\r\n getData();\r\n })\r\n\r\n let getData = async () => {\r\n const response = await fetch(\"/Products/Get?userMerchantProductId=8&userId=1\");\r\n let data = await response.json();\r\n\r\n data = await jsonref.parse(data, { scope: window.location });\r\n setProductData(data);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n
    \r\n
    \r\n alert(\"clicked follow\")}\r\n messageAction={() => alert(\"clicked message\")} />\r\n\r\n
    \r\n

    {productData.user.bio.split(/['\\r\\n'|'\\n'|'\\r']/).map(function (item, key) {\r\n return (\r\n \r\n {item}\r\n
    \r\n
    \r\n )\r\n })}

    \r\n Read more\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n )\r\n}\r\n\r\nexport default ProductModal;","import React from \"react\";\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nclass MerchantPage extends React.Component {\r\n\r\n async componentDidMount() {\r\n this.props.setShowTopNav(false);\r\n const path = window.location.pathname;\r\n const index = path.lastIndexOf(\"/\") + 1;\r\n const merchantId = path.slice(index);\r\n\r\n var objUrlParams = new URLSearchParams(window.location.search);\r\n const creatorUserId = objUrlParams.get(\"userId\");\r\n\r\n const redirectUrl = getQueryStringParams(window.location.search).redirecturl;\r\n const currentDeal = getQueryStringParams(window.location.search).currentDeal;\r\n\r\n let clickerUserId = \"\";\r\n if (this.props?.loggedInUser?.id != null && this.props?.loggedInUser?.id != undefined) {\r\n clickerUserId = this.props.loggedInUser.id;\r\n }\r\n let url = merchantId == null || creatorUserId == null ? \"\" : `/api/Merchant/RedirectToMerchantWithMerchantIdAndUserId?merchantId=${merchantId}&creatorUserId=${creatorUserId}&referrer=${document.referrer}&clickerUserId=${clickerUserId}`;\r\n if (!!(redirectUrl)) {\r\n url = url + \"&redirectUrl=\" + encodeURIComponent(redirectUrl);\r\n }\r\n if (!!(currentDeal)) {\r\n url = url + \"¤tDeal=\" + currentDeal;\r\n }\r\n if (url !== \"\") {\r\n this.merchantPageRedirectGoogleAnalytics4Tracking(url);\r\n window.location.replace(url);\r\n }\r\n\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n merchantPageRedirectGoogleAnalytics4Tracking = (url) => {\r\n window.gtag('event', 'MerchantPageRedirect', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Redirect',\r\n event_label: `Merchant Page Redirect`,\r\n value: url\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n Rockporch - Merchant Redirect\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default MerchantPage;","import React from \"react\"\r\n\r\n\r\n\r\nconst FollowSuggestions = (props) => {\r\n return (\r\n
    \r\n
    Who to follow
    \r\n
      \r\n {props.children}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default FollowSuggestions;","import React from \"react\";\r\n\r\nimport BlueTickIcon from \"./icons/BlueTickIcon\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\n\r\n/**\r\n * \r\n * @param {{firstNameLastName:string,profileBio:string,userName:string,profilePictureUrl:string,followAction:function, messageAction:function, proStatusId:Number, followers:Number: following:Number, showFollowersFollowing:Function, user:object} props \r\n */\r\nconst ProfileInfoCard = (props) => {\r\n return (\r\n
    \r\n \r\n\r\n {\r\n props.profilePictureUrl ? : \r\n }\r\n\r\n \r\n {\r\n props.userName ? (

    \r\n {props.userName}\r\n

    ) : null\r\n }\r\n
    {props.profileBio}
    \r\n
    \r\n )\r\n}\r\n\r\n\r\n// ProfileInfoCard.propTypes = {\r\n// firstNameLastName: PropTypes.string,\r\n// profileBio: PropTypes.string,\r\n// userName: PropTypes.string,\r\n// profilePictureUrl: PropTypes.string,\r\n// followAction: PropTypes.func\r\n// };\r\n\r\nexport default ProfileInfoCard;\r\n","import React from \"react\"\r\nimport { connect } from \"react-redux\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport Feed from \"components/Feed/Feed\";\r\nimport FollowSuggestions from \"components/FollowSuggestions\";\r\nimport UserTileSmall from \"components/UserTileSmall\";\r\nimport ProfileInfoCardHomeView from \"components/ProfileInfoCardHomeView\";\r\nimport FeedFilterBar from \"components/FeedFilterBar\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\n\r\nimport { toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\n\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\nimport { fetchUserSuggestions, blankUserSuggestion } from \"sharedUtils/userSuggestion\";\r\nimport { postRequest, getRequest } from \"sharedUtils/httpUtils\";\r\nimport { DateTime, Interval } from \"luxon\";\r\nimport AddToHomescreenIOS from \"components/AddToHomescreenIOS\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport MerchantShareBlock from \"components/Share/MerchantShareBlock\";\r\nimport { toggleProductPageModal, toggleShareModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { getMerchantShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport Modal from \"../../components/Modal\";\r\n\r\nclass Home extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n posts: [blankFeedPost],\r\n loading: true,\r\n whoToFollow: [blankUserSuggestion],\r\n finishedFetchingSuggestions: false,\r\n showFollowSuggestions: false,\r\n isGrid: true,\r\n finishedFetching: false,\r\n isIOS: false,\r\n fetchFollowing: props.fetchFollowing,\r\n modalOpen: false,\r\n shareLink: \"\",\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.setShowTopNav(true);\r\n\r\n await this.mount();\r\n\r\n let isMobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n let isIosDevice = /iPhone|iPad|iPod/i.test(navigator.userAgent);\r\n\r\n if (isMobileDevice) {\r\n this.setState({ isIOS: isIosDevice });\r\n this.handleInstallPrompt()\r\n }\r\n }\r\n\r\n mount = async () => {\r\n let userData = await this.fetchLoggedInUser();\r\n await this.props.setLoggedInUser(userData);\r\n\r\n let suggestions = await this.fetchSuggestions(this.props.loggedInUser.id, 0, 5);\r\n let posts = await this.populateData(this.props.loggedInUser.id, 0, 24);\r\n\r\n this.setState({\r\n loading: false,\r\n posts: posts,\r\n whoToFollow: suggestions,\r\n showFollowSuggestions: suggestions?.length > 0,\r\n finishedFetching: posts.length === 0,\r\n isGrid: posts.length !== 0\r\n });\r\n }\r\n\r\n async componentDidUpdate(prevProps) {\r\n if (this.props.fetchFollowing !== prevProps.fetchFollowing) {\r\n this.setState({ fetchFollowing: this.props.fetchFollowing });\r\n\r\n let userData = await this.fetchLoggedInUser();\r\n await this.props.setLoggedInUser(userData);\r\n\r\n let suggestions = await this.fetchSuggestions(this.props.loggedInUser.id, 0, 5);\r\n this.setState({\r\n loading: false,\r\n whoToFollow: suggestions,\r\n showFollowSuggestions: suggestions?.length > 0,\r\n });\r\n\r\n if (this.props.fetchFollowing) this.props.toggleFetchFollowing();\r\n }\r\n }\r\n \r\n displayInstallPrompt = () => {\r\n if (this.state.showInstallPrompt === true && this.state.loading == false) {\r\n return \r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n fetchLoggedInUser = async () => {\r\n let url = `/api/account/getProfile?userName=${this.props.loggedInUser?.userName}`;\r\n let data = await getRequest(url);\r\n return data;\r\n }\r\n\r\n fetchSuggestions = async (userId, skip, take) => {\r\n let suggestions = await fetchUserSuggestions(userId, skip, take);\r\n if (suggestions === undefined || suggestions === null) {\r\n return []\r\n }\r\n else {\r\n return suggestions;\r\n }\r\n }\r\n\r\n fetchMoreSuggestions = async () => {\r\n let { whoToFollow } = this.state;\r\n\r\n let suggestions = await this.fetchSuggestions(this.props.loggedInUser.id, whoToFollow.filter((suggestion) => { return !suggestion.isFollowing }).length, 24);\r\n let finishedFetching;\r\n if (suggestions === undefined || suggestions?.length < 24) {\r\n finishedFetching = true;\r\n } else {\r\n finishedFetching = false;\r\n }\r\n let updated = [...whoToFollow, ...suggestions];\r\n this.setState({ whoToFollow: updated, finishedFetchingSuggestions: finishedFetching });\r\n }\r\n\r\n populateData = async (userId, skip, take) => {\r\n let url = `api/HomeFeed/Get?userId=${userId}&skip=${skip}&take=${take}`;\r\n let data = await getRequest(url);\r\n\r\n if (data === undefined) {\r\n return [];\r\n }\r\n else {\r\n return data;\r\n }\r\n }\r\n\r\n fetchMore = async () => {\r\n let userId = this.props.loggedInUser.id\r\n let url = `api/HomeFeed/Get?userId=${userId}&skip=${this.state.posts.length}&take=${24}`;\r\n let data = await getRequest(url);\r\n if (data === undefined || data === null || data?.length === 0) {\r\n this.setState({ finishedFetching: true })\r\n }\r\n else {\r\n let newData = [...this.state.posts, ...data];\r\n this.setState({ posts: newData });\r\n }\r\n }\r\n\r\n followSuggestion = async (userId, location) => {\r\n\r\n let users = [...this.state.whoToFollow];\r\n let action = users[location].user.isFollowing === false ? \"follow\" : \"unfollow\";\r\n users[location].user.isFollowing = !this.state.whoToFollow[location].user.isFollowing;\r\n users[location].isFollowing = !this.state.whoToFollow[location].isFollowing;\r\n this.setState({ whoToFollow: users });\r\n\r\n let url = action === \"follow\" ? `api/Account/Follow?id=${userId}` : `api/Account/Unfollow?id=${userId}`;\r\n\r\n await getRequest(url);\r\n\r\n let userData = await this.fetchLoggedInUser();\r\n await this.props.setLoggedInUser(userData);\r\n }\r\n\r\n handleCloseInstallPrompt = () => {\r\n //const installPromptKey = \"rockporch.InstallPrompt\";\r\n //const installPrompt = JSON.parse(localStorage.getItem(installPromptKey));\r\n\r\n //let updatedPrompt = { time: DateTime.now(), optOut: true };\r\n //localStorage.setItem(\"rockporch.InstallPrompt\", JSON.stringify(updatedPrompt));\r\n\r\n this.setState({ showInstallPrompt: false, deferredPrompt: null });\r\n }\r\n\r\n handleInstallPrompt = () => {\r\n const today = DateTime.now();\r\n const installPromptKey = \"rockporch.InstallPrompt\";\r\n const installPrompt = JSON.parse(localStorage.getItem(installPromptKey));\r\n\r\n const lastPromptTime = installPrompt?.time || null;\r\n const optOut = installPrompt?.optOut !== undefined ? installPrompt.optOut : false;\r\n const promptCount = installPrompt?.count || null;\r\n\r\n if (promptCount && promptCount == 4) {\r\n let updatedPrompt = { time: today, optOut: true, count: 5 };\r\n localStorage.setItem(installPromptKey, JSON.stringify(updatedPrompt));\r\n this.setState({ showInstallPrompt: false });\r\n return;\r\n }\r\n\r\n if (optOut === false) {\r\n\r\n if (lastPromptTime) {\r\n\r\n const duration = Interval.fromDateTimes(DateTime.fromISO(lastPromptTime), today);\r\n const countForward = promptCount + 1;\r\n\r\n const intervalDays = duration.length(\"days\");\r\n\r\n let correctInterval = countForward == 2 && intervalDays >= 5 || countForward === 3 && intervalDays >= 10 || countForward === 4 && intervalDays >= 15\r\n\r\n const shouldPrompt = (lastPromptTime != null && correctInterval);\r\n\r\n if (shouldPrompt && \"localStorage\" in window) {\r\n let updatedPrompt = { time: today, optOut: false, count: promptCount + 1 };\r\n\r\n localStorage.setItem(installPromptKey, JSON.stringify(updatedPrompt));\r\n\r\n this.setState({ showInstallPrompt: true });\r\n }\r\n }\r\n //first time showing prompt \r\n else {\r\n if (this.props.loggedInUser.imageUrl != null) {\r\n let updatedPrompt = { time: today, optOut: false, count: 1 };\r\n localStorage.setItem(installPromptKey, JSON.stringify(updatedPrompt));\r\n\r\n this.setState({ showInstallPrompt: true });\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n renderFollowSuggestions = () => {\r\n if (this.state.loading === true) {\r\n return \r\n }\r\n else if (this.state.whoToFollow && this.state.whoToFollow?.length > 0) {\r\n\r\n return this.state.whoToFollow.map((suggestion, i) => {\r\n return (\r\n
  • \r\n \r\n \r\n
  • \r\n )\r\n })\r\n }\r\n }\r\n\r\n\r\n toggleColumns = () => {\r\n let newColumnState = !this.state.isGrid;\r\n this.setState({ isGrid: newColumnState });\r\n }\r\n\r\n updatePosts = (newPosts) => {\r\n this.setState({ posts: newPosts })\r\n }\r\n\r\n /**\r\n * \r\n * @param {string} followersFollowing\r\n */\r\n showFollowersFollowing = (followersFollowing) => {\r\n this.props.toggleFollowersFollowingModal(this.props.loggedInUser.id, followersFollowing, null);\r\n }\r\n\r\n\r\n\r\n toggleProductShareModal = async (urlFragment) => {\r\n let showModal = !this.state.modalOpen;\r\n let shareLink = await getMerchantShareLink(urlFragment);\r\n\r\n if (showModal) {\r\n this.setState({ modalOpen: showModal, shareLink });\r\n }\r\n else {\r\n this.setState({ modalOpen: showModal, shareLink: \"\" });\r\n }\r\n }\r\n\r\n\r\n displayShareModal = () => {\r\n let shareProps = {\r\n shareCode: this.state.shareLink,\r\n title: \"Merchant share\",\r\n customStyle: { maxWidth: \"100%\", backgroundColor: \"white\" },\r\n shareBlockStyle: { border: \"none\", backgroundColor: \"transparent\" },\r\n loggedInUser: this.props.loggedInUser,\r\n type: \"merchant\",\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n let { deviceSize } = this.props;\r\n let { isGrid, showFollowSuggestions } = this.state;\r\n if (this.state.loading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n RockPorch - Home Feed\r\n \r\n \r\n )\r\n}\r\n return (\r\n
    \r\n \r\n RockPorch - Home Feed\r\n \r\n {this.displayShareModal()}\r\n\r\n {isGrid === true ? : null}\r\n
    \r\n
    \r\n {\r\n isGrid === true ? null : (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n\r\n\r\n
    \r\n {isGrid === false ?\r\n
    \r\n
    \r\n \r\n
    \r\n
    : null\r\n }\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {this.displayInstallPrompt()}\r\n
    \r\n\r\n {\r\n isGrid === true ? null : (\r\n
    \r\n
    \r\n {showFollowSuggestions ?\r\n \r\n {this.renderFollowSuggestions()}\r\n\r\n {\r\n this.state.finishedFetchingSuggestions === false ? (\r\n \r\n See more\r\n \r\n ) : \r\n }\r\n\r\n \r\n : <>}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer, fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing, toggleShareModal })(Home);","import React from \"react\";\r\nimport FeedThreeColumn from \"components/Feed/FeedThreeColumn\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\nimport FeedSingleColumn from \"components/Feed/FeedSingleColumn\";\r\nimport FeedPost from \"components/Feed/FeedPost\";\r\nimport FeedFilterBar from \"components/FeedFilterBar\";\r\nimport { trimProductsArray } from \"../../sharedUtils/postFunctions\";\r\nimport blankFeedPost from \"../../sharedUtils/blankFeedPost\";\r\n//import SearchFilterBar from \"components/SearchFilterBar\";\r\nimport { getProperties } from \"../../sharedUtils/postFunctions\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport Feed from \"components/Feed/Feed\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { Helmet } from 'react-helmet';\r\nimport Modal from \"../../components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport MerchantShareBlock from \"components/Share/MerchantShareBlock\";\r\nimport { toggleProductPageModal, toggleShareModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getMerchantShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\n\r\n/**\r\n * @description The Explore view. Would contain the state and methods for handling the explore feed\r\n */\r\nclass Explore extends React.Component {\r\n //constructor(props)\r\n state = {\r\n isGrid: true,\r\n posts: [],\r\n isSearching: false,\r\n lockerSearchResults: [],\r\n productSearchResults: [],\r\n postSearchResults: [],\r\n peopleSearchResults: [],\r\n loggedInUser: {},\r\n finishedFetching: false,\r\n isLoading: true,\r\n modalOpen: false,\r\n shareLink: \"\",\r\n }\r\n\r\n componentDidMount() {\r\n //this.props.setShowTopNav(true);\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n this.setState({ loggedInUser: this.props.loggedInUser }, () => {\r\n this.populateData();\r\n })\r\n if ([\"sm\", \"md\"].includes(this.props.deviceSize)) {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n }\r\n\r\n async populateData() {\r\n const url = `${this.state.loggedInUser == null ? 'api/Post/GetExploreFeedPostsGuest' : 'api/Post/GetExploreFeedPosts'}?userId=${this.state.loggedInUser?.id}&skip=0&take=24`\r\n let posts = await getRequest(url);\r\n if (posts == null) {\r\n posts = await getRequest('api/Post/GetExploreFeedPostsGuest?skip=0&take=24');\r\n\r\n this.props.setLoggedInUser(undefined);\r\n }\r\n\r\n this.setState({ posts, isLoading: false });\r\n }\r\n\r\n toggleProductShareModal = async (urlFragment) => {\r\n let showModal = !this.state.modalOpen;\r\n let shareLink = await getMerchantShareLink(urlFragment);\r\n\r\n if (showModal) {\r\n this.setState({ modalOpen: showModal, shareLink });\r\n }\r\n else {\r\n this.setState({ modalOpen: showModal, shareLink: \"\" });\r\n }\r\n }\r\n\r\n\r\n displayShareModal = () => {\r\n let shareProps = {\r\n shareCode: this.state.shareLink,\r\n title: \"Merchant share\",\r\n customStyle: { maxWidth: \"100%\", backgroundColor: \"white\" },\r\n shareBlockStyle: { border: \"none\", backgroundColor: \"transparent\" },\r\n loggedInUser: this.props.loggedInUser,\r\n type: \"merchant\",\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n fetchMore = async () => {\r\n // todo: replace with endpoint to get posts based on user's interests or sectors\r\n let userId = this.state.loggedInUser?.id;\r\n\r\n if (this.state.posts.length > 0) {\r\n const url = `${this.state.loggedInUser == null ? 'api/Post/GetExploreFeedPostsGuest' : 'api/Post/GetExploreFeedPosts'}?userId=${userId}&skip=${this.state.posts.length}&take=24`;\r\n const data = await getRequest(url);\r\n\r\n if (data === undefined || data === null || data?.length === 0) {\r\n this.setState({ finishedFetching: true })\r\n }\r\n else {\r\n let newData = [...this.state.posts, ...data];\r\n this.setState({ posts: newData });\r\n }\r\n }\r\n\r\n }\r\n\r\n toggleColumns = () => {\r\n let newState = !this.state.isGrid;\r\n this.setState({ isGrid: newState });\r\n }\r\n\r\n updatePosts = (newPosts) => {\r\n this.setState({ posts: newPosts });\r\n }\r\n\r\n render() {\r\n if (this.state.isLoading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n RockPorch - Explore\r\n \r\n \r\n ) \r\n }\r\n return (\r\n <>\r\n \r\n RockPorch - Explore\r\n \r\n {this.displayShareModal()}\r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n {\r\n this.state.isGrid === true ? null : (\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { interactionState: storeState.interactionReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleProductPageModal, toggleShareModal })(Explore);","import React from \"react\";\r\nimport UserTileSmall from \"components/UserTileSmall\";\r\nimport PropTypes from \"prop-types\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport ProfileInfoCardOnboarding from \"components/ProfileInfoCardOnboarding\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\n\r\nclass PeopleFeed extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n people: []\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ people: this.props.people })\r\n }\r\n\r\n followOrUnfollow = async(person, personIndex) => {\r\n let url = person.isFollowing === true ? `api/Account/Unfollow?id=${person.id}` : `api/Account/Follow?id=${person.id}`;\r\n\r\n let people = [...this.state.people];\r\n people[personIndex].isFollowing = !this.state.people[personIndex].isFollowing;\r\n\r\n this.setState({ people });\r\n\r\n await getRequest(url);\r\n\r\n }\r\n\r\n mapPeople = () => {\r\n return this.props.people.map((person, i) => {\r\n return (\r\n
    \r\n
    \r\n \r\n {this.displayFollowButton(person, i)}\r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n\r\n displayFollowButton = (person,personIndex) => {\r\n if (person.proStatusId === 1 && (this.props.loggedInUser == undefined || this.props.loggedInUser == null)) {\r\n let buttonText = person?.isFollowing === true ? \"Unfollow -\" : \"Follow +\";\r\n return (\r\n \r\n )\r\n }\r\n if (person.proStatusId === 1) {\r\n let buttonText = person?.isFollowing === true ? \"Unfollow -\" : \"Follow +\";\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n \r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n {this.mapPeople()}\r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nPeopleFeed.propTypes = {\r\n people: PropTypes.array,\r\n fetchMore: PropTypes.func,\r\n finishedFetching: PropTypes.bool,\r\n loggedInUser: PropTypes.object\r\n}\r\n\r\nexport default PeopleFeed;","import React from \"react\";\r\nimport GridIconAlternate from \"components/icons/GridIconAlternate\"\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\n\r\n/**\r\n * \r\n * @param {{ isGrid:boolean, toggleAction:Function, fetchResults:Function, hideToggleAction:boolean, selectedCase:Number,style:object}} props \r\n */\r\nconst SearchFilterBar = (props) => {\r\n let renderToggleIcon = () => {\r\n let icon = props.isGrid === true ? : \r\n if (props.hideToggleAction !== true) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n let buttonSelected = (caseNumber) => {\r\n if (caseNumber === props.selectedCase) {\r\n return \"btn-primary btn-lg\"\r\n }\r\n else {\r\n return \"\"\r\n }\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* {renderButtons()} */}\r\n \r\n \r\n \r\n
    \r\n\r\n {renderToggleIcon()}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default SearchFilterBar;","import React from \"react\";\r\nimport Feed from \"components/Feed/Feed\";\r\nimport ProductFeed from \"components/Feed/ProductFeed\";\r\nimport PeopleFeed from \"components/Feed/PeopleFeed\";\r\nimport SearchFilterBar from \"components/SearchFilterBar\";\r\nimport NoResults from \"components/NoResults\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { Tabs } from \"@material-ui/core\";\r\nimport { getQueryStringParams, showBrandNav } from \"sharedUtils/navUtils\"\r\nimport { Helmet } from 'react-helmet';\r\n\r\n\r\nclass Search extends React.Component {\r\n state = {\r\n isGrid: true,\r\n lockerSearchResults: [],\r\n productSearchResults: [],\r\n postSearchResults: [],\r\n peopleSearchResults: [],\r\n searchString: \"\",\r\n /*1:Locker, 2:Products, 3:Posts, 4:People*/\r\n resultCase: 1,\r\n searching: true,\r\n loggedInUser: {},\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false,\r\n finishedFetchingProducts: false,\r\n query: \"\",\r\n }\r\n resultCases = {\r\n 1: { name: \"lockers\", urlPath: \"searchlockers\", stateName:\"lockerSearchResults\" },\r\n 2: { name: \"posts\", urlPath: \"searchposts\", stateName: \"postSearchResults\" },\r\n 3: { name: \"people\", urlPath: \"searchusers\", stateName: \"peopleSearchResults\" },\r\n viewOrder : [1,2,3]\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n const params = getQueryStringParams(window.location.search);\r\n const tab = params.tab;\r\n if (!!(tab)) {\r\n let resultCase;\r\n switch (tab.toLowerCase()) {\r\n case 'locker':\r\n resultCase = 1;\r\n break;\r\n case 'posts':\r\n resultCase = 2;\r\n break;\r\n case 'people':\r\n resultCase = 3;\r\n break;\r\n default:\r\n resultCase = this.state.resultCase;\r\n }\r\n this.setState({ resultCase, query: decodeURIComponent(window.location.search) });\r\n }\r\n\r\n if (this.props.loggedInUser !== null) {\r\n this.setState({ loggedInUser: this.props.loggedInUser });\r\n }\r\n else {\r\n let user = await getAuthorizedUserData();\r\n this.setState({ loggedInUser: user });\r\n }\r\n this.setState({ searchString: this.props.match.params.searchString }, () => {\r\n this.fetchResults(this.state.resultCase,true)\r\n })\r\n this.props.populateSearch(decodeURIComponent(this.props.match.params.searchString));\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.match.params.searchString !== this.state.searchString || this.props.location.search.toLowerCase() !== this.state.query) {\r\n const params = getQueryStringParams(window.location.search);\r\n const tab = params.tab;\r\n let resultCase = this.state.resultCase;\r\n\r\n if (!!(tab)) {\r\n switch (tab.toLowerCase()) {\r\n case 'locker':\r\n resultCase = 1;\r\n break;\r\n case 'posts':\r\n resultCase = 2;\r\n break;\r\n case 'people':\r\n resultCase = 3;\r\n break;\r\n default:\r\n resultCase = this.state.resultCase;\r\n }\r\n this.setState({ query: decodeURIComponent(this.props.location.search.toLowerCase()) , resultCase });\r\n }\r\n this.setState({ searchString: this.props.match.params.searchString }, () => this.fetchResults(resultCase))\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n window.scrollTo(scrollOptions);\r\n }\r\n }\r\n\r\n fetchResults = async (caseNumber, skipIfEmpty) => {\r\n this.setState({ searching: true });\r\n //let paths = [\"searchlockers\", \"searchproducts\", \"searchposts\", \"searchusers\"];\r\n let url = `/search/${this.resultCases[caseNumber].urlPath}?userId=${this.state.loggedInUser?.id}&search=${this.state.searchString}&skip=0&take=24`;\r\n //this.setState({ resultCase: caseNumber });\r\n let results = await getRequest(url);\r\n\r\n let updateCaseNumber = caseNumber;\r\n let completedLoop = false;\r\n\r\n if (skipIfEmpty && (results == null || results.length == 0 )) {\r\n \r\n while (completedLoop == false && (results == null || results.length == 0 )) {\r\n\r\n let nextCase = this.jumpToNextCase(updateCaseNumber);\r\n if (nextCase == caseNumber) {\r\n completedLoop = true;\r\n break;\r\n }\r\n \r\n let nextUrl = `/search/${this.resultCases[nextCase].urlPath}?userId=${this.state.loggedInUser?.id}&search=${this.state.searchString}&skip=0&take=24`;\r\n results = await getRequest(nextUrl);\r\n \r\n updateCaseNumber = nextCase;\r\n }\r\n \r\n }\r\n //this.setState({ resultCase: updateCaseNumber });\r\n\r\n if (results !== undefined && results !== null && results.length > 0) {\r\n this.setResults(updateCaseNumber, results);\r\n }\r\n else {\r\n this.setResults(updateCaseNumber, []);\r\n }\r\n\r\n if (results === undefined || results === null || results?.length < 24) {\r\n const resultCase = this.state.resultCase;\r\n if (resultCase === 1) {\r\n this.setState({ finishedFetchingLockers: true })\r\n }\r\n else if (resultCase === 2) {\r\n this.setState({ finishedFetchingPosts: true })\r\n }\r\n else if (resultCase === 3) {\r\n this.setState({ finishedFetchingPeople: true })\r\n }\r\n }\r\n }\r\n\r\n jumpToNextCase = (currentCase) => {\r\n let newCase = 1;\r\n\r\n let caseOrder = [...this.resultCases.viewOrder];\r\n\r\n let currentCaseIndex = caseOrder.indexOf(currentCase);\r\n\r\n if (currentCaseIndex === caseOrder.length - 1) {\r\n return caseOrder[0];\r\n }\r\n else {\r\n return caseOrder[currentCaseIndex + 1];\r\n }\r\n\r\n /*if(currentCase < 4) {\r\n newCase = currentCase + 1; \r\n }\r\n return newCase;*/\r\n \r\n }\r\n\r\n followUser = async (id) => {\r\n let url = `/api/Account/Follow?id=${id}`;\r\n let request = await getRequest(url);\r\n }\r\n\r\n fetchMore = async () => {\r\n //let paths = [\"searchlockers\", \"searchproducts\", \"searchposts\", \"searchusers\"];\r\n let { lockerSearchResults, postSearchResults, peopleSearchResults, resultCase } = this.state;\r\n\r\n let existingResults = [lockerSearchResults, postSearchResults, peopleSearchResults];\r\n\r\n let skip = existingResults[resultCase - 1].length;\r\n\r\n let url = `/search/${this.resultCases[resultCase].urlPath}?userId=${this.state.loggedInUser?.id}&search=${this.state.searchString}&skip=${skip}&take=24`;\r\n let data = await getRequest(url);\r\n\r\n if (data === undefined || data === null || data?.length < 24) {\r\n if (resultCase === 1) {\r\n this.setState({ finishedFetchingLockers: true })\r\n }\r\n else if (resultCase === 2) {\r\n this.setState({ finishedFetchingPosts: true })\r\n }\r\n else if (resultCase === 3) {\r\n this.setState({ finishedFetchingPeople: true })\r\n }\r\n }\r\n else {\r\n\r\n if (resultCase === 1) {\r\n let newData = [...lockerSearchResults, ...data];\r\n this.setState({ lockerSearchResults: newData });\r\n }\r\n else if (resultCase === 2) {\r\n let newData = [...postSearchResults, ...data];\r\n this.setState({ postSearchResults: newData });\r\n }\r\n else if (resultCase === 3) {\r\n let newData = [...peopleSearchResults, ...data];\r\n this.setState({ peopleSearchResults: newData });\r\n }\r\n }\r\n }\r\n\r\n setResults = (caseNumber, results) => {\r\n switch (caseNumber) {\r\n case 1: {\r\n this.setState({ lockerSearchResults: results, finishedFetchingLockers: results.length === 0 })\r\n break;\r\n }\r\n case 2: {\r\n this.setState({ postSearchResults: results, finishedFetchingPosts: results.length === 0 })\r\n break;\r\n }\r\n case 3: {\r\n this.setState({ peopleSearchResults: results })\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n this.setState({ resultCase: caseNumber, searching: false })\r\n }\r\n\r\n toggleLayout = () => {\r\n let newLayout = !this.state.isGrid;\r\n this.setState({ isGrid: newLayout });\r\n }\r\n\r\n\r\n updatePosts = (newPosts) => {\r\n let { resultCase } = this.state;\r\n\r\n if (resultCase === 1) {\r\n this.setState({ lockerSearchResults: newPosts });\r\n }\r\n else if (resultCase === 3) {\r\n this.setState({ postSearchResults: newPosts });\r\n }\r\n }\r\n\r\n displayPostTypeResults = () => {\r\n let postsArray = this.state.resultCase === 1 ? this.state.lockerSearchResults : this.state.postSearchResults;\r\n let finishedFetching = this.state.resultCase === 1 ? this.state.finishedFetchingLockers : this.state.finishedFetchingPosts;\r\n if (postsArray.length === 0) {\r\n return \r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n\r\n }\r\n\r\n displayPeopleResults = () => {\r\n if (this.state.peopleSearchResults.length === 0) {\r\n return \r\n }\r\n else {\r\n return \r\n /*return this.state.peopleSearchResults.map((person, i) => {\r\n return ( \r\n
    \r\n \r\n
    \r\n )\r\n })*/\r\n }\r\n\r\n }\r\n\r\n displayResults = () => {\r\n if (this.state.searching === true) {\r\n return \r\n }\r\n switch (this.state.resultCase) {\r\n case 3: {\r\n return this.displayPeopleResults();\r\n }\r\n default: {\r\n return this.displayPostTypeResults();\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let filterStyle = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\" ? { position: \"sticky\" } : { position: \"sticky\", top: \"50px\" };\r\n let containerAppendClass = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\" ? \"mt-4\" : \"\";\r\n return (\r\n\r\n
    \r\n \r\n RockPorch - Search: {!!(this.props.match.params.searchString) ? this.props.match.params.searchString : \"\"}\r\n \r\n {\r\n this.props.brandNav ?\r\n <>\r\n :\r\n\r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n {this.displayResults()}\r\n
    \r\n {/*
    */}\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n )\r\n }\r\n}\r\n\r\n\r\nexport default Search;","import { Link } from \"react-router-dom\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport ImageWrapper from \"../../components/ImageWrapper\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport ThreeDotsHorizontalIcon from \"components/icons/ThreeDotsHorizontalIcon\";\r\nimport ShareBar from \"components/Share/ShareBar\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleShareModal, toggleProductPageModal } from \"../../stateManagement/reducers/modalReducer\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport UserTileGeneral from \"../../components/UserTileGeneral\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport PlusIcon from \"../../components/icons/PlusIcon\";\r\nimport Tick from \"../../components/icons/Tick\";\r\nimport BookmarkIcon from \"../../components/icons/BookmarkIcon\";\r\nimport ShareIosIcon from \"../../components/icons/ShareIosIcon\";\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\nimport SaleIcon from \"../../components/icons/SaleIcon\";\r\n\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\n\r\n\r\nimport Modal from \"components/Modal\";\r\nimport ProductReviewUsersList from \"components/ProductReviewUsers/ProductReviewUsersList\";\r\n\r\n/**\r\n * \r\n * @param {{product:object, redirectUrl:string, likeProduct:Function, saveProduct:Function,likedByUser:boolean,savedByUser:boolean,likeCount:Number, addToInventory:Function}} props\r\n */\r\nconst BrowseProductPost = (props) => {\r\n const { userMerchantProductId, shareCode, imageUrl, name, description, price, likes, rating, ratingCount, user } = props.product;\r\n const { likeCount, likedByUser, savedByUser } = props;\r\n const [showFullContent, setShowFullContent] = useState(false);\r\n const [shareLink, setShareLink] = useState(\"\");\r\n const coupon = shareCode;\r\n\r\n const collapsedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const notOverflowedContentStyle = { textAlign: \"justify\", marginTop: \"0em\", marginBottom: \"0.5em\", maxHeight: \"3em\", textOverflow: \"ellipsis\", overflow: \"hidden\" };\r\n const expandedContentStyle = { textAlign: \"justify\", marginTop: \"0em\" };\r\n\r\n const [contentOverflowed, setContentOverflowed] = useState(false);\r\n const [contentStyle, setContentStyle] = useState(notOverflowedContentStyle);\r\n const [collapsed, setCollapsed] = useState(true);\r\n\r\n const [showAddedToInventoryPrompt, setAddedPrompt] = useState(false);\r\n\r\n const [showUserReviewList, setShowReviewList] = useState(false);\r\n const [ratingsUserMerchantProductId, setRatingUserMerchantProduct] = useState(0);\r\n\r\n const contentRef = React.createRef();\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n async function getShareLink() {\r\n let shareLink = await getProductShareLink(props.product?.shareCode, true);\r\n setShareLink(shareLink);\r\n };\r\n getShareLink();\r\n\r\n let contentOverflowed = contentRef?.current?.offsetHeight < contentRef?.current?.scrollHeight || contentRef?.current?.offsetWidth < contentRef?.current?.scrollWidth;\r\n if (contentOverflowed) {\r\n setContentOverflowed(contentOverflowed);\r\n setContentStyle(collapsedContentStyle);\r\n }\r\n }, []);\r\n\r\n function cropText(text) {\r\n if (text !== undefined) {\r\n if (!contentOverflowed) {\r\n return
    \r\n {text}\r\n
    \r\n } else {\r\n if (collapsed) {\r\n return (<>\r\n
    \r\n {text}\r\n
    \r\n\r\n
    \r\n { e.preventDefault(); setContentStyle(expandedContentStyle); setCollapsed(false) }}>\r\n see more\r\n \r\n
    \r\n );\r\n } else {\r\n return (<>\r\n
    \r\n\r\n {text}\r\n
    \r\n
    \r\n { e.preventDefault(); setContentStyle(collapsedContentStyle); setCollapsed(true) }}>\r\n see less\r\n \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n\r\n let customStyle = { textAlign: \"justify\", marginTop: \"1em\" }\r\n let buttonStyle = { backgroundColor: \"transparent\", fontSize: \"xx-small\", border: \"0px solid transparent\" }\r\n if (text?.length < 240) {\r\n return

    {text}

    \r\n }\r\n else if (text !== undefined && showFullContent === true) {\r\n return (\r\n

    \r\n {text}\r\n \r\n

    \r\n )\r\n }\r\n else if (text !== undefined && showFullContent === false) {\r\n return (\r\n

    \r\n {text.slice(0, 240)}\r\n \r\n

    \r\n )\r\n }\r\n }\r\n\r\n let renderBookmarkOverlay = () => {\r\n return ( {\r\n if (props.loggedInUser) {\r\n e.preventDefault()\r\n props.savePost(shareCode);\r\n } else {\r\n props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\", left: !!(props.product.creatorCount) && props.product.creatorCount > 99 ? \"72px\" : \"\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderShareOverlay = () => {\r\n return ( {\r\n props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\", left: !!(props.product.creatorCount) && props.product.creatorCount > 99 ? \"104px\" : \"\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderInfoOverlay = () => {\r\n return ( {\r\n props.toggleProductPageModal(props.product, props.loggedInUser, false, () => null, { type: null, shareCode: null, parentState: null }, true)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n let renderAddProductOverlay = () => {\r\n if (props.loggedInUser != null && (props.loggedInUser.proStatusId === 1) && !(props.product.approvedCreatorsOnly)) {\r\n if (props.inUserInventory !== true && showAddedToInventoryPrompt === false) {\r\n return (\r\n 99 ? \"136px\" : \"\" }}\r\n onClick={e => {\r\n e.preventDefault();\r\n setAddedPrompt(true);\r\n\r\n props.addToInventory(props.product.merchantProductId);\r\n }}>\r\n \r\n \r\n )\r\n } else if (showAddedToInventoryPrompt === true || props.inUserInventory === true) {\r\n return (\r\n 99 ? \"136px\" : \"\" }}\r\n onClick={e =>\r\n e.preventDefault()} >\r\n \r\n \r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n const renderThumbsUpOverlay = (product) => {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n return props.toggleCreatorsModal(productId)} style={{ cursor: \"pointer\", transform: \"translate(0, -50%)\", left: 0 }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n }\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n\r\n function displayAddProduct() {\r\n if (props.loggedInUser != null && (props.loggedInUser.proStatusId === 1)) {\r\n if (props.inUserInventory !== true && showAddedToInventoryPrompt === false) {\r\n return (\r\n {\r\n e.preventDefault();\r\n setAddedPrompt(true);\r\n\r\n //setTimeout(() => setAddedPrompt(false),2500)\r\n\r\n props.addToInventory(props.product.merchantProductId);\r\n\r\n\r\n }}>\r\n \r\n Add to Inventory\r\n \r\n )\r\n }\r\n else if (showAddedToInventoryPrompt === true || props.inUserInventory === true) {\r\n return (\r\n e.preventDefault()} className=\"d-inline-flex align-items-center\" style={{ pointerEvents: \"none\" }}>\r\n \r\n In Inventory\r\n \r\n\r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n const toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n const renderRatingsModal = ratingsUserMerchantProductId => {\r\n if (props.loggedInUser) {\r\n setRatingUserMerchantProduct(ratingsUserMerchantProductId);\r\n setShowReviewList(true);\r\n }\r\n else {\r\n props.toggleSignUpModal();\r\n }\r\n }\r\n\r\n const renderProductDetails = () => {\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={() => {\r\n if (props.product?.ratingCount > 0) {\r\n renderRatingsModal(props.product.userMerchantProductId)\r\n }\r\n }}\r\n />\r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n renderRatingsModal(props.product.userMerchantProductId);\r\n }}>\r\n {props.product?.ratingCount > 0 ? `(${props.product?.ratingCount})` : null}\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    {props.product.manufacturer?.toLowerCase().includes(\"rcktemp\") ? props.product.merchant : props.product.manufacturer}{props.product.sale ? : \"\" }
    \r\n
    \r\n {/*
    */}\r\n {/*
    {props.product.name.toUpperCase()}
    */}\r\n {/*
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {toTitleCase(props.product.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {props.product.sale && !!(props.product.salePrice) ? \"$\" + props.product.salePrice.toFixed(2) : <>}
    ${props.product.sale && !!(props.product.salePrice) && !!(props.product.originalPrice) ? props.product.originalPrice.toFixed(2) : props.product.price.toFixed(2)}
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n const displayUserReviewList = () => {\r\n return (\r\n setShowReviewList(!showUserReviewList)}\r\n >\r\n \r\n\r\n \r\n )\r\n }\r\n\r\n\r\n const url = \"/Product/ProductPage/\" + props.product.shareCode + \"?r=1&b=1\";\r\n\r\n return (\r\n
    \r\n {displayUserReviewList()}\r\n {/*
    */}\r\n {/* */}\r\n {/*
    */}\r\n\r\n
    \r\n {renderThumbsUpOverlay(props.product)}\r\n {renderBookmarkOverlay()}\r\n {renderShareOverlay()}\r\n {renderAddProductOverlay()}\r\n {renderInfoOverlay()}\r\n {\r\n e.preventDefault();\r\n props.toggleProductPageModal(props.product, props.loggedInUser, false, () => null, { type: null, shareCode: null, parentState: null }, true)\r\n }}> \r\n \r\n {renderProductDetails()}\r\n
    \r\n\r\n
    \r\n\r\n {\r\n description !== undefined ? (\r\n
    \r\n {cropText(description)}\r\n
    \r\n ) : null\r\n }\r\n\r\n
    \r\n\r\n
    \r\n\r\n )\r\n\r\n}\r\n\r\n\r\n\r\nexport default connect(null, { toggleShareModal, toggleProductPageModal })(BrowseProductPost);","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport CommentIcon from \"../../components/icons/CommentIcon\";\r\nimport SaleIcon from \"../../components/icons/SaleIcon\";\r\n\r\nimport ImageWrapper from \"../../components/ImageWrapper\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleProductPageModal } from \"../../stateManagement/reducers/modalReducer\";\r\nimport CommentIconPlusSign from \"../../components//icons/CommentIconPlusSign\";\r\n/**\r\n * \r\n * @param {{\r\n * product:{coupon:string, id:Number,product:{imageUrl:string, name:string}}\r\n * productKey:Number,\r\n * post:object\r\n * showDescription:Function,\r\n * comment:string,\r\n * isEditing:boolean,\r\n * parentModal:{type:string,shareCode:string,parentState:object}\r\n * }} props\r\n */\r\nconst BrowsePostPageProduct = (props) => {\r\n function displayIcon() {\r\n if (props.isEditing === true) {\r\n return (\r\n {\r\n e.preventDefault()\r\n props.showDescription(props.productKey)\r\n }}>\r\n {props.deviceSize === \"sm\" ? : }\r\n \r\n )\r\n }\r\n else if (props.post?.type === 2 && props.comment?.length > 0) {\r\n return (\r\n {\r\n e.preventDefault()\r\n props.showDescription(props.productKey)\r\n }}>\r\n {props.deviceSize === \"sm\" ? : }\r\n \r\n )\r\n }\r\n }\r\n\r\n const renderSaleOverlay = (sale) => {\r\n if (sale && [\"sm\", \"md\"].includes(props.deviceSize)) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n const url = \"/Product/ProductPage/\" + props.product.shareCode + \"?r=1&b=1\";\r\n\r\n return (\r\n <>\r\n \r\n\r\n {\r\n e.preventDefault();\r\n props.toggleProductPageModal(props.product, props.loggedInUser, false, () => null, { type: null, shareCode: null, parentState: null }, true)\r\n }}>\r\n \r\n \r\n\r\n {displayIcon()}\r\n\r\n \r\n )\r\n}\r\n\r\nexport default connect(null, { toggleProductPageModal })(BrowsePostPageProduct);","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport FeedPost from \"components/Feed/FeedPost\";\r\nimport ProductPost from \"./BrowseProductPost\";\r\nimport PostPageProduct from \"./BrowsePostPageProduct\";\r\nimport FeedThreeColumn from \"components/Feed/FeedThreeColumn\";\r\nimport FeedSingleColumn from \"components/Feed/FeedSingleColumn\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport InformationIcon from \"../../components/icons/InformationIcon\";\r\nimport { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport ShareIosIcon from \"../../components/icons/ShareIosIcon\";\r\nimport { getProductShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport BookmarkIcon from \"../../components/icons/BookmarkIcon\";\r\nimport PlusIcon from \"../../components/icons/PlusIcon\";\r\nimport Tick from \"../../components/icons/Tick\";\r\nimport ThumbsUpIcon from \"../../components/icons/ThumbsUpGeneric\";\r\nimport SaleIcon from \"../../components/icons/SaleIcon\";\r\n\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\n\r\nimport Modal from \"components/Modal\";\r\nimport ProductReviewUsersList from \"components/ProductReviewUsers/ProductReviewUsersList\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{\r\n * products:[\r\n * {\r\n * description:string, \r\n * imageUrl:string, \r\n * likedByUser:boolean, \r\n * likes:Number, \r\n * merchantProductId:Number,\r\n * name:string,\r\n * price:Number,\r\n * rating:Number,\r\n * ratingCount:Number,\r\n * savedByUser:boolean,\r\n * shareCode:string,\r\n * url:string,\r\n * userDescription:string,\r\n * userMerchantProductId: Number\r\n * }\r\n * ], \r\n * isGrid:boolean,\r\n * finishedFetching:Function,\r\n * fetchMore:Function\r\n * }} props\r\n */\r\nclass BrowseProductFeed extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n products: [],\r\n showUserReviewList: false,\r\n ratingsUserMerchantProductId: 0,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ products: this.props.products });\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (this.props.products != undefined && this.props.products != null && this.props.products !== prevProps.products) {\r\n this.setState({ products: [...this.props.products] })\r\n }\r\n }\r\n\r\n addProductToInventory = async (merchantProductId) => {\r\n var addModel = { MerchantProductId: merchantProductId };\r\n let products = [...this.state.products];\r\n let loc = products.findIndex(prod => prod.merchantProductId === merchantProductId);\r\n\r\n products[loc].inUserInventory = !products[loc].inUserInventory;\r\n\r\n this.setState({ products });\r\n\r\n var url = \"/Products/AddProduct\";\r\n await postRequest(url, addModel);\r\n }\r\n\r\n likeProduct = async (shareCode) => {\r\n let productsCopy = [...this.state.products];\r\n let i = productsCopy.findIndex(prod => prod.shareCode === shareCode);\r\n if (i > -1) {\r\n let num = productsCopy[i].likedByUser === true ? -1 : 1;\r\n let coupon = shareCode.split(\"/\")[4];\r\n\r\n productsCopy[i].likes = productsCopy[i].likes + num;\r\n productsCopy[i].likedByUser = !productsCopy[i].likedByUser;\r\n this.setState({ products: productsCopy });\r\n await postRequest(`/products/like?shareCode=${shareCode}`);\r\n }\r\n\r\n }\r\n\r\n saveProduct = async (shareCode) => {\r\n let productsCopy = [...this.state.products];\r\n let i = productsCopy.findIndex(prod => prod.shareCode === shareCode);\r\n if (i > -1) {\r\n let saved = !productsCopy[i].savedByUser;\r\n let path = productsCopy[i].savedByUser === true ? \"Unsave\" : \"Save\";\r\n\r\n productsCopy[i].savedByUser = saved;\r\n\r\n this.setState({ products: productsCopy });\r\n await postRequest(`/Products/${path}?id=${productsCopy[i].userMerchantProductId}`);\r\n }\r\n\r\n }\r\n\r\n setProduct = (product) => {\r\n let products = [...this.state.products];\r\n let i = products.findIndex((p) => { return p.id === product.id });\r\n products[i] = product;\r\n\r\n this.setState({ products });\r\n }\r\n\r\n renderBookmarkOverlay = (shareCode, savedByUser) => {\r\n return ( {\r\n if (this.props.loggedInUser) {\r\n e.preventDefault()\r\n await this.saveProduct(shareCode);\r\n } else {\r\n this.props.toggleSignUpModal();\r\n }\r\n\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderShareOverlay = (shareLink) => {\r\n return ( {\r\n this.props.toggleShareModal(shareLink)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n );\r\n }\r\n\r\n renderAddProductOverlay = (product) => {\r\n if (this.props.loggedInUser != null && (this.props.loggedInUser.proStatusId === 1) && !(product.approvedCreatorsOnly)) {\r\n if (product.inUserInventory !== true) {\r\n return (\r\n {\r\n e.preventDefault();\r\n this.addProductToInventory(product.merchantProductId);\r\n }}\r\n style={{ left: !!(product.creatorCount) && product.creatorCount > 99 ? \"67px\" : product.creatorCount > 9 ? \"63px\" : \"\" }}\r\n >\r\n \r\n \r\n )\r\n } else if (product.inUserInventory === true) {\r\n return (\r\n \r\n e.preventDefault()} style={{ left: !!(product.creatorCount) && product.creatorCount > 99 ? \"67px\" : product.creatorCount > 9 ? \"63px\" : \"\" }} >\r\n \r\n \r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n renderInfoOverlay = (product) => {\r\n return {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null, { type: null, shareCode: null, parentState: null }, true)\r\n }} style={{ cursor: \"pointer\" }}>\r\n \r\n \r\n }\r\n\r\n renderThumbsUpOverlay = (product) => {\r\n const productId = !!(product.productId) ? product.productId : product.id;\r\n return this.toggleCreatorsModal(productId)} style={{ cursor: \"pointer\", transform: \"translate(0, -50%)\", left: 0 }}>\r\n \r\n {!!(product.creatorCount) ? product.creatorCount : \"\"}\r\n \r\n }\r\n\r\n renderSaleOverlay = (sale) => {\r\n if (sale) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n toggleCreatorsModal = (productId) => {\r\n const followersFollowing = \"creators\";\r\n this.props.toggleFollowersFollowingModal(!!(this.props.loggedInUser) ? this.props.loggedInUser.id : -1, followersFollowing, productId);\r\n }\r\n\r\n renderRatingsModal = ratingsUserMerchantProductId => {\r\n if (this.props.loggedInUser) {\r\n this.setState({ ratingsUserMerchantProductId, showUserReviewList: true });\r\n }\r\n else {\r\n this.props.toggleSignUpModal();\r\n }\r\n }\r\n\r\n toTitleCase = (string) => {\r\n return string.toLowerCase().replace(/(?:^|\\s|-)\\w/g, function (match) {\r\n return match.toUpperCase();\r\n });\r\n }\r\n\r\n mapProducts = () => {\r\n let sizes = [\"sm\", \"md\"];\r\n let deviceSize = sizes.includes(this.props.deviceSize);\r\n let { products } = this.state;\r\n let { isGrid } = this.props;\r\n return products.map((product, i) => {\r\n if (isGrid === true) {\r\n return (\r\n
    \r\n
    \r\n {this.renderInfoOverlay(product)}\r\n {this.renderThumbsUpOverlay(product)}\r\n {this.renderAddProductOverlay(product)}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n if (index <= value) {\r\n return ();\r\n } else {\r\n return ();\r\n }\r\n }}\r\n renderStarIconHalf={(index, value) => {\r\n return ();\r\n }}\r\n onStarClick={() => {\r\n if (product.ratingCount > 0) {\r\n this.renderRatingsModal(product.userMerchantProductId)\r\n }\r\n }} />\r\n
    \r\n \r\n {\r\n e.preventDefault();\r\n this.renderRatingsModal(product.userMerchantProductId);\r\n }}>\r\n {product.ratingCount > 0 ? `(${product.ratingCount})` : null}\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    {product.manufacturer?.toLowerCase().includes(\"rcktemp\") ? product.merchant : product.manufacturer}{product.sale && ![\"sm\", \"md\"].includes(this.props.deviceSize) ? : \"\"}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.toTitleCase(product.name)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {product.sale && !!(product.salePrice) ? \"$\" + product.salePrice.toFixed(2) : <>}
    ${product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice.toFixed(2) : product.price.toFixed(2)}
    \r\n {\r\n [\"sm\", \"md\"].includes(this.props.deviceSize) ?\r\n this.renderSaleOverlay(product.sale)\r\n : <>\r\n }\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n\r\n })\r\n }\r\n\r\n displayUserReviewList = () => {\r\n return (\r\n this.setState({ showUserReviewList: !this.state.showUserReviewList })}\r\n >\r\n \r\n\r\n \r\n )\r\n }\r\n\r\n render() {\r\n let { isGrid } = this.props;\r\n\r\n if (isGrid === true) {\r\n return (\r\n
    \r\n {this.displayUserReviewList()}\r\n \r\n
    \r\n {this.mapProducts()}\r\n
    \r\n \r\n\r\n
    \r\n\r\n )\r\n }\r\n else {\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {this.mapProducts()}\r\n\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { interactionState: storeState.interactionReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleShareModal, toggleProductPageModal, toggleFollowersFollowingModal })(BrowseProductFeed);","import React, { useState, useEffect } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport GridIconAlternate from \"components/icons/GridIconAlternate\";\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\n\r\n/**\r\n * \r\n * @param {{ isGrid:boolean, toggleAction:Function, fetchResults:Function, hideToggleAction:boolean, selectedCase:Number,style:object}} props \r\n */\r\nconst BrowseBar = (props) => {\r\n const [categories, setCategories] = useState([{ id: 0, name: \"All\" }]);\r\n const [breadCrumbCategories, setBreadCrumbCategories] = useState([{ id: 0, name: \"All\" }]);\r\n\r\n const [filterOpen, setFilterOpen] = React.useState(false);\r\n\r\n const filterRef = React.useRef();\r\n\r\n\r\n useEffect(() => {\r\n setCategories([...categories, ...props.categories])\r\n }, [props.categories])\r\n\r\n useEffect(() => {\r\n if (categories.length > 1) {\r\n const selectedCategory = props.category;\r\n let categoryArray = [];\r\n let currentCategory = categories.find(category => category.id === selectedCategory);\r\n while (!!(currentCategory)) {\r\n categoryArray.unshift(currentCategory);\r\n if (!!(currentCategory.parentCategoryId)) {\r\n currentCategory = categories.find(category => category.id === currentCategory.parentCategoryId);\r\n } else {\r\n currentCategory = null;\r\n }\r\n }\r\n setBreadCrumbCategories(categoryArray);\r\n } else {\r\n setBreadCrumbCategories([]);\r\n }\r\n }, [categories, props.category])\r\n\r\n useEffect(() => {\r\n props.setFilterOpen(filterOpen);\r\n }, [filterOpen]);\r\n\r\n useEffect(() => {\r\n setFilterOpen(props.filterOpen);\r\n }, [props.filterOpen]);\r\n\r\n useEffect(() => {\r\n if (!!(filterRef.current)) { \r\n setFilterOpen(false);\r\n filterRef.current.classList.remove('show');\r\n props.resetCloseFilter();\r\n }\r\n }, [props.closeFilter])\r\n\r\n\r\n let renderToggleIcon = () => {\r\n let icon = props.isGrid === true ? : \r\n let iconStyle = {};\r\n if (props.hideToggleAction !== true) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n let renderFilterIcon = () => {\r\n if ([\"sm\", \"md\"].includes(props.deviceSize)) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n let searchIconStyle = { paddingBottom: \"3px\", border: \"none\", backgroundColor: \"transparent\", marginLeft: \"10px\" };\r\n searchIconStyle.bottom = \"6px\";\r\n searchIconStyle.left = \"-4px\";\r\n\r\n const uuidv4 = () => {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n };\r\n\r\n const handleBreadCrumbs = (level) => {\r\n let url = \"/Browse?category=\" + encodeURIComponent(breadCrumbCategories[0].name);\r\n\r\n if (level === 2) {\r\n if (props.category > 0) {\r\n\r\n url += \"&subcategory=\" + encodeURIComponent(breadCrumbCategories[1].name);\r\n }\r\n }\r\n\r\n url += \"&i=\" + uuidv4();\r\n //breadCrumbIncrement = breadCrumbIncrement + 1;\r\n\r\n return url;\r\n }\r\n\r\n const mapBreadCrumbCategories = () => {\r\n return (\r\n <>\r\n {breadCrumbCategories.map((category, index) => (\r\n \r\n {index > 0 && {' > '}}\r\n {index === breadCrumbCategories.length - 1 ? (\r\n e.preventDefault()}\r\n >\r\n {category.name.toLowerCase() === \"all\" ? \"All Products\" : !!category.menuName ? category.menuName : category.name}\r\n \r\n ) : (\r\n handleBreadCrumbs(category.level)}\r\n >\r\n {!!category.menuName ? category.menuName : category.name}\r\n \r\n )}\r\n \r\n ))}\r\n \r\n );\r\n\r\n }\r\n\r\n return (\r\n \r\n
    560 ? \"\" : filterOpen ? \"0\" : props.screenWidth < 756 && !(props.loggedInUser) ? \"171px\" : props.screenWidth < 756 ? \"171px\" : !(props.loggedInUser) && props.screenWidth < 991 ? \"147px\" : props.screenWidth < 850 ? \"147px\" : props.screenWidth < 991 ? \"147px\" : props.screenWidth > 991 && !!(props.loggedInUser) && props.loggedInUser.proStatusId !== 1 ? \"143px\" : !!(props.loggedInUser) && props.loggedInUser.proStatusId === 1 && props.screenWidth > 991 ? \"143px\" : (!(props.loggedInUser) && props.screenWidth > 991) ? \"143px\" : \"\" }}>\r\n
    \r\n
    \r\n\r\n
    \r\n {\r\n props.deviceSize !== \"sm\" ?\r\n
    \r\n {mapBreadCrumbCategories()}\r\n
    \r\n :\r\n

    \r\n {mapBreadCrumbCategories()}\r\n

    \r\n }\r\n\r\n
    \r\n {renderFilterIcon()}\r\n {renderToggleIcon()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\nexport default BrowseBar;","import React from \"react\";\r\nimport { Link, NavLink, withRouter } from 'react-router-dom';\r\nimport BrowseProductFeed from \"./BrowseProductFeed\";\r\nimport BrowseBar from \"./BrowseBar\";\r\nimport NoResults from \"components/NoResults\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { getAuthorizedUserData } from \"sharedUtils/authUtils\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\nimport { toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getQueryStringParams, showBrandNav } from \"sharedUtils/navUtils\"\r\n\r\nimport RatingIcon from \"components/icons/RatingIcon\";\r\nimport RatingIconHalf from \"components/icons/RatingIconHalf\";\r\nimport RatingIconEmpty from \"components/icons/RatingIconEmpty\";\r\nimport StarRatingComponent from 'react-star-rating-component';\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\n\r\nimport { Slider } from '@material-ui/core';\r\nimport { Helmet } from 'react-helmet';\r\n\r\n\r\nclass Browse extends React.Component {\r\n state = {\r\n isGrid: true,\r\n lockerSearchResults: [],\r\n productSearchResults: [],\r\n postSearchResults: [],\r\n peopleSearchResults: [],\r\n searchString: \"\",\r\n /*1:Locker, 2:Products, 3:Posts, 4:People*/\r\n resultCase: 2,\r\n searching: true,\r\n loggedInUser: {},\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false,\r\n finishedFetchingProducts: false,\r\n categories: [],\r\n category: 0,\r\n merchant: 0,\r\n brand: 0,\r\n max: 2000,\r\n min: 0,\r\n merchants: [],\r\n brands: [],\r\n rating: 0,\r\n onSale: false,\r\n sortBy: { value: 0, label: \"Recommended\" },\r\n sortByQuery: null,\r\n query: \"\",\r\n closeFilter: false,\r\n categoryToggle: true,\r\n bestUsesToggle: true,\r\n priceToggle: true,\r\n ratingToggle: true,\r\n sortByToggle: true,\r\n sideFilterFetch: false,\r\n filterOpen: false,\r\n isMobile: false,\r\n mobileLocationBarOpen: false,\r\n searchInputInit: false,\r\n mounted: false,\r\n skipFetch: false,\r\n bestUses: [],\r\n searchBar: false,\r\n }\r\n\r\n asideRef = React.createRef();\r\n animationFrameId = null;\r\n\r\n async componentDidMount() {\r\n this.props.fetchCategories();\r\n //this.props.setShowTopNav(true, this.props.showBrandNav(window.location.search));\r\n this.props.setShowTopNav(true, true);\r\n await this.fetchCategories();\r\n\r\n document.addEventListener(\"touchstart\", this.handleTouchStartListener, { passive: false });\r\n document.addEventListener(\"mouseup\", this.handleTouchStartListener, { passive: false });\r\n\r\n this.setState({ isMobile: window.innerWidth - document.documentElement.clientWidth < 5 });\r\n const search = getQueryStringParams(window.location.search).search;\r\n const searchPath = this.getLastSegmentFromPath();\r\n if (!!(searchPath) || !!(search)) {\r\n const searchInput = !!(searchPath) ? searchPath : search;\r\n\r\n this.props.populateSearch(searchInput);\r\n }\r\n this.initializeSearchStringAndQueryParams();\r\n\r\n window.addEventListener('resize', this.handleResize);\r\n this.handleResize();\r\n\r\n if (this.state.merchants?.length < 1) {\r\n this.getMerchants();\r\n }\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n lockerNotFound: true\r\n }\r\n\r\n window.scrollTo(scrollOptions);\r\n this.setState({ mounted: true });\r\n }\r\n\r\n scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto',\r\n }\r\n\r\n handleSearchReset = async () => {\r\n this.props.handleResetBrowseSearch(false);\r\n this.setState({ searchValue: \"\" });\r\n }\r\n\r\n resetSearch = async () => {\r\n await this.props.handleResetBrowseSearch(true);\r\n await this.props.handleResetSearchBar(true);\r\n await this.setState({ searchValue: \"\" });\r\n }\r\n\r\n getLastSegmentFromPath = () => {\r\n const pathname = window.location.pathname;\r\n const trimmedPathname = pathname.replace(/^\\/|\\/$/g, '');\r\n const segments = trimmedPathname.split('/');\r\n if (segments.length === 1) {\r\n return null; // Return null if only one segment\r\n }\r\n const lastSegment = segments[segments.length - 1];\r\n return lastSegment;\r\n };\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.resetBrowseSearch !== this.props.resetBrowseSearch && this.props.resetBrowseSearch) {\r\n await this.handleSearchReset();\r\n await this.props.populateSearch(\"\");\r\n this.fetchResults();\r\n return;\r\n }\r\n if (this.state.mounted && decodeURIComponent(this.props.location.search) !== this.state.query) {\r\n window.scrollTo(this.scrollOptions);\r\n\r\n this.initializeSearchStringAndQueryParams();\r\n }\r\n\r\n if (prevState.filterOpen !== this.state.filterOpen && !!(this.asideRef?.current)) {\r\n if (this.state.filterOpen) {\r\n this.asideRef.current.classList.add('visible');\r\n this.props.setBrowseFilterOpen(true);\r\n } else {\r\n this.asideRef.current.classList.remove('visible');\r\n this.props.setBrowseFilterOpen(false);\r\n }\r\n }\r\n if (Math.abs(this.props.screenWidth - prevProps.screenWidth) > 10) {\r\n const isMobile = window.innerWidth - document.documentElement.clientWidth < 5;\r\n this.setState({ isMobile });\r\n }\r\n if (prevState.category !== this.state.category && this.state.category > 0) {\r\n this.handleSearchForBestUses();\r\n }\r\n }\r\n\r\n componentWillUnmount = () => {\r\n window.removeEventListener('resize', this.handleResize);\r\n document.removeEventListener(\"touchstart\", this.handleTouchStartListener);\r\n document.removeEventListener(\"mouseup\", this.handleTouchStartListener);\r\n\r\n window.cancelAnimationFrame(this.animationFrameId);\r\n }\r\n\r\n handleTouchStartListener = (e) => {\r\n if ([\"sm\", \"md\"].includes(this.props.deviceSize) && !this.state.filterOpen && e.target.className === 'browse-filter-btn') {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.setState({ filterOpen: true });\r\n } else if ([\"sm\", \"md\"].includes(this.props.deviceSize) && this.state.filterOpen && (!e.target.closest(`.browse-filter-aside`) || e.target.classList.contains(\"close-icon-filter\"))) {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.setState({ filterOpen: false });\r\n }\r\n }\r\n\r\n handleResize = () => {\r\n if (this.animationFrameId) {\r\n window.cancelAnimationFrame(this.animationFrameId);\r\n }\r\n this.animationFrameId = window.requestAnimationFrame(() => {\r\n this.updateMobileLocationBarOpen();\r\n });\r\n }\r\n\r\n updateMobileLocationBarOpen() {\r\n if (this.state.isMobile) {\r\n const mobileLocationBarOpen = (window.innerHeight < window.screen.height);\r\n this.setState({ mobileLocationBarOpen });\r\n }\r\n }\r\n\r\n handleSortFilterReset = async (catReset = true) => {\r\n await this.props.populateSearch(\"\");\r\n await this.props.handleResetSearchBar(true);\r\n\r\n if (catReset) {\r\n const category = 0;\r\n\r\n this.setState({ category, searchValue: \"\" });\r\n }\r\n\r\n const min = 0;\r\n const max = 2000;\r\n const sortBy = { value: 0, label: \"Recommended\" };\r\n const rating = 0;\r\n const merchant = 0;\r\n const onSale = false;\r\n\r\n this.setState({ min, max, sortBy, rating, merchant, onSale });\r\n }\r\n\r\n initializeSearchStringAndQueryParams = async () => {\r\n let searchPath = !!(this.props.match.params.searchString) ? this.props.match.params.searchString : \"\";\r\n this.props.populateSearch(searchPath);\r\n\r\n this.setState({ closeFilter: true })\r\n const params = getQueryStringParams(window.location.search);\r\n this.setState({ query: decodeURIComponent(window.location.search) })\r\n\r\n let category = params.category;\r\n\r\n let searchValue = params.search;\r\n let subcategory = params.subcategory;\r\n\r\n const min = params.min;\r\n const max = params.max;\r\n const sortby = params.sortby;\r\n const rating = params.rating;\r\n const merchant = params.merchant;\r\n const onsale = params.onsale;\r\n\r\n const searchBar = params.searchBar;\r\n if (!!(searchBar)) {\r\n this.setState({ searchBar: true })\r\n }\r\n\r\n if (!!(searchValue)) {\r\n await this.handleSortFilterReset();\r\n\r\n await this.props.populateSearch(decodeURIComponent(searchValue));\r\n } else {\r\n if (!(this.getLastSegmentFromPath())) {\r\n await this.props.handleResetSearchBar(true);\r\n }\r\n }\r\n if (!!(category) && this.state.categories.length > 0) {\r\n let categoryObj = this.state.categories.filter(cat => cat.name.toLowerCase() === category.toLowerCase() && cat.level === 1)[0];\r\n\r\n if (!!(subcategory)) {\r\n let subCategoryObj = this.state.categories.filter(cat => cat.name.toLowerCase() === subcategory.toLowerCase() && cat.parentCategoryId === categoryObj.id)[0];\r\n\r\n if (!!(subCategoryObj)) {\r\n category = subCategoryObj.id;\r\n this.setState({ category });\r\n }\r\n } else {\r\n if (!!(categoryObj)) {\r\n category = categoryObj.id;\r\n this.setState({ category });\r\n }\r\n }\r\n }\r\n\r\n\r\n let merchantId = null;\r\n if (!!(merchant)) {\r\n const merchants = await this.getMerchants(true);\r\n if (!!(merchants) && !!(merchants.filter(x => x.name.toLowerCase() === merchant.toLowerCase()).length === 1)) {\r\n let merchantArrObj = merchants.filter(x => x.name.toLowerCase() === merchant.toLowerCase());\r\n merchantId = merchantArrObj[0].id;\r\n this.setState({ merchant: merchantId });\r\n }\r\n }\r\n\r\n if (!!(min) && !!(parseFloat(min))) {\r\n this.setState({ min: parseFloat(min) })\r\n }\r\n\r\n if (!!(max) && !!(parseFloat(max))) {\r\n this.setState({ max: parseFloat(max) })\r\n }\r\n if (!!(onsale) && onsale === \"true\" || onsale === \"false\") {\r\n this.setState({ onSale: onsale === \"true\" })\r\n }\r\n let sortBy = null;\r\n if (!!(sortby)) {\r\n const sortArray = [\r\n { value: 0, label: \"Recommended\" },\r\n { value: 1, label: \"Relevance\" },\r\n { value: 2, label: \"Price\" },\r\n { value: 3, label: \"Rating\" },\r\n ];\r\n\r\n if (!!(sortArray.filter(x => x.label.toLowerCase() === sortby.toLowerCase()).length === 1)) {\r\n sortBy = sortArray.filter(x => x.label.toLowerCase() === sortby.toLowerCase())[0];\r\n this.setState({ sortByQuery: sortBy })\r\n }\r\n }\r\n\r\n if (!!(rating) && !!(parseFloat(rating))) {\r\n this.setState({ rating: parseFloat(rating) })\r\n }\r\n\r\n if (this.props.loggedInUser !== null) {\r\n this.setState({ loggedInUser: this.props.loggedInUser });\r\n }\r\n else {\r\n let user = await getAuthorizedUserData();\r\n this.setState({ loggedInUser: user });\r\n }\r\n\r\n this.fetchResults(!!(category) ? category : this.state.category, !!(min) ? min : null, !!(max) ? max : null, !!(merchantId) ? merchantId : 0, !!(rating) ? rating : 0,\r\n !!(sortBy) ? sortBy.label : \"Recommended\", onsale ? onsale : false);\r\n\r\n this.setState({ searchInputInit: false })\r\n }\r\n\r\n fetchCategories = async () => {\r\n let categories = null;\r\n if (!(this.state.categories) || this.state.categories.length === 0) {\r\n let url = `/api/Sector/GetCategories`;\r\n categories = await getRequest(url);\r\n\r\n this.setState({ categories: !!(categories) ? categories : this.state.categories });\r\n }\r\n }\r\n\r\n fetchResults = async (category = this.state.category, min = this.state.min, max = this.state.max,\r\n merchantId = this.state.merchant, rating = this.state.rating, sortBy = this.state.sortBy.label, onSale = this.state.onSale) => {\r\n if (this.state.skipFetch) return;\r\n\r\n this.setState({ sideFilterFetch: true })\r\n if (max == 2000) {\r\n max = null;\r\n }\r\n if (min == 0) {\r\n min = null;\r\n }\r\n\r\n const take = 24;\r\n\r\n this.setState({ searching: true });\r\n\r\n\r\n let search = this.props.searchInput;\r\n let url = `/search/SearchProducts?userId=${this.state.loggedInUser?.id}${!!(search) && search.length > 0 ? \"&search=\" + search : \"\"}&skip=0&take=${take}&min=${min}&max=${max}&merchantId=${merchantId}&rating=${rating}&sortBy=${sortBy}&onSale=${onSale}`;\r\n if (!!(category) && category > 0) {\r\n url += `&category=${category}`;\r\n }\r\n\r\n let results = await getRequest(url);\r\n if (results === undefined || results === null || results.length === 0 && !!(this.props.searchInput) && this.props.searchInput.length > 0) {\r\n this.setState({ productSearchResults: [], finishedFetchingProducts: true, searching: false, });\r\n this.props.history.push(`/SearchResults/${this.props.searchInput}`);\r\n }\r\n else {\r\n this.setState({ productSearchResults: results, finishedFetchingProducts: results.length === 0, searching: false })\r\n }\r\n this.setState({ sideFilterFetch: false, searchBar: false });\r\n }\r\n\r\n getMerchants = async (doReturn = false) => {\r\n let merchantUrl = '/api/Merchant/GetMerchantList';\r\n let merchants = await getRequest(merchantUrl);\r\n this.setState({ merchants });\r\n if (doReturn) {\r\n return merchants;\r\n }\r\n }\r\n\r\n fetchMore = async () => {\r\n const min = this.state.min;\r\n const max = this.state.max;\r\n let category = !!(this.state.thirdLevelSub) ? this.state.thirdLevelSub : !!(this.state.subCategory) ? this.state.subCategory : this.state.category;\r\n let search = !!(this.state.searchValue) && this.state.searchValue.length > 0 ? this.state.searchValue : this.props.searchInput;\r\n\r\n const take = 24;\r\n\r\n const sortBy = this.state.sortBy.label;\r\n\r\n const merchantId = this.state.merchant;\r\n const rating = this.state.rating;\r\n const onSale = this.state.onSale;\r\n\r\n let { lockerSearchResults, productSearchResults, postSearchResults, peopleSearchResults, resultCase } = this.state;\r\n\r\n let existingResults = [lockerSearchResults, productSearchResults, postSearchResults, peopleSearchResults];\r\n\r\n let skip = existingResults[resultCase - 1].length;\r\n\r\n let url = `/search/SearchProducts?userId=${this.state.loggedInUser?.id}${!!(search) && search.length > 0 ? \"&search=\" + search : \"\"}&skip=${skip}&take=${take}&min=${min}&max=${max}&merchantId=${merchantId}&rating=${rating}&sortBy=${sortBy}&onSale=${onSale}`;\r\n if (!!(category) && category > 0) {\r\n url += `&category=${category}`;\r\n }\r\n let data = await getRequest(url);\r\n\r\n if (data === undefined || data === null || data?.length === 0) {\r\n this.setState({ finishedFetchingProducts: true });\r\n }\r\n else {\r\n let newData = [...productSearchResults, ...data];\r\n this.setState({ productSearchResults: newData });\r\n }\r\n }\r\n\r\n createCategoryAncestry = (selectedCategory) => {\r\n if (this.state.categories.length > 0) {\r\n const categories = this.state.categories;\r\n let categoryArray = [];\r\n let currentCategory = categories.find(category => category.id === selectedCategory);\r\n while (!!(currentCategory)) {\r\n categoryArray.unshift(currentCategory);\r\n if (!!(currentCategory.parentCategoryId)) {\r\n currentCategory = categories.find(category => category.id === currentCategory.parentCategoryId);\r\n } else {\r\n currentCategory = null;\r\n }\r\n }\r\n return categoryArray;\r\n } else {\r\n return [];\r\n }\r\n };\r\n\r\n handleSearchForBestUses = () => {\r\n let result = [];\r\n const categories = this.state.categories;\r\n if (categories.length > 0) {\r\n let ancestryArray = this.createCategoryAncestry(this.state.category);\r\n let originalAncestryArray = [...ancestryArray];\r\n while (ancestryArray.length >= 2) {\r\n const firstCategory = ancestryArray[0];\r\n const secondCategory = ancestryArray[1];\r\n\r\n for (const category of categories) {\r\n if (category.name === firstCategory.name && category.level > 1) {\r\n const firstMatch = category;\r\n const secondMatchArray = categories.filter(cat => cat.level === firstMatch.level + 1 && cat.parentCategoryId === firstMatch.id && cat.name === secondCategory.name);\r\n\r\n if (secondMatchArray.length > 0) {\r\n const secondMatch = secondMatchArray[0];\r\n const rootMatch = this.createCategoryAncestry(secondMatch.id)[0];\r\n if (rootMatch.id !== firstCategory.id) {\r\n result.push({\r\n lowestLevelName: !!(rootMatch.menuName) ? rootMatch.menuName : rootMatch.name,\r\n lowestLevelId: rootMatch.id,\r\n topLevelCategoryId: secondMatch.id,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (result.length === 1 && result[0].lowestLevelId === originalAncestryArray[0].id && result[0].topLevelCategoryId === originalAncestryArray[originalAncestryArray.length - 1].id) {\r\n result = [];\r\n break;\r\n } else if (result.length > 0) {\r\n break;\r\n } else {\r\n ancestryArray.shift();\r\n }\r\n }\r\n }\r\n this.setState({ bestUses: result })\r\n }\r\n\r\n toggleLayout = () => {\r\n let newLayout = !this.state.isGrid;\r\n this.setState({ isGrid: newLayout });\r\n }\r\n\r\n resetCloseFilter = () => {\r\n this.setState({ closeFilter: false });\r\n }\r\n\r\n handleCloseFilter = () => {\r\n this.setState({ closeFilter: true });\r\n }\r\n\r\n starClick = async (nextValue, prevValue, name) => {\r\n if (nextValue !== 0 && Number.isInteger(prevValue) || Math.floor(prevValue) + 1 !== nextValue) {\r\n nextValue = nextValue - .5;\r\n }\r\n this.setState({ rating: nextValue });\r\n }\r\n\r\n starClickFetch = async (nextValue, prevValue, name) => {\r\n this.setState({ sideFilterFetch: true })\r\n if (nextValue !== 0 && Number.isInteger(prevValue) || Math.floor(prevValue) + 1 !== nextValue) {\r\n nextValue = nextValue - .5;\r\n }\r\n this.setState({ rating: nextValue });\r\n\r\n await this.fetchResults(this.state.category, this.state.min, this.state.max, this.state.merchant, nextValue);\r\n this.setState({ sideFilterFetch: false })\r\n\r\n }\r\n\r\n sortByFetch = async (sortBy) => {\r\n const sortByArr = [\r\n { value: 0, label: \"Recommended\" },\r\n { value: 1, label: \"Relevance\" },\r\n { value: 2, label: \"Price\" },\r\n { value: 3, label: \"Rating\" },\r\n ];\r\n this.setState({ sideFilterFetch: true, sortBy: sortByArr.filter(x => x.label.toLowerCase() === sortBy.toLowerCase())[0] })\r\n\r\n\r\n await this.fetchResults(this.state.category, this.state.min, this.state.max, this.state.merchant, this.state.rating, sortBy);\r\n this.setState({ sideFilterFetch: false })\r\n }\r\n\r\n onSaleFetch = async () => {\r\n const onSaleCurrent = this.state.onSale;\r\n this.setState({ sideFilterFetch: true, onSale: !onSaleCurrent })\r\n\r\n\r\n await this.fetchResults(this.state.category, this.state.min, this.state.max, this.state.merchant, this.state.rating, this.state.sortBy.label, !onSaleCurrent);\r\n this.setState({ sideFilterFetch: false })\r\n }\r\n\r\n handlePriceRange = async (event, newValue) => {\r\n this.setState({ sideFilterFetch: true, min: newValue[0], max: newValue[1] });\r\n this.setState({ sideFilterFetch: false })\r\n };\r\n\r\n handlePriceRangeFetch = async (event, newValue) => {\r\n this.setState({ sideFilterFetch: true, min: newValue[0], max: newValue[1] });\r\n\r\n await this.fetchResults(this.state.category, newValue[0], newValue[1]);\r\n this.setState({ sideFilterFetch: false })\r\n };\r\n\r\n setFilterOpen = (filterOpen) => {\r\n this.setState({ filterOpen });\r\n }\r\n\r\n onCategoryInputChangeFetch = async (category) => {\r\n this.setState({ sideFilterFetch: true })\r\n\r\n this.setState({ category });\r\n\r\n await this.fetchResults(category);\r\n\r\n this.setState({ sideFilterFetch: false })\r\n };\r\n\r\n displayProductResults = () => {\r\n if (this.state.productSearchResults?.length === 0) {\r\n return \r\n }\r\n else {\r\n if (this.state.isGrid === true) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n }\r\n\r\n downwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n upwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n\r\n // These options are needed to round to whole numbers if that's what you want.\r\n //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)\r\n //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)\r\n });\r\n\r\n sortCategories = categories => {\r\n return categories.sort((a, b) => {\r\n if (a.menuVisible && !b.menuVisible) {\r\n return -1; // a comes first\r\n } else if (!a.menuVisible && b.menuVisible) {\r\n return 1; // b comes first\r\n } else if (a.menuVisible && b.menuVisible) {\r\n if (a.ordinal < b.ordinal) {\r\n return -1; // a comes first\r\n } else if (a.ordinal > b.ordinal) {\r\n return 1; // b comes first\r\n } else {\r\n return 0; // no change in order\r\n }\r\n } else {\r\n if (a.menuVisibleWithMore && !b.menuVisibleWithMore) {\r\n return 1; // b comes first\r\n } else if (!a.menuVisibleWithMore && b.menuVisibleWithMore) {\r\n return -1; // a comes first\r\n } else {\r\n return 0; // no change in order\r\n }\r\n }\r\n });\r\n }\r\n\r\n handleInputChangeFetch = async (category, isChecked) => {\r\n if (!!(this.props.searchInput) && this.props.searchInput.length > 0) {\r\n this.setState({ skipFetch: true })\r\n await this.resetSearch();\r\n this.setState({ skipFetch: false });\r\n }\r\n if (isChecked) {\r\n this.setState({ category });\r\n\r\n this.fetchResults(category);\r\n window.scrollTo(this.scrollOptions);\r\n return;\r\n }\r\n\r\n this.onCategoryInputChangeFetch(category);\r\n\r\n }\r\n\r\n handleInputBestUses = async (category) => {\r\n if (category !== this.state.category) {\r\n if (!!(this.props.searchInput) && this.props.searchInput.length > 0) {\r\n this.setState({ skipFetch: true })\r\n await this.resetSearch();\r\n this.setState({ skipFetch: false });\r\n }\r\n this.setState({ category })\r\n this.onCategoryInputChangeFetch(category);\r\n }\r\n }\r\n\r\n parseCategoriesByParentCategoryId = parentCategoryId => {\r\n if (!!(parentCategoryId)) {\r\n return this.sortCategories(this.state.categories.filter(cat => cat.parentCategoryId === parentCategoryId));\r\n }\r\n return this.sortCategories(this.state.categories.filter(cat => cat.level === 1));\r\n }\r\n\r\n renderFilterCategories = () => {\r\n let category = this.state.category;\r\n let categoryObj = this.state.categories.filter(cat => cat.id === category)[0];\r\n\r\n let categories = this.parseCategoriesByParentCategoryId(!!(categoryObj) ? category : null);\r\n\r\n if (categories.length === 0) {\r\n categories = this.parseCategoriesByParentCategoryId(categoryObj == null || categoryObj == undefined || !categoryObj.hasOwnProperty('parentCategoryId') || categoryObj.parentCategoryId == undefined || categoryObj.parentCategoryId === 0 ? -1 : categoryObj.parentCategoryId);\r\n }\r\n return categories.map((cat, index) => {\r\n const name = !!(cat.menuName) ? cat.menuName : cat.name;\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n });\r\n }\r\n\r\n renderBestUses = () => {\r\n let bestUses = this.sortCategories(this.state.bestUses)\r\n return bestUses.map((cat, index) => {\r\n const name = cat.lowestLevelName;\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n });\r\n }\r\n\r\n handleAsideVisibility = () => {\r\n const { filterOpen } = this.state;\r\n const asideElement = this.asideRef.current;\r\n\r\n if (filterOpen) {\r\n asideElement.classList.add('visible');\r\n } else {\r\n asideElement.classList.remove('visible');\r\n }\r\n }\r\n\r\n resetFilter = async () => {\r\n this.setState({\r\n sideFilterFetch: true,\r\n categoryToggle: true,\r\n priceToggle: true,\r\n ratingToggle: true,\r\n sortByToggle: true,\r\n filterOpen: false,\r\n });\r\n\r\n if (!!(this.props.searchInput) && this.props.searchInput.length > 0) {\r\n this.setState({ skipFetch: true })\r\n await this.resetSearch();\r\n this.setState({ skipFetch: false });\r\n }\r\n\r\n window.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\"\r\n });\r\n\r\n await this.handleSortFilterReset();\r\n this.handleCloseFilter();\r\n await this.fetchResults();\r\n\r\n this.setState({ sideFilterFetch: false })\r\n }\r\n\r\n render() {\r\n const asideStyle = {\r\n marginRight: \"40px\",\r\n padding: [\"sm\", \"md\"].includes(this.props.deviceSize) ? \"20px\" : \"20px 20px 20px 3px\",\r\n width: \"25%\",\r\n overflow: \"auto\",\r\n }\r\n\r\n const divStyle = {\r\n marginBottom: \"10px\",\r\n borderBottom: \"1px solid gray\",\r\n color: \"black\",\r\n }\r\n\r\n let containerAppendClass = this.props.deviceSize === \"sm\" || this.props.deviceSize === \"md\" ? \"\" : \"\";\r\n\r\n return (\r\n
    \r\n \r\n RockPorch - Browse\r\n \r\n \r\n
    \r\n {\r\n this.state.searching && !this.state.sideFilterFetch ?\r\n :\r\n
    \r\n \r\n {\r\n this.state.sideFilterFetch ?\r\n \r\n :\r\n
    \r\n
    \r\n
    \r\n {this.displayProductResults()}\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer, fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default withRouter(connect(mapStateToProps, { toggleAddProductModal, toggleCreateLockerModal, toggleFollowersFollowingModal, toggleFetchFollowing })(Browse));","import React from \"react\";\r\nimport GridIconAlternate from \"components/icons/GridIconAlternate\";\r\nimport DoubleBarIcon from \"components/icons/DoubleBarIcon\";\r\n\r\n\r\n/**\r\n *\r\n * @param {{types:[],interests:[],toggleAction:Function, isGrid:boolean, className:string}} props\r\n */\r\nconst ProfileFilterBar = (props) => {\r\n let renderToggleIcon = () => {\r\n return props.isGrid === true ? : \r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default ProfileFilterBar;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport CheckIcon from \"icons/CheckIcon\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport CameraIcon from \"components/icons/CameraIcon\";\r\nimport { Popover, PopoverBody } from \"reactstrap\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport Modal from \"../../components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport { toggleProductPageModal, toggleShareModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport { getMerchantShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\r\nimport ShareIcon from \"components/icons/ShareIcon\";\r\nimport PlusIcon from \"components/icons/PlusIcon\";\r\nimport MinusIcon from \"components/icons/MinusIcon\";\r\nimport FacebookIcon from \"components/icons/FacebookIcon\";\r\nimport InstagramIcon from \"components/icons/InstagramIcon\";\r\nimport TikTokIcon from \"components/icons/TikTokIcon\";\r\nimport StravaIcon from \"components/icons/StravaIcon\";\r\nimport YoutubeIcon from \"components/icons/YoutubeIconLink\";\r\nimport WebsiteIcon from \"components/icons/WebsiteLinkIcon\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * userInformation:object\r\n * deviceSize:string\r\n * isAuthenticated:boolean\r\n * profileBanner:string,\r\n * productCount:Number, \r\n * postCount:Number, \r\n * fetchProducts:Function,\r\n * fetchActivityFeed:Function,\r\n * fetchAbout:Function,\r\n * fetchLockers:Function\r\n * onClickMessage:Function\r\n * selectedCase: Number,\r\n * productCount:Number,\r\n * lockerCount:Number,\r\n * isFollowing:boolean,\r\n * isLoggedInUser:boolean,\r\n * followAction: Function,\r\n * showFollowersOrFollowing:Function\r\n * }} props \r\n */\r\n\r\nconst ProfileHeader = (props) => {\r\n let { profileBanner, selectedCase, uploadingProfileBanner } = props;\r\n let { bio, email, followers, following, id, imageUrl, name, proStatusId, tagLine, userName } = props.userInformation;\r\n\r\n const readMoreRef = React.useRef(null);\r\n\r\n const [isRendered, setIsRendered] = React.useState(false);\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n const [shareLink, setShareLink] = React.useState(\"\");\r\n const [readMore, setReadMore] = React.useState(false);\r\n const [showReadMore, setShowReadMore] = React.useState(false);\r\n const [readMoreHeight, setReadMoreHeight] = React.useState(0);\r\n\r\n React.useLayoutEffect(() => {\r\n setIsRendered(true);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if (!!(readMoreRef) && !!(readMoreRef.current) && !!(readMoreRef.current.offsetHeight)) {\r\n readMoreRef.current.classList.remove('profile-header-read-more');\r\n\r\n if (readMoreRef.current.offsetHeight !== readMoreHeight) {\r\n if (readMoreRef.current.offsetHeight > 80) {\r\n setShowReadMore(true);\r\n readMoreRef.current.classList.add('profile-header-read-more');\r\n } else {\r\n setShowReadMore(false);\r\n readMoreRef.current.classList.remove('profile-header-read-more');\r\n }\r\n setReadMoreHeight(readMoreRef.current.style.offsetHeight);\r\n }\r\n }\r\n }, [readMoreRef, readMoreHeight, props.screenWidth]);\r\n\r\n let saveUser = async (loggedInUser) => {\r\n let serializedUser = {\r\n name: loggedInUser.name,\r\n firstName: loggedInUser.firstName,\r\n lastName: loggedInUser.lastName,\r\n bio: loggedInUser.bio,\r\n tagLine: loggedInUser.tagLine,\r\n website: loggedInUser.website,\r\n imageUrl: loggedInUser.imageUrl,\r\n userName: loggedInUser.userName,\r\n email: loggedInUser.email,\r\n\r\n phoneNumber: loggedInUser.phoneNumber,\r\n proStatusId: loggedInUser.proStatusId,\r\n address: loggedInUser.address,\r\n city: loggedInUser.city,\r\n state: loggedInUser.state,\r\n postalCode: loggedInUser.postalCode,\r\n country: loggedInUser.country,\r\n\r\n onboardingComplete: loggedInUser.onboardingComplete,\r\n profileBannerUrl: loggedInUser.profileBannerUrl,\r\n quickStart: loggedInUser.quickStart\r\n };\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, serializedUser);\r\n props.setLoggedInUser(user);\r\n }\r\n\r\n let renderFollowButtonIcon = () => {\r\n let buttonText = props.isFollowing != undefined && props.isFollowing != null && props.isFollowing === true ? \"Unfollow \" : \"Follow \"\r\n let buttonSymbol = props.isFollowing != undefined && props.isFollowing != null && props.isFollowing === true ? \"-\" : \"+\";\r\n if (proStatusId === 1 && (props.loggedInUser == undefined || props.loggedInUser == null || !props.isLoggedInUser)) {\r\n return (\r\n )\r\n }\r\n if (proStatusId === 1) {\r\n if (buttonSymbol === \"+\") {\r\n return (\r\n )\r\n } else {\r\n return (\r\n )\r\n }\r\n }\r\n }\r\n\r\n let renderFollowButton = () => {\r\n let buttonText = props.isFollowing === true ? \"Unfollow \" : \"Follow \"\r\n let buttonSymbol = props.isFollowing === true ? \"-\" : \"+\";\r\n if (proStatusId === 1 && props.loggedInUser == undefined || props.loggedInUser == null) {\r\n return (\r\n )\r\n }\r\n if (proStatusId === 1) {\r\n return (\r\n )\r\n }\r\n\r\n }\r\n\r\n let mapToggleButtons = () => {\r\n let buttons = [{ name: \"About\", action: props.fetchAbout, case: 5 }];\r\n\r\n if (props.userInformation.proStatusId === 1) {\r\n buttons = [\r\n { name: \"Activity\", action: props.fetchActivityFeed, case: 1, content: null },\r\n { name: \"Lockers\", action: props.fetchLockers, case: 2, content: props.lockerCount || null },\r\n { name: \"Products\", action: props.fetchProducts, case: 3, content: props.productCount || null }\r\n ];\r\n }\r\n\r\n return buttons.map((button, i) => {\r\n let selectedCaseClass = selectedCase === button.case ? \"btn-primary\" : \"\";\r\n let smallSizeClass = props.deviceSize === \"sm\" ? \"btn-sm\" : \"\";\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n let displayEditOrMessageButtons = () => {\r\n const displaySmall = props.deviceSize === \"sm\";\r\n\r\n if ((props.isLoggedInUser != undefined && props.loggedInUser != null && props.isLoggedInUser !== true && props.isAuthenticated === true) ||\r\n props.loggedInUser == undefined || props.loggedInUser == null) {\r\n return (\r\n
    \r\n
    \r\n {renderFollowButton()}\r\n
    \r\n
    \r\n )\r\n } \r\n }\r\n\r\n let displayRightSideFunctionalityButtons = () => {\r\n if (props.isLoggedInUser != undefined && props.loggedInUser != null && props.isLoggedInUser === true) {\r\n return (\r\n
    \r\n
    \r\n {displayShareButton()}\r\n
    \r\n
    \r\n );\r\n } else if (props.isLoggedInUser != undefined && props.loggedInUser != null && props.isLoggedInUser !== true && props.isAuthenticated === true) {\r\n return (\r\n
    \r\n {/*
    */}\r\n {/* {renderFollowButton()}*/}\r\n {/*
    */}\r\n
    \r\n {displayShareButton()}\r\n
    \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n {/*
    */}\r\n {/* {renderFollowButton()}*/}\r\n {/*
    */}\r\n
    \r\n {displayShareButton()}\r\n
    \r\n
    \r\n )}\r\n }\r\n\r\n let displayShareButton = () => {\r\n let path = props.location.pathname;\r\n let username = path.slice(path.lastIndexOf(\"/\") + 1);\r\n let sharePath = \"/prflink/\" + username;\r\n return (\r\n\r\n
    toggleProductShareModal(sharePath)} style={{ cursor: \"pointer\", marginBottom: \"5px\" }}>\r\n \"Share\"\r\n
    \r\n )\r\n }\r\n\r\n let displayBanner = () => {\r\n if (props.userInformation?.profileBannerUrl?.length === 0 || props.userInformation?.profileBannerUrl === undefined) {\r\n return (\r\n <>\r\n \r\n {\r\n props.isLoggedInUser === true ? (\r\n <>\r\n \r\n\r\n \r\n ) : null\r\n }\r\n \r\n )\r\n } else {\r\n return (\r\n <>\r\n \r\n {\r\n props.isLoggedInUser === true ? (\r\n ) : null\r\n }\r\n \r\n )\r\n }\r\n }\r\n\r\n function followersFollowingSection() {\r\n let addedStyles = props.deviceSize === \"sm\" ? \"d-flex px-0 justify-content-around\" : \"\";\r\n return (\r\n
    \r\n {\r\n e.preventDefault();\r\n props.showFollowersOrFollowing(\"following\")\r\n }}>\r\n
    \r\n {following} Following\r\n
    \r\n \r\n\r\n\r\n\r\n {\r\n props.userInformation.proStatusId === 1 ?\r\n (\r\n {\r\n e.preventDefault();\r\n props.showFollowersOrFollowing(\"followers\");\r\n }}>\r\n
    \r\n {followers} Followers\r\n
    \r\n\r\n\r\n \r\n ) : <>\r\n }\r\n\r\n\r\n
    \r\n\r\n\r\n )\r\n }\r\n\r\n let avatarStyle = props.deviceSize === \"sm\" ? { width: \"75px\", height: \"75px\" } : {};\r\n\r\n let backgroundImageStyle = props.deviceSize === \"sm\" ? {\r\n backgroundImage: `url(${props.userInformation?.profileBannerUrl || \"./images/blank-banner.png\"})`,\r\n width: \"100%\",\r\n height: \"100%\",\r\n backgroundPosition: \"center\",\r\n backgroundOrigin: \"border-box\"\r\n } : {};\r\n\r\n let bannerRowStyle = props.deviceSize === \"sm\" ? { backgroundColor: \"rgba(255,255,255,0.5)\", backdropFilter: \"blur(2px)\" } : {};\r\n\r\n const displayShareModal = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const toggleProductShareModal = async (urlFragment) => {\r\n let showModal = !modalOpen;\r\n let shareLink = await getMerchantShareLink(urlFragment);\r\n\r\n if (showModal) {\r\n setModalOpen(showModal);\r\n setShareLink(shareLink);\r\n }\r\n else {\r\n setModalOpen(showModal);\r\n setShareLink(\"\");\r\n }\r\n }\r\n\r\n const popoverCallbackSaveUser = () => {\r\n let loggedInUser = props.loggedInUser;\r\n\r\n if (props.loggedInUser.quickStart == null) {\r\n loggedInUser.quickStart = JSON.stringify({ seenMyFeed: true });\r\n } else {\r\n let quickStart = JSON.parse(props.loggedInUser.quickStart);\r\n quickStart.seenMyFeed = true;\r\n loggedInUser.quickStart = JSON.stringify(quickStart);\r\n props.loggedInUser.quickStart = JSON.stringify(quickStart);\r\n }\r\n\r\n saveUser(loggedInUser);\r\n }\r\n\r\n const notLoggedInUserPaddingTopStyle = { paddingTop: props.isLoggedInUser ? \"\" : \"15px\" }\r\n\r\n return (\r\n <>\r\n {displayShareModal()}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n {imageUrl?.length > 0 ? < ImageWrapper src={imageUrl} alt=\"\" lazy={false} /> : < ImageWrapper src=\"/images/avatar2.svg\" alt=\"\" style={avatarStyle} lazy={false} />}\r\n
    \r\n
    \r\n
    {userName}
    \r\n {\r\n props.deviceSize !== \"sm\" ?\r\n\r\n displayEditOrMessageButtons()\r\n :\r\n <>\r\n }\r\n
    \r\n
    {tagLine}
    \r\n {\r\n props.deviceSize !== \"sm\" ?\r\n \r\n :\r\n <>\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n {\r\n props.deviceSize === \"sm\" ?\r\n
    \r\n
    \r\n {displayEditOrMessageButtons()}\r\n
    \r\n \r\n
    \r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n {props.userInformation?.facebookUsername != null && props.userInformation?.facebookUsername != undefined && props.userInformation?.facebookUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.instagramUsername != null && props.userInformation?.instagramUsername != undefined && props.userInformation?.instagramUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.tikTokUsername != null && props.userInformation?.tikTokUsername != undefined && props.userInformation?.tikTokUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.stravaUsername != null && props.userInformation?.stravaUsername != undefined && props.userInformation?.stravaUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.googleUsername != null && props.userInformation?.googleUsername != undefined && props.userInformation?.googleUsername !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n {props.userInformation?.website != null && props.userInformation?.website != undefined && props.userInformation?.website !== \"\" ?\r\n
    \r\n \r\n
    :\r\n <>\r\n }\r\n
    \r\n
    \r\n {displayRightSideFunctionalityButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {props.userInformation.proStatusId === 1 ?\r\n
    \r\n
    \r\n {mapToggleButtons()}\r\n
    \r\n
    \r\n : <>}\r\n
    \r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(storeState, ownProps) {\r\n return { interactionState: storeState.interactionReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleProductPageModal, toggleShareModal })(ProfileHeader);","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport InstagramIcon from \"components/icons/InstagramIcon\";\r\nimport FacebookIcon from \"components/icons/FacebookIconNoLink\";\r\nimport TikTokIcon from \"components/icons/TikTokIcon\";\r\nimport StravaIcon from \"components/icons/StravaIcon\";\r\nimport YoutubeIcon from \"components/icons/YoutubeIcon\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\n/**\r\n * \r\n * @param {{userInformation:object}} props\r\n */\r\nconst ProfileAboutSection = (props) => {\r\n\r\n React.useEffect(() => { getSectors() }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n const [sectors, setSectors] = React.useState([]);\r\n const [fetchingSectors, setFetchingSectors] = React.useState(true);\r\n\r\n const { website } = props.userInformation;\r\n\r\n const getSectors = async () => {\r\n let sectors = await getRequest('/api/Sector/GetSectors') ?? [];\r\n let userSectors = await getRequest(`/api/Sector/GetSectorsByUser?userid=${props.userInformation.id}`) ?? [];\r\n let activeSectors = [];\r\n\r\n for (var i = 0; i < userSectors.length; ++i) {\r\n for (var j = 0; j < sectors.length; ++j) {\r\n if (userSectors[i].sectorId === sectors[j].sectorId) {\r\n activeSectors.push(sectors[j]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setSectors(activeSectors);\r\n setFetchingSectors(false);\r\n }\r\n\r\n let renderSectors = () => {\r\n if (fetchingSectors === true) {\r\n return \r\n }\r\n else {\r\n return sectors.map((sector, i) => {\r\n return \r\n });\r\n }\r\n \r\n }\r\n\r\n function displaySocials() {\r\n let { userInformation } = props;\r\n let { instagramUsername } = userInformation\r\n let normalizedInstagram = userInformation?.instagramUsername?.startsWith(\"@\") === true ? instagramUsername.substring(1) : instagramUsername\r\n let socials = [\r\n {\r\n text: \"Facebook Name\",\r\n name: userInformation?.facebookUsername || null,\r\n icon: ,\r\n url: `facebook.com/${userInformation.facebookUsername}`,\r\n userInformationField:\"facebookUsername\"\r\n },\r\n {\r\n text: \"Instagram Name\",\r\n name: userInformation.instagramUsername || null,\r\n icon: ,\r\n url: `instagram.com/${normalizedInstagram}`,\r\n userInformationField: \"instagramUsername\"\r\n },\r\n {\r\n text: \"Youtube Name\",\r\n name: userInformation?.googleUsername || null,\r\n icon: ,\r\n url: `youtube.com/${userInformation.googleUsername}`,\r\n userInformationField:\"googleUsername\"\r\n },\r\n {\r\n text: \"TikTok Name\",\r\n name: userInformation?.tikTokUsername || null,\r\n icon: ,\r\n url: `tiktok.com/@${userInformation.tikTokUsername}`,\r\n userInformationField: \"tikTokUsername\"\r\n },\r\n {\r\n text: \"Strava Name\",\r\n name: userInformation?.stravaUsername || null,\r\n icon: ,\r\n url: `strava.com/athletes/${userInformation.stravaUsername}`,\r\n userInformationField: \"stravaUsername\"\r\n },\r\n ];\r\n\r\n return socials.map((social, i) => {\r\n if (userInformation[social.userInformationField] === undefined || userInformation[social.userInformationField].length === 0 || userInformation[social.userInformationField] === null) {\r\n return \r\n }\r\n else {\r\n return (\r\n
    \r\n
    \r\n {social.text}\r\n
    \r\n \r\n

    {social.url}

    \r\n
    \r\n
    \r\n )\r\n\r\n }\r\n \r\n })\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Name\r\n
    \r\n

    { props.userInformation.name}

    \r\n
    \r\n
    \r\n
    \r\n Email\r\n
    \r\n

    {props.userInformation.email}

    \r\n
    \r\n
    \r\n
    \r\n Phone Number\r\n
    \r\n

    {props.userInformation.phoneNumber}

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Display Name\r\n
    \r\n

    {props.userInformation.userName}

    \r\n
    \r\n
    \r\n
    \r\n Personal Website\r\n
    \r\n \r\n

    {\"https://\" + props.userInformation.website}

    \r\n
    \r\n
    \r\n
    \r\n\r\n {props.userInformation?.tagLine == undefined || props.userInformation?.tagLine == null || props.userInformation?.tagLine === \"\" ?\r\n <> :\r\n
    \r\n
    \r\n Tagline\r\n
    \r\n

    {props.userInformation.tagLine}

    \r\n
    \r\n }\r\n {props.userInformation?.bio == undefined || props.userInformation?.bio == null || props.userInformation?.bio === \"\" ?\r\n <> :\r\n
    \r\n
    \r\n Bio\r\n
    \r\n

    {props.userInformation.bio}

    \r\n
    \r\n }\r\n\r\n {props.userInformation?.sectors == undefined || props.userInformation?.sectors == null || props.userInformation?.sectors == {} ?\r\n <> :\r\n
    \r\n
    \r\n Interests\r\n
    \r\n
    \r\n {renderSectors()}\r\n
    \r\n
    \r\n }\r\n
    \r\n {displaySocials()}\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n )\r\n}\r\n\r\n\r\nexport default withRouter(ProfileAboutSection);\r\n","import React from \"react\";\r\nimport ProfileFilterBar from \"./ProfileFilterBar\";\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport ProfileHeader from \"./ProfileHeader\";\r\nimport ProfileAboutSection from \"./ProfileAboutSection\"\r\nimport Feed from \"components/Feed/Feed\";\r\nimport ProductFeed from \"components/Feed/ProductFeed\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleFollowersFollowingModal, closeAllModals, toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass Profile extends React.Component {\r\n state = {\r\n userInformation: {\r\n id: 0,\r\n proStatusId: 0,\r\n bio: \"\",\r\n name: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n userName: \"\",\r\n followers: 0,\r\n following: 0,\r\n merchantProducts: {\r\n $values: []\r\n },\r\n sectors: {\r\n $values: []\r\n }\r\n },\r\n loggedInUser: {},\r\n profileBanner: \"images/Profile-Banner.png\",\r\n uploadingProfileBanner: false,\r\n followers: 0,\r\n following: 0,\r\n isGrid: true,\r\n lockers: [],\r\n products: [],\r\n posts: [],\r\n activityFeed: [],\r\n showMessageDetails: false,\r\n isFollowing: false,\r\n isLoading: true,\r\n finishedFetching: false,\r\n finishedFetchingProducts: false,\r\n selectedFile: {},\r\n selectedFileUrl: null,\r\n uploadingBackground: false,\r\n selectedCase: 2, //1:Activity, 2:Lockers, 3:Products, 4:Posts, 5:About\r\n postCount: 0,\r\n productCount: 0,\r\n lockerCount: 0,\r\n finishedFetchingActivity: false,\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false,\r\n }\r\n\r\n toggleGrid = () => {\r\n let newIsGrid = !this.state.isGrid;\r\n this.setState({ isGrid: newIsGrid });\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.setShowTopNav(true, !!(window.location.search.toLowerCase().includes(\"showbrandnav=\")) ? this.props.showBrandNav(window.location.search) : true);\r\n this.props.closeAllModals();\r\n let userName = this.props.match.params.userName;\r\n\r\n let user = await this.fetchUserInformation(userName);\r\n if (user == undefined || user == null) {\r\n this.props.history.push(\"/NotFound\")\r\n }\r\n else {\r\n this.setState({ userInformation: user });\r\n\r\n await Promise.all([\r\n this.fetchCounts(user.id),\r\n this.fetchIsFollowing(user.id),\r\n this.fetchProducts(0, 96),\r\n this.fetchActivityFeed(0, 12)]);\r\n\r\n this.setState({ isLoading: false });\r\n }\r\n document.addEventListener(\"_productAddedEvent\", this.updateProducts);\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.updateProducts();\r\n }\r\n });\r\n }\r\n\r\n updateProducts = async () => {\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n let products = await getRequest(`${basePath}/?userName=${this.state.userInformation.userName}&skip=0&take=96&onlyPostedProducts=true`);\r\n let fullProducts = products?.map((product) => {\r\n product.user = this.state.userInformation\r\n return product;\r\n });\r\n this.setState({ products: fullProducts });\r\n }\r\n\r\n componentWillUnmount = () => {\r\n document.removeEventListener(\"_productAddedEvent\", this.updateProducts);\r\n window.removeEventListener('storage', () => { });\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props.match.params.userName !== prevProps.match.params.userName) {\r\n this.props.closeAllModals();\r\n\r\n this.setState({\r\n profileBanner: \"images/Profile-Banner.png\",\r\n uploadingProfileBanner: false,\r\n followers: 0,\r\n following: 0,\r\n isGrid: true,\r\n lockers: [],\r\n products: [],\r\n posts: [],\r\n activityFeed: [],\r\n showMessageDetails: false,\r\n isFollowing: false,\r\n isLoading: true,\r\n finishedFetching: false,\r\n finishedFetchingProducts: false,\r\n selectedFile: {},\r\n selectedFileUrl: null,\r\n uploadingBackground: false,\r\n selectedCase: 1, //1:Activity, 2:Lockers, 3:Products, 4:Posts, 5:About\r\n postCount: 0,\r\n productCount: 0,\r\n lockerCount: 0,\r\n finishedFetchingActivity: false,\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false\r\n }, async () => {\r\n let user = await (this.fetchUserInformation(this.props.match.params.userName));\r\n if (user === undefined || user == null) {\r\n this.props.history.push(\"/NotFound\");\r\n }\r\n else {\r\n this.setState({ userInformation: user });\r\n\r\n await Promise.all([\r\n this.fetchCounts(user.id),\r\n this.fetchIsFollowing(user.id),\r\n this.fetchProducts(0, 96),\r\n this.fetchActivityFeed(0, 24)]);\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n }) \r\n }\r\n }\r\n\r\n selectMediaToUpload = (e) => {\r\n e.preventDefault();\r\n this.setState({ uploadingProfileBanner: true });\r\n let selectedFileTempUrl = URL.createObjectURL(e.target.files[0]);\r\n this.setState({ selectedFile: e.target.files[0], selectedFileUrl: selectedFileTempUrl }, async () => {\r\n let uploadImageResponse = await this.uploadBackroundImage();\r\n let userInformation = this.state.userInformation;\r\n userInformation.profileBannerUrl = uploadImageResponse.profileBannerUrl;\r\n\r\n this.setState({ userInformation, uploadingProfileBanner: false });\r\n })\r\n }\r\n\r\n uploadBackroundImage = async () => {\r\n if (this.state.selectedFile != null) {\r\n const formData = new FormData();\r\n formData.append(`profileBanner`, this.state.selectedFile);\r\n\r\n let url = `/api/Account/UploadProfileBannerPic`;\r\n let newProperties = await postRequest(url, formData, null, false);\r\n this.props.setLoggedInUser(newProperties);\r\n return newProperties;\r\n }\r\n else return null;\r\n }\r\n\r\n fetchUserInformation = async (username) => {\r\n let url = `/api/account/getProfile?userName=${username}`;\r\n let data = await getRequest(url);\r\n if (data == null || data == undefined) {\r\n return null;\r\n }\r\n else {\r\n const trackingUrl = `/api/account/trackProfileView${!!(this.props.loggedInUser) ? \"Authorized\" : \"\"}?creatorUserId=${data.id}&referrer=${document.referrer}`;\r\n await getRequest(trackingUrl)\r\n this.setState({ userInformation: data }, async () => {\r\n if (data.proStatusId !== 1) {\r\n this.setState({ selectedCase: 5 });\r\n }\r\n await this.fetchIsFollowing(this.state.userInformation.id)\r\n });\r\n return data;\r\n }\r\n \r\n\r\n \r\n }\r\n\r\n fetchCounts = async (userId) => {\r\n let url = `api/Post/GetPostCount?userId=${userId}&onlyPublished=true`;\r\n let count = await getRequest(url);\r\n\r\n let sum = count.length > 0 ? count.reduce(function (a, b) {\r\n return { count: a.count + b.count };\r\n }) : { count: 0 };\r\n let totalCount = sum.count;\r\n let lockerCount = 0;\r\n let lockers = count.find(({ userPostTypeId }) => userPostTypeId === 2);\r\n\r\n if (lockers) {\r\n lockerCount = lockers.count;\r\n }\r\n\r\n let productCountUrl = `/Products/GetUserMerchantProductCount?userId=${userId}`\r\n let productCount = (await getRequest(productCountUrl)).count;\r\n\r\n this.setState({ postCount: totalCount - lockerCount, lockerCount, productCount });\r\n }\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n this.setState({ isFollowing: data });\r\n }\r\n\r\n fetchActivityFeed = async (skip, take) => {\r\n let url = this.props.loggedInUser != null ? '/api/post/getPostsByUserAuthorized' : '/api/post/getPostsByUser';\r\n\r\n let data = await getRequest(`${url}?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}`);\r\n\r\n let lockers = data.filter((post) => post.type === 2);\r\n let lockerIds = this.state.lockers.map((locker) => locker.id);\r\n\r\n let posts = data.filter((post) => post.type !== 2);\r\n let postIds = this.state.posts.map((post) => post.id);\r\n\r\n let lockersToAdd = lockers.filter((locker) => !lockerIds.includes(locker.id));\r\n let postsToAdd = posts.filter((post) => !postIds.includes(post.id));\r\n\r\n this.setState({\r\n activityFeed: this.state.activityFeed.concat(data),\r\n finishedFetchingActivity: data.length < take ? true : false,\r\n finishedFetchingPosts: data.length < take ? true : this.state.finishedFetchingPosts,\r\n finishedFetchingLockers: data.length < take ? true : this.state.finishedFetchingLockers,\r\n lockers: [...this.state.lockers, ...lockersToAdd],\r\n posts: [...this.state.posts, ...postsToAdd]\r\n });\r\n }\r\n\r\n fetchProducts = async (skip, take) => {\r\n this.setState({ finishedFetchingProducts: false })\r\n\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n\r\n let products = await getRequest(`${basePath}?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}&onlyPostedProducts=true`);\r\n let fullProducts = products.map((product) => {\r\n product.user = this.state.userInformation\r\n return product;\r\n });\r\n\r\n let productList = [...this.state.products, ...fullProducts];\r\n\r\n this.setState({ products: productList });\r\n\r\n if (!take) {\r\n this.setState({ finishedFetchingProducts: true })\r\n } else if (products.length < take) {\r\n this.setState({ finishedFetchingProducts: true })\r\n }\r\n }\r\n\r\n fetchLockers = async (skip, take) => {\r\n var postResults = await getRequest(`/api/post/getPostsByUser?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}&onlyLockers=true`);\r\n\r\n let lockers = postResults.filter((post) => post.type === 2);\r\n let lockerIds = this.state.lockers.map((locker) => locker.id);\r\n\r\n let lockersToAdd = lockers.filter((locker) => !lockerIds.includes(locker.id));\r\n\r\n this.setState({ lockers: [...this.state.lockers, ...lockersToAdd], finishedFetchingLockers: postResults.length < take ? true : false });\r\n }\r\n\r\n fetchPosts = async (skip, take) => {\r\n var postResults = await getRequest(`/api/post/getPostsByUser?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}&onlyPosts=true`);\r\n\r\n let posts = postResults.filter((post) => post.type !== 2);\r\n let postIds = this.state.posts.map((post) => post.id);\r\n let postsToAdd = posts.filter((post) => !postIds.includes(post.id));\r\n\r\n this.setState({ posts: [...this.state.posts, ...postsToAdd], finishedFetchingPosts: postResults.length < take ? true : false });\r\n }\r\n\r\n displayContent = (isGrid = this.state.isGrid) => {\r\n switch (this.state.selectedCase) {\r\n case 3: {\r\n if (isGrid === false) {\r\n return (\r\n this.fetchProducts(this.state.products.length, 96)} toggleSignUpModal={this.props.toggleSignUpModal}/>);\r\n }\r\n return (\r\n
    \r\n
    \r\n this.fetchProducts(this.state.products.length, 96)}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n case 1: {\r\n return (\r\n this.fetchActivityFeed(this.state.activityFeed.length, 24)}\r\n updateParent={(updates) => this.setState({ activityFeed: updates })}\r\n showPins={true}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n )\r\n }\r\n case 2: {\r\n return this.fetchLockers(this.state.lockers.length, 24)}\r\n updateParent={(updates) => this.setState({ lockers: updates })}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n }\r\n case 4: {\r\n return this.fetchPosts(this.state.posts.length, 24)}\r\n updateParent={(updates) => this.setState({ posts: updates })}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n }\r\n case 5: {\r\n return ;\r\n }\r\n default: {\r\n return this.fetchActivityFeed(this.state.activityFeed.length, 24)}\r\n updateParent={(updates) => this.setState({ activityFeed: updates })}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n }\r\n }\r\n }\r\n\r\n followOrUnfollow = async () => {\r\n const prevIsFollowing = this.state.isFollowing;\r\n this.setState({ isFollowing: !this.state.isFollowing });\r\n await this.props.toggleFetchFollowing();\r\n let token = await authService.getAccessToken();\r\n\r\n let url = \"/api/Account/\"\r\n if (prevIsFollowing) {\r\n url += \"Unfollow\"\r\n } else {\r\n url += \"Follow\"\r\n }\r\n url += \"?id=\" + this.state.userInformation.id;\r\n\r\n const response = await fetch(url,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n if (response.ok) {\r\n this.setState(() => {\r\n let { followers } = this.state.userInformation;\r\n let newCount = this.state.isFollowing === false ? (followers - 1) : (followers + 1);\r\n let newState = { ...this.state };\r\n newState.userInformation.followers = newCount;\r\n this.setState(newState);\r\n\r\n });\r\n\r\n // if (!this.props.fetchFollowing) this.props.toggleFetchFollowing();\r\n }\r\n }\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n displayFilterBar = () => {\r\n if (this.state.selectedCase !== 5) {\r\n return \r\n }\r\n }\r\n\r\n handleFetchLockersTab = () => {\r\n if (this.state.lockers.length === 0 && !this.state.finishedFetchingLockers) {\r\n this.fetchLockers(0, 24);\r\n }\r\n this.setState({ selectedCase: 2 });\r\n }\r\n\r\n render() {\r\n let { selectedCase, isLoading } = this.state;\r\n let { name, imageUrl, proStatusId, tagLine, userName, followers, following } = this.state.userInformation;\r\n if (isLoading === true) {\r\n return (\r\n <>\r\n < LoadSpinner />\r\n \r\n RockPorch - Profile: {!!(this.props.match.params.userName) ? this.props.match.params.userName : \"\"}\r\n \r\n \r\n )\r\n }\r\n else if (this.state.userInformation === \"notFound\") {\r\n return (\r\n <>\r\n

    This user does not exist

    \r\n \r\n RockPorch - Profile: {!!(this.props.match.params.userName) ? this.props.match.params.userName : \"\"}\r\n \r\n \r\n )\r\n }\r\n else {\r\n if (this.state.showMessageDetails) {\r\n return (\r\n <>\r\n \r\n \r\n RockPorch - Profile: {!!(this.props.match.params.userName) ? this.props.match.params.userName : \"\"}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n RockPorch - Profile: {!!(this.props.match.params.userName) ? this.props.match.params.userName : \"\"}\r\n \r\n {\r\n if (this.props.loggedInUser) {\r\n this.props.toggleFollowersFollowingModal(this.state.userInformation.id, text, null)\r\n }\r\n else {\r\n this.props.toggleSignUpModal()\r\n }\r\n\r\n }}\r\n userInformation={this.state.userInformation}\r\n fetchProducts={() => this.setState({ selectedCase: 3 })}\r\n fetchActivityFeed={() => this.setState({ selectedCase: 1 })}\r\n fetchPosts={() => this.setState({ selectedCase: 4 })}\r\n fetchLockers={this.handleFetchLockersTab}\r\n selectedCase={selectedCase}\r\n isAuthenticated={this.props.loggedInUser !== undefined}\r\n isLoggedInUser={this.props.loggedInUser?.userName === userName}\r\n loggedInUser={this.props.loggedInUser}\r\n setLoggedInUser={this.props.setLoggedInUser}\r\n isFollowing={this.state.isFollowing}\r\n followAction={this.followOrUnfollow}\r\n onClickMessage={this.onClickMessage}\r\n productCount={this.state.productCount}\r\n postCount={this.state.postCount}\r\n lockerCount={this.state.lockerCount}\r\n fetchAbout={() => this.setState({ selectedCase: 5 })}\r\n uploadingProfileBanner={this.state.uploadingProfileBanner}\r\n location={this.props.location}\r\n toggleSignUpModal={this.props.toggleSignUpModal}\r\n hamOpen={this.props.hamOpen}\r\n setToggleMenu={this.props.setToggleMenu}\r\n setHomeFeedSaveUser={this.props.setHomeFeedSaveUser}\r\n setExploreSaveUser={this.props.setExploreSaveUser}\r\n screenWidth={this.props.screenWidth}\r\n />\r\n\r\n this.selectMediaToUpload(e)}\r\n style={{ display: \"none\" }}\r\n />\r\n\r\n {this.displayFilterBar()}\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {this.displayContent()}\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFollowersFollowingModal, closeAllModals, toggleFetchFollowing })(Profile);","import * as React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\n\r\nimport { Form, FormGroup, Label, Input, PopoverBody } from \"reactstrap\";\r\nimport { getRequest, postRequest } from \"../../sharedUtils/httpUtils\";\r\n\r\nlet readOnlyFields = [\"profileUrl\"];\r\n\r\nlet userFormData = {\r\n addTitle: \"\",\r\n addLinkUrl: \"\",\r\n// addImageUrl: \"\",\r\n};\r\n\r\nconst Links = (props) => {\r\n\r\n const [formData, setFormData] = React.useState(userFormData);\r\n const [savingLink, setSavingLink] = React.useState(false);\r\n const [uploadingImage, setUploadingImage] = React.useState(false);\r\n const [links, setLinks] = React.useState([]);\r\n const [deleteIndex, setDeleteIndex] = React.useState(0);\r\n\r\n React.useEffect(async () => {\r\n const ownerUsername = props.match.params.userName;\r\n const viewerUserId = props.loggedInUser.id;\r\n\r\n const trackUrl = `api/Account/TrackUserLinkView?ownerUsername=${ownerUsername}&viewerUserId=${viewerUserId}`;\r\n await getRequest(trackUrl);\r\n\r\n await getLinks();\r\n }, []);\r\n\r\n //React.useEffect(() => {\r\n // updateLinks();\r\n //}, [links]);\r\n\r\n const getLinks = async () => {\r\n const ownerUsername = props.match.params.userName;\r\n\r\n const linksUrl = `api/Account/GetUserLinksByUserId?username=${ownerUsername}`;\r\n const links = await getRequest(linksUrl);\r\n\r\n setLinks(links);\r\n // mapInputFieldsPublic();\r\n }\r\n\r\n const updateLinks = async (links) => {\r\n if (links != null && links!= undefined && links.length > 0) {\r\n const url = `api/Account/UpdateUserLinks`;\r\n\r\n const ordinanceLinks = links.map((link, index) => ({\r\n userId: link.userId,\r\n id: link.id,\r\n linkUrl: link.linkUrl,\r\n imageUrl: link.imageUrl,\r\n title: link.title,\r\n ordinance: index,\r\n createdBy: link.createdBy,\r\n createdDate: link.createdDate,\r\n modifiedDate: link.modifiedDate,\r\n modifiedBy: link.modifiedBy\r\n }));\r\n const newLinks = await postRequest(url, ordinanceLinks);\r\n\r\n }\r\n }\r\n\r\n const trackUserLinkClick = async (index) => {\r\n const userLinkId = links[index].id;\r\n const userId = props.loggedInUser.id;\r\n\r\n const trackingUrl = `api/Account/TrackUserLinkClick?userLinkId=${userLinkId}&userId=${userId}`;\r\n await getRequest(trackingUrl);\r\n }\r\n\r\n const onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n if (formKey === 'bio') {\r\n e.target.style.height = 'inherit';\r\n e.target.style.height = `${e.target.scrollHeight}px`;\r\n }\r\n\r\n setFormData({ ...formData, [formKey]: newData });\r\n\r\n };\r\n\r\n const onSubmit = async (event) => {\r\n event.preventDefault();\r\n setSavingLink(true);\r\n\r\n const userId = props.loggedInUser.id;\r\n const title = formData.addTitle || \"\";\r\n const linkUrl = formData.addLinkUrl || \"\";\r\n //const imageUrl = formData.addImageUrl || \"\";\r\n\r\n let createUserLinkUrl = `/api/Account/CreateUserLink?userId=${userId}&title=${title}&linkUrl=${linkUrl}`;\r\n const newLink = await getRequest(createUserLinkUrl);\r\n\r\n setFormData(userFormData);\r\n\r\n updateLinks([newLink, ...links])\r\n\r\n await setLinks([newLink, ...links]);\r\n\r\n setSavingLink(false);\r\n };\r\n\r\n const mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n if (readOnlyFields.includes(field.name) || uploadingImage) {\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n readOnly=\"readonly\"\r\n />\r\n \r\n );\r\n } else {\r\n if (field.name === \"bio\") {\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n style={{ overflow: \"hidden\" }}\r\n />\r\n );\r\n }\r\n if (field.prepend) {\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {field.prepend}\r\n
    \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n maxLength={field.name === \"displayName\" ? 20 : undefined}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n return (\r\n \r\n \r\n onInputChange(e)}\r\n value={formData[field.name]}\r\n maxLength={field.name === \"displayName\" ? 20 : undefined}\r\n />\r\n \r\n );\r\n }\r\n });\r\n }\r\n\r\n const mapInputFieldsSocial = () => {\r\n let fields = [\r\n { name: \"addTitle\", title: \"Title\", prepend: '' },\r\n { name: \"addLinkUrl\", title: \"Link URL\", prepend: 'https://' },\r\n // { name: \"addImageUrl\", title: \"Image URL\", prepend: 'https://' },\r\n ];\r\n return mapInputFields(fields);\r\n };\r\n\r\n const editLink = async (e, index) => {\r\n e.preventDefault();\r\n }\r\n\r\n const deleteLink = async (e, index) => {\r\n e.preventDefault();\r\n setSavingLink(true);\r\n setDeleteIndex(index);\r\n const id = links[index].id;\r\n\r\n const linksUrl = `api/Account/DeleteUserLinkById?id=${id}`;\r\n await getRequest(linksUrl);\r\n\r\n const newLinks = links.filter(link => link.id !== id);\r\n\r\n setLinks(newLinks);\r\n setSavingLink(false);\r\n }\r\n\r\n const renderButtons = (index) => {\r\n if (savingLink) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n const redirectToLink = (e, url, index) => {\r\n e.preventDefault();\r\n\r\n if (url.length > 9) {\r\n window.open(url, '_blank');\r\n trackUserLinkClick(index);\r\n }\r\n\r\n }\r\n\r\n const mapInputFieldsPublic = () => {\r\n if (links != null) {\r\n return links.map((link, index) => {\r\n let formattedLinkUrl = \"\";\r\n let formattedImageUrl = \"\";\r\n let linkUrlStyle = {};\r\n let imageUrlStyle = {};\r\n if (link.linkUrl?.length > 0) {\r\n formattedLinkUrl = link.linkUrl.search(\"http://\") >= 0 || link.linkUrl.search(\"https://\") >= 0 ?\r\n link.linkUrl : \"https://\" + link.linkUrl;\r\n linkUrlStyle = { cursor: \"pointer\" }\r\n }\r\n if (link.imageUrl?.length > 0) {\r\n formattedImageUrl = link.imageUrl.search(\"http://\") >= 0 || link.imageUrl.search(\"https://\") >= 0 ?\r\n link.imageUrl : \"https://\" + link.imageUrl;\r\n imageUrlStyle = { cursor: \"pointer\" };\r\n }\r\n \r\n //const linkUrl = {link.linkUrl};\r\n return (\r\n \r\n \r\n {props.loggedInUser?.userName === props.match.params.userName ?\r\n renderButtons(index)\r\n :\r\n <>}\r\n
    \r\n
    \r\n {`Link URL`}\r\n
    \r\n redirectToLink(e, formattedLinkUrl, index)}\r\n />\r\n
    \r\n {/*
    */}\r\n {/*
    */}\r\n {/* {`Image URL`}*/}\r\n {/*
    */}\r\n {/* redirectToLink(e, formattedImageUrl, index)}*/}\r\n {/* />*/}\r\n {/*
    */}\r\n
    \r\n );\r\n })\r\n }\r\n };\r\n\r\n const renderSubmit = () => {\r\n let submitDisabled = true;\r\n\r\n for (let key in formData) {\r\n if (formData[key] !== null && formData[key] !== \"\") {\r\n submitDisabled = false;\r\n break;\r\n }\r\n }\r\n\r\n if (submitDisabled) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n const breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/Links', text: 'Links', active: true }];\r\n return (\r\n
    \r\n \r\n

    Links

    \r\n

    Here's a subtitle for the Links page

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Links
    \r\n\r\n {mapInputFieldsPublic()}\r\n\r\n {props.loggedInUser?.userName === props.match.params.userName ?\r\n
    Add Link
    \r\n :\r\n <>}\r\n {props.loggedInUser?.userName === props.match.params.userName ?\r\n mapInputFieldsSocial() \r\n :\r\n <>}\r\n {props.loggedInUser?.userName === props.match.params.userName ?\r\n renderSubmit() \r\n :\r\n <>}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Links;\r\n","import React, { useState, useLayoutEffect } from \"react\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport parse from \"html-react-parser\";\r\nimport YoutubeIcon from \"components/icons/YoutubeIcon\";\r\n/**\r\n * \r\n * @param {{src:string, alt:string, style:object, className:string, role:Number, onClick:Function, videoWidth:Number}} props\r\n */\r\nconst UserImageWrapper = (props) => {\r\n\r\n function uuidv4() {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n };\r\n\r\n useLayoutEffect(() => {\r\n\r\n return () => {\r\n let video = document.getElementById(genId);\r\n\r\n if (video) {\r\n video.pause();\r\n video.currentTime = 0;\r\n }\r\n }\r\n }, []);\r\n\r\n let [imageLoaded, setImageLoaded] = useState(false);\r\n let [genId, setGenId] = useState(uuidv4());\r\n\r\n let emptyClick = (e) => e.preventDefault\r\n\r\n if (props.role && props.role === 1) {\r\n return (\r\n {\r\n e.preventDefault();\r\n if (props.onClick === undefined) {\r\n emptyClick(e)\r\n } else {\r\n document.getElementById(genId).pause();\r\n props.onClick()\r\n }\r\n }}\r\n className={props.className}\r\n poster={props.poster}\r\n preload=\"metadata\"\r\n controls\r\n controlsList=\"nodownload\"\r\n disablePictureInPicture\r\n >\r\n \r\n \r\n )\r\n }\r\n else if (props.role === 3) {\r\n let paddingTop = 9 / 16 * 100 + '%';\r\n\r\n if (!!props.width && !!props.height) {\r\n if (props.width < props.height) {\r\n paddingTop = props.width / props.height * 100 + '%';\r\n } else {\r\n paddingTop = props.height / props.width * 100 + '%';\r\n }\r\n }\r\n\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n } else {\r\n let overlayStyle = { position: \"absolute\", width: \"100%\", height: \"100%\", zIndex: 3, padding: \"47%\", cursor: \"pointer\" };\r\n if (props.lazy != null && props.lazy === false) {\r\n return (\r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }}\r\n onLoad={(e) => {\r\n setImageLoaded(true)\r\n }}\r\n alt={props.alt || \"\"}\r\n style={props.style || {}}\r\n className={props.className || \"\"}\r\n onClick={props.onClick || emptyClick}\r\n />\r\n )\r\n }\r\n return (\r\n <>\r\n {props.role === 8 ?
    : null}\r\n {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }}\r\n onLoad={(e) => {\r\n setImageLoaded(true)\r\n }}\r\n alt={props.alt || \"\"}\r\n style={props.style || {}}\r\n className={props.className || \"\"}\r\n onClick={props.onClick || emptyClick}\r\n loading={props.lazy != null && props.lazy == false ? \"\" : \"lazy\"}\r\n />\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\n\r\nexport default UserImageWrapper;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport UserImageWrapper from \"components/UserImageWrapper\";\r\nimport CheckIcon from \"icons/CheckIcon\";\r\nimport DummyProfilePicture from \"components/DummyProfilePicture\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport CameraIcon from \"components/icons/CameraIcon\";\r\nimport { Popover, PopoverBody } from \"reactstrap\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\n\r\n/**\r\n * \r\n * @param {{\r\n * userInformation:object\r\n * deviceSize:string\r\n * isAuthenticated:boolean\r\n * profileBanner:string,\r\n * productCount:Number, \r\n * postCount:Number, \r\n * fetchProducts:Function,\r\n * fetchActivityFeed:Function,\r\n * fetchAbout:Function,\r\n * fetchLockers:Function\r\n * onClickMessage:Function\r\n * selectedCase: Number,\r\n * productCount:Number,\r\n * lockerCount:Number,\r\n * isFollowing:boolean,\r\n * isLoggedInUser:boolean,\r\n * followAction: Function,\r\n * showFollowersOrFollowing:Function\r\n * }} props \r\n */\r\n\r\nconst UserHeader = (props) => {\r\n let { profileBanner, selectedCase, uploadingProfileBanner } = props;\r\n let { bio, email, followers, following, id, imageUrl, name, proStatusId, tagLine, userName } = props.userInformation;\r\n\r\n const [isRendered, setIsRendered] = React.useState(false);\r\n\r\n React.useLayoutEffect(() => {\r\n setIsRendered(true);\r\n }, []);\r\n\r\n let saveUser = async (loggedInUser) => {\r\n let serializedUser = {\r\n name: loggedInUser.name,\r\n firstName: loggedInUser.firstName,\r\n lastName: loggedInUser.lastName,\r\n bio: loggedInUser.bio,\r\n tagLine: loggedInUser.tagLine,\r\n website: loggedInUser.website,\r\n imageUrl: loggedInUser.imageUrl,\r\n userName: loggedInUser.userName,\r\n email: loggedInUser.email,\r\n\r\n phoneNumber: loggedInUser.phoneNumber,\r\n proStatusId: loggedInUser.proStatusId,\r\n address: loggedInUser.address,\r\n city: loggedInUser.city,\r\n state: loggedInUser.state,\r\n postalCode: loggedInUser.postalCode,\r\n country: loggedInUser.country,\r\n\r\n onboardingComplete: loggedInUser.onboardingComplete,\r\n profileBannerUrl: loggedInUser.profileBannerUrl,\r\n quickStart: loggedInUser.quickStart\r\n };\r\n\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, serializedUser);\r\n props.setLoggedInUser(user);\r\n }\r\n\r\n let renderFollowButton = () => {\r\n let buttonText = props.isFollowing === true ? \"Unfollow \" : \"Follow \"\r\n let buttonSymbol = props.isFollowing === true ? \"-\" : \"+\";\r\n if (proStatusId === 1) {\r\n return (\r\n )\r\n }\r\n\r\n }\r\n\r\n let mapToggleButtons = () => {\r\n let buttons = [{ name: \"About\", action: props.fetchAbout, case: 5 }];\r\n\r\n if (props.userInformation.proStatusId === 1) {\r\n buttons = [\r\n { name: \"Activity\", action: props.fetchActivityFeed, case: 1, content: null },\r\n { name: \"Lockers\", action: props.fetchLockers, case: 2, content: props.lockerCount || null },\r\n { name: \"Products\", action: props.fetchProducts, case: 3, content: props.productCount || null },\r\n { name: \"Posts\", action: props.fetchPosts, case: 4, content: props.postCount || null },\r\n { name: \"About\", action: props.fetchAbout, case: 5 }\r\n ];\r\n }\r\n\r\n return buttons.map((button, i) => {\r\n let selectedCaseClass = selectedCase === button.case ? \"btn-secondary\" : \"\";\r\n let smallSizeClass = props.deviceSize === \"sm\" ? \"btn-sm\" : \"\";\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n let displayEditOrMessageButtons = () => {\r\n if (props.isLoggedInUser === true) {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n else if (props.isLoggedInUser !== true && props.isAuthenticated === true) {\r\n return (\r\n
    \r\n
    \r\n {renderFollowButton()}\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n }\r\n\r\n let displayBanner = () => {\r\n if (props.userInformation?.profileBannerUrl?.length === 0 || props.userInformation?.profileBannerUrl === undefined) {\r\n return (\r\n <>\r\n \r\n {\r\n props.isLoggedInUser === true ? (\r\n <>\r\n \r\n\r\n {isRendered ?\r\n {\r\n let loggedInUser = props.loggedInUser;\r\n\r\n if (props.loggedInUser.quickStart == null) {\r\n loggedInUser.quickStart = JSON.stringify({ seenProfileBannerReminder: true });\r\n } else {\r\n let quickStart = JSON.parse(props.loggedInUser.quickStart);\r\n quickStart.seenProfileBannerReminder = true;\r\n loggedInUser.quickStart = JSON.stringify(quickStart);\r\n }\r\n\r\n await saveUser(loggedInUser);\r\n }}\r\n >\r\n Click here add a banner image to your profile\r\n : null}\r\n \r\n ) : null\r\n }\r\n \r\n )\r\n } else {\r\n return (\r\n <>\r\n \r\n {\r\n props.isLoggedInUser === true ? (\r\n ) : null\r\n }\r\n \r\n )\r\n }\r\n }\r\n\r\n function followersFollowingSection() {\r\n let addedStyles = props.deviceSize === \"sm\" ? \"d-flex px-0 justify-content-around\" : \"\";\r\n return (\r\n
    \r\n {\r\n e.preventDefault();\r\n props.showFollowersOrFollowing(\"following\")\r\n }}>\r\n
    \r\n {following} Following\r\n
    \r\n \r\n\r\n\r\n\r\n {\r\n props.userInformation.proStatusId === 1 ?\r\n (\r\n {\r\n e.preventDefault();\r\n props.showFollowersOrFollowing(\"followers\");\r\n }}>\r\n
    \r\n {followers} Followers\r\n
    \r\n\r\n\r\n \r\n ) : <>\r\n }\r\n\r\n\r\n
    \r\n\r\n\r\n )\r\n }\r\n\r\n let avatarStyle = props.deviceSize === \"sm\" ? { width: \"75px\", height: \"75px\" } : {};\r\n\r\n let backgroundImageStyle = props.deviceSize === \"sm\" ? {\r\n backgroundImage: `url(${props.userInformation?.profileBannerUrl || \"./images/blank-banner.png\"})`,\r\n width: \"100%\",\r\n height: \"100%\",\r\n backgroundPosition: \"center\",\r\n backgroundOrigin: \"border-box\"\r\n } : {};\r\n\r\n let bannerRowStyle = props.deviceSize === \"sm\" ? { backgroundColor: \"rgba(255,255,255,0.5)\", backdropFilter: \"blur(2px)\" } : {};\r\n\r\n return (\r\n <>\r\n
    \r\n\r\n
    \r\n\r\n {props.deviceSize != \"sm\" ? followersFollowingSection() : null}\r\n\r\n
    \r\n {imageUrl?.length > 0 ? < UserImageWrapper src={imageUrl} alt=\"\" style={avatarStyle, {display: \"inline\"}} /> : < UserImageWrapper src=\"/images/avatar2.svg\" alt=\"\" style={avatarStyle} />}\r\n

    \r\n {userName} {proStatusId === 1 || proStatusId === 2 ? : null}\r\n

    \r\n\r\n

    {name}

    \r\n\r\n {tagLine}\r\n
    \r\n\r\n {props.deviceSize === \"sm\" ? followersFollowingSection() : null}\r\n\r\n {displayEditOrMessageButtons()}\r\n\r\n
    \r\n\r\n {props.userInformation.proStatusId === 1 ?\r\n
    \r\n
    \r\n {mapToggleButtons()}\r\n
    \r\n
    \r\n : <>}\r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default UserHeader;\r\n","import React from \"react\";\r\n\r\n\r\nconst UserFeedCarousel = ({ post, index }) => {\r\n const mapProducts = () => {\r\n if (post.productItems != undefined && post.productItems != null && post.productItems.$values.length > 0) {\r\n return post?.productItems?.$values.map((product, index) => {\r\n let renderedItem;\r\n\r\n let url = \"/Products/BuyAuthorized?sharecode=\" + product.userMerchantProduct.coupon;\r\n if (index === 0) {\r\n renderedItem = (\r\n
    \r\n \r\n \"First\r\n \r\n
    \r\n )\r\n } else {\r\n renderedItem = (\r\n
    \r\n \r\n \"Additional\r\n \r\n
    \r\n )\r\n }\r\n return renderedItem\r\n });\r\n } else {\r\n return <>\r\n }\r\n }\r\n\r\n const renderCarouselIndicators = () => {\r\n if (post.productItems != undefined && post.productItems != null && post.productItems.$values.length > 0) {\r\n return post?.productItems?.$values.map((product, i) => {\r\n if (index === 0) {\r\n return
  • \r\n } else {\r\n return
  • \r\n }\r\n });\r\n } else {\r\n return <>;\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
      \r\n {renderCarouselIndicators()}\r\n {/*
    1. */}\r\n {/*
    2. */}\r\n {/*
    3. */}\r\n
    \r\n
    \r\n {mapProducts()}\r\n {/*
    */}\r\n {/* \"First*/}\r\n {/*
    */}\r\n {/*
    */}\r\n {/* \"Second*/}\r\n {/*
    */}\r\n {/*
    */}\r\n {/* \"Third*/}\r\n {/*
    */}\r\n
    \r\n \r\n \r\n Previous\r\n \r\n \r\n \r\n Next\r\n \r\n
    \r\n \r\n )\r\n}\r\n\r\nexport default UserFeedCarousel;\r\n","import React from \"react\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport FeedPost from \"components/Feed/FeedPost\";\r\nimport UserFeedCarousel from \"components/Feed/UserFeedCarousel\";\r\nimport FeedPostGridItem from \"components/Feed/FeedPostGridItem\";\r\nimport { trimProductsArray, getProperties } from \"sharedUtils/postFunctions\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { fetchUserSuggestions, blankUserSuggestion, mapPostMedia } from \"sharedUtils/userSuggestion\";\r\nimport ProfileInfoCardOnboarding from \"components/ProfileInfoCardOnboarding\";\r\nimport { DateTime } from \"luxon\";\r\n\r\n\r\nclass UserFeed extends React.Component {\r\n\r\n /**\r\n * \r\n * @param {{\r\n * isGrid:boolean,\r\n * loggedInUser:object\r\n * posts:[object]\r\n * fetchMore:Function\r\n * finishedFetching:boolean\r\n * showFollowSuggestions:boolean\r\n * deviceSize:string\r\n * deletePost:Function\r\n * updateParent:Function\r\n * showPins:boolean\r\n * }} props\r\n */\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n posts: [],\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.posts) {\r\n this.setState({ posts: [...this.props.posts] });\r\n }\r\n else {\r\n this.setState({ posts: [] });\r\n }\r\n\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (this.props.posts !== null && this.props.posts !== undefined && this.props.posts !== prevProps.posts) {\r\n this.setState({ posts: [...this.props.posts] })\r\n }\r\n }\r\n\r\n likePost = async (shareCode) => {\r\n\r\n let postsCopy = [...this.state.posts];\r\n let i = postsCopy.findIndex(post => post.shareCode === shareCode);\r\n\r\n let likedByUser = postsCopy[i].likedByUser;\r\n let num = likedByUser === true ? -1 : 1;\r\n\r\n postsCopy[i].likeCount += num;\r\n postsCopy[i].likedByUser = !likedByUser;\r\n\r\n await this.setState({ posts: postsCopy }, async () => {\r\n let url = `/api/post/likePost?shareCode=${shareCode}`\r\n let data = await postRequest(url);\r\n });\r\n }\r\n\r\n savePost = async (shareCode) => {\r\n let postsCopy = [...this.state.posts];\r\n let i = postsCopy.findIndex(post => post.shareCode === shareCode);\r\n\r\n let url = this.state.posts[i].savedByUser === false ? `/api/post/savePost` : `/api/post/removeSavedPost`;\r\n\r\n postsCopy[i].savedByUser = !this.state.posts[i].savedByUser;\r\n\r\n this.setState({ posts: postsCopy });\r\n\r\n let reqBody = { shareCode };\r\n let data = await postRequest(url, reqBody);\r\n }\r\n\r\n setPost = (post) => {\r\n let posts = [...this.state.posts];\r\n let i = posts.findIndex((p) => { return p.id === post.id });\r\n posts[i] = post;\r\n\r\n this.setState({ posts });\r\n }\r\n\r\n deletePost = (shareCode) => {\r\n let locationToDelete = this.props.posts.findIndex((post) => post.shareCode === shareCode);\r\n let updatedPosts = [...this.props.posts];\r\n updatedPosts.splice(locationToDelete, 1);\r\n if (this.props.updateParent) {\r\n this.props.updateParent(updatedPosts)\r\n }\r\n\r\n }\r\n\r\n togglePinned = async (shareCode) => {\r\n let posts = [...this.state.posts];\r\n let location = posts.findIndex((post) => post.shareCode === shareCode);\r\n\r\n let postRef = posts[location];\r\n let update = postRef.pinnedDate === null || postRef.pinnedDate === undefined ? DateTime.now().toUTC().toString() : null;\r\n posts[location].pinnedDate = update;\r\n\r\n this.setState({ posts })\r\n\r\n let updateObj = {\r\n pinnedDate: postRef.pinnedDate,\r\n title: postRef.title,\r\n content: postRef.content,\r\n id: postRef.id,\r\n user: {\r\n id: postRef.user.id,\r\n },\r\n status: postRef.status\r\n }\r\n\r\n let url = `/api/Post/TogglePinnedPost`;\r\n\r\n let res = await postRequest(url, updateObj);\r\n\r\n if (this.props.updateParent) {\r\n this.props.updateParent(posts)\r\n }\r\n }\r\n\r\n\r\n mapPosts = () => {\r\n let { posts } = this.state;\r\n let { isGrid } = this.props;\r\n\r\n\r\n\r\n if (posts != undefined || posts != null) {\r\n return posts.map((post, i) => {\r\n let redirectUrl = post.type === 2 ? `/Locker/LockerPage/${post?.shareCode}` : `/post/postPage/${post?.shareCode}`\r\n\r\n if (isGrid === true) { \r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n )\r\n }\r\n })\r\n\r\n }\r\n }\r\n\r\n displaySuggestions = () => {\r\n if (this.props.finishedFetching === true && this.props.showFollowSuggestions === true) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n You've reached the end of your feed. Here are some users we think you might enjoy following.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n let { isGrid } = this.props;\r\n\r\n if (isGrid === true) {\r\n return (\r\n
    \r\n \r\n {this.mapPosts()}\r\n \r\n\r\n
    \r\n {this.displaySuggestions()}\r\n
    \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n
    \r\n
    \r\n \r\n {this.mapPosts()}\r\n \r\n
    \r\n
    \r\n {this.displaySuggestions()}\r\n
    \r\n
    \r\n )\r\n\r\n }\r\n }\r\n}\r\n\r\nexport default UserFeed;\r\n","import React from \"react\";\r\nimport ProfileFilterBar from \"./ProfileFilterBar\";\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport blankFeedPost from \"sharedUtils/blankFeedPost\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport UserHeader from \"./UserHeader\";\r\nimport ProfileAboutSection from \"./ProfileAboutSection\"\r\nimport UserFeed from \"components/Feed/UserFeed\";\r\nimport ProductFeed from \"components/Feed/ProductFeed\";\r\nimport MessageDetails from \"../Account/MessageDetails\";\r\nimport { connect } from \"react-redux\";\r\nimport { toggleFollowersFollowingModal, closeAllModals, toggleFetchFollowing } from \"stateManagement/reducers/modalReducer\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\n\r\n\r\nclass User extends React.Component {\r\n state = {\r\n userInformation: {\r\n id: 0,\r\n proStatusId: 0,\r\n bio: \"\",\r\n name: \"\",\r\n imageUrl: \"\",\r\n tagLine: \"\",\r\n userName: \"\",\r\n followers: 0,\r\n following: 0,\r\n merchantProducts: {\r\n $values: []\r\n },\r\n sectors: {\r\n $values: []\r\n }\r\n },\r\n loggedInUser: {},\r\n profileBanner: \"images/Profile-Banner.png\",\r\n uploadingProfileBanner: false,\r\n followers: 0,\r\n following: 0,\r\n isGrid: true,\r\n lockers: [],\r\n products: [],\r\n posts: [],\r\n activityFeed: [],\r\n showMessageDetails: false,\r\n isFollowing: false,\r\n isLoading: true,\r\n finishedFetching: false,\r\n finishedFetchingProducts: false,\r\n selectedFile: {},\r\n selectedFileUrl: null,\r\n uploadingBackground: false,\r\n selectedCase: 1, //1:Activity, 2:Lockers, 3:Products, 4:Posts, 5:About\r\n postCount: 0,\r\n productCount: 0,\r\n lockerCount: 0,\r\n finishedFetchingActivity: false,\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false\r\n }\r\n\r\n toggleGrid = () => {\r\n let newIsGrid = !this.state.isGrid;\r\n this.setState({ isGrid: newIsGrid });\r\n }\r\n\r\n async componentDidMount() {\r\n this.props.closeAllModals();\r\n let userName = this.props.match.params.userName;\r\n\r\n let user = await this.fetchUserInformation(userName);\r\n if (user == undefined || user == null) {\r\n this.props.history.push(\"/NotFound\")\r\n }\r\n else {\r\n this.setState({ userInformation: user });\r\n\r\n await Promise.all([\r\n this.fetchCounts(user.id),\r\n this.fetchIsFollowing(user.id),\r\n this.fetchProducts(0, 99),\r\n this.fetchActivityFeed(0, 12)]);\r\n\r\n this.setState({ isLoading: false });\r\n }\r\n document.addEventListener(\"_productAddedEvent\", this.updateProducts);\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.updateProducts();\r\n }\r\n });\r\n }\r\n\r\n updateProducts = async () => {\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n let products = await getRequest(`${basePath}/?userName=${this.state.userInformation.userName}&skip=0&take=99&onlyPostedProducts=true`);\r\n let fullProducts = products?.map((product) => {\r\n product.user = this.state.userInformation\r\n return product;\r\n });\r\n this.setState({ products: fullProducts });\r\n }\r\n\r\n componentWillUnmount = () => {\r\n document.removeEventListener(\"_productAddedEvent\", this.updateProducts);\r\n window.removeEventListener('storage', () => { });\r\n }\r\n\r\n async componentDidUpdate(prevProps, prevState) {\r\n if (this.props.match.params.userName !== prevProps.match.params.userName) {\r\n this.props.closeAllModals();\r\n\r\n this.setState({\r\n profileBanner: \"images/Profile-Banner.png\",\r\n uploadingProfileBanner: false,\r\n followers: 0,\r\n following: 0,\r\n isGrid: true,\r\n lockers: [],\r\n products: [],\r\n posts: [],\r\n activityFeed: [],\r\n showMessageDetails: false,\r\n isFollowing: false,\r\n isLoading: true,\r\n finishedFetching: false,\r\n finishedFetchingProducts: false,\r\n selectedFile: {},\r\n selectedFileUrl: null,\r\n uploadingBackground: false,\r\n selectedCase: 1, //1:Activity, 2:Lockers, 3:Products, 4:Posts, 5:About\r\n postCount: 0,\r\n productCount: 0,\r\n lockerCount: 0,\r\n finishedFetchingActivity: false,\r\n finishedFetchingLockers: false,\r\n finishedFetchingPosts: false\r\n }, async () => {\r\n let user = await (this.fetchUserInformation(this.props.match.params.userName));\r\n if (user === undefined || user == null) {\r\n this.props.history.push(\"/NotFound\");\r\n //window.location.href = window.location.origin + \"/NotFound\";\r\n //this.setState({ userInformation: \"notFound\", isLoading: false });\r\n }\r\n else {\r\n this.setState({ userInformation: user });\r\n\r\n await Promise.all([\r\n this.fetchCounts(user.id),\r\n this.fetchIsFollowing(user.id),\r\n this.fetchProducts(0, 99),\r\n this.fetchActivityFeed(0, 24)]);\r\n\r\n this.setState({ isLoading: false })\r\n }\r\n })\r\n\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n selectMediaToUpload = (e) => {\r\n e.preventDefault();\r\n this.setState({ uploadingProfileBanner: true });\r\n let selectedFileTempUrl = URL.createObjectURL(e.target.files[0]);\r\n this.setState({ selectedFile: e.target.files[0], selectedFileUrl: selectedFileTempUrl }, async () => {\r\n let uploadImageResponse = await this.uploadBackroundImage();\r\n let userInformation = this.state.userInformation;\r\n userInformation.profileBannerUrl = uploadImageResponse.profileBannerUrl;\r\n\r\n this.setState({ userInformation, uploadingProfileBanner: false });\r\n })\r\n }\r\n\r\n uploadBackroundImage = async () => {\r\n if (this.state.selectedFile != null) {\r\n const formData = new FormData();\r\n formData.append(`profileBanner`, this.state.selectedFile);\r\n\r\n let url = `/api/Account/UploadProfileBannerPic`;\r\n let newProperties = await postRequest(url, formData, null, false);\r\n this.props.setLoggedInUser(newProperties);\r\n return newProperties;\r\n }\r\n else return null;\r\n }\r\n\r\n fetchUserInformation = async (username) => {\r\n let url = `/api/account/getProfile?userName=${username}`;\r\n let data = await getRequest(url);\r\n if (data == null || data == undefined) {\r\n return null;\r\n }\r\n else {\r\n this.setState({ userInformation: data }, async () => {\r\n if (data.proStatusId !== 1) {\r\n this.setState({ selectedCase: 5 });\r\n }\r\n await this.fetchIsFollowing(this.state.userInformation.id)\r\n });\r\n return data;\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n fetchCounts = async (userId) => {\r\n let url = `api/Post/GetPostCount?userId=${userId}&onlyPublished=true`;\r\n let count = await getRequest(url);\r\n\r\n let sum = count.length > 0 ? count.reduce(function (a, b) {\r\n return { count: a.count + b.count };\r\n }) : { count: 0 };\r\n let totalCount = sum.count;\r\n let lockerCount = 0;\r\n let lockers = count.find(({ userPostTypeId }) => userPostTypeId === 2);\r\n\r\n if (lockers) {\r\n lockerCount = lockers.count;\r\n }\r\n\r\n let productCountUrl = `/Products/GetUserMerchantProductCount?userId=${userId}`\r\n let productCount = (await getRequest(productCountUrl)).count;\r\n\r\n this.setState({ postCount: totalCount - lockerCount, lockerCount, productCount });\r\n }\r\n\r\n fetchIsFollowing = async (userId) => {\r\n let url = `/api/Account/IsFollowing?id=${userId}`;\r\n let data = await getRequest(url);\r\n this.setState({ isFollowing: data });\r\n }\r\n\r\n fetchActivityFeed = async (skip, take) => {\r\n let url = this.props.loggedInUser != null ? '/api/post/getPostsByUserAuthorized' : '/api/post/getPostsByUser';\r\n\r\n let data = await getRequest(`${url}?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}`);\r\n\r\n let lockers = data.filter((post) => post.type === 2);\r\n let lockerIds = this.state.lockers.map((locker) => locker.id);\r\n\r\n let posts = data.filter((post) => post.type !== 2);\r\n let postIds = this.state.posts.map((post) => post.id);\r\n\r\n let lockersToAdd = lockers.filter((locker) => !lockerIds.includes(locker.id));\r\n let postsToAdd = posts.filter((post) => !postIds.includes(post.id));\r\n\r\n this.setState({\r\n activityFeed: this.state.activityFeed.concat(data),\r\n finishedFetchingActivity: data.length < take ? true : false,\r\n finishedFetchingPosts: data.length < take ? true : this.state.finishedFetchingPosts,\r\n finishedFetchingLockers: data.length < take ? true : this.state.finishedFetchingLockers,\r\n lockers: [...this.state.lockers, ...lockersToAdd],\r\n posts: [...this.state.posts, ...postsToAdd]\r\n });\r\n }\r\n\r\n fetchProducts = async (skip, take) => {\r\n this.setState({ finishedFetchingProducts: false })\r\n\r\n let basePath = this.props.loggedInUser ? \"/Products/GetUserMerchantProductsAuthorized\" : \"/Products/GetUserMerchantProducts\";\r\n\r\n /**@type [] */\r\n let products = await getRequest(`${basePath}?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}&onlyPostedProducts=true`);\r\n let fullProducts = products.map((product) => {\r\n product.user = this.state.userInformation\r\n return product;\r\n });\r\n\r\n let productList = [...this.state.products, ...fullProducts];\r\n\r\n this.setState({ products: productList });\r\n\r\n if (!take) {\r\n this.setState({ finishedFetchingProducts: true })\r\n } else if (products.length < take) {\r\n this.setState({ finishedFetchingProducts: true })\r\n }\r\n }\r\n\r\n fetchLockers = async (skip, take) => {\r\n var postResults = await getRequest(`/api/post/getPostsByUser?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}&onlyLockers=true`);\r\n\r\n let lockers = postResults.filter((post) => post.type === 2);\r\n let lockerIds = this.state.lockers.map((locker) => locker.id);\r\n\r\n let lockersToAdd = lockers.filter((locker) => !lockerIds.includes(locker.id));\r\n\r\n this.setState({ lockers: [...this.state.lockers, ...lockersToAdd], finishedFetchingLockers: postResults.length < take ? true : false });\r\n }\r\n\r\n fetchPosts = async (skip, take) => {\r\n var postResults = await getRequest(`/api/post/getPostsByUser?userName=${this.state.userInformation.userName}&skip=${skip}&take=${take}&onlyPosts=true`);\r\n\r\n let posts = postResults.filter((post) => post.type !== 2);\r\n let postIds = this.state.posts.map((post) => post.id);\r\n let postsToAdd = posts.filter((post) => !postIds.includes(post.id));\r\n\r\n this.setState({ posts: [...this.state.posts, ...postsToAdd], finishedFetchingPosts: postResults.length < take ? true : false });\r\n }\r\n\r\n deletePost = (shareCode) => {\r\n\r\n }\r\n\r\n displayContent = (isGrid = this.state.isGrid) => {\r\n //let showPins = this.props.loggedInUser.id === this.state.userInformation.id;\r\n switch (this.state.selectedCase) {\r\n case 3: {\r\n if (isGrid === false) {\r\n return this.fetchProducts(this.state.products.length, 99)} />\r\n }\r\n return (\r\n
    \r\n
    \r\n this.fetchProducts(this.state.products.length, 99)}\r\n />\r\n
    \r\n
    \r\n )\r\n }\r\n case 1: {\r\n return (\r\n this.fetchActivityFeed(this.state.activityFeed.length, 24)}\r\n updateParent={(updates) => this.setState({ activityFeed: updates })}\r\n showPins={true}\r\n />\r\n )\r\n }\r\n case 2: {\r\n return this.fetchLockers(this.state.lockers.length, 24)}\r\n updateParent={(updates) => this.setState({ lockers: updates })}\r\n />\r\n }\r\n case 4: {\r\n return this.fetchPosts(this.state.posts.length, 24)}\r\n updateParent={(updates) => this.setState({ posts: updates })}\r\n />\r\n }\r\n case 5: {\r\n return ;\r\n }\r\n default: {\r\n return this.fetchActivityFeed(this.state.activityFeed.length, 24)}\r\n updateParent={(updates) => this.setState({ activityFeed: updates })}\r\n />\r\n }\r\n }\r\n }\r\n\r\n followOrUnfollow = async () => {\r\n let token = await authService.getAccessToken();\r\n\r\n let url = \"/api/Account/\"\r\n if (this.state.isFollowing) {\r\n url += \"Unfollow\"\r\n } else {\r\n url += \"Follow\"\r\n }\r\n url += \"?id=\" + this.state.userInformation.id;\r\n\r\n const response = await fetch(url,\r\n {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n });\r\n\r\n if (response.ok) {\r\n this.setState({ isFollowing: !this.state.isFollowing }, () => {\r\n let { followers } = this.state.userInformation;\r\n let newCount = this.state.isFollowing === false ? (followers - 1) : (followers + 1);\r\n let newState = { ...this.state };\r\n newState.userInformation.followers = newCount;\r\n this.setState(newState);\r\n\r\n });\r\n\r\n if (!this.props.fetchFollowing) this.props.toggleFetchFollowing();\r\n }\r\n }\r\n\r\n onClickMessage = async () => {\r\n this.setState({ showMessageDetails: true });\r\n }\r\n\r\n onClickBack = async () => {\r\n this.setState({ showMessageDetails: false });\r\n }\r\n\r\n displayFilterBar = () => {\r\n if (this.state.selectedCase !== 5) {\r\n return \r\n }\r\n }\r\n\r\n render() {\r\n let { selectedCase, isLoading } = this.state;\r\n let { name, imageUrl, proStatusId, tagLine, userName, followers, following } = this.state.userInformation;\r\n if (isLoading === true) {\r\n return \r\n }\r\n else if (this.state.userInformation === \"notFound\") {\r\n return

    This user does not exist

    \r\n }\r\n else {\r\n if (this.state.showMessageDetails) {\r\n return \r\n }\r\n\r\n return (\r\n
    \r\n {\r\n if (this.props.loggedInUser) {\r\n this.props.toggleFollowersFollowingModal(this.state.userInformation.id, text, null)\r\n }\r\n else {\r\n this.props.toggleSignUpModal()\r\n }\r\n\r\n }}\r\n userInformation={this.state.userInformation}\r\n fetchProducts={() => this.setState({ selectedCase: 3 })}\r\n fetchActivityFeed={() => this.setState({ selectedCase: 1 })}\r\n fetchPosts={() => this.setState({ selectedCase: 4 })}\r\n fetchLockers={() => this.setState({ selectedCase: 2 })}\r\n selectedCase={selectedCase}\r\n isAuthenticated={this.props.loggedInUser !== undefined}\r\n isLoggedInUser={this.props.loggedInUser?.userName === userName}\r\n loggedInUser={this.props.loggedInUser}\r\n setLoggedInUser={this.props.setLoggedInUser}\r\n isFollowing={this.state.isFollowing}\r\n followAction={this.followOrUnfollow}\r\n onClickMessage={this.onClickMessage}\r\n productCount={this.state.productCount}\r\n postCount={this.state.postCount}\r\n lockerCount={this.state.lockerCount}\r\n fetchAbout={() => this.setState({ selectedCase: 5 })}\r\n uploadingProfileBanner={this.state.uploadingProfileBanner}\r\n />\r\n\r\n this.selectMediaToUpload(e)}\r\n style={{ display: \"none\" }}\r\n />\r\n\r\n {this.displayFilterBar()}\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {this.displayContent()}\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n
    \r\n )\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { fetchFollowing: storeState.modalReducer.fetchFollowing }\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleFollowersFollowingModal, closeAllModals, toggleFetchFollowing })(User);","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nclass ErrorPage extends React.Component {\r\n render() {\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    Oops
    \r\n
    It looks like something's broken. We'll fix it asap. For now,
    \r\n
    \r\n Go \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default ErrorPage;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\n\r\n/**\r\n * \r\n * @param {{link:string,icon:JSX,title:string}} props\r\n */\r\nconst DashboardTile = (props) => {\r\n return (\r\n \r\n {props.icon}\r\n

    \r\n {props.title}\r\n

    \r\n \r\n )\r\n}\r\n\r\nexport default DashboardTile;","import React from \"react\";\r\nimport DashboardTile from \"components/Dashboard/DashboardTile\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport _ from \"lodash\";\r\n\r\nclass AdminDashboard extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n adminLinks = _.sortBy([\r\n { link: \"/Admin/BrandApplications\", title: \"Merchant Partner applications\", icon: },\r\n { link: \"/Admin/CreatorApplications\", title: \"Creator applications\", icon: },\r\n { link: \"/Admin/Brands\", title: \"Merchant Partners\", icon: },\r\n { link: \"/Admin/AffiliateNetworks\", title: \"Affiliate Networks\", icon: },\r\n { link: \"/Admin/Sectors\", title: \"Sectors\", icon: },\r\n { link: \"/Admin/CommissionOverrides\", title: \"Commission Overrides\", icon: },\r\n { link: \"/Admin/CreateCommission\", title: \"Create Commission\", icon: },\r\n { link: \"/Admin/Users\", title: \"Users\", icon: },\r\n { link: \"/Admin/PaymentRuns\", title: \"Payment Runs\", icon: },\r\n { link: \"/Admin/ItOperations\", title: \"IT Operations\", icon: },\r\n { link: \"/Admin/Category\", title: \"Category\", icon: },\r\n { link: \"/Admin/Analytics/Analytics\", title: \"Analytics\", icon: },\r\n { link: \"/Admin/ManageBrands\", title: \"Manage Brands\", icon: },\r\n { link: \"/Admin/CurrentDeals\", title: \"Current Deals\", icon: },\r\n { link: \"/Admin/Featured\", title: \"Featured\", icon: },\r\n ], x => x.title);\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' }\r\n ]\r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(true);\r\n }\r\n\r\n displayAdminLinks = () => {\r\n return this.adminLinks.map((adminLink, i) => {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n

    Admin

    \r\n

    Manage users and Merchant Partners

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayAdminLinks()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default AdminDashboard;","import React, { useState } from \"react\";\r\nimport { Dropdown, DropdownToggle, DropdownMenu, DropdownItem } from 'reactstrap';\r\n\r\n\r\n/**\r\n * \r\n * @param {{application:object}} props\r\n */\r\nconst CreatorApplicationActionDropdown = (props) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n return (\r\n setIsOpen(!isOpen)}>\r\n \r\n Action\r\n \r\n\r\n \r\n { props.approveApplication(props.application); }}>\r\n Approve\r\n \r\n\r\n {props.rejectApplication(props.application); }}>\r\n Reject\r\n \r\n\r\n {\r\n props.deletedTab ?\r\n { props.unDeleteApplication(props.application); }}>\r\n UnDelete\r\n \r\n :\r\n { props.deleteApplication(props.application); }}>\r\n Delete\r\n \r\n }\r\n \r\n \r\n\r\n )\r\n}\r\n\r\n\r\nexport default CreatorApplicationActionDropdown;\r\n\r\n","import React from \"react\"\r\n\r\nconst DownloadIcon = (props) => {\r\n return <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n}\r\n\r\nexport default DownloadIcon;","import React from \"react\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport CreatorApplicationActionDropdown from \"views/Admin/CreatorApplicationActionDropdown\";\r\nimport { convertToLocaleDateTimeString } from \"../../sharedUtils/timeUtils\";\r\nimport { Link } from \"react-router-dom\"\r\nimport FeedFilterBar from \"components/FeedFilterBar\";\r\nimport DownloadIcon from \"components/icons/DownloadIcon\";\r\nimport App from \"../../App\";\r\n\r\nclass CreatorApplications extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n applications: [],\r\n selectedCase: 0,\r\n dateAsc: true,\r\n isDragging: false,\r\n startX: 0,\r\n scrollLeft: 0,\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n let applications = await this.fetchApplications();\r\n this.setState({ applications });\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/CreatorApplications', text: 'Creator Applications' }\r\n ]\r\n\r\n handleMouseDown = (e) => {\r\n e.preventDefault();\r\n this.setState({\r\n isDragging: true,\r\n startX: e.clientX,\r\n scrollLeft: this.scrollContainer.scrollLeft,\r\n });\r\n\r\n document.addEventListener('mousemove', this.handleMouseMove);\r\n document.addEventListener('mouseup', this.handleMouseUp);\r\n };\r\n\r\n handleMouseMove = (e) => {\r\n if (!this.state.isDragging) return;\r\n const x = e.clientX;\r\n const walk = (x - this.state.startX) * 3; // Adjust the scrolling speed here\r\n this.scrollContainer.scrollLeft = this.state.scrollLeft - walk;\r\n };\r\n\r\n handleMouseUp = () => {\r\n this.setState({\r\n isDragging: false,\r\n });\r\n\r\n document.removeEventListener('mousemove', this.handleMouseMove);\r\n document.removeEventListener('mouseup', this.handleMouseUp);\r\n };\r\n\r\n fetchApplications = async () => {\r\n let url = `api/CreatorApplicationAdmin/GetAllUnapprovedApplications`;\r\n\r\n if (this.props.loggedInUser?.isAdmin === true) {\r\n let results = await getRequest(url);\r\n return results;\r\n }\r\n else {\r\n return [];\r\n }\r\n \r\n }\r\n\r\n fetchApprovedOrDeniedApplications = async (isApproved) => {\r\n let url = `api/CreatorApplicationAdmin/GetApprovedOrRejectedApplications?isApproved=${isApproved}`;\r\n\r\n if (this.props.loggedInUser?.isAdmin === true) {\r\n let results = await getRequest(url);\r\n return results; \r\n }\r\n }\r\n\r\n fetchAllApplications = async () => {\r\n let url = `api/CreatorApplicationAdmin/GetAllApplications`;\r\n\r\n if (this.props.loggedInUser?.isAdmin === true) {\r\n let results = await getRequest(url);\r\n return results;\r\n } \r\n }\r\n\r\n platformUsernameAsLink(application) {\r\n let url = \"\";\r\n switch (application?.platform?.toLowerCase()) {\r\n case \"facebook\":\r\n url = `https://www.facebook.com/${application.platformUsername}`;\r\n break;\r\n case \"instagram\":\r\n let normalizedInstagram = application.platformUsername?.startsWith(\"@\") === true ? application.platformUsername.substring(1) : application.platformUsername\r\n url = `https://www.instagram.com/${normalizedInstagram}`;\r\n break;\r\n case \"youtube\":\r\n url = `https://www.youtube.com/${application.platformUsername}`;\r\n break;\r\n case \"tiktok\":\r\n url = `https://www.tiktok.com/@${application.platformUsername}`;\r\n break;\r\n case \"blog\":\r\n url = application.platformUsername.startsWith(\"http\") ? url : `https://${application.platformUsername}`;\r\n break;\r\n default:\r\n return;\r\n }\r\n return (\r\n {application.platformUsername}\r\n );\r\n }\r\n\r\n updateApplication = async (application, forDelete = false) => {\r\n let applications = this.state.applications;\r\n let index = applications.indexOf((app) => { return app.id === application.id });\r\n applications[index] = application;\r\n this.setState({ applications });\r\n\r\n let url = `api/CreatorApplicationAdmin/UpdateApplication?delete=` + forDelete;\r\n await postRequest(url, application);\r\n }\r\n\r\n approveApplication = (application) => {\r\n application.approved = 1;\r\n let oldApplications = [...this.state.applications];\r\n let applications = oldApplications.filter(app => app.id !== application.id);\r\n\r\n this.updateApplication(application);\r\n this.setState({ applications });\r\n }\r\n\r\n rejectApplication = (application) => {\r\n application.approved = 0;\r\n let oldApplications = [...this.state.applications];\r\n let applications = oldApplications.filter(app => app.id !== application.id);\r\n\r\n this.updateApplication(application);\r\n this.setState({ applications });\r\n }\r\n\r\n deleteApplication = (application) => {\r\n let json = JSON.parse(application.jsonApplication);\r\n json.hide = true;\r\n let jsonApplication = JSON.stringify(json);\r\n application.jsonApplication = jsonApplication;\r\n\r\n let oldApplications = [...this.state.applications];\r\n let applications = oldApplications.map(app => {\r\n if (app.id === application.id) {\r\n return application;\r\n } else {\r\n return app;\r\n }\r\n })\r\n\r\n this.updateApplication(application, true);\r\n this.setState({ applications });\r\n }\r\n\r\n unDeleteApplication = (application) => {\r\n let json = JSON.parse(application.jsonApplication);\r\n json.hide = false;\r\n let jsonApplication = JSON.stringify(json);\r\n application.jsonApplication = jsonApplication;\r\n\r\n let oldApplications = [...this.state.applications];\r\n let applications = oldApplications.map(app => {\r\n if (app.id === application.id) {\r\n return application;\r\n } else {\r\n return app;\r\n }\r\n })\r\n\r\n this.updateApplication(application, true);\r\n this.setState({ applications });\r\n }\r\n\r\n renderUpcomingProjects = (upcomingProjects) => {\r\n if (upcomingProjects && upcomingProjects.length > 0) {\r\n const descriptionUrlObjectArray = upcomingProjects.split(',').map((item) => {\r\n const [description, url] = item.trim().split('!@#');\r\n return { description, url };\r\n });\r\n\r\n return (\r\n
    \r\n {descriptionUrlObjectArray.map((item, index) => (\r\n
    0 ? \"mt-3\" : \"\"}`} style={{ display: \"flex\", alignItems: \"center\" }}>\r\n
    {item.description}
    \r\n
    \r\n \r\n
    \r\n
    \r\n ))}\r\n
    \r\n );\r\n }\r\n }\r\n\r\n\r\n\r\n displayTableRows = () => {\r\n if (this.state.applications?.length > 0) {\r\n return this.state.applications?.map((application, i) => {\r\n let jsonApplication = JSON.parse(application.jsonApplication);\r\n //if (application.approved == null) {\r\n if ((this.state.selectedCase === 3 && !!(jsonApplication.hide)) || (this.state.selectedCase !== 3 && !(jsonApplication.hide))) {\r\n return (\r\n \r\n {convertToLocaleDateTimeString(application.createdDate, false)}\r\n {jsonApplication?.realName}\r\n \r\n \r\n {jsonApplication?.userName}\r\n \r\n \r\n {jsonApplication?.phone}\r\n {application.hasOwnProperty('appliedPreviously') ? application.appliedPreviously.toString() : ''}\r\n {jsonApplication?.followers}\r\n {jsonApplication?.platform}\r\n {this.platformUsernameAsLink(jsonApplication)}\r\n \r\n {jsonApplication?.additionalPlatforms && (\r\n
    \r\n {jsonApplication.additionalPlatforms.map((item, index) => (\r\n
    \r\n {item.platform}, {this.platformUsernameAsLink({ platform: item.platform, platformUsername: item.userName, noMargin: true })}, {item.followers}\r\n
    \r\n ))}\r\n
    \r\n )}\r\n \r\n \r\n {\r\n !!(jsonApplication.blog) ?\r\n {jsonApplication.blog}\r\n :\r\n <>\r\n }\r\n \r\n {!!(jsonApplication?.usState) ? jsonApplication.usState + \", \" + jsonApplication.audience : jsonApplication?.audience}\r\n {jsonApplication?.learnMore}\r\n {this.renderUpcomingProjects(jsonApplication?.upcomingProjects)}\r\n {jsonApplication?.mediaPermission}\r\n {jsonApplication?.hearAboutUs}\r\n {jsonApplication?.postFrequency}\r\n \r\n
    \r\n {jsonApplication?.whyRockporchToday}\r\n
    \r\n \r\n {jsonApplication?.howWillUseRockporch}\r\n {jsonApplication?.timeCommitment}\r\n {application.referralUserName}\r\n \r\n \r\n \r\n\r\n \r\n )\r\n };\r\n return <>;\r\n })\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n downwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n upwardChevron = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleDateSort = () => {\r\n const sortedApplications = [...this.state.applications];\r\n const ascending = !this.state.dateAsc;\r\n\r\n sortedApplications.sort((a, b) => {\r\n const dateA = new Date(a.createdDate);\r\n const dateB = new Date(b.createdDate);\r\n\r\n // Use ternary operator to determine sorting order\r\n return ascending ? dateA - dateB : dateB - dateA;\r\n });\r\n\r\n this.setState({ applications: sortedApplications, dateAsc: !this.state.dateAsc });\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Application Date\",\"Real Name\",\"User Name\", \"Phone\",\"Applied Previously\", \"Primary Followers\", \"Primary Platform\", \"Primary Platform Username\", \"Other Platforms\", \"Personal Blog\", \"Audience\", \"Learn More\",\"Upcoming Projects\", \"Media\", \"Heard\", \"Weekly Posts\", \"Going On In Life?\", \"How RockPorch Will Be Used\", \"Consider Full-Time\", \"Referrer\", \"Approve\"];\r\n return headers.map((header, i) => {\r\n if (header === \"Application Date\") {\r\n return (\r\n \r\n {header}\r\n \r\n \r\n )\r\n }\r\n return (\r\n { header}\r\n )\r\n })\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Pending\",\r\n case: 0,\r\n action: async () => {\r\n let applications = await this.fetchApplications();\r\n this.setState({ applications:applications, selectedCase: 0 })\r\n }\r\n },\r\n {\r\n name: \"Approved\",\r\n case: 1,\r\n action: async() => {\r\n let applications = await this.fetchApprovedOrDeniedApplications(1);\r\n this.setState({ applications: applications, selectedCase: 1 });\r\n }\r\n },\r\n {\r\n name: \"Rejected\",\r\n case: 2,\r\n action: async () => {\r\n let applications = await this.fetchApprovedOrDeniedApplications(0);;\r\n this.setState({ applications: applications, selectedCase: 2 });\r\n }\r\n },\r\n {\r\n name: \"Deleted\",\r\n case: 3,\r\n action: async () => {\r\n let applicationsAll = await this.fetchAllApplications();\r\n\r\n let applications = applicationsAll.filter(app => {\r\n if (app.jsonApplication) {\r\n try {\r\n let json = JSON.parse(app.jsonApplication);\r\n if (json && json.hide === true) {\r\n return true;\r\n }\r\n } catch (error) {\r\n console.error('Error parsing jsonApplication:', error);\r\n }\r\n }\r\n return false;\r\n });\r\n\r\n this.setState({ applications, selectedCase: 3 });\r\n }\r\n }\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Creator Applications

    \r\n

    Manage creator applications

    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n {this.displayToggleButtons()}\r\n \r\n\r\n
    \r\n
    \r\n (this.scrollContainer = container)}\r\n onMouseDown={this.handleMouseDown}\r\n >\r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default CreatorApplications;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport { UncontrolledPopover, Popover, PopoverBody } from \"reactstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport ActionButton from \"../../components/ActionButton\"\r\nimport Modal from 'react-modal';\r\nimport { filter, wrap } from \"lodash\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\n\r\n\r\nclass CreateCommission extends React.Component {\r\n\r\n state = {\r\n filter: \"\",\r\n campaignFilter: \"\",\r\n filteredPartners: [],\r\n filteredCampaignPartners: [],\r\n partners: [],\r\n options: [],\r\n merchantValue: [],\r\n campaignMerchantValue: [],\r\n selectedMerchant: [],\r\n selectedCampaignMerchant: [],\r\n selectedUser: [],\r\n loading: false,\r\n sectors: [],\r\n show: false,\r\n isLoadingMerchants: false,\r\n isLoading: false,\r\n saleAmount: 0,\r\n showError: false,\r\n transactionDate: \"\",\r\n isSubmitting: false,\r\n showMerchantInput: false,\r\n commissionRate: 0,\r\n creatorCommission: 0,\r\n popover: false,\r\n popoverMessage: \"Successfully saved commission...\",\r\n zeroSaleAmountCheck: false,\r\n hundredPercentCommissionRate: false,\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/CreateCommission', text: 'Create Commission' }\r\n ]\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n\r\n\r\n componentDidUpdate = (prevState) => {\r\n let element = document.querySelector('html');\r\n\r\n const handleClick = () => {\r\n if (this.state.popover) {\r\n this.setState({\r\n popover: false, popoverMessage: \"Successfully saved commission...\" });\r\n }\r\n }\r\n \r\n\r\n element.addEventListener('click', function (e) {\r\n handleClick();\r\n });\r\n }\r\n\r\n getPartners = async () => {\r\n this.setState({ loading: true });\r\n let partnersUrl = `/api/Merchant/GetCommissionEstimate?getMaxByMerchant=true&getAllMerchants=true&userId=${this.state.selectedUser[0].id}`;\r\n let partners = await getRequest(partnersUrl);\r\n this.setState({ partners: partners, filteredPartners: partners, loading: false });\r\n if (this.state.selectedMerchant.length > 0) {\r\n const merchantName = this.state.selectedMerchant[0].merchantName;\r\n const selectedMerchant = partners.filter(p => p.merchantName === merchantName);\r\n this.setState({ selectedMerchant });\r\n }\r\n }\r\n\r\n onInputChange = (e) => {\r\n let filter = e.target.value;\r\n let filteredPartners = this.state.partners.filter(partner => partner.merchantName.toLowerCase().includes(filter.toLowerCase()));\r\n\r\n this.setState({ filter: filter, filteredPartners: filteredPartners });\r\n };\r\n\r\n onInputChangeQuery = (query) => {\r\n let filter = query;\r\n let filteredPartners = this.state.partners.filter(partner => partner.merchantName.toLowerCase().includes(filter.toLowerCase()));\r\n\r\n this.setState({ filter: filter, filteredPartners: filteredPartners });\r\n };\r\n\r\n onInputChangeCampaignMerchantQuery = (query) => {\r\n let campaignFilter = query;\r\n let filteredCampaignPartners = this.state.partners.filter(partner => partner.merchantName.toLowerCase().includes(campaignFilter.trim().toLowerCase()));\r\n\r\n this.setState({ campaignFilter, filteredCampaignPartners });\r\n };\r\n\r\n setSelectedMerchant = (selectedMerchant) => {\r\n if (selectedMerchant.length > 0) {\r\n this.setState({ selectedMerchant, commissionRate: selectedMerchant[0].commission, creatorCommission: this.state.hundredPercentCommissionRate ? this.state.saleAmount : this.state.saleAmount * selectedMerchant[0].commission })\r\n } else {\r\n this.setState({ selectedMerchant: [] });\r\n }\r\n }\r\n\r\n setSelectedCampaignMerchant = (selectedCampaignMerchant) => {\r\n if (selectedCampaignMerchant.length > 0) {\r\n this.setState({ selectedCampaignMerchant, commissionRate: selectedCampaignMerchant[0].commission, creatorCommission: this.state.hundredPercentCommissionRate ? this.state.saleAmount : this.state.saleAmount * selectedCampaignMerchant[0].commission })\r\n } else {\r\n this.setState({ selectedCampaignMerchant: [] });\r\n }\r\n }\r\n\r\n setSelected = async (selectedUser) => {\r\n await this.setState({ selectedUser, filteredPartners: [], showMerchantInput: false, isLoadingMerchants: true })\r\n if (selectedUser.length > 0) {\r\n\r\n await this.getPartners();\r\n this.setState({ showMerchantInput: true, isLoadingMerchants: false })\r\n }\r\n }\r\n \r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\r\n\r\n onCommissionInputChange = (e) => {\r\n this.setState({ showError: false, saleAmount: e.target.value, creatorCommission: this.state.hundredPercentCommissionRate ? e.target.value : e.target.value * this.state.commissionRate })\r\n }\r\n\r\n onDateInputChange = (e) => {\r\n this.setState({ transactionDate: e.target.value })\r\n }\r\n\r\n onSubmit = async () => {\r\n const saleAmount = Number.parseFloat(this.state.saleAmount);\r\n if (Number.isNaN(saleAmount) || saleAmount <= 0) {\r\n this.setState({ saleAmount: 0, showError: true })\r\n return;\r\n }\r\n\r\n this.setState({ isSubmitting: true });\r\n\r\n const userId = this.state.selectedUser[0].id;\r\n const merchantHostname = this.state.selectedMerchant[0].merchantHostname;\r\n const commission = this.state.hundredPercentCommissionRate ? 1 : this.state.selectedMerchant[0].commission;\r\n const apmId = this.state.selectedMerchant[0].affiliateProgramManagerId !== 0 ? this.state.selectedMerchant[0].affiliateProgramManagerId : 1; // just force an APM\r\n const date = this.state.transactionDate;\r\n const offset = new Date(this.state.transactionDate).getTimezoneOffset();\r\n const zeroSaleAmount = this.state.zeroSaleAmountCheck;\r\n const campaignMerchantHostname =\r\n this.state.selectedCampaignMerchant?.[0]?.merchantHostname || \"\";\r\n\r\n const commissionInfo = {\r\n userId,\r\n merchantHostname,\r\n commission,\r\n saleAmount,\r\n apmId,\r\n date,\r\n offset,\r\n zeroSaleAmount,\r\n campaignMerchantHostname,\r\n };\r\n let url = '/api/Account/CreateCommission';\r\n let result = await postRequest(url, commissionInfo);\r\n\r\n if (typeof result?.commission?.commissionAmount === \"number\") {\r\n this.setState({ isSubmitting: false, popover: true });\r\n } else {\r\n this.setState({ isSubmitting: false, popover: true, popoverMessage: \"ERROR submitting commission...\" });\r\n }\r\n }\r\n\r\n onChangeDummy = () => {\r\n\r\n }\r\n\r\n handlePopover = () => {\r\n this.setsState({\r\n popover: false\r\n });\r\n }\r\n\r\n onChangeZeroSaleAmountCheck = () => {\r\n this.setState({ zeroSaleAmountCheck: !this.state.zeroSaleAmountCheck });\r\n }\r\n\r\n onChangeHundredPercentCommissionRate = () => {\r\n this.setState({ hundredPercentCommissionRate: !this.state.hundredPercentCommissionRate });\r\n }\r\n\r\n render() {\r\n let enableSubmit = !!(this.state.saleAmount) && this.state.selectedUser.length > 0 && this.state.selectedMerchant.length > 0 && this.state.transactionDate.length > 0;\r\n\r\n //if (this.state.loading) {\r\n // return \r\n //}\r\n return (\r\n
    \r\n
    \r\n \r\n

    Create Commission

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.setSelected(selected)}\r\n isLoading={this.state.isLoading}\r\n options={this.state.options}\r\n placeholder=\"Search for users...\" />\r\n
    \r\n
    \r\n
    \r\n\r\n {this.state.showMerchantInput ?\r\n
    \r\n
    \r\n
    \r\n this.setSelectedMerchant(selected)}\r\n isLoading={this.state.isLoadingMerchants}\r\n options={this.state.filteredPartners}\r\n placeholder=\"Search for merchants...\" />\r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n
    \r\n this.setSelectedMerchant(selected)}\r\n isLoading={this.state.isLoadingMerchants}\r\n options={this.state.filteredPartners}\r\n placeholder=\"Search for merchants...\" />\r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n {this.state.selectedMerchant?.length > 0 ?\r\n
    \r\n
    \r\n
    \r\n this.setSelectedCampaignMerchant(selected)}\r\n isLoading={this.state.isLoadingMerchants}\r\n options={this.state.filteredCampaignPartners}\r\n placeholder=\"Search for campaign merchants...\" />\r\n
    \r\n
    \r\n
    \r\n :\r\n
    \r\n
    \r\n
    \r\n this.setSelectedCampaignMerchant(selected)}\r\n isLoading={this.state.isLoadingMerchants}\r\n options={this.state.filteredCampaignPartners}\r\n placeholder=\"Search for campaign merchants...\" />\r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {this.state.showError ? \r\n

    Sales Amount must be a number greater than zero

    \r\n : <>\r\n }\r\n \r\n this.onCommissionInputChange(e)}\r\n value={this.state.saleAmount !== 0 ? this.state.saleAmount: \"\"}\r\n />\r\n
    \r\n\r\n
    \r\n

    ×

    \r\n
    \r\n\r\n \r\n \r\n this.onChangeDummy(e)}\r\n value={this.state.hundredPercentCommissionRate ? \"100%\" : this.state.commissionRate != null && this.state.commissionRate !== 0 ? this.state.commissionRate * 100 + \"%\" : \"\"}\r\n />\r\n \r\n\r\n
    \r\n

    =

    \r\n
    \r\n \r\n \r\n this.onChangeDummy}\r\n value={this.state.creatorCommission != null && this.state.creatorCommission !== 0 ? \"$\" + Number.parseFloat(this.state.creatorCommission).toFixed(2) : \"\"}\r\n />\r\n \r\n
    \r\n\r\n \r\n \r\n this.onDateInputChange(e)}\r\n value={this.state.transactionDate}\r\n />\r\n \r\n\r\n \r\n Submit\r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default CreateCommission;","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport Modal from \"components/Modal\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { Typeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\n\r\nclass BrandSelectorForm extends React.Component {\r\n state = {\r\n options: [],\r\n selected: [],\r\n loading: false\r\n }\r\n\r\n setSelected = (selected) => {\r\n this.setState({ selected });\r\n }\r\n\r\n cleanUp = () => {\r\n this.setState({ selected: [], loading: false });\r\n this.props.toggleModal();\r\n }\r\n\r\n submit = () => {\r\n this.setState({ loading: true });\r\n this.props.setMerchantUser(this.state.selected[0]);\r\n this.cleanUp();\r\n }\r\n\r\n componentDidMount = async () => {\r\n let partnersUrl = '/api/Merchant/GetCommissionEstimate?getMaxByMerchant=true';\r\n let partners = await getRequest(partnersUrl);\r\n\r\n let options = partners.map(partner => ({ ...partner, label: partner.merchantName }))\r\n this.setState({ options });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    \r\n
    Assign Merchant Partner
    \r\n
    \r\n this.setSelected(selected)}\r\n options={this.state.options}\r\n selected={this.state.selected}\r\n placeholder=\"Search for Merchant Partner...\" />\r\n\r\n
    \r\n \r\n\r\n { this.submit(); }}\r\n isDisabled={this.state.selected.length === 0}\r\n isLoading={this.state.submitting}\r\n >\r\n Assign\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default BrandSelectorForm;","import React from \"react\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport BrandApplicationActionDropdown from \"views/Admin/CreatorApplicationActionDropdown\";\r\nimport BrandSelectorForm from \"views/Admin/BrandSelectorForm\";\r\n\r\nclass BrandApplications extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n applications: [],\r\n showModal: false,\r\n application: null\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n let applications = await this.fetchApplications();\r\n this.setState({ applications });\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/BrandApplications', text: 'Merchant Parnter Applications' }\r\n ]\r\n\r\n fetchApplications = async () => {\r\n let url = `api/BrandApplicationAdmin/GetAllUnapprovedApplications`;\r\n\r\n if (this.props.loggedInUser.isAdmin === true) {\r\n let results = await getRequest(url);\r\n return results;\r\n }\r\n else {\r\n return [];\r\n }\r\n\r\n }\r\n\r\n updateApplication = async (application) => {\r\n let applications = this.state.applications;\r\n let index = applications.indexOf((app) => { return app.id === application.id });\r\n applications[index] = application;\r\n this.setState({ applications });\r\n\r\n let url = `api/BrandApplicationAdmin/UpdateApplication`;\r\n await postRequest(url, application);\r\n }\r\n\r\n approveApplication = (application) => {\r\n this.setState({ application, showModal: true });\r\n }\r\n\r\n rejectApplication = (application) => {\r\n application.approved = 0;\r\n this.updateApplication(application);\r\n }\r\n\r\n setMerchantUser = (merchant) => {\r\n let application = this.state.application;\r\n application.merchantId = merchant.id;\r\n application.approved = 1;\r\n\r\n this.updateApplication(application);\r\n }\r\n\r\n toggleModal = () => {\r\n this.setState({ showModal: !this.state.showModal });\r\n }\r\n\r\n displayTableRows = () => {\r\n return this.state.applications.map((application, i) => {\r\n let jsonApplication = JSON.parse(application.jsonApplication);\r\n if (application.approved == null) {\r\n return (\r\n \r\n {jsonApplication?.Name}\r\n {jsonApplication?.Email}\r\n {jsonApplication?.Phone}\r\n {jsonApplication?.CompanyName}\r\n {jsonApplication?.Website}\r\n {jsonApplication?.AffiliateNetwork === \"Other\" ? jsonApplication?.OtherAffiliateNetwork : jsonApplication?.AffiliateNetwork}\r\n {jsonApplication?.Relationship}\r\n {jsonApplication?.RelationshipDetails}\r\n \r\n \r\n \r\n\r\n \r\n )\r\n }\r\n })\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Name\", \"Email\", \"Phone\", \"Company\", \"Website\", \"Affiliate Network\", \"Relationship\", \"Details\"];\r\n return headers.map((header, i) => {\r\n return (\r\n {header}\r\n )\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n \r\n

    Merchant Partner Applications

    \r\n

    Manage Merchant Partner applications

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\n\r\nexport default BrandApplications;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport ActionButton from \"../../components/ActionButton\"\r\nimport Modal from 'react-modal';\r\nimport { wrap } from \"lodash\";\r\n\r\n\r\nclass Brands extends React.Component {\r\n\r\n state = {\r\n filter: \"\",\r\n filteredPartners: [],\r\n partners: [],\r\n loading: true,\r\n sectors: [],\r\n show: false,\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/Brands', text: 'Merchant Partners' }\r\n ]\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.getPartners();\r\n }\r\n\r\n getPartners = async () => {\r\n let partnersUrl = '/api/Merchant/GetCommissionEstimate?getMaxByMerchant=true';\r\n let partners = await getRequest(partnersUrl);\r\n this.setState({ partners: partners, filteredPartners: partners, loading: false });\r\n }\r\n\r\n onInputChange = (e) => {\r\n let filter = e.target.value;\r\n let filteredPartners = this.state.partners.filter(partner => partner.merchantName.toLowerCase().includes(filter.toLowerCase()));\r\n\r\n this.setState({ filter: filter, filteredPartners: filteredPartners });\r\n };\r\n\r\n renderPartners = () => {\r\n return this.state.filteredPartners.map((partner, i) => {\r\n\r\n let commissionPercentage = partner.commission * 100;\r\n let roundedCommissionPercentage = commissionPercentage % 1 == 0 ? commissionPercentage : commissionPercentage.toFixed(2);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    {roundedCommissionPercentage}%
    \r\n \r\n
    {partner.merchantName}
    \r\n
    \r\n
    )\r\n });\r\n }\r\n\r\n displayTableRows = () => {\r\n return this.state.filteredPartners.map((partner, i) => {\r\n let commissionPercentage = partner.commission * 100;\r\n let roundedCommissionPercentage = commissionPercentage % 1 === 0 ? commissionPercentage : commissionPercentage.toFixed(2);\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {partner.merchantName}\r\n
    \r\n\r\n \r\n \r\n {partner.ordinal}\r\n \r\n \r\n {roundedCommissionPercentage}%\r\n \r\n \r\n {partner.integrated ? : \"\"}\r\n \r\n \r\n \r\n \r\n );\r\n });\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Name\", \"Preferred Order\", \"Estimated Commission\", \"Integrated\", \"Edit\"];\r\n return headers.map((header, i) => {\r\n return (\r\n \r\n {header}\r\n {header === \"Estimated Commission\" ? <>\r\n \r\n \r\n \r\n Commissions are estimated based on factors including merchant rates, pricing, attribution methods (e.g., Mod1 or other), and fees at the time of a consumer's purchase.\r\n \r\n : null}\r\n \r\n )\r\n })\r\n }\r\n\r\n showModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ show: !this.state.show });\r\n };\r\n\r\n hideModal = () => {\r\n this.setState({ show: false });\r\n };\r\n\r\n onRefreshYes = (e) => {\r\n e.preventDefault();\r\n\r\n this.refreshMerchants();\r\n\r\n this.setState({ show: false })\r\n };\r\n\r\n refreshMerchants = () => {\r\n getRequest(`/api/Merchant/GetMerchantsFromApms`);\r\n };\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return \r\n }\r\n return (\r\n
    \r\n this.setState({ show: false })}\r\n >\r\n\r\n
    \r\n
    \r\n

    \r\n Are you sure that you want to refresh Merchant Partners?\r\n

    \r\n

    \r\n This will synchronize approved merchants from Affiliate Networks\r\n

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    Merchant Partners

    \r\n

    Edit Merchant Partners

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.onInputChange(e)} />\r\n \r\n { this.showModal(e) }}\r\n >\r\n Refresh\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default Brands;","import React from 'react';\r\nimport ActionButton from \"../../components/ActionButton\"\r\nimport { CustomInput } from \"reactstrap\";\r\n\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nconst BrandTable = ({ apm, showModal, setIntegratedOff }) => {\r\n\r\n const [state, setState] = React.useState(apm);\r\n\r\n const onActiveChanged = async (e) => {\r\n let apms = state;\r\n apms[e.target.id].deleted = !apms[e.target.id].deleted;\r\n setState([...apms]);\r\n\r\n // finds if any apms have a deleted = false and if so is converted into a boolean of false \r\n // ie. [at least one apms is not deleted] means allDeleted = false\r\n const allDeleted = !(apms.find(({ deleted }) => deleted === false));\r\n\r\n if (allDeleted) {\r\n setIntegratedOff();\r\n }\r\n\r\n await postRequest('/api/AffiliateProgramManager/UpdateMerchantAffiliateProgramManagerDeleted', apms[e.target.id]);\r\n }\r\n\r\n const displayTableRows = () => {\r\n const tableRows = state.map((item, i) => {\r\n const lastRowClasses = i === state.length - 1 && i !== 0 ? \"d-md-flex justify-content-between align-items-center border-left-0 border-right-0 border-bottom-0\" :\r\n \"d-md-flex justify-content-between align-items-center border-0\";\r\n return (\r\n \r\n {item?.affiliateProgramManagerName}\r\n \r\n \r\n {`${item?.commission * 100}%`}\r\n {'refreshStatus' in item ? item.refreshStatus : \"N/A\"}\r\n {item?.feedLastProcessed ?
    {new Date(item?.feedLastProcessed).toLocaleDateString()}
    : \"N/A\"}\r\n \r\n \r\n {'dateLastRefreshed' in item ? new Date(item.dateLastRefreshed).toLocaleDateString() : \"N/A\"}\r\n
    \r\n { item.internalId &&\r\n { showModal(e, item.affiliateProgramManagerId) }}\r\n >\r\n Refresh\r\n \r\n }\r\n {!item.internalId &&\r\n \r\n Refresh\r\n \r\n }\r\n
    \r\n \r\n \r\n )\r\n })\r\n return tableRows;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {displayTableRows()}\r\n \r\n
    NameActiveCommissionRefresh StatusFeed Last UpdatedDate Last Refreshed
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default BrandTable;","import React from \"react\";\r\nimport { Form, FormGroup, Label, Input, CustomInput,FormText } from \"reactstrap\";\r\n\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport ActionButton from \"../../components/ActionButton\"\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport BrandTable from \"../../components/Tables/BrandTable\";\r\nimport Modal from 'react-modal';\r\n\r\nModal.setAppElement('#root');\r\n\r\nclass Brand extends React.Component {\r\n\r\n state = {\r\n filter: \"\",\r\n sectors: [],\r\n filteredSectors: [],\r\n breadCrumbList: [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/Brands', text: 'Merchant Partners' }\r\n ],\r\n merchant: {},\r\n oldIntegratedDate: new Date().toISOString(),\r\n affiliateProgramManagers: [],\r\n isSaving: false,\r\n loading: true,\r\n show: false,\r\n apmId: 0,\r\n }\r\n\r\n merchantName = \"\";\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n await this.populateData();\r\n }\r\n\r\n populateData = async () => {\r\n var merchant = await getRequest(`/api/Merchant/GetMerchant/?id=${this.props.match.params.id}`);\r\n if (merchant && merchant.hasOwnProperty('homepage') && !!(merchant.homepage?.trim()) && merchant.homepage.startsWith(\"https://\")) {\r\n merchant.homepage = merchant.homepage.substring(\"https://\".length);\r\n }\r\n\r\n this.setState({ merchant, oldIntegratedDate: merchant.integratedDate });\r\n\r\n let breadCrumbList = this.state.breadCrumbList;\r\n breadCrumbList.push({ link: `/Admin/Brand/${merchant.id}`, text: `${merchant.name}` });\r\n this.merchantName = { ...merchant }.name;\r\n this.setState({ breadCrumbList, merchant });\r\n\r\n await this.getSectors();\r\n\r\n let apms = await getRequest(`api/AffiliateProgramManager/GetMerchantAffiliateProgamManagersByHostname?hostname=${merchant.hostname}`);\r\n this.setState({ affiliateProgramManagers: apms, loading: false });\r\n }\r\n\r\n getSectors = async () => {\r\n let sectors = await getRequest('/api/Sector/GetSectors');\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n let merchantSectors = await getRequest(`/api/Sector/GetMerchantSectors/?id=${this.state.merchant.id}`);\r\n\r\n for (var i = 0; i < merchantSectors.length; ++i) {\r\n for (var j = 0; j < sectors.length; ++j) {\r\n if (merchantSectors[i].sectorId === sectors[j].sectorId) {\r\n sectors[j].active = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ sectors, filteredSectors: sectors });\r\n }\r\n\r\n\r\n mapMerchantFields = () => {\r\n let fields = [\r\n { name: \"name\", title: \"Name\" },\r\n { name: \"hostname\", title: \"Hostname\" },\r\n { name: \"hostname2\", title: \"Product Feed Hostname\" },\r\n { name: \"homepage\", title: \"Homepage\" },\r\n { name: \"logoUrl\", title: \"Logo URL\" },\r\n { name: \"productUrlRegex\", title: \"Product URL Regex\" },\r\n { name: \"ordinal\", title: \"Preferred Order (set to 0 to delete preferred status)\", inputType: \"number\", min: 0 },\r\n { name: \"integrated\", title: \"Integrated\" },\r\n { name: \"deepLinkOnly\", title: \"Deep Link Only\" },\r\n { name: \"approvedCreatorsOnly\", title: \"Approved Creators Only\" },\r\n { name: \"manualProductCreation\", title: \"Manual Product Creation\" },\r\n { name: \"shareSubdomain\", title: \"Share Subdomain\" },\r\n { name: \"productUrlLookupStrategyId\", title: \"Product URL Lookup Strategy\", inputType: \"number\" },\r\n { name: \"brandPresent\", title: \"Brand Present\" }\r\n ];\r\n\r\n return fields.map((field, i) => {\r\n return (\r\n \r\n \r\n {field.name === \"homepage\" ? (\r\n
    \r\n
    \r\n https://\r\n
    \r\n this.onInputChange(e)}\r\n value={this.state.merchant[field.name]}\r\n />\r\n
    \r\n ) : (\r\n <>\r\n {field.name === \"integrated\" || field.name === \"brandPresent\" || field.name === \"approvedCreatorsOnly\" || field.name === \"manualProductCreation\" || field.name === \"deepLinkOnly\" ? (\r\n this.onInputChange(e)}\r\n checked={this.state.merchant[field.name]}\r\n />\r\n ) : (\r\n this.onInputChange(e)}\r\n value={this.state.merchant[field.name]}\r\n type={field.inputType || \"text\"}\r\n style={{ backgroundColor: \"#e9ecef\", width: field.name === \"ordinal\" ? \"100px\" : \"\" }}\r\n min={field.name === \"ordinal\" ? field.min : undefined}\r\n />\r\n )}\r\n {field.name === \"productUrlLookupStrategyId\" ? (\r\n \r\n 1: Shopify | 2: MerchantSpecific | 3: Https To Http | 4: Fleet Feet | 5: Sportsman's guide | 6: Add \"WWW\"\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n );\r\n });\r\n }\r\n\r\n onSectorClick = async (name) => {\r\n let sectors = [...this.state.sectors];\r\n sectors.findIndex((s) => { return s.name === name });\r\n let i = sectors.findIndex((s) => { return s.name === name })\r\n sectors[i].active = !sectors[i].active;\r\n\r\n this.setState({ sectors, filteredSectors: sectors, filter: \"\" });\r\n }\r\n\r\n onInputChange = async (e) => {\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n let merchant = this.state.merchant;\r\n\r\n if (name === \"filter\") {\r\n let filter = e.target.value;\r\n let filteredSectors = this.state.sectors.filter(sector => sector.name.toLowerCase().includes(filter.toLowerCase()));\r\n\r\n this.setState({ filter, filteredSectors });\r\n }\r\n if (name === \"integrated\") {\r\n merchant.integrated = !merchant.integrated;\r\n if (merchant.integrated) {\r\n merchant.integratedDate = new Date().toISOString();\r\n } else {\r\n merchant.integratedDate = this.state.oldIntegratedDate;\r\n }\r\n this.setState({ merchant });\r\n }\r\n else if (name === \"deepLinkOnly\") {\r\n if (!!(merchant.deepLinkOnly)) {\r\n merchant.deepLinkOnly = !merchant.deepLinkOnly;\r\n } else {\r\n merchant.deepLinkOnly = true;\r\n }\r\n this.setState({ merchant });\r\n }\r\n else if (name === \"brandPresent\") {\r\n merchant.brandPresent = !merchant.brandPresent;\r\n this.setState({ merchant });\r\n }\r\n else if (name === \"approvedCreatorsOnly\") {\r\n merchant.approvedCreatorsOnly = !merchant.approvedCreatorsOnly;\r\n this.setState({ merchant });\r\n }\r\n else if (name === \"manualProductCreation\") {\r\n !(merchant.manualProductCreation) ? merchant.manualProductCreation = true : merchant.manualProductCreation = false;\r\n this.setState({ merchant });\r\n }\r\n else {\r\n merchant[name] = value;\r\n this.setState({ merchant });\r\n }\r\n };\r\n\r\n renderSectors = () => {\r\n return this.state.filteredSectors.map((sector, i) => {\r\n if (sector.active) {\r\n return \r\n }\r\n return \r\n });\r\n\r\n }\r\n\r\n setIntegratedOff = () => {\r\n let merchant = this.state.merchant;\r\n merchant.integrated = false;\r\n this.setState({ merchant });\r\n }\r\n\r\n renderInterests = () => {\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n this.onInputChange(e)} placeholder=\"Search for interests...\" />\r\n
    \r\n
    \r\n {this.renderSectors()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n renderAffiliateProgramManagers = () => {\r\n return this.state.affiliateProgramManagers.map((apm, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n updateSectors = async () => {\r\n let selectedSectorIds = this.state.sectors.filter(sector => sector.active === true).map((sector) => { return sector.sectorId });\r\n await postRequest(`/api/Sector/UpdateMerchantSectors/?id=${this.state.merchant.id}`, selectedSectorIds);\r\n }\r\n\r\n updateMerchant = async () => {\r\n const merchant = { ...this.state.merchant };\r\n\r\n if (!!(merchant.ordinal) && merchant.ordinal < 1) {\r\n merchant.ordinal = null;\r\n }\r\n\r\n if (merchant.hasOwnProperty('homepage') && !!(merchant.homepage?.trim()) && !merchant.homepage.startsWith(\"https://\") && !merchant.homepage.startsWith(\"http://\")) {\r\n merchant.homepage = \"https://\" + merchant.homepage.trim();\r\n }\r\n\r\n if (!!(merchant.shareSubdomain)) {\r\n merchant.shareSubdomain = merchant.shareSubdomain.trim();\r\n }\r\n\r\n await postRequest('/api/Merchant/UpdateMerchant', merchant);\r\n\r\n if (merchant.hasOwnProperty('homepage') && !!(merchant.homepage?.trim()) && merchant.homepage.startsWith(\"https://\")) {\r\n merchant.homepage = merchant.homepage.substring(\"https://\".length);\r\n }\r\n\r\n this.setState({ merchant });\r\n }\r\n\r\n onSubmit = async (e) => {\r\n e.preventDefault();\r\n this.setState({ isSaving: true });\r\n await this.updateMerchant();\r\n await this.updateSectors();\r\n this.setState({ isSaving: false });\r\n }\r\n\r\n showModal = (e, id) => {\r\n e.preventDefault();\r\n this.setState({ show: !this.state.show });\r\n this.setState({ apmId: id })\r\n };\r\n\r\n hideModal = () => {\r\n this.setState({ show: false });\r\n };\r\n\r\n onRefreshYes = (e, id) => {\r\n e.preventDefault();\r\n\r\n this.state.affiliateProgramManagers.forEach(managerObj => {\r\n const apmId = managerObj.affiliateProgramManagerId;\r\n const internalId = managerObj.internalId;\r\n \r\n if (id === apmId) {\r\n getRequest(`/api/Merchant/RefreshFeed/?affiliateProgramManagerId=${apmId}&internalId=${internalId}`);\r\n };\r\n });\r\n\r\n this.setState({ show: false })\r\n };\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return \r\n }\r\n\r\n return (\r\n <>\r\n this.setState({ show: false })}\r\n >\r\n\r\n
    \r\n

    WARNING

    \r\n\r\n
    \r\n

    \r\n NOT RECOMMENDED TO REFRESH FEED DURING PEAK TRAFFIC\r\n

    \r\n

    \r\n Do you wish to continue?\r\n

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    {this.merchantName}

    \r\n

    Edit Merchant Partner details

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n !!(this.state.merchant?.logoUrl) && this.state.merchant.logoUrl.length > 0 ?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    :\r\n <>\r\n }\r\n {this.mapMerchantFields()}\r\n {this.renderInterests()}\r\n\r\n \r\n {\r\n this.state.merchant.hostname?.trim().length > 0 &&\r\n this.state.merchant.name?.trim().length > 0 &&\r\n this.state.merchant.homepage?.trim().length > 0 ?\r\n\r\n { this.onSubmit(e) }}\r\n isLoading={this.state.isSaving}\r\n >\r\n Submit\r\n \r\n :\r\n { this.onSubmit(e) }}\r\n isLoading={this.state.isSaving}\r\n isDisabled={true}\r\n >\r\n Submit\r\n }\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Brand;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport FormInputField from \"components/FormInputField\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { createReturn } from \"typescript\";\r\n\r\nclass AffiliateNetworks extends React.Component {\r\n\r\n state = {\r\n affiliateNetworks: [],\r\n isEditing: false,\r\n newApmName: \"\",\r\n newApmUrl: \"\",\r\n commissionRuns: [],\r\n commissionStatusByApm: [],\r\n }\r\n\r\n async componentDidMount() {\r\n let networks = await this.fetchAffiliateNetworks();\r\n let commissionRuns = await this.fetchCommissionRuns();\r\n const affiliateNetworks = await this.calculateMerchantSynchronizationDate(networks);\r\n await this.calculateCommissionRunStatus(commissionRuns, networks);\r\n\r\n this.setState({ affiliateNetworks, commissionRuns });\r\n }\r\n\r\n\r\n addNewApm = async () => {\r\n let networks = [...this.state.affiliateNetworks];\r\n\r\n let newApm = {\r\n name: this.state.newApmName,\r\n apiUrl: this.state.newApmUrl\r\n }\r\n\r\n networks.push(newApm);\r\n\r\n this.setState({ affiliateNetworks: networks, newApmName: \"\", newApmUrl: \"\" });\r\n\r\n let url = \"api/AffiliateProgramManager/AddAffiliateProgramManager\";\r\n\r\n let created = await postRequest(url, newApm);\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/AffiliateNetworks', text: 'Affiliate Networks' }\r\n ]\r\n\r\n displayHeaders = () => {\r\n let headers = [\"Name\", \"Api Url\", \"Merchant Synch Status\", \"Commission Status\", \"Edit\"];\r\n return headers.map((header, i) => {\r\n if (i === 2 || i === 3) {\r\n return (\r\n \r\n {header}\r\n \r\n )\r\n }\r\n return (\r\n \r\n {header}\r\n \r\n )\r\n\r\n })\r\n }\r\n\r\n calculateCommissionRunStatus = (commissionRuns, affiliateNetworks) => {\r\n commissionRuns.map(cr => {\r\n const affiliateName = affiliateNetworks.filter(affiliate => cr.affiliateProgramManagerId === affiliate.id)[0].name.toLowerCase();\r\n const isSaS = affiliateName === \"shareasale\";\r\n\r\n const dateNow = new Date();\r\n const date = new Date(dateNow);\r\n const utc = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(),\r\n date.getUTCDate(), date.getUTCHours(),\r\n date.getUTCMinutes(), date.getUTCSeconds());\r\n const currentUtc = new Date(utc);\r\n const createdDate = new Date(cr.createdDate);\r\n\r\n const commissionRunHours = Math.floor((currentUtc - createdDate) / 1000 / 60 / 60);\r\n let commissionStatus = \"\";\r\n\r\n if (isSaS) {\r\n if (commissionRunHours <= 24) {\r\n commissionStatus = \"green\";\r\n } else if (commissionRunHours > 24 && commissionRunHours <= 48) {\r\n commissionStatus = \"yellow\";\r\n } else {\r\n commissionStatus = \"red\";\r\n }\r\n } else {\r\n if (commissionRunHours <= 12) {\r\n commissionStatus = \"green\";\r\n } else if (commissionRunHours > 12 && commissionRunHours <= 24) {\r\n commissionStatus = \"yellow\";\r\n } else {\r\n commissionStatus = \"red\";\r\n } \r\n }\r\n\r\n this.setState({ commissionStatusByApm: [...this.state.commissionStatusByApm, { apmId: cr.affiliateProgramManagerId, commissionStatus }] })\r\n\r\n })\r\n }\r\n\r\n calculateMerchantSynchronizationDate = (networks) => {\r\n let updatedNetworks = [...networks];\r\n updatedNetworks.map(network => {\r\n if (network.merchantSynchDate != undefined && network.merchantSynchDate != null) {\r\n const dateNow = new Date();\r\n const date = new Date(dateNow);\r\n \r\n const merchantSynchDate = new Date(network.merchantSynchDate);\r\n const millisecondDate = new Date(merchantSynchDate);\r\n const fiveHoursInMilliseconds = 60 * 60 * 1000 * 5;\r\n const merchantSynchDateLocal = millisecondDate - fiveHoursInMilliseconds;\r\n\r\n const merchantSynchDateDifferenceInHours = Math.floor((date - merchantSynchDateLocal) / 1000 / 60 / 60);\r\n let msdStatus = \"\";\r\n\r\n if (merchantSynchDateDifferenceInHours <= 24) {\r\n msdStatus = \"green\";\r\n } else if (merchantSynchDateDifferenceInHours > 24 && merchantSynchDateDifferenceInHours <= 48) {\r\n msdStatus = \"yellow\";\r\n } else {\r\n msdStatus = \"red\";\r\n }\r\n\r\n updatedNetworks = updatedNetworks.map(nw => {\r\n if (nw.id === network.id) {\r\n return { ...nw, merchantSynchStatus: msdStatus };\r\n } else {\r\n return {...nw}\r\n }\r\n })\r\n }\r\n })\r\n return updatedNetworks;\r\n }\r\n\r\n displayRows = () => {\r\n return this.state.affiliateNetworks?.map((network, i) => {\r\n const statusObj = this.state.commissionStatusByApm.find(status => status.apmId === network?.id);\r\n const status = statusObj == undefined ? \"\" : statusObj.commissionStatus;\r\n return (\r\n \r\n \r\n {network?.name}\r\n \r\n\r\n \r\n {network?.apiUrl}\r\n \r\n\r\n \r\n
    \r\n \r\n\r\n \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n\r\n\r\n fetchAffiliateNetworks = async () => {\r\n let url = \"api/AffiliateProgramManager/GetAffiliateProgramManagers\";\r\n let networks = await getRequest(url);\r\n return networks;\r\n }\r\n\r\n fetchCommissionRuns = async () => {\r\n let url = \"api/AffiliateProgramManager/GetLastCompletedCommissionRunAll\";\r\n let commissionRuns = await getRequest(url);\r\n return commissionRuns;\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Affiliate Networks

    \r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.displayHeaders()}\r\n \r\n \r\n\r\n \r\n {this.displayRows()}\r\n \r\n
    \r\n\r\n \r\n
    \r\n\r\n
    \r\n\r\n this.setState({ newApmName: e.target.value })}\r\n />\r\n\r\n this.setState({ newApmUrl: e.target.value })}\r\n />\r\n\r\n \r\n\r\n \r\n Add +\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nexport default AffiliateNetworks","import React, { Component } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { postSpreadsheet } from \"sharedUtils/httpUtils\";\r\n\r\nclass AmazonCommissionUpload extends Component {\r\n state = {\r\n isLoading: false,\r\n error: false,\r\n }\r\n\r\n handleFileChange = (event) => {\r\n const file = event.target.files[0];\r\n this.handleUpload(file);\r\n };\r\n\r\n handleUpload = async (file) => {\r\n this.setState({ error: false, isLoading: true });\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n console.log(this.props.affiliateProgramManager?.id, this.props.affiliateProgramManager)\r\n const response = await postSpreadsheet(\"/Products/UploadCommissions?apmId=\" + this.props.affiliateProgramManager?.id, formData);\r\n\r\n this.setState({ error: !(response), isLoading: false });\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    Amazon Commission Report CSV Upload
    \r\n \r\n There was an error uploading the report. Try again.\r\n

    \r\n (this.fileInput = input)}\r\n />\r\n this.fileInput.click()}\r\n isLoading={this.state.isLoading}\r\n >\r\n Upload Report\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AmazonCommissionUpload;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport { Form, FormGroup, Label, Input, CustomInput } from \"reactstrap\";\r\n\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport AmazonCommissionUpload from \"views/Admin/AmazonCommissionUpload\"\r\nimport ActionButton from \"components/ActionButton\";\r\nimport FormInputField from \"components/FormInputField\";\r\nimport Modal from \"components/Modal\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\n\r\nclass AffiliateNetwork extends React.Component {\r\n\r\n state = {\r\n affiliateProgramManager: {},\r\n nameChange: \"\",\r\n apiUrlChange: \"\",\r\n isSaving: false,\r\n affiliateTracking: [],\r\n modalType: 1,\r\n show: false,\r\n createEditTracking: { hostname: \"\", trackingUrl: \"\" },\r\n isSubmittingTracking: false,\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n let affiliateProgramManager = await this.fetchAffiliateProgramManager(this.props.match.params.id);\r\n\r\n let affiliateTracking = [];\r\n if (affiliateProgramManager.name.toLowerCase() === \"cjaffiliate\") {\r\n affiliateTracking = await this.fetchTracking(this.props.match.params.id);\r\n }\r\n\r\n this.setState({\r\n affiliateProgramManager,\r\n nameChange: affiliateProgramManager?.name,\r\n apiUrlChange: affiliateProgramManager?.apiUrl,\r\n affiliateTracking\r\n });\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/AffiliateNetworks', text: 'Affiliate Networks' },\r\n { link: `/Admin/AffiliateNetworks/${this.props.match.params.id}`, text: this.state.affiliateProgramManager.name }\r\n ]\r\n\r\n fetchTracking = async (apmId) => {\r\n let url = \"api/AffiliateProgramManager/GetMerchantAffiliateTracking?apmId=\" + apmId;\r\n let tracking = await getRequest(url);\r\n return tracking;\r\n }\r\n\r\n fetchAffiliateProgramManager = async (id) => {\r\n let url = `api/AffiliateProgramManager/GetAffiliateProgramManager?id=${id}`;\r\n let affiliateProgramManager = await getRequest(url);\r\n return affiliateProgramManager;\r\n }\r\n\r\n showModal = (e) => {\r\n this.setState({ show: !this.state.show });\r\n };\r\n\r\n handleTrackingSubmit = async () => {\r\n this.setState({ isSubmittingTracking: true });\r\n let url = `api/AffiliateProgramManager/UpdateMerchantAffiliateTracking`;\r\n let requestBody = { hostname: this.state.createEditTracking.hostname.trim(), trackingUrl: this.state.createEditTracking.trackingUrl.trim(), affiliateProgramManagerId: this.state.affiliateProgramManager.id }\r\n\r\n let result = await postRequest(url, requestBody)\r\n if (!(result)) {\r\n this.postTrackingError();\r\n this.setState({ isSubmittingTracking: false });\r\n return;\r\n }\r\n let affiliateTracking = [];\r\n if (this.state.affiliateProgramManager.name.toLowerCase() === \"cjaffiliate\") {\r\n affiliateTracking = await this.fetchTracking(this.props.match.params.id);\r\n }\r\n\r\n this.setState({ isSubmittingTracking: false, affiliateTracking, show: false });\r\n this.resetTrackingState();\r\n }\r\n\r\n hideModal = () => {\r\n this.setState({ show: false });\r\n }\r\n\r\n getModalTitle = () => {\r\n switch (this.state.modalType) {\r\n case 1:\r\n return \"Create New Merchant Tracking\";\r\n default:\r\n return \"Edit Merchant Tracking\";\r\n }\r\n\r\n }\r\n\r\n openTableRowModal = (hostname, trackingUrl) => {\r\n const createEditTracking = { ...this.state.createEditTracking }\r\n createEditTracking.hostname = hostname;\r\n createEditTracking.trackingUrl = trackingUrl;\r\n this.setState({ createEditTracking, modalType: 2, show: true });\r\n }\r\n\r\n displayRows = () => {\r\n return this.state.affiliateTracking?.map((item, i) => {\r\n return (\r\n \r\n \r\n {item?.hostname}\r\n \r\n\r\n \r\n {item?.trackingUrl}\r\n \r\n\r\n \r\n
    \r\n this.openTableRowModal(item.hostname, item.trackingUrl)} />\r\n
    \r\n \r\n \r\n )\r\n })\r\n }\r\n\r\n\r\n displayHeaders = () => {\r\n let headers = [\"Merchant Hostname\", \"Redirect Url\"];\r\n return headers.map((header, i) => {\r\n if (i === 2 || i === 3) {\r\n return (\r\n \r\n {header}\r\n \r\n )\r\n }\r\n return (\r\n \r\n {header}\r\n \r\n )\r\n\r\n })\r\n }\r\n\r\n resetState = () => {\r\n this.setState({\r\n nameChange: this.state.affiliateProgramManager.name,\r\n apiUrlChange: this.state.affiliateProgramManager.apiUrl\r\n })\r\n }\r\n\r\n resetTrackingState = () => {\r\n this.setState({\r\n createEditTracking: { hostname: \"\", trackingUrl: \"\" }, modalType: 1\r\n })\r\n }\r\n\r\n newMerchantTracking = () => {\r\n this.setState({ modalType: 1 });\r\n this.showModal();\r\n }\r\n\r\n saveChanges = async () => {\r\n this.setState({ isSaving: true });\r\n let url = `api/AffiliateProgramManager/UpdateAffiliateProgramManager`;\r\n let requestBody = { ...this.state.affiliateProgramManager, name: this.state.nameChange, apiUrl: this.state.apiUrlChange }\r\n\r\n var updated = await postRequest(url, requestBody)\r\n\r\n\r\n this.setState({ isSaving: false });\r\n }\r\n\r\n onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n\r\n let createEditTracking = { ...this.state.createEditTracking };\r\n createEditTracking[formKey] = newData;\r\n\r\n this.setState({ createEditTracking });\r\n }; \r\n\r\n postTrackingError = () => {\r\n toast.error(\r\n
    \r\n

    Error submitting tracking info. Check Hostname and try again.

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n { this.setState({ show: false }); this.resetTrackingState(true); }}\r\n toggleModal={() => { this.setState({ show: false }); this.resetTrackingState(true); }}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    {this.getModalTitle()}

    \r\n
    \r\n \r\n \r\n 1}\r\n value={this.state.createEditTracking.hostname}\r\n placeholder=\"Enter Merchant hostname here...\"\r\n onChange={this.onInputChange}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n Submit\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n \r\n

    {this.state.affiliateProgramManager.name}

    \r\n

    Edit Affiliate Network details

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    e.preventDefault()} onSubmit={(e) => e.preventDefault()} >\r\n\r\n this.setState({ nameChange:e.target.value })}\r\n />\r\n\r\n this.setState({ apiUrlChange:e.target.value })}\r\n />\r\n \r\n \r\n\r\n \r\n Submit\r\n \r\n\r\n \r\n \r\n {\r\n this.state.affiliateTracking.length > 0 ?\r\n <>\r\n
    Merchants With Tracking URLs
    \r\n\r\n
    \r\n \r\n \r\n \r\n {this.displayHeaders()}\r\n \r\n \r\n\r\n \r\n {this.displayRows()}\r\n \r\n
    \r\n\r\n\r\n
    \r\n \r\n Add Merchant\r\n \r\n \r\n :\r\n <>\r\n }\r\n\r\n {\r\n this.state.affiliateProgramManager?.name?.toLowerCase() === \"amazon\" ?\r\n \r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default AffiliateNetwork;","import React from \"react\";\r\n\r\nimport AccountBanner from \"components/AccountBanner\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport FormInputField from \"../../components/FormInputField\";\r\n\r\n//{sectorId,name}\r\nclass Sectors extends React.Component {\r\n\r\n state = {\r\n sectors: [],\r\n sectorCreateInput: \"\"\r\n }\r\n\r\n async componentDidMount() {\r\n let sectors = await this.fetchSectors();\r\n this.setState({ sectors })\r\n }\r\n\r\n addSector = async (sectorName) => {\r\n if (sectorName.length > 0) {\r\n let sector = { name: sectorName };\r\n let sectors = [...this.state.sectors];\r\n sectors.push(sector);\r\n this.setState({ sectors, sectorCreateInput: \"\" });\r\n\r\n await postRequest(`api/Sector/CreateSector?text=${sectorName}`);\r\n }\r\n\r\n //make http request here\r\n }\r\n\r\n checkIfSectorExists = (sectorName) => {\r\n let existing = this.state.sectors.filter((sector) => sector.name.toLowerCase() === this.state.sectorCreateInput.toLowerCase());\r\n if (existing.length > 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n fetchSectors = async () => {\r\n let sectors = await getRequest(`api/Sector/GetSectors`);\r\n return sectors;\r\n }\r\n\r\n displaySectors = () => {\r\n\r\n let sorted = this.state.sectors.filter((sector) => {\r\n return sector.name.toLowerCase().includes(this.state.sectorCreateInput.toLowerCase())\r\n }).sort((a, b) => {\r\n if (b.name.charAt(0) > a.name.charAt(0)) {\r\n return -1\r\n }\r\n else {\r\n return 1\r\n }\r\n\r\n });\r\n //test.\r\n return sorted.map((sector, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n handleSectorInput = (e) => {\r\n this.setState({ sectorCreateInput: e.target.value })\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n
    \r\n
    \r\n \r\n

    Sectors

    \r\n

    Create sectors

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n this.addSector(this.state.sectorCreateInput)}\r\n >\r\n Add Sector\r\n \r\n
    \r\n
    \r\n
    \r\n {this.displaySectors()}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nexport default Sectors;","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { Form, FormGroup, Label, Input, Popover, PopoverBody, CustomInput } from \"reactstrap\";\r\nimport { isValidPassword } from \"sharedUtils/validationUtils\"\r\nclass ResetPasswordForm extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n newPassword: \"\",\r\n newPasswordConfirmed: \"\",\r\n newPasswordConfirmedValidation: \"\",\r\n newPasswordValidation:\"\"\r\n }\r\n \r\n }\r\n\r\n submitPassword = async () => {\r\n let { user } = this.props;\r\n let passwordsMatch = this.state.newPassword === this.state.newPasswordConfirmed && this.state.newPassword.length > 4 && this.state.newPasswordConfirmed.length > 4\r\n\r\n if (passwordsMatch) {\r\n let url = `/api/Account/ResetPassword?userIdToUpdate=${user.id}&password=${this.state.newPasswordConfirmed}`;\r\n\r\n await getRequest(url);\r\n\r\n this.setState({ newPassword: \"\", newPasswordConfirmed: \"\", passwordsMatch:false })\r\n }\r\n }\r\n\r\n displaySubmitButton = () => {\r\n let passwordsMatch = this.state.newPassword === this.state.newPasswordConfirmed && this.state.newPassword.length >= 8 && this.state.newPasswordConfirmed.length >= 8\r\n\r\n let isValid = isValidPassword(this.state.newPasswordConfirmed) && isValidPassword(this.state.newPassword);\r\n if (passwordsMatch && isValid) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n onInputChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n\r\n let isValid = isValidPassword(e.target.value);\r\n\r\n if (e.target.name === \"newPassword\") {\r\n if (e.target.value.length < 8) {\r\n this.setState({ newPasswordValidation: \"Password should be at least 8 characters long\" });\r\n }\r\n else if (isValid == false) {\r\n this.setState({ newPasswordValidation: \"Password should contain an uppercase character, lowercase character and a number\" });\r\n }\r\n else {\r\n this.setState({ newPasswordValidation: \"\" });\r\n }\r\n }\r\n\r\n if (e.target.name === \"newPasswordConfirmed\") {\r\n if (e.target.value !== this.state.newPassword ) {\r\n this.setState({ newPasswordConfirmedValidation: \"Passwords should match\" });\r\n }\r\n else {\r\n this.setState({ newPasswordConfirmedValidation:\"\" })\r\n }\r\n }\r\n }\r\n\r\n\r\n displayValidation = () => {\r\n return (\r\n \r\n Minimum of 8 characters with 1 uppercase, 1 lowercase and 1 number. Passwords must match \r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.newPassword}\r\n type=\"password\"\r\n />\r\n \r\n \r\n {this.state.newPasswordValidation}\r\n \r\n \r\n\r\n\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.newPasswordConfirmed}\r\n type=\"password\"\r\n />\r\n \r\n \r\n {this.state.newPasswordConfirmedValidation}\r\n \r\n \r\n\r\n {this.displaySubmitButton()}\r\n \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ResetPasswordForm;","import React from \"react\";\r\n\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { Form, FormGroup, Label, Input, Popover, PopoverBody, CustomInput } from \"reactstrap\";\r\nimport Select from 'react-select'\r\nimport ResetPasswordForm from \"views/Admin/ResetPasswordForm\";\r\nimport Modal from \"components/Modal\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport { debounce } from \"throttle-debounce\";\r\n\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\n\r\nclass Users extends React.Component {\r\n state = {\r\n selected: [],\r\n subaffiliates: [],\r\n options: [],\r\n rpManagerOptions: [],\r\n value: [],\r\n isLoading: false,\r\n isLoadingReferral: false,\r\n isLoadingRPManagerUsers: false,\r\n isCheckingUserName: false,\r\n uploadingImage: false,\r\n profilePicUpdated: false,\r\n profilePic: \"\",\r\n profilePicUrl: \"\",\r\n selectedProStatusId: \"\",\r\n showChangePasswordForm: false,\r\n paymentEmail: \"\",\r\n amazonSubaffiliate: \"\",\r\n savingAmazonSub: false,\r\n subaffiliatesFetched: false,\r\n formData: {\r\n displayName: \"\",\r\n newUserName: \"\",\r\n profileUrl: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n proStatusId: \"\",\r\n isAdmin: \"\",\r\n id: \"\",\r\n onboardingComplete: \"\",\r\n referrerUserId: null,\r\n },\r\n newUserNameAvailable: null,\r\n validUserName: true,\r\n referralEntity: [],\r\n rpManagerEntity: [],\r\n };\r\n\r\n selectedFile = \"\";\r\n\r\n readOnlyFields = [\"profileUrl\", \"displayName\", \"tagLine\",\"email\", \"paymentEmail\"];\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/Users', text: 'Users' }\r\n ]\r\n\r\n proStatusIds = [\r\n { value: 0, label: 'General User' },\r\n { value: 1, label: 'Creator' },\r\n { value: 2, label: 'Merchant Partner' }];\r\n\r\n setSelectedFile = async (e) => {\r\n this.setState({ uploadingImage: true, profilePic: e.target.files[0] });\r\n\r\n const formData = new FormData();\r\n formData.append(\"File\", e.target.files[0]);\r\n\r\n let uploadProfilePicUrl = '/api/Account/UploadProfilePic';\r\n\r\n let user = await postRequest(uploadProfilePicUrl, formData, null, false);\r\n \r\n this.setState({ profilePicUrl: user.imageUrl, profilePic: \"\" });\r\n this.setState({ profilePicUpdated: true, uploadingImage: false })\r\n\r\n setTimeout(() => this.setState({ profilePicUpdated: false }), 3000);\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.selected !== this.state.selected) {\r\n this.setState({ subaffiliates: [], amazonSubaffiliate: \"\", subaffiliatesFetched: false });\r\n }\r\n }\r\n\r\n confirmEmail = async (e) => {\r\n e.preventDefault();\r\n\r\n let url = `/api/Account/ConfirmEmail?userIdToUpdate=${this.state.formData.id}`;\r\n\r\n let confirmed = await getRequest(url);\r\n }\r\n\r\n updateEmail = async (e) => {\r\n e.preventDefault();\r\n\r\n let url = `/api/Account/UpdateUserEmail?userIdToUpdate=${this.state.formData.id}&email=${this.state.formData[\"email\"]}`;\r\n let updateEmail = await getRequest(url);\r\n }\r\n\r\n onAmazonSubaffiliateInputChange = (e) => {\r\n e.preventDefault();\r\n this.setState({ newUserNameAvailable: null })\r\n let amazonSubaffiliate = e.target.value;\r\n this.setState({ amazonSubaffiliate });\r\n }\r\n\r\n\r\n onNewUserNameInputChange = async (e) => {\r\n e.preventDefault();\r\n this.setState({ newUserNameAvailable: null })\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n\r\n formData[formKey] = newData;\r\n\r\n this.setState({ formData });\r\n\r\n let userNameRegex = /^[0-9a-zA-Z\\.\\-_]{1,20}$/\r\n let validUserName = userNameRegex.test(formData.newUserName);\r\n\r\n if (validUserName) {\r\n this.debounceNewUserNameInputChange();\r\n this.setState({ validUserName: true })\r\n } else if (formData.newUserName.length > 0) {\r\n this.setState({ validUserName: false })\r\n } else {\r\n this.setState({ validUserName: true })\r\n }\r\n }\r\n\r\n debounceNewUserNameInputChange = debounce(300, async () => {\r\n await this.checkUserNameExists();\r\n });\r\n\r\n onInputChange = (e) => {\r\n let formKey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n\r\n if (formKey === 'isAdmin') {\r\n newData = !this.state.formData.isAdmin; \r\n }\r\n\r\n if (formKey === 'onboardingComplete') {\r\n newData = !this.state.formData.onboardingComplete;\r\n }\r\n\r\n if (formKey === 'bio') {\r\n e.target.style.height = 'inherit';\r\n e.target.style.height = `${e.target.scrollHeight}px`;\r\n }\r\n\r\n formData[formKey] = newData;\r\n\r\n this.setState({ formData });\r\n };\r\n\r\n onSelectedProStatusId = (e) => {\r\n let formData = this.state.formData;\r\n formData.proStatusId = e.value;\r\n this.setState({ selectedProStatusId: e }) \r\n }\r\n\r\n onClickImageUpload = (event) => {\r\n event.preventDefault();\r\n document.getElementById(\"profiePicInput\").click();\r\n };\r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\r\n\r\n fetchReferralUsers = async (query) => {\r\n this.setState({ isLoadingReferral: true });\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ referralOptions: users, isLoadingReferral: false });\r\n }\r\n\r\n fetchRPManagerUsers = async (query) => {\r\n this.setState({ isLoadingRPManagerUsers: true });\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ rpManagerOptions: users, isLoadingRPManagerUsers: false });\r\n }\r\n\r\n fetchUserByReferralUserId = async (referralUserId) => {\r\n this.setState({ isLoading: true });\r\n let url = `/api/Account/GetUserById?userId=${referralUserId}`;\r\n\r\n let referralEntity = [await getRequest(url)];\r\n return referralEntity;\r\n }\r\n\r\n fetchUserByRPManagerUserId = async (rpManagerUserId) => {\r\n this.setState({ isLoading: true });\r\n let url = `/api/Account/GetUserById?userId=${rpManagerUserId}`;\r\n\r\n let rpManagerEntity = [await getRequest(url)];\r\n return rpManagerEntity;\r\n }\r\n\r\n checkUserNameExists = async () => {\r\n this.setState({ isCheckingUserName: true });\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${this.state.formData.newUserName}`;\r\n\r\n let users = await getRequest(url);\r\n let newUserNameAvailable = true;\r\n let usersCheck = users.filter(user => user.userName.toLowerCase() == this.state.formData.newUserName.toLowerCase())\r\n\r\n if (usersCheck != null && usersCheck.length > 0) {\r\n newUserNameAvailable = false;\r\n }\r\n this.setState({ newUserNameAvailable, isCheckingUserName: false });\r\n }\r\n\r\n displayChangePasswordForm = () => {\r\n return (\r\n {\r\n this.setState({ showChangePasswordForm: !this.state.showChangePasswordForm });\r\n }}>\r\n \r\n \r\n )\r\n \r\n }\r\n\r\n displayResetPasswordButton = () => {\r\n let buttonText = \"Reset Password\";\r\n let buttonClasses = \"btn btn-secondary mt-3 mx-1\";\r\n if (this.state.selected?.length > 0) {\r\n return (\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n if (this.readOnlyFields.includes(field.name) || this.state.uploadingImage) {\r\n if (field.name === \"referralUserId\") {\r\n return <>;\r\n }\r\n if (field.name === \"email\") {\r\n return (\r\n \r\n\r\n
    \r\n {field.title}\r\n
    \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n />\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n )\r\n }\r\n else if (field.name === \"paymentEmail\") {\r\n return (\r\n \r\n\r\n
    \r\n {field.title}\r\n
    \r\n\r\n \r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n readOnly=\"readonly\"\r\n />\r\n \r\n );\r\n }\r\n \r\n }\r\n else {\r\n if (field.name === \"bio\") {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n readOnly=\"readOnly\"\r\n style={{ overflow: \"hidden\" }}\r\n />\r\n );\r\n }\r\n else if (field.name === \"isAdmin\") {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n checked={this.state.formData[field.name]} />\r\n );\r\n }\r\n else if (field.name === \"onboardingComplete\") {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n checked={this.state.formData[field.name]} />\r\n );\r\n }\r\n else if (field.name === \"proStatusId\") {\r\n return (\r\n \r\n \r\n { this.onSelectedProStatusId(i); }}\r\n value={this.state.selectedProStatusId}\r\n options={this.proStatusIds} />\r\n );\r\n }\r\n else if (field.name === \"newUserName\") {\r\n const newUserNameAvailable = this.state.newUserNameAvailable == null ? \"\" : this.state.newUserNameAvailable ? \"Available\" : \"Not Available\";\r\n return (\r\n \r\n

    A username can only contain letters and numbers.

    \r\n \r\n
    \r\n this.onNewUserNameInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n maxLength={20}\r\n />\r\n
    \r\n \r\n \r\n {newUserNameAvailable}\r\n \r\n
    \r\n
    \r\n
    );\r\n }\r\n if (field.prepend) {\r\n return (\r\n \r\n \r\n
    \r\n
    \r\n {field.prepend}\r\n
    \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n maxLength={field.name === \"displayName\" ? 20 : undefined}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n maxLength={field.name === \"displayName\" ? 20 : undefined}\r\n />\r\n \r\n );\r\n }\r\n });\r\n }\r\n\r\n mapInputFieldsPublic = () => {\r\n let fields = [\r\n { name: \"displayName\", title: \"Name\" },\r\n { name: \"newUserName\", title: \"New Username\" },\r\n { name: \"tagLine\", title: \"Tag Line\" },\r\n { name: \"bio\", title: \"Bio\" },\r\n { name: \"isAdmin\", title: \"Administrator\" },\r\n { name: \"onboardingComplete\", title: \"Onboarding Complete\"},\r\n { name: \"proStatusId\", title: \"User Type\" },\r\n { name: \"email\", title: \"Email\" },\r\n { name: \"paymentEmail\", title: \"Payment Email\" },\r\n ];\r\n return this.mapInputFields(fields);\r\n };\r\n\r\n convertToUserModel = () => {\r\n const userName = this.state.formData.newUserName.length > 0 && this.state.validUserName && this.state.newUserNameAvailable ?\r\n this.state.formData.newUserName : this.state.formData.userName;\r\n return {\r\n name: this.state.formData.displayName,\r\n bio: this.state.formData.bio,\r\n tagLine: this.state.formData.tagLine,\r\n website: this.state.formData.website,\r\n googleUsername: this.state.formData.googleUsername,\r\n facebookUsername: this.state.formData.facebookUsername,\r\n instagramUsername: this.state.formData.instagramUsername,\r\n imageUrl: this.state.formData.imageUrl,\r\n userName: userName,\r\n email: this.state.formData.email,\r\n phoneNumber: this.state.formData.phoneNumber,\r\n proStatusId: this.state.formData.proStatusId,\r\n\r\n address: this.state.formData.address,\r\n city: this.state.formData.city,\r\n state: this.state.formData.state,\r\n postalCode: this.state.formData.postalCode,\r\n country: this.state.formData.country,\r\n\r\n onboardingComplete: this.state.formData.onboardingComplete,\r\n profileBannerUrl: this.state.formData.profileBannerUrl,\r\n\r\n isAdmin: this.state.formData.isAdmin,\r\n id: this.state.formData.id,\r\n\r\n referralUserId: this.state.formData.referralUserId,\r\n rpManagerUserId: this.state.formData.rpManagerUserId\r\n }\r\n }\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n this.setState({ savingProfile: true });\r\n\r\n let userUrl = '/api/Account/AdminUpdateUser';\r\n await postRequest(userUrl, this.convertToUserModel());\r\n\r\n this.setState({ showSavedProfile: true });\r\n\r\n setTimeout(() => this.setState({ savingProfile: false, showSavedProfile: false }), 2000);\r\n };\r\n\r\n renderSubmit = () => {\r\n let submitDisabled = true;\r\n\r\n for (let key in this.state.formData) {\r\n if (this.state.formData[key] !== null && this.state.formData[key] !== \"\") {\r\n submitDisabled = false;\r\n break;\r\n }\r\n }\r\n\r\n if (this.state.profilePic !== \"\") {\r\n submitDisabled = false;\r\n }\r\n\r\n if (this.state.formData.newUserName !== \"\" && (!this.state.validUserName || !this.state.newUserNameAvailable)) {\r\n submitDisabled = true;\r\n }\r\n\r\n if (submitDisabled) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n setSelectedReferral = (selected) => {\r\n let formData = { ...this.state.formData };\r\n formData.referralUserId = selected.length > 0 ? selected[0].id : null;\r\n\r\n this.setState({ referralEntity: selected, formData });\r\n }\r\n\r\n setSelectedRPManager = (selected) => {\r\n let formData = { ...this.state.formData };\r\n formData.rpManagerUserId = selected.length > 0 ? selected[0].id : null;\r\n\r\n this.setState({ rpManagerEntity: selected, formData });\r\n }\r\n\r\n getPaymentEmail = async (userId) => {\r\n let paymentEmail = await getRequest(\"api/Account/GetPaymentEmail?userId=\" + userId);\r\n this.setState({ paymentEmail: !!(paymentEmail?.email) ? paymentEmail.email : \"NO PAYMENT EMAIL ON FILE\" });\r\n }\r\n\r\n setSelected = async (selected) => {\r\n if (selected.length > 0 && !!(selected[0].id) && selected[0].id > 0) {\r\n await this.getPaymentEmail(selected[0].id);\r\n }\r\n\r\n let formData = {\r\n displayName: \"\",\r\n newUserName: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n imageUrl: \"\",\r\n userName: \"\",\r\n email: \"\",\r\n proStatusId: \"\",\r\n onboardingComplete: \"\",\r\n isAdmin: \"\",\r\n referralUserId: null,\r\n rpManagerUserId: null,\r\n }\r\n\r\n let referralEntity = [];\r\n let rpManagerEntity = [];\r\n\r\n let selectedProStatusId = this.proStatusIds[0];\r\n\r\n if (selected.length > 0) {\r\n\r\n formData = {\r\n displayName: selected[0].name,\r\n newUserName: \"\",\r\n bio: selected[0].bio,\r\n tagLine: selected[0].tagLine,\r\n website: selected[0].website,\r\n googleUsername: selected[0].googleUsername,\r\n facebookUsername: selected[0].facebookUsername,\r\n instagramUsername: selected[0].instagramUsername,\r\n imageUrl: selected[0].imageUrl,\r\n userName: selected[0].userName,\r\n email: selected[0].email,\r\n phoneNumber: selected[0].phoneNumber,\r\n proStatusId: selected[0].proStatusId,\r\n\r\n address: selected[0].address,\r\n city: selected[0].city,\r\n state: selected[0].state,\r\n postalCode: selected[0].postalCode,\r\n country: selected[0].country,\r\n\r\n onboardingComplete: selected[0].onboardingComplete,\r\n profileBannerUrl: selected[0].profileBannerUrl,\r\n\r\n quickStart: selected[0].quickStart,\r\n\r\n isAdmin: selected[0].isAdmin,\r\n id: selected[0].id,\r\n } \r\n\r\n selectedProStatusId = this.proStatusIds[selected[0].proStatusId];\r\n this.getSubaffiliates(selected[0].id);\r\n\r\n if (!!(selected[0].referralUserId)) {\r\n formData.referralUserId = selected[0].referralUserId;\r\n referralEntity = await this.fetchUserByReferralUserId(selected[0].referralUserId);\r\n }\r\n if (!!(selected[0].rpManagerUserId)) {\r\n formData.rpManagerUserId = selected[0].rPManagerUserId;\r\n rpManagerEntity = await this.fetchUserByRPManagerUserId(selected[0].rpManagerUserId);\r\n }\r\n }\r\n\r\n\r\n this.setState({ selected, formData, profilePicUrl: formData.imageUrl, selectedProStatusId, referralEntity, rpManagerEntity, isLoading: false });\r\n }\r\n\r\n getSubaffiliates = async (userId) => {\r\n if (userId > 0) {\r\n const url = `/api/Account/GetSubaffiliatesByUserId?userId=${userId}`;\r\n let subaffiliates = await getRequest(url);\r\n subaffiliates.sort((a, b) => (a.affiliateName > b.affiliateName) ? 1 : -1)\r\n const amazonSubaffiliateObject = subaffiliates.filter(sub => sub.affiliateName === \"Amazon\")?.[0];\r\n const amazonSubaffiliate = !!(amazonSubaffiliateObject?.subaffiliateID) ? amazonSubaffiliateObject.subaffiliateID : \"\";\r\n this.setState({ subaffiliates, amazonSubaffiliate, subaffiliatesFetched: true });\r\n }\r\n }\r\n\r\n postAmazonSubaffiliate = async () => {\r\n\r\n if (this.state.amazonSubaffiliate.length > 0) {\r\n this.setState({ savingAmazonSub: true });\r\n const url = `/api/Account/PostAmazonSubaffiliateByUserId?userId=${this.state.selected[0].id}&subaffiliate=${this.state.amazonSubaffiliate}`;\r\n const subaffiliateObject = {\r\n subaffiliateID: this.state.amazonSubaffiliate,\r\n userId: this.state.selected[0].id,\r\n affiliateName: \"Amazon\",\r\n };\r\n await postRequest(url, subaffiliateObject);\r\n await this.getSubaffiliates(this.state.selected[0].id);\r\n this.setState({ savingAmazonSub: false }); \r\n }\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.state.subaffiliates?.length > 0) {\r\n return this.state.subaffiliates?.map((item, i) => {\r\n return (\r\n \r\n {item?.affiliateName}\r\n {item?.subaffiliateID}\r\n \r\n )\r\n })\r\n } else {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n \r\n \r\n render() {\r\n return (\r\n <>\r\n {this.displayChangePasswordForm()}\r\n
    \r\n \r\n

    Users

    \r\n

    Edit user details

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.setSelected(selected)}\r\n isLoading={this.state.isLoading}\r\n options={this.state.options}\r\n placeholder=\"Search for users...\"/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Public Profile
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.mapInputFieldsPublic()}\r\n
    \r\n
    \r\n
    \r\n \r\n this.setSelectedReferral(selected)}\r\n options={this.state.referralOptions}\r\n isLoading={this.state.isLoadingReferral}\r\n placeholder=\"Search for users...\" />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n this.setSelectedRPManager(selected)}\r\n options={this.state.rpManagerOptions}\r\n isLoading={this.state.isLoadingRPManagerUsers}\r\n placeholder=\"Search for RockPorch manager...\" />\r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.subaffiliatesFetched ?\r\n
    \r\n \r\n\r\n \r\n this.onAmazonSubaffiliateInputChange(e)}\r\n value={this.state.amazonSubaffiliate}\r\n />\r\n\r\n
    \r\n {\r\n this.state.amazonSubaffiliate.length === 0 || (this.state.subaffiliates.filter(sub => sub.affiliateName === \"Amazon\").length > 0 && this.state.subaffiliates.filter(sub => sub.affiliateName === \"Amazon\")[0].subaffiliateID === this.state.amazonSubaffiliate) ?\r\n { e.preventDefault(); this.postAmazonSubaffiliate(); }}\r\n isLoading={this.state.savingAmazonSub}\r\n >\r\n Create Subaffiliate\r\n \r\n :\r\n { e.preventDefault(); this.postAmazonSubaffiliate(); }}\r\n isLoading={this.state.savingAmazonSub}\r\n >\r\n Create Subaffiliate\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n
    :\r\n <>\r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    AffiliateSubaffiliate ID
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.renderSubmit()}\r\n {\r\n this.displayResetPasswordButton()\r\n }\r\n this.setState({ savingProfile: false })}\r\n >\r\n Profile changes saved\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Users;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport ActionButton from \"../../components/ActionButton\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport { getRequest, postRequest } from 'sharedUtils/httpUtils';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport { convertToNumericMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport Modal from \"components/Modal\";\r\n\r\nclass CurrentDeals extends React.Component {\r\n state = {\r\n id: 0,\r\n url: \"\",\r\n ordinal: null,\r\n description: \"\",\r\n startDate: \"\",\r\n endDate: \"\",\r\n isValidUrl: false,\r\n isValidDate: false,\r\n showError: false,\r\n merchantExists: null,\r\n isSubmitting: false,\r\n isDeleting: false,\r\n isFetching: false,\r\n merchants: [],\r\n currentDeals: [],\r\n show: false,\r\n stateChange: true,\r\n modalType: 1,\r\n CurrentDealsTable: {\r\n title: \"Current Deals\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n },\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"url\",\r\n label: \"URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"300px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"description\",\r\n label: \"Description\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"500px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"ordinal\",\r\n label: \"Preferred Order\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"100px\" } }),\r\n }\r\n },\r\n {\r\n name: \"startDate\",\r\n label: \"Start Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return value.substring(0, value.indexOf(\"T\"));\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return value.substring(0, value.indexOf(\"T\"));\r\n }\r\n }\r\n },\r\n ],\r\n options: {\r\n selectableRows: false,\r\n onRowClick: async (rowData, rowMeta) => {\r\n this.setState({\r\n modalType: 2,\r\n id: rowData[0],\r\n url: rowData[2],\r\n description: rowData[3],\r\n ordinal: rowData[4],\r\n startDate: rowData[5],\r\n endDate: rowData[6],\r\n isValidDate: true,\r\n isValidUrl: true,\r\n stateChange: false,\r\n });\r\n this.showModal();\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n },\r\n }\r\n })\r\n },\r\n };\r\n\r\n async componentDidMount() {\r\n this.setState({ isFetching: true });\r\n\r\n const merchants = await this.fetchMerchants();\r\n const currentDealsInitial = await this.fetchCurrentDeals();\r\n\r\n this.setState({ isFetching: false });\r\n\r\n if (merchants && currentDealsInitial) {\r\n const currentDeals = this.addMerchantNameToDeals(currentDealsInitial, merchants);\r\n\r\n this.setState({ currentDeals });\r\n }\r\n }\r\n\r\n addMerchantNameToDeals = (deals, merchants) => {\r\n return deals.map((deal) => {\r\n const correspondingMerchant = merchants.find((merchant) => merchant.id === deal.merchantId);\r\n const merchantName = correspondingMerchant ? correspondingMerchant.name : 'Unknown Merchant';\r\n\r\n return {\r\n ...deal,\r\n merchantName,\r\n };\r\n });\r\n };\r\n\r\n\r\n\r\n fetchMerchants = async () => {\r\n const getUrl = \"api/Merchant/GetMerchantList\";\r\n const merchants = await getRequest(getUrl);\r\n this.setState({ merchants });\r\n return merchants;\r\n }\r\n\r\n fetchCurrentDeals = async () => {\r\n const getUrl = \"api/Merchant/GetCurrentDeals?admin=true\";\r\n const currentDeals = await getRequest(getUrl);\r\n return currentDeals;\r\n }\r\n\r\n getModalTitle = () => {\r\n switch (this.state.modalType) {\r\n case 1:\r\n return \"Create New Current Deal\";\r\n default:\r\n return \"Edit Current Deal\";\r\n }\r\n\r\n }\r\n\r\n resetState = (noShow = false) => {\r\n this.setState({\r\n show: this.state.modalType === 2 || noShow ? false : this.state.show,\r\n stateChange: true,\r\n url: \"\",\r\n description: \"\",\r\n startDate: \"\",\r\n endDate: \"\",\r\n isValidUrl: false,\r\n isValidDate: false,\r\n showError: false,\r\n modalType: 1,\r\n });\r\n };\r\n\r\n showModal = (e) => {\r\n this.setState({ show: !this.state.show });\r\n };\r\n\r\n hideModal = () => {\r\n this.setState({ show: false });\r\n }\r\n\r\n\r\n breadCrumbList = [\r\n { link: \"/Admin\", text: \"Admin\" },\r\n { link: \"/Admin/CurrentDeals\", text: \"Current Deals\" },\r\n ];\r\n\r\n handleUrl = (e) => {\r\n const url = e.target.value;\r\n const isValid = url.length > 0 ? isValidUrl(url, true) : false;\r\n this.setState({ url, isValidUrl: isValid, showError: false, stateChange: true });\r\n };\r\n\r\n handleOrdinal = (e) => {\r\n const ordinal = e.target.value > 0 ? e.target.value : null;\r\n \r\n this.setState({ ordinal, showError: false, stateChange: true });\r\n };\r\n\r\n handleDescription = (e) => {\r\n this.setState({ description: e.target.value, showError: false, stateChange: true });\r\n };\r\n\r\n handleStartDate = (e) => {\r\n this.setState({ startDate: e.target.value, showError: false, stateChange: true });\r\n };\r\n\r\n handleEndDate = (e) => {\r\n this.setState({ showError: false, endDate: e.target.value, stateChange: true });\r\n };\r\n\r\n handleSubmit = async () => {\r\n const { url, description, isValidUrl, startDate, endDate, ordinal } = this.state;\r\n\r\n const isValidDate = this.validateDate(startDate, endDate);\r\n if (isValidUrl && isValidDate) {\r\n const submitUrl = this.state.modalType === 1 ? \"api/Merchant/CreateCurrentDeal\" : \"api/Merchant/UpdateCurrentDeal\";\r\n const payload = this.state.modalType === 1 ? {\r\n url,\r\n description,\r\n startDate,\r\n endDate,\r\n ordinal,\r\n } :\r\n {\r\n id: this.state.id,\r\n url,\r\n description,\r\n startDate,\r\n endDate,\r\n ordinal\r\n };\r\n\r\n this.setState({ isSubmitting: true })\r\n const currentDeal = await postRequest(submitUrl, payload);\r\n const merchantExists = !!(currentDeal) ? true : false;\r\n this.setState({ merchantExists, isSubmitting: false });\r\n if (merchantExists) {\r\n this.resetState();\r\n this.setState({ isFetching: true });\r\n\r\n const currentDealsInitial = await this.fetchCurrentDeals();\r\n\r\n this.setState({ isFetching: false });\r\n\r\n if (currentDealsInitial) {\r\n const currentDeals = this.addMerchantNameToDeals(currentDealsInitial, this.state.merchants);\r\n\r\n this.setState({ currentDeals });\r\n }\r\n\r\n setTimeout(() => {\r\n this.setState({ merchantExists: null });\r\n if (this.state.modalType === 2) {\r\n this.resetState();\r\n }\r\n }, 2000)\r\n }\r\n } else {\r\n this.setState({ showError: true, isValidDate });\r\n }\r\n };\r\n\r\n confirmDelete = () => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to DELETE this item? This will be permanent...\");\r\n if (confirmDelete) {\r\n this.handleDelete();\r\n }\r\n }\r\n\r\n\r\n handleDelete = async () => {\r\n const deleteUrl = \"api/Merchant/DeleteCurrentDeal\";\r\n\r\n const payload = {\r\n id: this.state.id\r\n }\r\n\r\n this.setState({ isDeleting: true })\r\n await postRequest(deleteUrl, payload);\r\n\r\n this.resetState();\r\n\r\n this.setState({ isDeleting: false, isFetching: true });\r\n const currentDealsInitial = await this.fetchCurrentDeals();\r\n\r\n this.setState({ isFetching: false });\r\n\r\n if (currentDealsInitial) {\r\n const currentDeals = this.addMerchantNameToDeals(currentDealsInitial, this.state.merchants);\r\n\r\n this.setState({ currentDeals });\r\n }\r\n }\r\n\r\n handleCreateCurrentDealButton = () => {\r\n this.resetState();\r\n this.setState({ show: true });\r\n }\r\n\r\n validateDate = (startDate, endDate) => {\r\n if (!startDate || !endDate) {\r\n return false;\r\n }\r\n\r\n const startTimestamp = new Date(startDate).setHours(0,0,0,0);\r\n const endTimestamp = new Date(endDate).setHours(23,59,59,999);\r\n const currentTimestamp = new Date().setHours(23, 59, 59, 999);\r\n\r\n return startTimestamp <= endTimestamp && endTimestamp >= currentTimestamp;\r\n };\r\n\r\n render() {\r\n const { url, description, startDate, endDate } = this.state; \r\n const submitDisabled = !this.state.stateChange || (url.length === 0 || description.length === 0 || startDate.length === 0 || endDate.length === 0);\r\n\r\n return (\r\n <>\r\n { this.setState({ show: false }); this.resetState(true); }}\r\n toggleModal={() => { this.setState({ show: false }); this.resetState(true); }}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    {this.getModalTitle()}

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n

    \r\n Use a valid URL\r\n

    \r\n

    \r\n Start date should be before the end date, & end date should be no later than today\r\n

    \r\n

    \r\n Merchant not found. Try again.\r\n

    \r\n

    \r\n Success!\r\n

    \r\n
    \r\n \r\n Submit\r\n \r\n {\r\n this.state.modalType === 2 ?\r\n \r\n Delete\r\n \r\n :\r\n <>\r\n }\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n

    Current Deals

    \r\n

    Create current deals with a URL from an integrated merchant

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Create Current Deal\r\n \r\n
    \r\n {\r\n this.state.isFetching ?\r\n \r\n :\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default CurrentDeals;","import React from \"react\";\r\nimport { FormGroup, Label, Input } from \"reactstrap\";\r\nimport ActionButton from \"../../components/ActionButton\";\r\nimport { getRequest, postRequest } from 'sharedUtils/httpUtils';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport Modal from \"components/Modal\";\r\nimport { getProperties } from \"sharedUtils/postFunctions\";\r\n\r\nclass FeaturedContent extends React.Component {\r\n state = {\r\n id: 0,\r\n addShareCode: \"\",\r\n showError: false,\r\n merchantExists: null,\r\n isSubmitting: false,\r\n isDeleting: false,\r\n isFetching: false,\r\n show: false,\r\n selectedCase: 1,\r\n addSubmitError: false,\r\n deleteError: false,\r\n topContentFromDb: [],\r\n content: [],\r\n FeaturedContentTable: {\r\n title: \"Featured Content\",\r\n columns: [\r\n {\r\n name: \"creatorUserName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: true // Column is not visible. Adding so that it will be included in CSV export.\r\n },\r\n },\r\n {\r\n name: \"type\",\r\n label: \"Type\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: true // Column is not visible. Adding so that it will be included in CSV export.\r\n },\r\n },\r\n {\r\n name: \"title\",\r\n label: \"Title\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"350px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"imageUrl\",\r\n label: \"Image URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const url = value;\r\n return ;\r\n },\r\n }\r\n },\r\n {\r\n name: \"shareCode\",\r\n label: \"Sharecode\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"200px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"postId\",\r\n label: \"Post Id\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"published\",\r\n label: \"Published\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return String(value);\r\n },\r\n }\r\n },\r\n ],\r\n options: {\r\n customToolbarSelect: () => { },\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n },\r\n }\r\n })\r\n },\r\n };\r\n\r\n async componentDidMount() {\r\n this.setState({ isFetching: true });\r\n\r\n await this.fetchFeaturedContent();\r\n\r\n this.setState({ isFetching: false });\r\n }\r\n\r\n fetchFeaturedContent = async () => {\r\n const getUrl = \"api/Featured/GetFeaturedContent?admin=true\";\r\n const tc = await getRequest(getUrl);\r\n let content = this.createContentForDatatable(tc);\r\n this.setState({ content, topContentFromDb: tc });\r\n }\r\n\r\n createContentForDatatable = tc => {\r\n let content = [];\r\n if (!!(tc) && tc.length > 0) {\r\n content = tc.map(c => {\r\n let properties = getProperties(c.properties);\r\n let imageUrl;\r\n\r\n if (!!(properties)){\r\n imageUrl = getProperties(c.properties)\r\n .filter(property => property?.parentId == null && (property?.role === 0 || property?.role === 1 || property?.role === 3))\r\n .map(property => {\r\n return {\r\n url: property?.value,\r\n }\r\n })[0]?.url;\r\n }\r\n const creatorUserName = c.user.userName;\r\n const shareCode = c.shareCode;\r\n const title = c.title;\r\n const published = c.featuredPublished\r\n const postId = c.id;\r\n const type = this.getType(c.type);\r\n return {\r\n imageUrl, shareCode, title, creatorUserName, postId, type, published\r\n }\r\n });\r\n }\r\n return content;\r\n }\r\n\r\n getType = typeId => {\r\n return typeId === 4 ? \"Blog\" : typeId === 2 ? \"Locker\" : \"Post\";\r\n }\r\n\r\n\r\n getModalTitle = () => {\r\n return \"Add Featured Content Item\";\r\n }\r\n\r\n handleAddContentButton = () => {\r\n this.setState({ show: true })\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Featured Content\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n\r\n breadCrumbList = [\r\n { link: \"/Admin\", text: \"Admin\" },\r\n { link: \"/Admin/Featured\", text: \"Featured\" },\r\n ];\r\n\r\n handleShareCode = (e) => {\r\n this.setState({ addShareCode: e.target.value });\r\n }\r\n\r\n\r\n handleSubmit = async () => {\r\n this.setState({ isSubmitting: true });\r\n\r\n const addUrl = \"api/Featured/AddFeaturedContent\";\r\n\r\n const payload = {\r\n shareCode: this.state.addShareCode\r\n }\r\n\r\n const postsWithAdd = await postRequest(addUrl, payload);\r\n if (!!(postsWithAdd)) {\r\n const content = this.createContentForDatatable(postsWithAdd);\r\n\r\n this.setState({ content, show: false });\r\n this.resetState();\r\n } else {\r\n this.setState({ addSubmitError: true });\r\n }\r\n\r\n this.setState({ isSubmitting: false });\r\n };\r\n\r\n confirmPublishAll = () => {\r\n const confirmDelete = window.confirm(\"ALL ITEMS will be published...\");\r\n if (confirmDelete) {\r\n this.handlePublish();\r\n }\r\n }\r\n\r\n confirmPublishSelected = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"SELECTED ITEMS will be published...\");\r\n if (confirmDelete) {\r\n this.handlePublish(selectedRows, displayData);\r\n }\r\n }\r\n\r\n\r\n handlePublish = async (selectedRows = null, displayData = null) => {\r\n this.setState({ loading: true });\r\n let postIds = [];\r\n if (!!(selectedRows) && !!(selectedRows.data) && selectedRows.data.length > 0) {\r\n const selectedRowsData = selectedRows.data;\r\n postIds = selectedRowsData.length > 0 ? selectedRowsData.map(row => displayData[row.index].data[5]) : [];\r\n }\r\n\r\n const publishUrl = \"api/Featured/PublishFeaturedContent\";\r\n\r\n const payload = {\r\n postIds\r\n }\r\n\r\n const publishedPosts = await postRequest(publishUrl, payload);\r\n\r\n if (!!(publishedPosts)) {\r\n const content = this.createContentForDatatable(publishedPosts);\r\n\r\n this.setState({ content, publishError: false });\r\n } else {\r\n this.setState({ publishError: true });\r\n }\r\n\r\n this.setState({ loading: false });\r\n };\r\n\r\n confirmDelete = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to DELETE this item? This will be permanent...\");\r\n if (confirmDelete) {\r\n this.handleDelete(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleDelete = async (selectedRows, displayData) => {\r\n this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const postIds = selectedRowsData.map(row => displayData[row.index].data[5]);\r\n const deleteUrl = \"api/Featured/DeleteFeaturedContentByPostId\";\r\n\r\n const payload = {\r\n postIds\r\n }\r\n\r\n const postsWithDelete = await postRequest(deleteUrl, payload);\r\n\r\n if (!!(postsWithDelete)) {\r\n const content = this.createContentForDatatable(postsWithDelete);\r\n\r\n this.setState({ content, deleteError: false });\r\n } else {\r\n this.setState({ deleteError: true });\r\n }\r\n\r\n this.setState({ loading: false });\r\n }\r\n\r\n resetState = () => {\r\n this.setState({ addShareCode: \"\", addSubmitError: false });\r\n }\r\n\r\n render() {\r\n const submitDisabled = this.state.addShareCode.length === 0;\r\n\r\n return (\r\n <>\r\n { this.setState({ show: false }); this.resetState(true); }}\r\n toggleModal={() => { this.setState({ show: false }); this.resetState(true); }}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    {this.getModalTitle()}

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n

    ERROR: check shareCode and try again

    \r\n
    \r\n \r\n Add\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.isFetching ?\r\n \r\n :\r\n
    \r\n
    \r\n
    \r\n \r\n Publish\r\n \r\n \r\n Add Featured Content\r\n \r\n
    \r\n

    ERROR DELETING CONTENT: try again

    \r\n

    ERROR PUBLISHING CONTENT: try again

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default FeaturedContent;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport ActionButton from \"../../components/ActionButton\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport { getRequest, postRequest } from 'sharedUtils/httpUtils';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport Modal from \"components/Modal\";\r\n\r\nclass FeaturedProducts extends React.Component {\r\n state = {\r\n id: 0,\r\n addShareCode: \"\",\r\n showError: false,\r\n isSubmitting: false,\r\n isDeleting: false,\r\n isFetching: false,\r\n show: false,\r\n selectedCase: 1,\r\n addSubmitError: false,\r\n deleteError: false,\r\n featuredProductsFromDb: [],\r\n FeaturedProductsTable: {\r\n title: \"Featured Products\",\r\n columns: [\r\n {\r\n name: \"merchant\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: true // Column is not visible. Adding so that it will be included in CSV export.\r\n },\r\n },\r\n {\r\n name: \"name\",\r\n label: \"Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"350px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"imageUrl\",\r\n label: \"Image URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const url = value;\r\n return ;\r\n },\r\n }\r\n },\r\n {\r\n name: \"manufacturer\",\r\n label: \"Brand\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"350px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"shareCode\",\r\n label: \"Sharecode\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"200px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"userMerchantProductId\",\r\n label: \"UserMerchantProductId\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"featuredPublished\",\r\n label: \"Published\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (value) {\r\n return String(value);\r\n }\r\n return \"false\";\r\n },\r\n }\r\n },\r\n ],\r\n options: {\r\n customToolbarSelect: () => { },\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n },\r\n }\r\n })\r\n },\r\n };\r\n\r\n async componentDidMount() {\r\n this.setState({ isFetching: true });\r\n\r\n await this.fetchFeaturedProducts();\r\n\r\n this.setState({ isFetching: false });\r\n }\r\n\r\n fetchFeaturedProducts = async () => {\r\n const getUrl = \"api/Featured/GetFeaturedProducts?admin=true\";\r\n const tc = await getRequest(getUrl);\r\n this.setState({ featuredProductsFromDb: tc });\r\n }\r\n\r\n\r\n getModalTitle = () => {\r\n return \"Add Featured Product Item\";\r\n }\r\n\r\n handleAddProductButton = () => {\r\n this.setState({ show: true })\r\n }\r\n\r\n confirmPublishAll = () => {\r\n const confirmDelete = window.confirm(\"ALL ITEMS will be published...\");\r\n if (confirmDelete) {\r\n this.handlePublish();\r\n }\r\n }\r\n\r\n confirmPublishSelected = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"SELECTED ITEMS will be published...\");\r\n if (confirmDelete) {\r\n this.handlePublish(selectedRows, displayData);\r\n }\r\n }\r\n\r\n\r\n handlePublish = async (selectedRows = null, displayData = null) => {\r\n this.setState({ loading: true });\r\n let umps = [];\r\n if (!!(selectedRows) && !!(selectedRows.data) && selectedRows.data.length > 0) {\r\n const selectedRowsData = selectedRows.data;\r\n umps = selectedRowsData.map(row => displayData[row.index].data[5]);\r\n }\r\n\r\n const publishUrl = \"api/Featured/PublishFeaturedProduct\";\r\n\r\n const payload = {\r\n userMerchantProductIds:umps\r\n }\r\n\r\n const publish = await postRequest(publishUrl, payload);\r\n\r\n if (!!(publish)) {\r\n this.setState({ featuredProductsFromDb: publish, publishError: false });\r\n } else {\r\n this.setState({ publishError: true });\r\n }\r\n\r\n this.setState({ loading: false });\r\n };\r\n\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Featured Content\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n\r\n breadCrumbList = [\r\n { link: \"/Admin\", text: \"Admin\" },\r\n { link: \"/Admin/Featured\", text: \"Featured\" },\r\n ];\r\n\r\n handleShareCode = (e) => {\r\n this.setState({ addShareCode: e.target.value });\r\n }\r\n\r\n\r\n handleSubmit = async () => {\r\n this.setState({ isSubmitting: true });\r\n\r\n const addUrl = \"api/Featured/AddFeaturedProduct\";\r\n\r\n const payload = {\r\n shareCode: this.state.addShareCode\r\n }\r\n\r\n const featuredProductsFromDb = await postRequest(addUrl, payload);\r\n if (!!(featuredProductsFromDb)) {\r\n this.setState({ featuredProductsFromDb, show: false });\r\n this.resetState();\r\n } else {\r\n this.setState({ addSubmitError: true });\r\n }\r\n\r\n this.setState({ isSubmitting: false });\r\n };\r\n\r\n confirmDelete = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to DELETE these products? This will be permanent...\");\r\n if (confirmDelete) {\r\n this.handleDelete(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleDelete = async (selectedRows, displayData) => {\r\n this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const umps = selectedRowsData.map(row => displayData[row.index].data[5]);\r\n const deleteUrl = \"api/Featured/DeleteFeaturedProductsByUMPId\";\r\n const payload = {\r\n userMerchantProductIds: umps\r\n }\r\n\r\n const featuredProductsFromDb = await postRequest(deleteUrl, payload);\r\n\r\n if (!!(featuredProductsFromDb)) {\r\n this.setState({ featuredProductsFromDb, deleteError: false });\r\n } else {\r\n this.setState({ deleteError: true });\r\n }\r\n\r\n this.setState({ loading: false });\r\n }\r\n\r\n resetState = () => {\r\n this.setState({ addShareCode: \"\", addSubmitError: false });\r\n }\r\n\r\n render() {\r\n const submitDisabled = this.state.addShareCode.length === 0;\r\n\r\n return (\r\n <>\r\n { this.setState({ show: false }); this.resetState(true); }}\r\n toggleModal={() => { this.setState({ show: false }); this.resetState(true); }}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    {this.getModalTitle()}

    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n

    ERROR: check shareCode and try again

    \r\n
    \r\n \r\n Add\r\n \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.isFetching ?\r\n \r\n :\r\n
    \r\n
    \r\n
    \r\n \r\n Publish\r\n \r\n \r\n Add Featured Product\r\n \r\n
    \r\n

    ERROR DELETING CONTENT: try again

    \r\n

    ERROR PUBLISHING CONTENT: try again

    \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default FeaturedProducts;","import React from \"react\";\r\nimport { Form, FormGroup, Label, Input, Button } from \"reactstrap\";\r\nimport ActionButton from \"../../components/ActionButton\";\r\nimport { getRequest, postRequest } from 'sharedUtils/httpUtils';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport Modal from \"components/Modal\";\r\n\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\n\r\nclass FeaturedCreators extends React.Component {\r\n state = {\r\n options: [],\r\n value: [],\r\n id: 0,\r\n selected: [],\r\n selectedEditFeaturedCreatorId: 0,\r\n addShareCode: \"\",\r\n addUserName: \"\",\r\n addUserText: \"\",\r\n addUserImage: \"\",\r\n addSector: \"\",\r\n addPostProduct: [],\r\n newPostProductType: 'post',\r\n newPostProductShareCode: '',\r\n sectors: [],\r\n isSubmitting: false,\r\n isDeleting: false,\r\n isFetching: false,\r\n isLoading: false,\r\n show: false,\r\n modalType: 1,\r\n selectedCase: 1,\r\n addSubmitError: false,\r\n topCreatorsFromDb: [],\r\n deleteError: false,\r\n FeaturedCreatorTable: {\r\n title: \"Featured Creators\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Featured Creator Id\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n },\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: true // Column is not visible. Adding so that it will be included in CSV export.\r\n },\r\n },\r\n {\r\n name: \"userImage\",\r\n label: \"Image\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const url = value;\r\n return ;\r\n },\r\n }\r\n },\r\n {\r\n name: \"userText\",\r\n label: \"User Text\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"200px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"sectors\",\r\n label: \"Sectors\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!!(value) && value.length > 0) {\r\n return value.join(\", \");\r\n }\r\n },\r\n }\r\n },\r\n {\r\n name: \"published\",\r\n label: \"Published\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (value) {\r\n return String(value);\r\n }\r\n return \"false\" },\r\n }\r\n },\r\n ],\r\n options: {\r\n customToolbarSelect: () => { },\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n onRowClick: async (rowData, rowMeta) => {\r\n const id = rowData[0];\r\n const selectedEditFeaturedCreator = this.state.topCreatorsFromDb.filter(tc => tc.id === id)[0];\r\n var topContent = selectedEditFeaturedCreator.featuredContent.postsProducts.map(p => { \r\n return { type: !!(p.userMerchantProductId) ? \"product\" : \"post\", shareCode: p.shareCode }\r\n });\r\n const sectorsArray = Object.values(selectedEditFeaturedCreator.sectors).filter((item) => typeof item === \"string\");\r\n\r\n this.setState({\r\n selectedEditFeaturedCreatorId: selectedEditFeaturedCreator.id,\r\n modalType: 2,\r\n selectedEditFeaturedCreator,\r\n show: true,\r\n addUserName: selectedEditFeaturedCreator.userName,\r\n addUserImage: selectedEditFeaturedCreator.userImage,\r\n addUserText: selectedEditFeaturedCreator.userText,\r\n sectors: sectorsArray,\r\n addPostProduct: topContent\r\n \r\n });\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n },\r\n }\r\n })\r\n },\r\n };\r\n\r\n async componentDidMount() {\r\n this.setState({ isFetching: true });\r\n\r\n await this.fetchFeaturedCreators();\r\n\r\n this.setState({ isFetching: false });\r\n }\r\n\r\n\r\n fetchFeaturedCreators = async () => {\r\n const getUrl = \"api/Featured/GetFeaturedPostsAndProducts?admin=true\";\r\n const topCreatorsFromDb = await getRequest(getUrl);\r\n this.setState({ topCreatorsFromDb });\r\n }\r\n\r\n confirmPublishAll = () => {\r\n const confirmDelete = window.confirm(\"ALL ITEMS will be published...\");\r\n if (confirmDelete) {\r\n this.handlePublish();\r\n }\r\n }\r\n\r\n confirmPublishSelected = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"SELECTED ITEMS will be published...\");\r\n if (confirmDelete) {\r\n this.handlePublish(selectedRows, displayData);\r\n }\r\n }\r\n\r\n\r\n handlePublish = async (selectedRows = null, displayData = null) => {\r\n this.setState({ loading: true });\r\n let featuredCreatorIds = [];\r\n if (!!(selectedRows) && !!(selectedRows.data) && selectedRows.data.length > 0) {\r\n const selectedRowsData = selectedRows.data;\r\n featuredCreatorIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n }\r\n\r\n const deleteUrl = \"api/Featured/PublishFeaturedCreator\";\r\n\r\n const payload = {\r\n featuredCreatorIds\r\n }\r\n\r\n const publish = await postRequest(deleteUrl, payload);\r\n\r\n if (!!(publish)) {\r\n this.setState({ topCreatorsFromDb: publish, publishError: false });\r\n } else {\r\n this.setState({ publishError: true });\r\n }\r\n\r\n this.setState({ loading: false });\r\n };\r\n\r\n getModalTitle = () => {\r\n if (this.state.modalType === 1) {\r\n return \"Add Featured Creator\";\r\n } else {\r\n return \"Edit Featured Creator\";\r\n }\r\n }\r\n\r\n handleAddContentButton = () => {\r\n this.setState({ modalType: 1, show: true })\r\n }\r\n\r\n breadCrumbList = [\r\n { link: \"/Admin\", text: \"Admin\" },\r\n { link: \"/Admin/Featured\", text: \"Featured\" },\r\n ];\r\n\r\n handleShareCode = (e) => {\r\n this.setState({ addShareCode: e.target.value });\r\n }\r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\r\n\r\n setSelected = async (selected) => {\r\n this.setState({ selected });\r\n }\r\n\r\n handleUserName = (e) => {\r\n this.setState({ addUserName: e.target.value });\r\n }\r\n\r\n handleUserText = (e) => {\r\n this.setState({ addUserText: e.target.value });\r\n }\r\n\r\n handleUserImage = (e) => {\r\n this.setState({ addUserImage: e.target.value });\r\n }\r\n\r\n handleAddSector = (e) => {\r\n this.setState({ addSector: e.target.value });\r\n }\r\n\r\n handlePostProductTypeChange = (e) => {\r\n this.setState({ newPostProductType: e.target.value });\r\n };\r\n\r\n handlePostProductShareCodeChange = (e) => {\r\n this.setState({ newPostProductShareCode: e.target.value });\r\n };\r\n\r\n addPostProductToState = () => {\r\n const { newPostProductType, newPostProductShareCode } = this.state;\r\n if (newPostProductType.length > 0 && newPostProductShareCode.length > 0) {\r\n const newPostProduct = { type: newPostProductType, shareCode: newPostProductShareCode };\r\n\r\n this.setState((prevState) => ({\r\n addPostProduct: [...prevState.addPostProduct, newPostProduct],\r\n newPostProductType: 'post',\r\n newPostProductShareCode: '',\r\n }));\r\n }\r\n };\r\n\r\n addSectorToSectors = () => {\r\n const { addSector, sectors } = this.state;\r\n if (addSector.trim() !== \"\") {\r\n this.setState({\r\n sectors: [...sectors, addSector],\r\n addSector: \"\"\r\n });\r\n }\r\n };\r\n\r\n removePostProduct = (index) => {\r\n this.setState((prevState) => ({\r\n addPostProduct: prevState.addPostProduct.filter((_, i) => i !== index),\r\n }));\r\n };\r\n\r\n removeSector = (sector) => {\r\n const { sectors } = this.state;\r\n const updatedSectors = sectors.filter(item => item !== sector);\r\n this.setState({ sectors: updatedSectors });\r\n };\r\n\r\n handleSubmit = async () => {\r\n this.setState({ isSubmitting: true });\r\n\r\n const addUrl = \"api/Featured/AddFeaturedCreator\";\r\n\r\n const payload = {\r\n userName: this.state.selected[0].userName,\r\n userText: this.state.addUserText,\r\n userImage: this.state.addUserImage,\r\n sectors: this.state.sectors,\r\n topContent: this.state.addPostProduct\r\n }\r\n\r\n const topCreatorsFromDb = await postRequest(addUrl, payload);\r\n if (!!(topCreatorsFromDb)) {\r\n\r\n this.setState({ topCreatorsFromDb, show: false });\r\n this.resetState();\r\n } else {\r\n this.setState({ addSubmitError: true });\r\n }\r\n\r\n this.setState({ isSubmitting: false });\r\n };\r\n\r\n handleEditSubmit = async () => {\r\n this.setState({ isSubmitting: true });\r\n\r\n const editUrl = \"api/Featured/EditFeaturedCreator\";\r\n const payload = {\r\n id: this.state.selectedEditFeaturedCreatorId,\r\n userText: this.state.addUserText,\r\n userImage: this.state.addUserImage,\r\n sectors: this.state.sectors,\r\n topContent: this.state.addPostProduct\r\n }\r\n\r\n const topCreatorsFromDb = await postRequest(editUrl, payload);\r\n if (!!(topCreatorsFromDb)) {\r\n\r\n this.setState({ topCreatorsFromDb, show: false });\r\n this.resetState();\r\n } else {\r\n this.setState({ addSubmitError: true });\r\n }\r\n\r\n this.setState({ isSubmitting: false });\r\n };\r\n\r\n confirmDelete = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to DELETE these Creators? This will be permanent...\");\r\n if (confirmDelete) {\r\n this.handleDelete(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleDelete = async (selectedRows, displayData) => {\r\n this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const featuredCreatorIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"api/Featured/DeleteFeaturedCreatorsByFeaturedCreatorId\";\r\n\r\n const payload = {\r\n featuredCreatorIds\r\n }\r\n\r\n const topCreatorsFromDb = await postRequest(deleteUrl, payload);\r\n\r\n if (!!(topCreatorsFromDb)) {\r\n this.setState({ topCreatorsFromDb, deleteError: false });\r\n } else {\r\n this.setState({ deleteError: true });\r\n }\r\n\r\n this.setState({ loading: false });\r\n }\r\n\r\n resetState = () => {\r\n this.setState({\r\n sectors: [], selected: [], addShareCode: \"\", addUserName: \"\", addUserText: \"\", addUserImage: \"\", addSector: \"\", addSubmitError: false, addPostProduct: [], newPostProductType: 'post', newPostProductShareCode: ''\r\n });\r\n }\r\n\r\n render() {\r\n const submitDisabled = (this.state.selected.length !== 1 && this.state.addUserName.length === 0)\r\n || this.state.addUserText.length === 0\r\n || this.state.addUserImage.length === 0\r\n || this.state.sectors.length === 0\r\n || this.state.addPostProduct.length === 0;\r\n\r\n return (\r\n <>\r\n { this.setState({ show: false }); this.resetState(true); }}\r\n toggleModal={() => { this.setState({ show: false }); this.resetState(true); }}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    {this.getModalTitle()}

    \r\n
    \r\n {\r\n this.state.modalType === 1 ?\r\n \r\n \r\n this.setSelected(selected)}\r\n isLoading={this.state.isLoading}\r\n options={this.state.options}\r\n clearButtonProps={{ style: { color: 'red', fontSize: '14px' } }}\r\n placeholder=\"Search for users...\" />\r\n \r\n :\r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {!!(this.state.sectors) && this.state.sectors.map((sector, index) => (\r\n
    \r\n {sector}\r\n \r\n
    \r\n ))}\r\n
    \r\n\r\n
    \r\n {/* Your existing Sector part */}\r\n \r\n {/* ... */}\r\n \r\n
    \r\n {/* ... */}\r\n
    \r\n\r\n {/* New Posts/Products section */}\r\n \r\n \r\n
    \r\n {/* Dropdown to select type */}\r\n \r\n \r\n \r\n \r\n {/* Text input for share code */}\r\n \r\n {/* Add button */}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {/* Display added Posts/Products */}\r\n
    \r\n {this.state.addPostProduct.map((postProduct, index) => (\r\n
    \r\n {postProduct.type === 'post' ? 'Post:' : 'Product:'} {postProduct.shareCode}\r\n this.removePostProduct(index)}\r\n >\r\n x\r\n \r\n
    \r\n ))}\r\n
    \r\n
    \r\n\r\n

    ERROR: check shareCode and try again

    \r\n
    \r\n {\r\n this.state.modalType === 1 ?\r\n \r\n Add\r\n \r\n :\r\n \r\n Submit Edit\r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.state.isFetching ?\r\n \r\n :\r\n
    \r\n
    \r\n
    \r\n \r\n Publish\r\n \r\n \r\n Add Featured Creator\r\n \r\n
    \r\n

    ERROR DELETING CREATOR(S): try again

    \r\n

    ERROR PUBLISHING CREATOR(S): try again

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default FeaturedCreators;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport ActionButton from \"../../components/ActionButton\";\r\nimport { isValidUrl } from \"sharedUtils/validationUtils\";\r\nimport { getRequest, postRequest } from 'sharedUtils/httpUtils';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport { convertToNumericMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport Modal from \"components/Modal\";\r\nimport FeaturedContent from \"./FeaturedContent\";\r\nimport FeaturedProducts from \"./FeaturedProducts\";\r\nimport FeaturedCreators from \"./FeaturedCreators\";\r\n\r\n\r\nclass Featured extends React.Component {\r\n state = {\r\n selectedCase: 1,\r\n };\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Featured Content\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Featured Products\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Featured Creators\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n },\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n displayContent = () => {\r\n const selected = this.state.selectedCase;\r\n\r\n switch (selected) {\r\n case 1:\r\n return \r\n case 2:\r\n return \r\n case 3:\r\n return \r\n }\r\n }\r\n\r\n breadCrumbList = [\r\n { link: \"/Admin\", text: \"Admin\" },\r\n { link: \"/Admin/Featured\", text: \"Featured\" },\r\n ];\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Featured

    \r\n

    Manage Featured Content, Products, and Creators for the marketing site

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayContent()}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Featured;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Select from 'react-select'\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport _ from \"lodash\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass PaymentRuns extends React.Component {\r\n\r\n selectOptions = {\r\n last30Days: {\r\n value: 0,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: DateTime.utc().minus({ days: 30 }).toISO(),\r\n endDate: DateTime.utc().toISO()\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 1,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: DateTime.utc().minus({ days: 90 }).toISO(),\r\n endDate: DateTime.utc().toISO()\r\n }\r\n }\r\n },\r\n last180Days: {\r\n value: 2,\r\n label: \"Last 180 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: DateTime.utc().minus({ days: 180 }).toISO(),\r\n endDate: DateTime.utc().toISO()\r\n }\r\n }\r\n },\r\n last365Days: {\r\n value: 3,\r\n label: \"Last 365 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: DateTime.utc().minus({ days: 365 }).toISO(),\r\n endDate: DateTime.utc().toISO()\r\n }\r\n }\r\n },\r\n };\r\n\r\n state = {\r\n loading: false,\r\n creatingNewPaymentRun: false,\r\n paymentRunInfos: {},\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.last180Days,\r\n this.selectOptions.last365Days,\r\n ],\r\n defaultValue: this.selectOptions.last30Days,\r\n currentValue: this.selectOptions.last30Days,\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/PaymentRuns', text: 'Payment Runs' }\r\n ]\r\n\r\n headers = [\"Id\", \"Run Date\", \"Total Records\", \"Pending\", \"Skipped\", \"Rejected\", \"No Payment Email\", \"Approved\", \"Paid\", \"Status\"];\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n\r\n this.setState({\r\n loading: true\r\n });\r\n\r\n let paymentRunInfos = await this.getPaymentRunInfos(dateRange?.startDate, dateRange?.endDate);\r\n this.setState({\r\n paymentRunInfos,\r\n loading: false\r\n });\r\n }\r\n\r\n getPaymentRunInfos = async (startDate, endDate) => {\r\n let url = `api/merchant/GetPaymentRunInfos`;\r\n if (startDate) {\r\n url = `${url}?startDate=${startDate}`;\r\n }\r\n if (endDate) {\r\n url = url.includes('?') ? `${url}&endDate=${endDate}` : `${url}?endDate=${endDate}`;\r\n }\r\n let paymentRunInfos = await getRequest(url) ?? [];\r\n return _.orderBy(paymentRunInfos, ['paymentRunId'], ['desc']);\r\n }\r\n\r\n handleCreateNewPaymentRun = async (e) => {\r\n e.preventDefault();\r\n\r\n if (window.confirm('Are you sure you wish to create a new payment run?')) {\r\n \r\n this.setState({\r\n loading: true\r\n });\r\n\r\n let url = 'api/merchant/CreatePaymentRun';\r\n let runPaymentsResponse = await postRequest(url, null);\r\n\r\n toast.success(\r\n
    \r\n

    Success

    \r\n
    \r\n

    Created PaymentRunId: {runPaymentsResponse.paymentRunId}

    \r\n

    Records created: {runPaymentsResponse.paymentRunDetailRecordCount}

    \r\n
    ,\r\n {\r\n duration: 4000,\r\n position: 'top-center'\r\n }\r\n );\r\n\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n }\r\n }\r\n\r\n displayTableHeader = () => {\r\n return this.headers.map((header, i) => {\r\n return (\r\n {header}\r\n )\r\n })\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.state.paymentRunInfos && this.state.paymentRunInfos.length > 0) {\r\n return this.state.paymentRunInfos.map((paymentRunInfo) => {\r\n return (\r\n \r\n \r\n \r\n {paymentRunInfo.paymentRunId}\r\n \r\n \r\n {convertToNumericMonthAndDayAndYearAndTime(paymentRunInfo.createdDate, false).replace(',', '')}\r\n {paymentRunInfo.paymentRunDetailCount}\r\n {paymentRunInfo.pendingCount} (${paymentRunInfo.pendingAmount.toFixed(2)})\r\n {paymentRunInfo.skippedCount} (${paymentRunInfo.skippedAmount.toFixed(2)})\r\n {paymentRunInfo.rejectedCount} (${paymentRunInfo.rejectedAmount.toFixed(2)})\r\n {paymentRunInfo.noPaymentEmailCount} (${paymentRunInfo.noPaymentEmailAmount.toFixed(2)})\r\n {paymentRunInfo.approvedCount} (${paymentRunInfo.approvedAmount.toFixed(2)})\r\n {paymentRunInfo.paidCount} (${paymentRunInfo.paidAmount.toFixed(2)})\r\n {paymentRunInfo.paymentRunStatus}\r\n \r\n )\r\n })\r\n }\r\n else {\r\n return (\r\n \r\n No data\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n

    Payment Runs

    \r\n

    Manage payments

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n defaultValue={this.state.selectOptions.defaultValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {\r\n this.state.loading ?\r\n :\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n } \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default PaymentRuns;","import React from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider, withStyles } from '@material-ui/core/styles';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport _ from \"lodash\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport $ from 'jquery';\r\n\r\nclass CreatorPaymentRunTotals extends React.Component {\r\n state = {\r\n loading: this.props.loading,\r\n paymentRunDetailInfos: {},\r\n creatorPaymentRunTotals: [],\r\n reversingPayments: false,\r\n affiliateTable: {\r\n title: \"Affiliate Networks\",\r\n columns: [\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"User Name\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"userPaymentEmail\",\r\n label: \"Payment Email\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"amount\",\r\n label: \"Creator Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.creatorPaymentRunTotals[dataIndex];\r\n if (item) {\r\n return '$' + item.amount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n ],\r\n data: [],\r\n options: {\r\n customToolbarSelect: () => { },\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n },\r\n }\r\n\r\n paymentRunId = this.props.paymentRunId;\r\n affiliateDetailTableWrapperRef = React.createRef();\r\n affiliateDetailTableMessageTextboxRef = React.createRef();\r\n\r\n componentDidMount = async () => {\r\n if (!!(this.props.paymentRunDetailInfos)) {\r\n this.processCreatorPaymentRunTotals();\r\n }\r\n }\r\n\r\n processCreatorPaymentRunTotals = () => {\r\n let creatorPaymentRunTotals = this.props.paymentRunDetailInfos.reduce((totals, payment) => {\r\n const { userId, userName, userPaymentEmail, amount, commissionId } = payment;\r\n\r\n if (!totals[userId]) {\r\n totals[userId] = {\r\n userId,\r\n userName,\r\n userPaymentEmail,\r\n amount: 0,\r\n commissionIds: []\r\n };\r\n }\r\n\r\n totals[userId].amount += amount;\r\n if (!totals[userId].commissionIds.includes(commissionId)) {\r\n totals[userId].commissionIds.push(commissionId);\r\n }\r\n\r\n return totals;\r\n }, {});\r\n\r\n creatorPaymentRunTotals = Object.values(creatorPaymentRunTotals);\r\n\r\n this.setState({ creatorPaymentRunTotals });\r\n }\r\n\r\n\r\n\r\n handlePaymentReversal = async (selectedRows, displayData) => {\r\n this.setState({ reversingPayments: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const creatorData = this.state.creatorPaymentRunTotals;\r\n const userId = selectedRowsData.map((row) => displayData[row.index])[0].data[0];\r\n\r\n const filteredData = creatorData.filter((creator) => creator.userId === userId);\r\n const creatorUserNames = [];\r\n\r\n const creatorSubmissionArray = filteredData.map(fd => {\r\n creatorUserNames.push(fd.userName)\r\n return {\r\n userId: fd.userId,\r\n paymentRunId: this.props.paymentRunId,\r\n creatorCommissions: fd.amount,\r\n commissionIds: fd.commissionIds\r\n };\r\n });\r\n\r\n\r\n let url = 'api/merchant/ReversePaymentRunByCreator';\r\n let result = await postRequest(url, creatorSubmissionArray);\r\n\r\n this.setState({ reversingPayments: false });\r\n\r\n await this.handlePaymentReversalToast(creatorUserNames, this.props.paymentRunId, result);\r\n }\r\n\r\n handlePaymentReversalToast = (reversedCreators, paymentRunId, resultSuccess) => {\r\n const reversedCreatorsCount = reversedCreators.length;\r\n\r\n if (resultSuccess) {\r\n let reversedCreatorsString = '';\r\n\r\n if (reversedCreators.length === 1) {\r\n reversedCreatorsString = {reversedCreators[0]};\r\n } else if (reversedCreators.length === 2) {\r\n reversedCreatorsString = (\r\n <>\r\n {reversedCreators[0]}\r\n {' and '}\r\n {reversedCreators[1]}\r\n \r\n );\r\n } else if (reversedCreators.length > 2) {\r\n const lastCreator = reversedCreators.pop();\r\n const creatorsJoined = reversedCreators.map(creator => {creator});\r\n reversedCreatorsString = (\r\n <>\r\n {creatorsJoined.reduce((prev, curr) => [prev, ', ', curr])}\r\n {' and '}\r\n {lastCreator}\r\n \r\n );\r\n }\r\n\r\n toast.success(\r\n
    \r\n

    Success

    \r\n
    \r\n

    REVERSED {reversedCreatorsCount} {reversedCreatorsCount === 1 ? \"record\" : \"records\"}

    \r\n

    FOR {reversedCreatorsString}

    \r\n

    in Payment Run {paymentRunId}

    \r\n
    ,\r\n {\r\n duration: 7000,\r\n position: 'top-center'\r\n }\r\n );\r\n } else {\r\n toast.success(\r\n
    \r\n

    Error

    \r\n
    \r\n

    SOMETHING WENT WRONG! Try again.

    \r\n
    ,\r\n {\r\n duration: 4000,\r\n position: 'top-center'\r\n }\r\n );\r\n }\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n
    \r\n {\r\n this.state.reversingPayments ?\r\n \r\n : <>\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default CreatorPaymentRunTotals;","import React from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider, withStyles } from '@material-ui/core/styles';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport _ from \"lodash\";\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport $ from 'jquery';\r\nimport CreatorPaymentRunTotals from \"./CreatorPaymentRunTotals\"\r\n \r\nclass PaymentRunDetails extends React.Component {\r\n\r\n state = {\r\n loading: false,\r\n selectedCase: 1,\r\n paymentRun: {},\r\n paymentRunDetailInfos: {},\r\n affiliateTable: {\r\n title: \"Affiliate Networks\",\r\n columns: [\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"totalRecords\",\r\n label: \"Total Records\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"pendingCount\",\r\n label: \"Pending Count\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"pendingAmount\",\r\n label: \"Pending\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.pendingAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"skippedCount\",\r\n label: \"Skipped Count\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"skippedAmount\",\r\n label: \"Skipped\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.skippedAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"rejectedCount\",\r\n label: \"Rejected Count\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"rejectedAmount\",\r\n label: \"Rejected\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.rejectedAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"noPaymentEmailCount\",\r\n label: \"No Payment Email Count\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"noPaymentEmailAmount\",\r\n label: \"No Payment Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.noPaymentEmailAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"approvedCount\",\r\n label: \"Approved Count\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"approvedAmount\",\r\n label: \"Approved\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.approvedAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"paidCount\",\r\n label: \"Paid Count\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"paidAmount\",\r\n label: \"Paid\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.paidAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"rockPorchCommissions\",\r\n label: \"RockPorch Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.rockPorchCommissions.toFixed(2);\r\n }\r\n return '';\r\n },\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"creatorCommissions\",\r\n label: \"Creator Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.creatorCommissions.toFixed(2);\r\n }\r\n return '';\r\n },\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"totalCommissions\",\r\n label: \"Total Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.totalCommissions.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n }\r\n ],\r\n data: [],\r\n options: {\r\n customToolbarSelect: () => { },\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'affiliateProgramManagerName',\r\n direction: 'asc'\r\n },\r\n onRowsSelect: (curRowSelected, allRowsSelected) => {\r\n const dataIndecies = allRowsSelected.map((row) => { return row.dataIndex; });\r\n let selectedAffiliateProgramManagers = [];\r\n\r\n dataIndecies.forEach((i) => { selectedAffiliateProgramManagers.push(this.state.affiliateTable.data[i]); });\r\n\r\n let affiliateDetailTableData = [];\r\n const selectedAffiliateProgramManagerIds = selectedAffiliateProgramManagers.map((affiliateProgramManager) => { return affiliateProgramManager.affiliateProgramManagerId; });\r\n\r\n this.state.paymentRunDetailInfos.forEach(paymentRunDetail => {\r\n if (selectedAffiliateProgramManagerIds.includes(paymentRunDetail.affiliateProgramManagerId)) {\r\n let item = {\r\n paymentRunDetailId: paymentRunDetail.paymentRunDetailId,\r\n paymentRunDetailStatusName: paymentRunDetail.paymentRunDetailStatusName,\r\n affiliateProgramManagerId: paymentRunDetail.affiliateProgramManagerId,\r\n affiliateProgramManagerName: paymentRunDetail.affiliateProgramManagerName,\r\n merchantId: paymentRunDetail.merchantId,\r\n merchantName: paymentRunDetail.merchantName,\r\n campaignMerchantId: paymentRunDetail.campaignMerchantId,\r\n campaignMerchantName: paymentRunDetail.campaignMerchantName,\r\n userId: paymentRunDetail.userId,\r\n userName: paymentRunDetail.userName,\r\n userDisplayName: paymentRunDetail.userDisplayName,\r\n userEmail: paymentRunDetail.userEmail,\r\n userCreatedDate: paymentRunDetail.userCreatedDate,\r\n saleAmount: paymentRunDetail.saleAmount,\r\n merchantCommissionRate: (paymentRunDetail.merchantCommissionRate * 100).toFixed(0) + '%',\r\n actualCommissionRate: (paymentRunDetail.totalAmount / paymentRunDetail.saleAmount * 100).toFixed(0) + '%',\r\n userShare: (paymentRunDetail.userShare * 100).toFixed(0) + '%',\r\n rockPorchCommissions: Number((paymentRunDetail.totalAmount - paymentRunDetail.amount).toFixed(2)),\r\n creatorCommissions: paymentRunDetail.amount,\r\n totalCommissions: paymentRunDetail.totalAmount,\r\n transactionDate: new Date(paymentRunDetail.transactionDate).toLocaleDateString()\r\n };\r\n affiliateDetailTableData.push(item);\r\n }\r\n });\r\n\r\n const { affiliateDetailTable } = this.state;\r\n affiliateDetailTable.data = affiliateDetailTableData;\r\n\r\n this.setState({ affiliateDetailTable });\r\n\r\n this.affiliateDetailTableWrapperRef.current.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"start\" });\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: { \r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n },\r\n affiliateDetailTable: {\r\n title: \"Affiliate Details\",\r\n columns: [\r\n {\r\n name: \"paymentRunDetailId\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"paymentRunDetailStatusName\",\r\n label: \"Status\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Affiliate Id\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant Id\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"campaignMerchantName\",\r\n label: \"Campaign Merchant\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"campaignMerchantId\",\r\n label: \"Campaign Merchant Id\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userDisplayName\",\r\n label: \"Display Name\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userName\", // TODO: Add on-hover tooltip thingy and make it a hyperlink that will open user page in new tab\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateDetailTable.data[dataIndex];\r\n if (item) {\r\n let userName = item.userName;\r\n let url = `/Profile/${userName}`;\r\n return {userName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userEmail\",\r\n label: \"User Email\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userCreatedDate\",\r\n label: \"User Signup Date\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"transactionDate\",\r\n label: \"Transaction Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"saleAmount\",\r\n label: \"Sale Amount\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateDetailTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.saleAmount.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantCommissionRate\",\r\n label: \"Commission Rate\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"actualCommissionRate\",\r\n label: \"Calculated Commission Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"Creator Share Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n },\r\n },\r\n {\r\n name: \"rockPorchCommissions\",\r\n label: \"RockPorch Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateDetailTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.rockPorchCommissions.toFixed(2);\r\n }\r\n return '';\r\n },\r\n display: false // Column is not visible but can be made visible via the View Columns popover in the Toolbar.\r\n },\r\n },\r\n {\r\n name: \"creatorCommissions\",\r\n label: \"Creator Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateDetailTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.creatorCommissions.toFixed(2);\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"totalCommissions\",\r\n label: \"Total Commissions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.affiliateDetailTable.data[dataIndex];\r\n if (item) {\r\n return '$' + item.totalCommissions.toFixed(2);\r\n }\r\n return '';\r\n }\r\n },\r\n },\r\n ],\r\n data: [],\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'id',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n }\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n }),\r\n \r\n },\r\n affiliateDetailTableMessageTextboxEnabled: false\r\n }\r\n\r\n paymentRunId = this.props.match.params.id;\r\n affiliateDetailTableWrapperRef = React.createRef();\r\n affiliateDetailTableMessageTextboxRef = React.createRef();\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/PaymentRuns', text: 'Payment Runs' },\r\n { link: `/Admin/PaymentRunDetails/${this.paymentRunId}`, text: `${this.paymentRunId}` }\r\n ]\r\n\r\n AddMessageCheckbox = withStyles({\r\n root: {\r\n '&$checked': {\r\n color: \"#e55934\",\r\n },\r\n },\r\n checked: {},\r\n })((props) => );\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n const paymentRunDetailInfos = await this.processPaymentRunDetails();\r\n\r\n if (!!(paymentRunDetailInfos)) {\r\n let creatorPaymentRunTotals = paymentRunDetailInfos.reduce((totals, payment) => {\r\n const { userId, userName, userEmail, totalAmount } = payment;\r\n\r\n if (!totals[userId]) {\r\n totals[userId] = {\r\n userId,\r\n userName,\r\n userEmail,\r\n totalAmount: 0\r\n };\r\n }\r\n\r\n totals[userId].totalAmount += totalAmount;\r\n\r\n return totals;\r\n }, []);\r\n\r\n creatorPaymentRunTotals = Object.values(creatorPaymentRunTotals);\r\n }\r\n }\r\n\r\n processPaymentRunDetails = async () => {\r\n const paymentRunDetailInfos = await this.getPaymentRunDetailInfo(this.paymentRunId);\r\n\r\n const affiliateTableData = this.getAffiliateTableData(paymentRunDetailInfos);\r\n\r\n const { affiliateTable } = this.state;\r\n affiliateTable.data = affiliateTableData;\r\n\r\n this.setState({ paymentRunDetailInfos, paymentRun: this.props.location.paymentRun });\r\n\r\n return paymentRunDetailInfos;\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Payment Run Details\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Creator Payment Run Totals\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n getAffiliateTableData = (paymentRunDetailInfos) => {\r\n let affiliateTableData = [];\r\n\r\n paymentRunDetailInfos.forEach(paymentRunDetail => {\r\n let item = _.find(affiliateTableData, (item) => item.affiliateProgramManagerId == paymentRunDetail.affiliateProgramManagerId);\r\n if (!item) {\r\n item = {\r\n affiliateProgramManagerId: paymentRunDetail.affiliateProgramManagerId,\r\n affiliateProgramManagerName: paymentRunDetail.affiliateProgramManagerName,\r\n totalRecords: 0,\r\n pendingCount: 0,\r\n pendingAmount: 0.00,\r\n skippedCount: 0,\r\n skippedAmount: 0.00,\r\n rejectedCount: 0,\r\n rejectedAmount: 0.00,\r\n noPaymentEmailCount: 0,\r\n noPaymentEmailAmount: 0.00,\r\n approvedCount: 0,\r\n approvedAmount: 0.00,\r\n paidCount: 0,\r\n paidAmount: 0.00,\r\n rockPorchCommissions: 0.00,\r\n creatorCommissions: 0.00,\r\n totalCommissions: 0.00\r\n };\r\n\r\n affiliateTableData.push(item);\r\n }\r\n\r\n item.totalRecords++;\r\n item.rockPorchCommissions += Number((paymentRunDetail.totalAmount - paymentRunDetail.amount).toFixed(2));\r\n item.creatorCommissions += paymentRunDetail.amount;\r\n item.totalCommissions += paymentRunDetail.totalAmount;\r\n\r\n switch (paymentRunDetail.paymentRunDetailStatusName) {\r\n case \"Pending\":\r\n item.pendingCount++;\r\n item.pendingAmount += paymentRunDetail.amount;\r\n break;\r\n case \"Skipped\":\r\n item.skippedCount++;\r\n item.skippedAmount += paymentRunDetail.amount;\r\n break;\r\n case \"Rejected\":\r\n item.rejectedCount++;\r\n item.rejectedAmount += paymentRunDetail.amount;\r\n break;\r\n case \"NoPaymentEmail\":\r\n item.noPaymentEmailCount++;\r\n item.noPaymentEmailAmount += paymentRunDetail.amount;\r\n break;\r\n case \"Approved\":\r\n item.approvedCount++;\r\n item.approvedAmount += paymentRunDetail.amount;\r\n break;\r\n case \"Paid\":\r\n item.paidCount++;\r\n item.paidAmount += paymentRunDetail.amount;\r\n break;\r\n }\r\n });\r\n\r\n return affiliateTableData;\r\n }\r\n\r\n removePaymentRunDetails = async (selectedRows, setSelectedRows) => {\r\n let paymentRunDetailIds = [];\r\n\r\n selectedRows.data.forEach(row => {\r\n var item = this.state.affiliateDetailTable.data[row.dataIndex];\r\n paymentRunDetailIds.push(item.paymentRunDetailId);\r\n });\r\n\r\n let request = {\r\n paymentRunDetailIds: paymentRunDetailIds,\r\n };\r\n\r\n this.setState({ loading: true });\r\n\r\n let url = 'api/merchant/RemovePaymentRunDetails';\r\n let updatedPaymentRunDetails = await postRequest(url, request);\r\n\r\n const { paymentRunDetailInfos, affiliateTable, affiliateDetailTable } = this.state;\r\n\r\n let affiliateDetailTableData = [\r\n ...affiliateDetailTable.data\r\n ];\r\n\r\n updatedPaymentRunDetails.forEach(paymentRunDetail => {\r\n let affiliateDetailTableDataItem = _.remove(affiliateDetailTableData, (x) => x.paymentRunDetailId == paymentRunDetail.id);\r\n\r\n let paymentRunDetailInfoItem = _.remove(paymentRunDetailInfos, (a) => a.paymentRunDetailId == paymentRunDetail.id);\r\n });\r\n\r\n const affiliateTableData = this.getAffiliateTableData(paymentRunDetailInfos);\r\n affiliateTable.data = affiliateTableData;\r\n\r\n affiliateDetailTable.data = affiliateDetailTableData;\r\n\r\n this.setState({\r\n loading: false,\r\n paymentRunDetailInfos,\r\n affiliateTable,\r\n affiliateDetailTable\r\n });\r\n\r\n setSelectedRows([]);\r\n\r\n if (updatedPaymentRunDetails && updatedPaymentRunDetails.length > 0) {\r\n toast.success(\r\n
    \r\n

    Success

    \r\n
    \r\n

    Removed {updatedPaymentRunDetails.length} {updatedPaymentRunDetails.length == 1 ? \"record\" : \"records\"}

    \r\n
    ,\r\n {\r\n duration: 4000,\r\n position: 'top-center'\r\n }\r\n );\r\n }\r\n }\r\n\r\n handleChangeStatus = async (statusName, statusId, selectedRows, setSelectedRows) => {\r\n if (!selectedRows && !selectedRows.data && selectedRows.data.length === 0) {\r\n window.alert(\"Nothing to update as there are no selected rows\");\r\n }\r\n\r\n if (statusName === \"Paid\") {\r\n if (!window.confirm(\"Are you sure you wish to update these records to Paid?\")) {\r\n return;\r\n }\r\n }\r\n\r\n let alreadyPaidRecordCount = 0;\r\n let paymentRunDetailIds = [];\r\n selectedRows.data.forEach(row => {\r\n var item = this.state.affiliateDetailTable.data[row.dataIndex];\r\n if (item.paymentRunDetailStatusName === \"Paid\") {\r\n alreadyPaidRecordCount++;\r\n }\r\n\r\n paymentRunDetailIds.push(item.paymentRunDetailId);\r\n });\r\n\r\n if (statusName === \"Paid\" && alreadyPaidRecordCount > 0) {\r\n let msg = `Warning: ${alreadyPaidRecordCount} ${alreadyPaidRecordCount == 1 ? 'record is' : 'records are'} already marked as Paid.`;\r\n msg += ` Are you sure you wish to update ${alreadyPaidRecordCount == 1 ? 'this record' : 'these records'} to Paid again?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n } else if (statusName !== \"Paid\" && alreadyPaidRecordCount > 0) {\r\n let msg = `Warning: ${alreadyPaidRecordCount} ${alreadyPaidRecordCount == 1 ? 'record is' : 'records are'} already marked as Paid.`;\r\n msg += ` Are you sure you wish to update ${alreadyPaidRecordCount == 1 ? 'this record' : 'these records'} from Paid to ${statusName}?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n let request = {\r\n paymentRunDetailIds: paymentRunDetailIds,\r\n paymentRunDetailStatus: statusName,\r\n };\r\n\r\n this.setState({ loading: true });\r\n\r\n let url = 'api/merchant/UpdatePaymentRunDetailStatuses';\r\n let updatedPaymentRunDetails = await postRequest(url, request);\r\n\r\n const { paymentRunDetailInfos, affiliateTable, affiliateDetailTable } = this.state;\r\n\r\n let affiliateDetailTableData = [\r\n ...affiliateDetailTable.data\r\n ];\r\n\r\n updatedPaymentRunDetails.forEach(paymentRunDetail => {\r\n let affiliateDetailTableDataItem = _.find(affiliateDetailTableData, (x) => x.paymentRunDetailId == paymentRunDetail.id);\r\n affiliateDetailTableDataItem.paymentRunDetailStatusName = statusName;\r\n\r\n let paymentRunDetailInfoItem = _.find(paymentRunDetailInfos, (a) => a.paymentRunDetailId == paymentRunDetail.id);\r\n paymentRunDetailInfoItem.paymentRunDetailStatusName = statusName;\r\n paymentRunDetailInfoItem.paymentRunDetailStatusId = statusId;\r\n paymentRunDetailInfoItem.modifiedBy = paymentRunDetail.modifiedBy;\r\n paymentRunDetailInfoItem.modifiedDate = paymentRunDetail.modifiedDate;\r\n\r\n if (request.shouldUpdateMessage) {\r\n affiliateDetailTableDataItem.message = request.message;\r\n paymentRunDetailInfoItem.message = request.message;\r\n }\r\n });\r\n\r\n const affiliateTableData = this.getAffiliateTableData(paymentRunDetailInfos);\r\n affiliateTable.data = affiliateTableData;\r\n\r\n affiliateDetailTable.data = affiliateDetailTableData;\r\n\r\n this.setState({\r\n loading: false,\r\n paymentRunDetailInfos,\r\n affiliateTable,\r\n affiliateDetailTable \r\n });\r\n\r\n setSelectedRows([]);\r\n\r\n if (updatedPaymentRunDetails && updatedPaymentRunDetails.length > 0) {\r\n toast.success(\r\n
    \r\n

    Success

    \r\n
    \r\n

    Updated {updatedPaymentRunDetails.length} {updatedPaymentRunDetails.length == 1 ? \"record\" : \"records\"} to {statusName}

    \r\n
    ,\r\n {\r\n duration: 4000,\r\n position: 'top-center'\r\n }\r\n );\r\n }\r\n }\r\n\r\n getPaymentRunDetailInfo = async (id) => {\r\n this.setState({ loading: true });\r\n\r\n let url = `api/merchant/GetPaymentRunDetailInfo?paymentRunId=${id}`;\r\n let paymentRunDetailInfos = await getRequest(url);\r\n\r\n this.setState({ loading: false });\r\n return paymentRunDetailInfos;\r\n }\r\n\r\n finalizePaymentRun = async () => {\r\n // this payment run has already been finalized\r\n if (this.state.paymentRun.paymentRunStatusId === 4) {\r\n if (!window.confirm('THIS PAYMENT RUN HAS ALREADY BEEN FINALIZED! Are you sure you want to finalize this payment run? This will mark commissions as paid and notify Creators.')) {\r\n return;\r\n }\r\n }\r\n\r\n if (!window.confirm('Are you sure you want to finalize this payment run? This will mark commissions as paid and notify Creators.')) {\r\n return;\r\n }\r\n\r\n this.setState({ loading: true });\r\n var url = `api/merchant/FinalizePaymentRun?paymentRunId=${this.paymentRunId}`\r\n await postRequest(url);\r\n this.setState({ loading: false });\r\n\r\n this.props.history.push(\"/Admin/PaymentRuns\");\r\n }\r\n\r\n createPaymentFile = async () => {\r\n // this payment run has already been finalized\r\n if (this.state.paymentRun.paymentRunStatusId === 4) {\r\n if (!window.confirm('THIS PAYMENT RUN HAS ALREADY BEEN FINALIZED! Are you sure you wish to create a PayPal Payment File?')) {\r\n return;\r\n }\r\n }\r\n if (!window.confirm('Are you sure you wish to create a PayPal Payment File?')) {\r\n return;\r\n }\r\n\r\n //Create an hidden form\r\n var url = `api/merchant/CreatePaymentFile?paymentRunId=${this.paymentRunId}`;\r\n var form = $('
    ', { 'method': 'POST', 'action': url, 'target': '_blank' }).hide();\r\n\r\n $('body').append(form);\r\n form.submit();\r\n\r\n //Clean up\r\n form.remove();\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n

    Payment Run Details

    \r\n

    Manage payments

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n {\r\n this.state.loading ?\r\n \r\n : <>\r\n }\r\n\r\n {\r\n this.state.selectedCase === 1 ?\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n :\r\n \r\n }\r\n \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default PaymentRunDetails;","import React, { Component } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport _ from \"lodash\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass UserCommissionOverrides extends Component {\r\n state = {\r\n // https://localhost:44334/Admin/CommissionOverrides?useMockData=true\r\n useMockData: document.location.search.toLowerCase().indexOf('useMockData=true'.toLowerCase()) > 0,\r\n userCommissionOverridesLoading: false,\r\n userCommissionOverridesSummaryTable: {\r\n title: \"Current and Future Overrides\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"Username\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userDisplayName\",\r\n label: \"User\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let userName = item.userName;\r\n let userDisplayName = item.userDisplayName;\r\n let url = `/Profile/${userName}`;\r\n return {userDisplayName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userEmail\",\r\n label: \"User Email\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userCreatedDate\",\r\n label: \"User Signup Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false, // Column is not visible. Adding so that it will be included in CSV export.\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"User Share\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (value * 100).toFixed(0) + '%';\r\n }\r\n }\r\n },\r\n {\r\n name: \"effectiveDate\",\r\n label: \"Effective Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!value) {\r\n return value;\r\n }\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"createdBy\",\r\n label: \"Created By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"modifiedBy\",\r\n label: \"Modified By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n }\r\n ],\r\n data: [],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'effectiveDate',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let table = this.state.userCommissionOverridesSummaryTable;\r\n table.endDate = e.target.value;\r\n this.setState({ userCommissionOverridesSummaryTable: table });\r\n }}\r\n />\r\n\r\n \r\n
    \r\n )\r\n },\r\n onRowClick: async (rowData, rowMeta) => {\r\n let item = this.state.userCommissionOverridesSummaryTable.data[rowMeta.dataIndex];\r\n if (!item) {\r\n return;\r\n }\r\n\r\n const userId = item.userId;\r\n const userDisplayName = item.userDisplayName;\r\n \r\n this.getUserCommissionOverrideHistoryByUserId(userId);\r\n\r\n let userCommissionOverridesHistoryTable = this.state.userCommissionOverridesHistoryTable;\r\n userCommissionOverridesHistoryTable.title = `History for ${userDisplayName} (User ID ${userId})`;\r\n this.setState({ userCommissionOverridesHistoryTable });\r\n\r\n this.userCommissionOverridesHistoryTableWrapperRef.current.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"start\" });\r\n }\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n },\r\n userCommissionOverridesHistoryTable: {\r\n title: \"History\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"Username\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userDisplayName\",\r\n label: \"User\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userCommissionOverridesHistoryTable.data[dataIndex];\r\n if (item) {\r\n let userName = item.userName;\r\n let userDisplayName = item.userDisplayName;\r\n let url = `/Profile/${userName}`;\r\n return {userDisplayName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userEmail\",\r\n label: \"User Email\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userCreatedDate\",\r\n label: \"User Signup Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false, // Column is not visible. Adding so that it will be included in CSV export.\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"User Share\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (value * 100).toFixed(0) + '%';\r\n }\r\n }\r\n },\r\n {\r\n name: \"effectiveDate\",\r\n label: \"Effective Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!value) {\r\n return value;\r\n }\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"createdBy\",\r\n label: \"Created By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"modifiedBy\",\r\n label: \"Modified By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n }\r\n ],\r\n data: [],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'id',\r\n direction: 'desc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let table = this.state.userCommissionOverridesHistoryTable;\r\n table.endDate = e.target.value;\r\n this.setState({ userCommissionOverridesHistoryTable: table });\r\n }}\r\n />\r\n\r\n \r\n
    \r\n )\r\n }\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n }\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n userCommissionOverridesHistoryTableWrapperRef = React.createRef();\r\n\r\n componentDidMount = async () => {\r\n await this.getUserCommissionOverrides();\r\n }\r\n\r\n getUserCommissionOverrides = async () => {\r\n this.setState({ userCommissionOverridesLoading: true });\r\n\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n let userCommissionOverrides = this.getMockUserCommissionOverrides();\r\n\r\n let userCommissionOverridesSummaryTable = this.state.userCommissionOverridesSummaryTable;\r\n userCommissionOverridesSummaryTable.data = userCommissionOverrides;\r\n\r\n this.setState({ userCommissionOverridesSummaryTable: userCommissionOverridesSummaryTable, userCommissionOverridesLoading: false });\r\n return;\r\n }\r\n\r\n let getUserCommissionOverridesUrl = '/api/Merchant/GetCurrentUserCommissionOverrides';\r\n getUserCommissionOverridesUrl += `?offset=${DateTime.now().offset}`;\r\n\r\n let userCommissionOverrides = await getRequest(getUserCommissionOverridesUrl) ?? [];\r\n\r\n let userCommissionOverridesSummaryTable = this.state.userCommissionOverridesSummaryTable;\r\n userCommissionOverridesSummaryTable.data = userCommissionOverrides;\r\n\r\n this.setState({ userCommissionOverridesSummaryTable: userCommissionOverridesSummaryTable, userCommissionOverridesLoading: false });\r\n }\r\n\r\n getUserCommissionOverrideHistoryByUserId = async (userId) => {\r\n this.setState({ userCommissionOverridesLoading: true });\r\n\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n let userCommissionOverrideHistoryByUserIdRecords = this.getMockUserCommissionOverrideHistoryByUserId(userId);\r\n\r\n let userCommissionOverridesHistoryTable = this.state.userCommissionOverridesHistoryTable;\r\n userCommissionOverridesHistoryTable.data = userCommissionOverrideHistoryByUserIdRecords;\r\n\r\n this.setState({ userCommissionOverridesHistoryTable: userCommissionOverridesHistoryTable, userCommissionOverridesLoading: false });\r\n return;\r\n }\r\n\r\n let getUserCommissionOverrideHistoryByUserIdUrl = '/api/Merchant/GetUserCommissionOverrideHistoryByUserId';\r\n getUserCommissionOverrideHistoryByUserIdUrl += `?offset=${DateTime.now().offset}`;\r\n getUserCommissionOverrideHistoryByUserIdUrl += `&userId=${(userId)}`;\r\n\r\n let userCommissionOverrideHistoryByUserIdRecords = await getRequest(getUserCommissionOverrideHistoryByUserIdUrl) ?? [];\r\n\r\n let userCommissionOverridesHistoryTable = this.state.userCommissionOverridesHistoryTable;\r\n userCommissionOverridesHistoryTable.data = userCommissionOverrideHistoryByUserIdRecords;\r\n\r\n this.setState({ userCommissionOverridesHistoryTable: userCommissionOverridesHistoryTable, userCommissionOverridesLoading: false });\r\n }\r\n\r\n updateUserCommissionOverrideEndDate = async (userCommissionOverrideHistoryIds, endDate) => {\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n\r\n let userCommissionOverrides = userCommissionOverrideHistoryIds.map((id) => {\r\n return {\r\n id: id,\r\n endDate: endDate,\r\n modifiedBy: 'jimbo',\r\n modifiedDate: new Date().toISOString()\r\n };\r\n });\r\n\r\n return userCommissionOverrides;\r\n }\r\n\r\n let request = {\r\n userCommissionOverrideHistoryIds: userCommissionOverrideHistoryIds,\r\n endDate: endDate,\r\n offset: DateTime.now().offset\r\n }\r\n let updateUserCommissionOverrideEndDateUrl = '/api/Merchant/UpdateUserCommissionOverrideEndDate';\r\n let updatedUserCommissionOverrides = await postRequest(updateUserCommissionOverrideEndDateUrl, request);\r\n return updatedUserCommissionOverrides;\r\n }\r\n\r\n getMockUserCommissionOverrides = () => {\r\n function getRandomDateBetweenDates(startDate, endDate) {\r\n return new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));\r\n }\r\n\r\n let mockData = [...Array(4).keys()].map(i => {\r\n return {\r\n id: i,\r\n userId: i,\r\n userName: `Username${i}`,\r\n userDisplayName: `User Display Name ${i}`,\r\n userEmail: `user${i}@example.com`,\r\n userCreatedDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n userShare: Math.random(),\r\n effectiveDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n endDate: null,\r\n createdBy: 'joe',\r\n modifiedBy: 'greg'\r\n };\r\n });\r\n\r\n return mockData;\r\n }\r\n\r\n getMockUserCommissionOverrideHistoryByUserId = (userId) => {\r\n function getRandomDateBetweenDates(startDate, endDate) {\r\n return new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));\r\n }\r\n\r\n let count = Math.floor(Math.random() * 6);\r\n let recordCount = count > 0 ? count : 1;\r\n let mockData = [...Array(recordCount).keys()].map(i => {\r\n return {\r\n id: i,\r\n userId: userId,\r\n userName: `Username${userId}`,\r\n userDisplayName: `User Display Name ${userId}`,\r\n userEmail: `user${userId}@example.com`,\r\n userCreatedDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n userShare: Math.random(),\r\n effectiveDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n endDate: i === recordCount - 1 ? null : getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n createdBy: 'joe',\r\n modifiedBy: 'greg'\r\n };\r\n });\r\n\r\n return mockData;\r\n }\r\n\r\n handleUpdateEndDate = async (selectedRows, setSelectedRows, tableData, endDate) => {\r\n let parsedDate = DateTime.fromISO(endDate);\r\n if (!parsedDate || !DateTime.isDateTime(parsedDate)) {\r\n window.alert(\"Invalid End Date\");\r\n return;\r\n }\r\n\r\n var isoEndDate = parsedDate.toJSDate().toISOString();\r\n\r\n if (!selectedRows && !selectedRows.data && selectedRows.data.length === 0) {\r\n window.alert(\"Nothing to update as there are no selected rows\");\r\n return;\r\n }\r\n\r\n let alreadyHasEndDateCount = 0;\r\n let userCommissionOverrideHistoryIds = [];\r\n selectedRows.data.forEach(row => {\r\n let item = tableData[row.dataIndex];\r\n if (item && item.endDate) {\r\n alreadyHasEndDateCount++;\r\n }\r\n\r\n userCommissionOverrideHistoryIds.push(item.id);\r\n });\r\n\r\n if (alreadyHasEndDateCount > 0) {\r\n let msg = `Warning: ${alreadyHasEndDateCount} ${alreadyHasEndDateCount == 1 ? 'record already has' : 'records already have'} an End Date set.`;\r\n msg += ` Are you sure you wish to update ${alreadyHasEndDateCount == 1 ? 'this record' : 'these records'} with a new End Date?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n this.setState({ userCommissionOverridesLoading: true });\r\n\r\n let updatedRecords = await this.updateUserCommissionOverrideEndDate(userCommissionOverrideHistoryIds, isoEndDate);\r\n\r\n function updateData(data) {\r\n let recordsUpdatedCount = 0;\r\n let updatedData = [...data];\r\n\r\n updatedRecords.forEach((updatedRecord) => {\r\n for (let i = 0; i < data.length; i++) {\r\n var item = updatedData[i];\r\n if (item.id === updatedRecord.id) {\r\n recordsUpdatedCount++;\r\n updatedData[i] = {\r\n ...item,\r\n endDate: updatedRecord.endDate,\r\n modifiedBy: updatedRecord.modifiedBy,\r\n modifiedDate: updatedRecord.modifiedDate\r\n }\r\n }\r\n }\r\n });\r\n\r\n return recordsUpdatedCount > 0 ? updatedData : null;\r\n }\r\n\r\n // Update any matching Summary table records\r\n let userCommissionOverridesSummaryTable = this.state.userCommissionOverridesSummaryTable;\r\n let updatedSummaryData = updateData(userCommissionOverridesSummaryTable.data);\r\n if (updatedSummaryData) {\r\n userCommissionOverridesSummaryTable.data = updatedSummaryData;\r\n this.setState({ userCommissionOverridesSummaryTable: userCommissionOverridesSummaryTable });\r\n }\r\n\r\n // Update any matching History table records\r\n let userCommissionOverridesHistoryTable = this.state.userCommissionOverridesHistoryTable;\r\n let updatedHistoryData = updateData(userCommissionOverridesHistoryTable.data);\r\n if (updatedHistoryData) {\r\n userCommissionOverridesHistoryTable.data = updatedHistoryData;\r\n this.setState({ userCommissionOverridesHistoryTable: userCommissionOverridesHistoryTable });\r\n }\r\n\r\n setSelectedRows([]);\r\n this.setState({ userCommissionOverridesLoading: false });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n this.state.userCommissionOverridesLoading ?\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default UserCommissionOverrides;","import React, { Component } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport _ from \"lodash\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass MerchantCommissionOverrides extends Component {\r\n state = {\r\n // https://localhost:44334/Admin/CommissionOverrides?useMockData=true\r\n useMockData: document.location.search.toLowerCase().indexOf('useMockData=true'.toLowerCase()) > 0,\r\n merchantCommissionOverridesLoading: false,\r\n merchantCommissionOverridesSummaryTable: {\r\n title: \"Current and Future Overrides\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"merchantAffiliateProgramManagerId\",\r\n label: \"Merchant Affiliate Program Manager Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Affiliate Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.merchantCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let affiliateProgramManagerId = item.affiliateProgramManagerId;\r\n let affiliateProgramManagerName = item.affiliateProgramManagerName;\r\n let url = `/Admin/AffiliateNetworks/${affiliateProgramManagerId}`;\r\n return {affiliateProgramManagerName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.merchantCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let merchantId = item.merchantId;\r\n let merchantName = item.merchantName;\r\n let url = `/Admin/Brand/${merchantId}`;\r\n return {merchantName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"User Share\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (value * 100).toFixed(0) + '%';\r\n }\r\n }\r\n },\r\n {\r\n name: \"effectiveDate\",\r\n label: \"Effective Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!value) {\r\n return value;\r\n }\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"createdBy\",\r\n label: \"Created By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"modifiedBy\",\r\n label: \"Modified By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n }\r\n ],\r\n data: [],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'effectiveDate',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let table = this.state.merchantCommissionOverridesSummaryTable;\r\n table.endDate = e.target.value;\r\n this.setState({ merchantCommissionOverridesSummaryTable: table });\r\n }}\r\n />\r\n\r\n \r\n
    \r\n )\r\n },\r\n onRowClick: async (rowData, rowMeta) => {\r\n let item = this.state.merchantCommissionOverridesSummaryTable.data[rowMeta.dataIndex];\r\n if (!item) {\r\n return;\r\n }\r\n\r\n const merchantAffiliateProgramManagerId = item.merchantAffiliateProgramManagerId;\r\n const affiliateProgramManagerId = item.affiliateProgramManagerId;\r\n const affiliateProgramManagerName = item.affiliateProgramManagerName;\r\n const merchantId = item.merchantId;\r\n const merchantName = item.merchantName;\r\n\r\n this.getMerchantCommissionOverrideHistory(merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId);\r\n\r\n let merchantCommissionOverridesHistoryTable = this.state.merchantCommissionOverridesHistoryTable;\r\n merchantCommissionOverridesHistoryTable.title = `History for ${merchantName} (Affiliate: ${affiliateProgramManagerName})`;\r\n this.setState({ merchantCommissionOverridesHistoryTable });\r\n\r\n this.merchantCommissionOverridesHistoryTableWrapperRef.current.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"start\" });\r\n }\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n },\r\n merchantCommissionOverridesHistoryTable: {\r\n title: \"History\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"merchantAffiliateProgramManagerId\",\r\n label: \"Merchant Affiliate Program Manager Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Affiliate Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.merchantCommissionOverridesHistoryTable.data[dataIndex];\r\n if (item) {\r\n let affiliateProgramManagerId = item.affiliateProgramManagerId;\r\n let affiliateProgramManagerName = item.affiliateProgramManagerName;\r\n let url = `/Admin/AffiliateNetworks/${affiliateProgramManagerId}`;\r\n return {affiliateProgramManagerName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.merchantCommissionOverridesHistoryTable.data[dataIndex];\r\n if (item) {\r\n let merchantId = item.merchantId;\r\n let merchantName = item.merchantName;\r\n let url = `/Admin/Brand/${merchantId}`;\r\n return {merchantName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"User Share\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (value * 100).toFixed(0) + '%';\r\n }\r\n }\r\n },\r\n {\r\n name: \"effectiveDate\",\r\n label: \"Effective Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!value) {\r\n return value;\r\n }\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"createdBy\",\r\n label: \"Created By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"modifiedBy\",\r\n label: \"Modified By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n }\r\n ],\r\n data: [],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'id',\r\n direction: 'desc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let table = this.state.merchantCommissionOverridesHistoryTable;\r\n table.endDate = e.target.value;\r\n this.setState({ merchantCommissionOverridesHistoryTable: table });\r\n }}\r\n />\r\n\r\n \r\n
    \r\n )\r\n }\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n }\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n merchantCommissionOverridesHistoryTableWrapperRef = React.createRef();\r\n\r\n componentDidMount = async () => {\r\n await this.getMerchantCommissionOverrides();\r\n }\r\n\r\n getMerchantCommissionOverrides = async () => {\r\n this.setState({ merchantCommissionOverridesLoading: true });\r\n\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n let merchantCommissionOverrides = this.getMockMerchantCommissionOverrides();\r\n\r\n let merchantCommissionOverridesSummaryTable = this.state.merchantCommissionOverridesSummaryTable;\r\n merchantCommissionOverridesSummaryTable.data = merchantCommissionOverrides;\r\n\r\n this.setState({ merchantCommissionOverridesSummaryTable: merchantCommissionOverridesSummaryTable, merchantCommissionOverridesLoading: false });\r\n return;\r\n }\r\n\r\n let getCurrentMerchantAffiliateProgramManagerOverrides = '/api/Merchant/GetCurrentMerchantAffiliateProgramManagerOverrides';\r\n getCurrentMerchantAffiliateProgramManagerOverrides += `?offset=${DateTime.now().offset}`;\r\n\r\n let merchantCommissionOverrides = await getRequest(getCurrentMerchantAffiliateProgramManagerOverrides) ?? [];\r\n\r\n let merchantCommissionOverridesSummaryTable = this.state.merchantCommissionOverridesSummaryTable;\r\n merchantCommissionOverridesSummaryTable.data = merchantCommissionOverrides;\r\n\r\n this.setState({ merchantCommissionOverridesSummaryTable: merchantCommissionOverridesSummaryTable, merchantCommissionOverridesLoading: false });\r\n }\r\n\r\n getMerchantCommissionOverrideHistory = async (merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId) => {\r\n this.setState({ merchantCommissionOverridesLoading: true });\r\n\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n let merchantCommissionOverrideHistoryRecords = this.getMockMerchantCommissionOverrideHistory(merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId);\r\n\r\n let merchantCommissionOverridesHistoryTable = this.state.merchantCommissionOverridesHistoryTable;\r\n merchantCommissionOverridesHistoryTable.data = merchantCommissionOverrideHistoryRecords;\r\n\r\n this.setState({ merchantCommissionOverridesHistoryTable: merchantCommissionOverridesHistoryTable, merchantCommissionOverridesLoading: false });\r\n return;\r\n }\r\n\r\n let getMerchantCommissionOverrideHistoryUrl = '/api/Merchant/GetMerchantAffiliateProgramManagerOverrideHistory';\r\n getMerchantCommissionOverrideHistoryUrl += `?offset=${DateTime.now().offset}`;\r\n getMerchantCommissionOverrideHistoryUrl += `&merchantAffiliateProgramManagerId=${(merchantAffiliateProgramManagerId)}`;\r\n\r\n let merchantCommissionOverrideHistoryRecords = await getRequest(getMerchantCommissionOverrideHistoryUrl) ?? [];\r\n\r\n let merchantCommissionOverridesHistoryTable = this.state.merchantCommissionOverridesHistoryTable;\r\n merchantCommissionOverridesHistoryTable.data = merchantCommissionOverrideHistoryRecords;\r\n\r\n this.setState({ merchantCommissionOverridesHistoryTable: merchantCommissionOverridesHistoryTable, merchantCommissionOverridesLoading: false });\r\n }\r\n\r\n updateMerchantCommissionOverrideEndDate = async (ids, endDate) => {\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n\r\n let merchantCommissionOverrides = ids.map((id) => {\r\n return {\r\n id: id,\r\n endDate: endDate,\r\n modifiedBy: 'jimbo',\r\n modifiedDate: new Date().toISOString()\r\n };\r\n });\r\n\r\n return merchantCommissionOverrides;\r\n }\r\n\r\n let request = {\r\n merchantAffiliateProgramManagerOverrideHistoryIds: ids,\r\n endDate: endDate,\r\n offset: DateTime.now().offset\r\n }\r\n let url = '/api/Merchant/UpdateMerchantAffiliateProgramManagerOverrideHistoryEndDate';\r\n let updatedmerchantCommissionOverrides = await postRequest(url, request);\r\n return updatedmerchantCommissionOverrides;\r\n }\r\n\r\n getMockMerchantCommissionOverrides = () => {\r\n function getRandomDateBetweenDates(startDate, endDate) {\r\n return new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));\r\n }\r\n\r\n let mockData = [...Array(4).keys()].map(i => {\r\n return {\r\n id: i,\r\n merchantAffiliateProgramManagerId: i + 57,\r\n affiliateProgramManagerId: i,\r\n affiliateProgramManagerName: `Affiliate Name ${i}`,\r\n merchantId: i + 134,\r\n merchantName: `Merchant Name ${i + 134}`,\r\n userShare: Math.random(),\r\n effectiveDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n endDate: null,\r\n createdBy: 'joe',\r\n modifiedBy: 'greg'\r\n };\r\n });\r\n\r\n return mockData;\r\n }\r\n\r\n getMockMerchantCommissionOverrideHistory = (merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId) => {\r\n function getRandomDateBetweenDates(startDate, endDate) {\r\n return new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));\r\n }\r\n\r\n let count = Math.floor(Math.random() * 4);\r\n let recordCount = count > 0 ? count : 1;\r\n let mockData = [...Array(recordCount).keys()].map(i => {\r\n return {\r\n id: i + 1001,\r\n merchantAffiliateProgramManagerId: merchantAffiliateProgramManagerId,\r\n affiliateProgramManagerId: affiliateProgramManagerId,\r\n affiliateProgramManagerName: `Affiliate Name ${affiliateProgramManagerId}`,\r\n merchantId: merchantId,\r\n merchantName: `Merchant Name ${merchantId}`,\r\n userShare: Math.random(),\r\n effectiveDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n endDate: null,\r\n createdBy: 'joe',\r\n modifiedBy: 'greg'\r\n };\r\n });\r\n\r\n return mockData;\r\n }\r\n\r\n handleMerchantUpdateEndDate = async (selectedRows, setSelectedRows, tableData, endDate) => {\r\n let parsedDate = DateTime.fromISO(endDate);\r\n if (!parsedDate || !DateTime.isDateTime(parsedDate)) {\r\n window.alert(\"Invalid End Date\");\r\n return;\r\n }\r\n\r\n var isoEndDate = parsedDate.toJSDate().toISOString();\r\n\r\n if (!selectedRows && !selectedRows.data && selectedRows.data.length === 0) {\r\n window.alert(\"Nothing to update as there are no selected rows\");\r\n return;\r\n }\r\n\r\n let alreadyHasEndDateCount = 0;\r\n let merchantAffiliateProgramManagerOverrideHistoryIds = [];\r\n selectedRows.data.forEach(row => {\r\n let item = tableData[row.dataIndex];\r\n if (item && item.endDate) {\r\n alreadyHasEndDateCount++;\r\n }\r\n\r\n merchantAffiliateProgramManagerOverrideHistoryIds.push(item.id);\r\n });\r\n\r\n if (alreadyHasEndDateCount > 0) {\r\n let msg = `Warning: ${alreadyHasEndDateCount} ${alreadyHasEndDateCount == 1 ? 'record already has' : 'records already have'} an End Date set.`;\r\n msg += ` Are you sure you wish to update ${alreadyHasEndDateCount == 1 ? 'this record' : 'these records'} with a new End Date?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n this.setState({ merchantCommissionOverridesLoading: true });\r\n\r\n let updatedRecords = await this.updateMerchantCommissionOverrideEndDate(merchantAffiliateProgramManagerOverrideHistoryIds, isoEndDate);\r\n\r\n function updateData(data) {\r\n let recordsUpdatedCount = 0;\r\n let updatedData = [...data];\r\n\r\n updatedRecords.forEach((updatedRecord) => {\r\n for (let i = 0; i < data.length; i++) {\r\n var item = updatedData[i];\r\n if (item.id === updatedRecord.id) {\r\n recordsUpdatedCount++;\r\n updatedData[i] = {\r\n ...item,\r\n endDate: updatedRecord.endDate,\r\n modifiedBy: updatedRecord.modifiedBy,\r\n modifiedDate: updatedRecord.modifiedDate\r\n }\r\n }\r\n }\r\n });\r\n\r\n return recordsUpdatedCount > 0 ? updatedData : null;\r\n }\r\n\r\n // Update any matching Summary table records\r\n let merchantCommissionOverridesSummaryTable = this.state.merchantCommissionOverridesSummaryTable;\r\n let updatedSummaryData = updateData(merchantCommissionOverridesSummaryTable.data);\r\n if (updatedSummaryData) {\r\n merchantCommissionOverridesSummaryTable.data = updatedSummaryData;\r\n this.setState({ merchantCommissionOverridesSummaryTable: merchantCommissionOverridesSummaryTable });\r\n }\r\n\r\n // Update any matching History table records\r\n let merchantCommissionOverridesHistoryTable = this.state.merchantCommissionOverridesHistoryTable;\r\n let updatedHistoryData = updateData(merchantCommissionOverridesHistoryTable.data);\r\n if (updatedHistoryData) {\r\n merchantCommissionOverridesHistoryTable.data = updatedHistoryData;\r\n this.setState({ merchantCommissionOverridesHistoryTable: merchantCommissionOverridesHistoryTable });\r\n }\r\n\r\n setSelectedRows([]);\r\n this.setState({ merchantCommissionOverridesLoading: false });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n this.state.merchantCommissionOverridesLoading ?\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default MerchantCommissionOverrides;","import React, { Component } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport _ from \"lodash\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass UserMerchantCommissionOverrides extends Component {\r\n state = {\r\n // https://localhost:44334/Admin/CommissionOverrides?useMockData=true\r\n useMockData: document.location.search.toLowerCase().indexOf('useMockData=true'.toLowerCase()) > 0,\r\n userMerchantCommissionOverridesLoading: false,\r\n userMerchantCommissionOverridesSummaryTable: {\r\n title: \"Current and Future Overrides\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"Username\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userDisplayName\",\r\n label: \"User\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userMerchantCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let userName = item.userName;\r\n let userDisplayName = item.userDisplayName;\r\n let url = `/Profile/${userName}`;\r\n return {userDisplayName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userEmail\",\r\n label: \"User Email\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userCreatedDate\",\r\n label: \"User Signup Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false, // Column is not visible. Adding so that it will be included in CSV export.\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantAffiliateProgramManagerId\",\r\n label: \"Merchant Affiliate Program Manager Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Affiliate Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userMerchantCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let affiliateProgramManagerId = item.affiliateProgramManagerId;\r\n let affiliateProgramManagerName = item.affiliateProgramManagerName;\r\n let url = `/Admin/AffiliateNetworks/${affiliateProgramManagerId}`;\r\n return {affiliateProgramManagerName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userMerchantCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let merchantId = item.merchantId;\r\n let merchantName = item.merchantName;\r\n let url = `/Admin/Brand/${merchantId}`;\r\n return {merchantName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"User Share\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (value * 100).toFixed(0) + '%';\r\n }\r\n }\r\n },\r\n {\r\n name: \"effectiveDate\",\r\n label: \"Effective Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!value) {\r\n return value;\r\n }\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"createdBy\",\r\n label: \"Created By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"modifiedBy\",\r\n label: \"Modified By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n }\r\n ],\r\n data: [],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'effectiveDate',\r\n direction: 'asc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let table = this.state.userMerchantCommissionOverridesSummaryTable;\r\n table.endDate = e.target.value;\r\n this.setState({ userMerchantCommissionOverridesSummaryTable: table });\r\n }}\r\n />\r\n\r\n \r\n
    \r\n )\r\n },\r\n onRowClick: async (rowData, rowMeta) => {\r\n let item = this.state.userMerchantCommissionOverridesSummaryTable.data[rowMeta.dataIndex];\r\n if (!item) {\r\n return;\r\n }\r\n\r\n\r\n const userName = item.userName;\r\n const merchantAffiliateProgramManagerId = item.merchantAffiliateProgramManagerId;\r\n const affiliateProgramManagerId = item.affiliateProgramManagerId;\r\n const affiliateProgramManagerName = item.affiliateProgramManagerName;\r\n const merchantId = item.merchantId;\r\n const merchantName = item.merchantName;\r\n\r\n this.getUserMerchantCommissionOverrideHistory(merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId);\r\n\r\n let userMerchantCommissionOverridesHistoryTable = this.state.userMerchantCommissionOverridesHistoryTable;\r\n userMerchantCommissionOverridesHistoryTable.title = `History for ${userName} / ${merchantName} (Affiliate: ${affiliateProgramManagerName})`;\r\n this.setState({ userMerchantCommissionOverridesHistoryTable });\r\n\r\n this.userMerchantCommissionOverridesHistoryTableWrapperRef.current.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"start\" });\r\n }\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n },\r\n userMerchantCommissionOverridesHistoryTable: {\r\n title: \"History\",\r\n columns: [\r\n {\r\n name: \"id\",\r\n label: \"Id\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"Username\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userDisplayName\",\r\n label: \"User\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userMerchantCommissionOverridesSummaryTable.data[dataIndex];\r\n if (item) {\r\n let userName = item.userName;\r\n let userDisplayName = item.userDisplayName;\r\n let url = `/Profile/${userName}`;\r\n return {userDisplayName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userEmail\",\r\n label: \"User Email\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"userCreatedDate\",\r\n label: \"User Signup Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false, // Column is not visible. Adding so that it will be included in CSV export.\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantAffiliateProgramManagerId\",\r\n label: \"Merchant Affiliate Program Manager Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Affiliate Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userMerchantCommissionOverridesHistoryTable.data[dataIndex];\r\n if (item) {\r\n let affiliateProgramManagerId = item.affiliateProgramManagerId;\r\n let affiliateProgramManagerName = item.affiliateProgramManagerName;\r\n let url = `/Admin/AffiliateNetworks/${affiliateProgramManagerId}`;\r\n return {affiliateProgramManagerName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant Id\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRenderLite: (dataIndex, rowIndex) => {\r\n let item = this.state.userMerchantCommissionOverridesHistoryTable.data[dataIndex];\r\n if (item) {\r\n let merchantId = item.merchantId;\r\n let merchantName = item.merchantName;\r\n let url = `/Admin/Brand/${merchantId}`;\r\n return {merchantName};\r\n }\r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: \"userShare\",\r\n label: \"User Share\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return (value * 100).toFixed(0) + '%';\r\n }\r\n }\r\n },\r\n {\r\n name: \"effectiveDate\",\r\n label: \"Effective Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"endDate\",\r\n label: \"End Date\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n if (!value) {\r\n return value;\r\n }\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"createdBy\",\r\n label: \"Created By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n },\r\n {\r\n name: \"modifiedBy\",\r\n label: \"Modified By\",\r\n options: {\r\n filter: false,\r\n sort: true,\r\n display: false // Column is not visible. Adding so that it will be included in CSV export.\r\n }\r\n }\r\n ],\r\n data: [],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: {\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'id',\r\n direction: 'desc'\r\n },\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => {\r\n return (\r\n
    \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let table = this.state.userMerchantCommissionOverridesHistoryTable;\r\n table.endDate = e.target.value;\r\n this.setState({ userMerchantCommissionOverridesHistoryTable: table });\r\n }}\r\n />\r\n\r\n \r\n
    \r\n )\r\n }\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n }\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n userMerchantCommissionOverridesHistoryTableWrapperRef = React.createRef();\r\n\r\n componentDidMount = async () => {\r\n await this.getUserMerchantCommissionOverrides();\r\n }\r\n\r\n getUserMerchantCommissionOverrides = async () => {\r\n this.setState({ userMerchantCommissionOverridesLoading: true });\r\n\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n let userMerchantCommissionOverrides = this.getMockMerchantCommissionOverrides();\r\n\r\n let userMerchantCommissionOverridesSummaryTable = this.state.userMerchantCommissionOverridesSummaryTable;\r\n userMerchantCommissionOverridesSummaryTable.data = userMerchantCommissionOverrides;\r\n\r\n this.setState({ userMerchantCommissionOverridesSummaryTable: userMerchantCommissionOverridesSummaryTable, userMerchantCommissionOverridesLoading: false });\r\n return;\r\n }\r\n\r\n let getCurrentUserMerchantCommissionOverrides = '/api/Merchant/GetCurrentUserMerchantCommissionOverrides';\r\n getCurrentUserMerchantCommissionOverrides += `?offset=${DateTime.now().offset}`;\r\n\r\n let userMerchantCommissionOverrides = await getRequest(getCurrentUserMerchantCommissionOverrides) ?? [];\r\n\r\n let userMerchantCommissionOverridesSummaryTable = this.state.userMerchantCommissionOverridesSummaryTable;\r\n userMerchantCommissionOverridesSummaryTable.data = userMerchantCommissionOverrides;\r\n\r\n this.setState({ userMerchantCommissionOverridesSummaryTable: userMerchantCommissionOverridesSummaryTable, userMerchantCommissionOverridesLoading: false });\r\n }\r\n\r\n getUserMerchantCommissionOverrideHistory = async (merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId) => {\r\n this.setState({ userMerchantCommissionOverridesLoading: true });\r\n\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n let userMerchantCommissionOverrideHistoryRecords = this.getMockMerchantCommissionOverrideHistory(merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId);\r\n\r\n let userMerchantCommissionOverridesHistoryTable = this.state.userMerchantCommissionOverridesHistoryTable;\r\n userMerchantCommissionOverridesHistoryTable.data = userMerchantCommissionOverrideHistoryRecords;\r\n\r\n this.setState({ userMerchantCommissionOverridesHistoryTable: userMerchantCommissionOverridesHistoryTable, userMerchantCommissionOverridesLoading: false });\r\n return;\r\n }\r\n\r\n let getUserMerchantCommissionOverrideHistoryUrl = '/api/Merchant/GetUserMerchantCommissionOverrideHistory';\r\n getUserMerchantCommissionOverrideHistoryUrl += `?offset=${DateTime.now().offset}`;\r\n getUserMerchantCommissionOverrideHistoryUrl += `&merchantAffiliateProgramManagerId=${(merchantAffiliateProgramManagerId)}`;\r\n\r\n let userMerchantCommissionOverrideHistoryRecords = await getRequest(getUserMerchantCommissionOverrideHistoryUrl) ?? [];\r\n\r\n let userMerchantCommissionOverridesHistoryTable = this.state.userMerchantCommissionOverridesHistoryTable;\r\n userMerchantCommissionOverridesHistoryTable.data = userMerchantCommissionOverrideHistoryRecords;\r\n\r\n this.setState({ userMerchantCommissionOverridesHistoryTable: userMerchantCommissionOverridesHistoryTable, userMerchantCommissionOverridesLoading: false });\r\n }\r\n\r\n updateUserMerchantCommissionOverrideEndDate = async (ids, endDate) => {\r\n if (this.state.useMockData) {\r\n await new Promise(r => setTimeout(r, 500));\r\n\r\n let userMerchantCommissionOverrides = ids.map((id) => {\r\n return {\r\n id: id,\r\n endDate: endDate,\r\n modifiedBy: 'jimbo',\r\n modifiedDate: new Date().toISOString()\r\n };\r\n });\r\n\r\n return userMerchantCommissionOverrides;\r\n }\r\n\r\n let request = {\r\n userMerchantCommissionOverrideHistoryIds: ids,\r\n endDate: endDate,\r\n offset: DateTime.now().offset\r\n }\r\n let url = '/api/Merchant/UpdateUserMerchantCommissionOverrideEndDate';\r\n let updatedUserMerchantCommissionOverrides = await postRequest(url, request);\r\n return updatedUserMerchantCommissionOverrides;\r\n }\r\n\r\n getMockMerchantCommissionOverrides = () => {\r\n function getRandomDateBetweenDates(startDate, endDate) {\r\n return new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));\r\n }\r\n\r\n let mockData = [...Array(4).keys()].map(i => {\r\n return {\r\n id: i,\r\n merchantAffiliateProgramManagerId: i + 57,\r\n affiliateProgramManagerId: i,\r\n affiliateProgramManagerName: `Affiliate Name ${i}`,\r\n merchantId: i + 134,\r\n merchantName: `Merchant Name ${i + 134}`,\r\n userShare: Math.random(),\r\n effectiveDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n endDate: null,\r\n createdBy: 'joe',\r\n modifiedBy: 'greg'\r\n };\r\n });\r\n\r\n return mockData;\r\n }\r\n\r\n getMockMerchantCommissionOverrideHistory = (merchantAffiliateProgramManagerId, affiliateProgramManagerId, merchantId) => {\r\n function getRandomDateBetweenDates(startDate, endDate) {\r\n return new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime()));\r\n }\r\n\r\n let count = Math.floor(Math.random() * 4);\r\n let recordCount = count > 0 ? count : 1;\r\n let mockData = [...Array(recordCount).keys()].map(i => {\r\n return {\r\n id: i + 1001,\r\n merchantAffiliateProgramManagerId: merchantAffiliateProgramManagerId,\r\n affiliateProgramManagerId: affiliateProgramManagerId,\r\n affiliateProgramManagerName: `Affiliate Name ${affiliateProgramManagerId}`,\r\n merchantId: merchantId,\r\n merchantName: `Merchant Name ${merchantId}`,\r\n userShare: Math.random(),\r\n effectiveDate: getRandomDateBetweenDates(new Date(2021, 1, 1), new Date()).toISOString(),\r\n endDate: null,\r\n createdBy: 'joe',\r\n modifiedBy: 'greg'\r\n };\r\n });\r\n\r\n return mockData;\r\n }\r\n\r\n handleUserMerchantUpdateEndDate = async (selectedRows, setSelectedRows, tableData, endDate) => {\r\n let parsedDate = DateTime.fromISO(endDate);\r\n if (!parsedDate || !DateTime.isDateTime(parsedDate)) {\r\n window.alert(\"Invalid End Date\");\r\n return;\r\n }\r\n\r\n var isoEndDate = parsedDate.toJSDate().toISOString();\r\n\r\n if (!selectedRows && !selectedRows.data && selectedRows.data.length === 0) {\r\n window.alert(\"Nothing to update as there are no selected rows\");\r\n return;\r\n }\r\n\r\n let alreadyHasEndDateCount = 0;\r\n let userMerchantCommissionOverrideHistoryIds = [];\r\n selectedRows.data.forEach(row => {\r\n let item = tableData[row.dataIndex];\r\n if (item && item.endDate) {\r\n alreadyHasEndDateCount++;\r\n }\r\n\r\n userMerchantCommissionOverrideHistoryIds.push(item.id);\r\n });\r\n\r\n if (alreadyHasEndDateCount > 0) {\r\n let msg = `Warning: ${alreadyHasEndDateCount} ${alreadyHasEndDateCount == 1 ? 'record already has' : 'records already have'} an End Date set.`;\r\n msg += ` Are you sure you wish to update ${alreadyHasEndDateCount == 1 ? 'this record' : 'these records'} with a new End Date?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n this.setState({ userMerchantCommissionOverridesLoading: true });\r\n\r\n let updatedRecords = await this.updateUserMerchantCommissionOverrideEndDate(userMerchantCommissionOverrideHistoryIds, isoEndDate);\r\n\r\n function updateData(data) {\r\n let recordsUpdatedCount = 0;\r\n let updatedData = [...data];\r\n\r\n updatedRecords.forEach((updatedRecord) => {\r\n for (let i = 0; i < data.length; i++) {\r\n var item = updatedData[i];\r\n if (item.id === updatedRecord.id) {\r\n recordsUpdatedCount++;\r\n updatedData[i] = {\r\n ...item,\r\n endDate: updatedRecord.endDate,\r\n modifiedBy: updatedRecord.modifiedBy,\r\n modifiedDate: updatedRecord.modifiedDate\r\n }\r\n }\r\n }\r\n });\r\n\r\n return recordsUpdatedCount > 0 ? updatedData : null;\r\n }\r\n\r\n // Update any matching Summary table records\r\n let userMerchantCommissionOverridesSummaryTable = this.state.userMerchantCommissionOverridesSummaryTable;\r\n let updatedSummaryData = updateData(userMerchantCommissionOverridesSummaryTable.data);\r\n if (updatedSummaryData) {\r\n userMerchantCommissionOverridesSummaryTable.data = updatedSummaryData;\r\n this.setState({ userMerchantCommissionOverridesSummaryTable: userMerchantCommissionOverridesSummaryTable });\r\n }\r\n\r\n // Update any matching History table records\r\n let userMerchantCommissionOverridesHistoryTable = this.state.userMerchantCommissionOverridesHistoryTable;\r\n let updatedHistoryData = updateData(userMerchantCommissionOverridesHistoryTable.data);\r\n if (updatedHistoryData) {\r\n userMerchantCommissionOverridesHistoryTable.data = updatedHistoryData;\r\n this.setState({ userMerchantCommissionOverridesHistoryTable: userMerchantCommissionOverridesHistoryTable });\r\n }\r\n\r\n setSelectedRows([]);\r\n this.setState({ userMerchantCommissionOverridesLoading: false });\r\n }\r\n\r\n render() {\r\n return (\r\n\r\n
    \r\n {\r\n this.state.usreMerchantCommissionOverridesLoading ?\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default UserMerchantCommissionOverrides;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport UserCommissionOverrides from \"../../components/CommissionOverrides/UserCommissionOverrides\";\r\nimport MerchantCommissionOverrides from \"../../components/CommissionOverrides/MerchantCommissionOverrides\";\r\nimport UserMerchantCommissionOverrides from \"../../components/CommissionOverrides/UserMerchantCommissionOverrides\";\r\n\r\nclass CommissionOverrides extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n merchantCommissionOverridesLoading: false,\r\n userMerchantCommissionOverridesLoading: false,\r\n userCommissionOverrides: [],\r\n merchantCommissionOverrides: [],\r\n userMerchantCommissionOverrides: []\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/CommissionOverrides', text: 'Commission Overrides' }];\r\n userCommissionOverridesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/CommissionOverrides', text: 'User Commission Overrides', active: true }\r\n ];\r\n merchantCommissionOverridesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/CommissionOverrides', text: 'Merchant Commission Overrides', active: true }\r\n ];\r\n userMerchantCommissionOverridesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/CommissionOverrides', text: 'User/Merchant Commission Overrides', active: true }\r\n ];\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n getMerchantCommissionOverrides = async () => {\r\n let getMerchantCommissionOverridesUrl = '/api/Merchant/GetMerchantCommissionOverrides';\r\n\r\n this.setState({ merchantCommissionOverridesLoading: true });\r\n let merchantCommissionOverrides = await getRequest(getMerchantCommissionOverridesUrl) ?? [];\r\n this.setState({ merchantCommissionOverrides: merchantCommissionOverrides, merchantCommissionOverridesLoading: false });\r\n }\r\n\r\n getUserMerchantCommissionOverrides = async () => {\r\n let getUserMerchantCommissionOverridesUrl = '/api/Merchant/GetUserMerchantCommissionOverrides';\r\n\r\n this.setState({ userMerchantCommissionOverridesLoading: true });\r\n let userMerchantCommissionOverrides = await getRequest(getUserMerchantCommissionOverridesUrl) ?? [];\r\n this.setState({ userMerchantCommissionOverrides: userMerchantCommissionOverrides, userMerchantCommissionOverridesLoading: false });\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"User Commission Overrides\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Merchant Commission Overrides\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"User/Merchant Commission Overrides\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n }\r\n\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Commission Overrides

    \r\n

    Manage User and Merchant Commission Overrides

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n\r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default CommissionOverrides;","import React from \"react\";\r\n\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { Popover, PopoverBody } from \"reactstrap\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\n\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport _ from \"lodash\";\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AddUserCommissionOverride extends React.Component {\r\n state = {\r\n selected: [],\r\n options: [],\r\n value: [],\r\n isLoading: false,\r\n profilePicUrl: \"\",\r\n selectedProStatusId: \"\",\r\n userCommissionOverrideHistoryRecords: [],\r\n userShare: \"\",\r\n effectiveDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n\r\n formData: {\r\n displayName: \"\",\r\n profileUrl: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n proStatusId: \"\",\r\n isAdmin: \"\",\r\n id: \"\"\r\n }\r\n };\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/CommissionOverrides', text: 'Commission Overrides' },\r\n { link: '/Admin/CommissionOverrides/AddUserCommissionOverride', text: 'Add User Commission Override', active: true }\r\n ];\r\n\r\n proStatusIds = [\r\n { value: 0, label: 'General User' },\r\n { value: 1, label: 'Creator' },\r\n { value: 2, label: 'Merchant Partner' }];\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n\r\n if (this.state.userCommissionOverrideHistoryRecords.length > 0) {\r\n let recordsWithoutEndDate = this.state.userCommissionOverrideHistoryRecords.filter(x => !x.endDate);\r\n let count = recordsWithoutEndDate.length;\r\n if (count > 0) {\r\n let isAre = count === 1 ? 'is' : 'are';\r\n let records = count === 1 ? 'record' : 'records';\r\n let msg = `Warning: There ${isAre} already ${count} \"active\" ${records} without an End Date set.\\n`;\r\n msg += ` Are you sure you wish to add a new User Commission Override?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n let parsedDate = this.state.effectiveDate ? DateTime.fromISO(this.state.effectiveDate) : null;\r\n if (!parsedDate || !DateTime.isDateTime(parsedDate)) {\r\n window.alert(\"Invalid Effective Date\");\r\n return;\r\n }\r\n\r\n var effectiveDate = parsedDate.toJSDate().toISOString();\r\n\r\n if (!this.state.userShare) {\r\n window.alert(\"Invalid User Share\");\r\n return;\r\n }\r\n if (this.state.userShare > 100) {\r\n window.alert(\"Error: User Share cannot exceed 100%\");\r\n return;\r\n }\r\n if (this.state.userShare < 10) {\r\n let msg = `Warning: User Share is set to less than 10%.\\n`;\r\n msg += `Are you sure you wish to add a new User Commission Override with a UserShare value of ${this.state.userShare}%?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n let userShare = this.state.userShare / 100; \r\n\r\n let userId = this.state.formData.id;\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let request = {\r\n userId: userId,\r\n userShare: userShare,\r\n effectiveDate: effectiveDate,\r\n offset: DateTime.now().offset\r\n };\r\n\r\n let addUserCommissionOverrideUrl = '/api/Merchant/AddUserCommissionOverride';\r\n let userCommissionOverrideHistory = await postRequest(addUserCommissionOverrideUrl, request);\r\n\r\n let userCommissionOverrideHistoryRecords = await this.getUserCommissionOverrideHistoryByUserId(userId);\r\n\r\n this.setState({ isLoading: false, showSavedProfile: true, userCommissionOverrideHistoryRecords });\r\n\r\n setTimeout(() => this.setState({ showSavedProfile: false }), 4000);\r\n };\r\n\r\n renderSubmit = () => {\r\n let submitDisabled = true;\r\n\r\n if (this.state.formData.id && this.state.userShare && this.state.effectiveDate) {\r\n submitDisabled = false;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n getUserCommissionOverrideHistoryByUserId = async (userId) => {\r\n let getUserCommissionOverrideHistoryByUserIdUrl = '/api/Merchant/GetUserCommissionOverrideHistoryByUserId';\r\n getUserCommissionOverrideHistoryByUserIdUrl += `?offset=${DateTime.now().offset}`;\r\n getUserCommissionOverrideHistoryByUserIdUrl += `&userId=${(userId)}`;\r\n\r\n let userCommissionOverrideHistoryRecords = await getRequest(getUserCommissionOverrideHistoryByUserIdUrl) ?? [];\r\n return userCommissionOverrideHistoryRecords;\r\n };\r\n\r\n setSelected = async (selected) => {\r\n let formData = {\r\n displayName: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n imageUrl: \"\",\r\n userName: \"\",\r\n email: \"\",\r\n proStatusId: \"\",\r\n onboardingComplete: \"\",\r\n isAdmin: \"\"\r\n }\r\n\r\n let selectedProStatusId = this.proStatusIds[0];\r\n\r\n if (selected.length > 0) {\r\n\r\n formData = {\r\n displayName: selected[0].name,\r\n bio: selected[0].bio,\r\n tagLine: selected[0].tagLine,\r\n imageUrl: selected[0].imageUrl,\r\n userName: selected[0].userName,\r\n email: selected[0].email,\r\n proStatusId: selected[0].proStatusId,\r\n onboardingComplete: selected[0].onboardingComplete,\r\n isAdmin: selected[0].isAdmin,\r\n id: selected[0].id\r\n }\r\n\r\n selectedProStatusId = this.proStatusIds[selected[0].proStatusId];\r\n }\r\n\r\n let userCommissionOverrideHistoryRecords = await this.getUserCommissionOverrideHistoryByUserId(formData.id);\r\n\r\n this.setState({\r\n selected, formData,\r\n profilePicUrl: formData.imageUrl,\r\n selectedProStatusId,\r\n userCommissionOverrideHistoryRecords\r\n });\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.state.userCommissionOverrideHistoryRecords.length === 0) {\r\n return (\r\n \r\n No data\r\n \r\n );\r\n }\r\n\r\n return _.orderBy(this.state.userCommissionOverrideHistoryRecords, ['id'], ['desc']).map((data) => {\r\n return (\r\n \r\n \r\n {data.id}\r\n \r\n \r\n {(data.userShare * 100).toFixed(0) + '%'}\r\n \r\n \r\n {convertToNumericMonthAndDayAndYearAndTime(data.effectiveDate, false).replace(',', '')}\r\n \r\n \r\n {data.endDate ? convertToNumericMonthAndDayAndYearAndTime(data.endDate, false).replace(',', '') : ''}\r\n \r\n );\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Add User Override

    \r\n

    Add user commission override

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.setSelected(selected)}\r\n isLoading={this.state.isLoading}\r\n options={this.state.options}\r\n placeholder=\"Search for users...\" />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Public Profile
    \r\n\r\n {\r\n this.state.formData.displayName || this.state.formData.userName ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Name:  {this.state.formData.displayName}
    Administrator:  {this.state.formData.isAdmin ? 'Yes' : 'No'}
    User Type:  {this.state.selectedProStatusId && this.state.selectedProStatusId.label}
    User Share:  \r\n {/* https://v4.mui.com/components/text-fields/ */}\r\n %\r\n }}\r\n inputProps={{\r\n 'data-lpignore': 'true'\r\n }}\r\n style={{ width: '244px' }}\r\n value={this.state.userShare}\r\n onChange={(e) => {\r\n let value = e.target.value.replace(/[^0-9.]/g, '');\r\n this.setState({ userShare: value });\r\n }}\r\n />\r\n
    Effective Date:  \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let effectiveDate = e.target.value;\r\n this.setState({ effectiveDate: effectiveDate });\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n {this.renderSubmit()}\r\n\r\n this.setState({ savingProfile: false })}\r\n >\r\n Changes saved\r\n \r\n\r\n {\r\n this.state.isLoading ?\r\n \r\n : <>\r\n }\r\n \r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n
    Historical Commission Overrides
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableRows()}\r\n \r\n
    IdUser ShareEffective DateEnd Date
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default AddUserCommissionOverride;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { Popover, PopoverBody } from \"reactstrap\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport _ from \"lodash\";\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AddMerchantCommissionOverride extends React.Component {\r\n state = {\r\n selectedOption: null,\r\n options: [],\r\n filteredOptions: [],\r\n value: [],\r\n isLoading: false,\r\n integrated: true,\r\n merchantCommissionOverrideHistoryRecords: [],\r\n userShare: \"\",\r\n effectiveDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n\r\n formData: {\r\n id: 0,\r\n merchantName: '',\r\n merchantHostname: '',\r\n merchantHomepage: '',\r\n merchantLogoUrl: '',\r\n integrated: false,\r\n commission: 0,\r\n merchantAffiliateProgramManagerId: 0,\r\n affiliateProgramManagerId: 0,\r\n affiliateProgramManagerName: ''\r\n }\r\n };\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/CommissionOverrides', text: 'Commission Overrides' },\r\n { link: '/Admin/CommissionOverrides/AddMerchantCommissionOverride', text: 'Add Merchant Commission Override', active: true }\r\n ];\r\n\r\n integratedCheckbox = withStyles({\r\n root: {\r\n '&$checked': {\r\n color: \"#e55934\",\r\n },\r\n },\r\n checked: {},\r\n })((props) => );\r\n\r\n MerchantSelectAutocomplete = withStyles({\r\n root: {\r\n marginTop: '0px',\r\n marginBottom: '0px'\r\n },\r\n })((props) => );\r\n\r\n componentDidMount = async () => {\r\n await this.fetchMerchants();\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Merchant/GetCommissionEstimate`;\r\n\r\n let merchants = await getRequest(url);\r\n let filteredOptions = this.state.integrated ? merchants.filter(x => x.integrated) : merchants;\r\n this.setState({ options: merchants, filteredOptions, isLoading: false });\r\n }\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n\r\n if (this.state.merchantCommissionOverrideHistoryRecords.length > 0) {\r\n let recordsWithoutEndDate = this.state.merchantCommissionOverrideHistoryRecords.filter(x => !x.endDate);\r\n let count = recordsWithoutEndDate.length;\r\n if (count > 0) {\r\n let isAre = count === 1 ? 'is' : 'are';\r\n let records = count === 1 ? 'record' : 'records';\r\n let msg = `Warning: There ${isAre} already ${count} \"active\" ${records} without an End Date set.\\n`;\r\n msg += ` Are you sure you wish to add a new Merchant Commission Override?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n let parsedDate = this.state.effectiveDate ? DateTime.fromISO(this.state.effectiveDate) : null;\r\n if (!parsedDate || !DateTime.isDateTime(parsedDate)) {\r\n window.alert(\"Invalid Effective Date\");\r\n return;\r\n }\r\n\r\n var effectiveDate = parsedDate.toJSDate().toISOString();\r\n\r\n if (!this.state.userShare) {\r\n window.alert(\"Invalid User Share\");\r\n return;\r\n }\r\n if (this.state.userShare > 100) {\r\n window.alert(\"Error: User Share cannot exceed 100%\");\r\n return;\r\n }\r\n if (this.state.userShare < 1) {\r\n let msg = `Warning: User Share is set to less than 1%.\\n`;\r\n msg += `Are you sure you wish to add a new User Commission Override with a UserShare value of ${this.state.userShare}%?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n let userShare = this.state.userShare / 100;\r\n\r\n let merchantAffiliateProgramManagerId = this.state.formData.merchantAffiliateProgramManagerId;\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let request = {\r\n merchantAffiliateProgramManagerId: merchantAffiliateProgramManagerId,\r\n userShare: userShare,\r\n effectiveDate: effectiveDate,\r\n offset: DateTime.now().offset\r\n };\r\n\r\n let addMerchantCommissionOverrideUrl = '/api/Merchant/AddMerchantCommissionOverride';\r\n let userCommissionOverrideHistory = await postRequest(addMerchantCommissionOverrideUrl, request);\r\n\r\n let merchantCommissionOverrideHistoryRecords = await this.getMerchantCommissionOverrideHistory(merchantAffiliateProgramManagerId);\r\n\r\n this.setState({ isLoading: false, showSavedMerchant: true, merchantCommissionOverrideHistoryRecords });\r\n\r\n setTimeout(() => this.setState({ showSavedMerchant: false }), 4000);\r\n };\r\n\r\n renderSubmit = () => {\r\n let submitDisabled = true;\r\n\r\n if (this.state.formData.id && this.state.userShare && this.state.effectiveDate) {\r\n submitDisabled = false;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n getMerchantCommissionOverrideHistory = async (merchantAffiliateProgramManagerId) => {\r\n let getMerchantCommissionOverrideHistoryUrl = '/api/Merchant/GetMerchantAffiliateProgramManagerOverrideHistory';\r\n getMerchantCommissionOverrideHistoryUrl += `?offset=${DateTime.now().offset}`;\r\n getMerchantCommissionOverrideHistoryUrl += `&merchantAffiliateProgramManagerId=${(merchantAffiliateProgramManagerId)}`;\r\n\r\n let merchantCommissionOverrideHistoryRecords = await getRequest(getMerchantCommissionOverrideHistoryUrl) ?? [];\r\n return merchantCommissionOverrideHistoryRecords;\r\n };\r\n\r\n setSelected = async (selectedOption) => {\r\n let formData = {\r\n id: 0,\r\n merchantName: '',\r\n merchantHostname: '',\r\n merchantHomepage: '',\r\n merchantLogoUrl: '',\r\n integrated: false,\r\n commission: 0,\r\n merchantAffiliateProgramManagerId: 0,\r\n affiliateProgramManagerId: 0,\r\n affiliateProgramManagerName: ''\r\n }\r\n\r\n if (selectedOption) {\r\n formData = {\r\n ...selectedOption\r\n }\r\n }\r\n\r\n let merchantCommissionOverrideHistoryRecords = await this.getMerchantCommissionOverrideHistory(formData.merchantAffiliateProgramManagerId);\r\n\r\n this.setState({\r\n selectedOption,\r\n formData,\r\n merchantCommissionOverrideHistoryRecords\r\n });\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.state.merchantCommissionOverrideHistoryRecords.length === 0) {\r\n return (\r\n \r\n No data\r\n \r\n );\r\n }\r\n\r\n return _.orderBy(this.state.merchantCommissionOverrideHistoryRecords, ['id'], ['desc']).map((data) => {\r\n return (\r\n \r\n \r\n {data.id}\r\n \r\n \r\n {(data.userShare * 100).toFixed(0) + '%'}\r\n \r\n \r\n {convertToNumericMonthAndDayAndYearAndTime(data.effectiveDate, false).replace(',', '')}\r\n \r\n \r\n {data.endDate ? convertToNumericMonthAndDayAndYearAndTime(data.endDate, false).replace(',', '') : ''}\r\n \r\n );\r\n });\r\n }\r\n\r\n getUrl = () => {\r\n return this.state.formData.merchantHomepage ? this.state.formData.merchantHomepage : this.state.formData.merchantHostname;\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Add Merchant Override

    \r\n

    Add merchant commission override

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n {\r\n let filteredOptions = e.target.checked ? this.state.filteredOptions.filter(x => x.integrated) : this.state.options;\r\n this.setState({ integrated: e.target.checked, filteredOptions });\r\n }}\r\n />\r\n }\r\n checked={this.state.integrated}\r\n label=\"Integrated\"\r\n labelPlacement=\"start\"\r\n className=\"my-0\"\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {/* https://v4.mui.com/components/autocomplete/ */}\r\n `${option.merchantName} (${option.affiliateProgramManagerName})`}\r\n onChange={(event, selected) => {\r\n this.setSelected(selected);\r\n }}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.filteredOptions.length} merchants\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Merchant
    \r\n\r\n {\r\n this.state.formData.merchantAffiliateProgramManagerId ?\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Affiliate:  {this.state.formData.affiliateProgramManagerName}
    Merchant:  {this.state.formData.merchantName}
    Merchant Url:  {this.getUrl()}
    Integrated:  {this.state.formData.integrated ? 'Yes' : 'No'}
    User Share:  \r\n {/* https://v4.mui.com/components/text-fields/ */}\r\n %\r\n }}\r\n inputProps={{\r\n 'data-lpignore': 'true'\r\n }}\r\n style={{ width: '244px' }}\r\n value={this.state.userShare}\r\n onChange={(e) => {\r\n let value = e.target.value.replace(/[^0-9.]/g, '');\r\n this.setState({ userShare: value });\r\n }}\r\n />\r\n
    Effective Date:  \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let effectiveDate = e.target.value;\r\n this.setState({ effectiveDate: effectiveDate });\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n {this.renderSubmit()}\r\n\r\n this.setState({ savingProfile: false })}\r\n >\r\n Changes saved\r\n \r\n\r\n {\r\n this.state.isLoading ?\r\n \r\n : <>\r\n }\r\n \r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n
    Historical Commission Overrides
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableRows()}\r\n \r\n
    IdUser ShareEffective DateEnd Date
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default AddMerchantCommissionOverride;","import React from \"react\";\r\n\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { Popover, PopoverBody } from \"reactstrap\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\n\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\n\r\nimport _ from \"lodash\";\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AddUserMerchantCommissionOverride extends React.Component {\r\n state = {\r\n merchants: [],\r\n filteredMerchants: [],\r\n selectedMerchant: null,\r\n integrated: true,\r\n selected: [],\r\n options: [],\r\n value: [],\r\n isLoading: false,\r\n profilePicUrl: \"\",\r\n selectedProStatusId: \"\",\r\n userMerchantCommissionOverrideHistoryRecords: [],\r\n userShare: \"\",\r\n effectiveDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n\r\n formData: {\r\n displayName: \"\",\r\n profileUrl: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n proStatusId: \"\",\r\n isAdmin: \"\",\r\n id: \"\"\r\n }\r\n };\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/CommissionOverrides', text: 'Commission Overrides' },\r\n { link: '/Admin/CommissionOverrides/AddUserMerchantCommissionOverride', text: 'Add User/Merchant Commission Override', active: true }\r\n ];\r\n\r\n integratedCheckbox = withStyles({\r\n root: {\r\n '&$checked': {\r\n color: \"#e55934\",\r\n },\r\n },\r\n checked: {},\r\n })((props) => );\r\n\r\n MerchantSelectAutocomplete = withStyles({\r\n root: {\r\n marginTop: '0px',\r\n marginBottom: '0px'\r\n },\r\n })((props) => );\r\n\r\n proStatusIds = [\r\n { value: 0, label: 'General User' },\r\n { value: 1, label: 'Creator' },\r\n { value: 2, label: 'Merchant Partner' }];\r\n\r\n componentDidMount = async () => {\r\n await this.fetchMerchants();\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Merchant/GetCommissionEstimate`;\r\n\r\n let merchants = await getRequest(url);\r\n let filteredMerchants = this.state.integrated ? merchants.filter(x => x.integrated) : merchants;\r\n this.setState({ merchants: merchants, filteredMerchants, isLoading: false });\r\n }\r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n\r\n if (this.state.userMerchantCommissionOverrideHistoryRecords.length > 0) {\r\n let recordsWithoutEndDate = this.state.userMerchantCommissionOverrideHistoryRecords.filter(x => !x.endDate && x.merchantAffiliateProgramManagerId === this.state.selectedMerchant.merchantAffiliateProgramManagerId);\r\n let count = recordsWithoutEndDate.length;\r\n if (count > 0) {\r\n let isAre = count === 1 ? 'is' : 'are';\r\n let records = count === 1 ? 'record' : 'records';\r\n let msg = `Warning: There ${isAre} already ${count} \"active\" ${records} without an End Date set.\\n`;\r\n msg += ` Are you sure you wish to add a new User/Merchant Commission Override?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n let parsedDate = this.state.effectiveDate ? DateTime.fromISO(this.state.effectiveDate) : null;\r\n if (!parsedDate || !DateTime.isDateTime(parsedDate)) {\r\n window.alert(\"Invalid Effective Date\");\r\n return;\r\n }\r\n\r\n var effectiveDate = parsedDate.toJSDate().toISOString();\r\n\r\n if (!this.state.userShare) {\r\n window.alert(\"Invalid User Share\");\r\n return;\r\n }\r\n if (this.state.userShare > 100) {\r\n window.alert(\"Error: User Share cannot exceed 100%\");\r\n return;\r\n }\r\n if (this.state.userShare < 10) {\r\n let msg = `Warning: User Share is set to less than 10%.\\n`;\r\n msg += `Are you sure you wish to add a new User Commission Override with a UserShare value of ${this.state.userShare}%?`\r\n if (!window.confirm(msg)) {\r\n return;\r\n }\r\n }\r\n\r\n let userShare = this.state.userShare / 100;\r\n\r\n let userId = this.state.formData.id;\r\n let merchantAffiliateProgramManagerId = this.state.selectedMerchant.merchantAffiliateProgramManagerId;\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let request = {\r\n merchantAffiliateProgramManagerId: merchantAffiliateProgramManagerId,\r\n userId: userId,\r\n userShare: userShare,\r\n effectiveDate: effectiveDate,\r\n offset: DateTime.now().offset\r\n };\r\n\r\n let addUserMerchantCommissionOverrideUrl = '/api/Merchant/AddUserMerchantCommissionOverride';\r\n let userMerchantCommissionOverrideHistory = await postRequest(addUserMerchantCommissionOverrideUrl, request);\r\n\r\n let userMerchantCommissionOverrideHistoryRecords = await this.getUserMerchantCommissionOverrideHistoryByUserId(userId);\r\n\r\n this.setState({ isLoading: false, showSavedProfile: true, userMerchantCommissionOverrideHistoryRecords });\r\n\r\n setTimeout(() => this.setState({ showSavedProfile: false }), 4000);\r\n };\r\n\r\n renderSubmit = () => {\r\n let submitDisabled = true;\r\n\r\n if (this.state.formData.id && this.state.userShare && this.state.effectiveDate && this.state.selectedMerchant) {\r\n submitDisabled = false;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n getUserMerchantCommissionOverrideHistoryByUserId = async (userId, merchantAffiliateProgramManagerId) => {\r\n let getUserMerchantCommissionOverrideHistoryByUserIdUrl = '/api/Merchant/GetUserMerchantCommissionOverrideHistoryByUserId';\r\n getUserMerchantCommissionOverrideHistoryByUserIdUrl += `?offset=${DateTime.now().offset}`;\r\n getUserMerchantCommissionOverrideHistoryByUserIdUrl += `&userId=${(userId)}`;\r\n if (merchantAffiliateProgramManagerId != null) {\r\n getUserMerchantCommissionOverrideHistoryByUserIdUrl += `&merchantAffiliateProgramManagerId=${(merchantAffiliateProgramManagerId)}`;\r\n }\r\n\r\n let userMerchantCommissionOverrideHistoryRecords = await getRequest(getUserMerchantCommissionOverrideHistoryByUserIdUrl) ?? [];\r\n return userMerchantCommissionOverrideHistoryRecords;\r\n };\r\n\r\n setSelectedMerchant = async (selected) => {\r\n this.setState({ selectedMerchant: selected });\r\n }\r\n\r\n setSelected = async (selected) => {\r\n let formData = {\r\n displayName: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n imageUrl: \"\",\r\n userName: \"\",\r\n email: \"\",\r\n proStatusId: \"\",\r\n onboardingComplete: \"\",\r\n isAdmin: \"\"\r\n }\r\n\r\n let selectedProStatusId = this.proStatusIds[0];\r\n\r\n if (selected.length > 0) {\r\n\r\n formData = {\r\n displayName: selected[0].name,\r\n bio: selected[0].bio,\r\n tagLine: selected[0].tagLine,\r\n imageUrl: selected[0].imageUrl,\r\n userName: selected[0].userName,\r\n email: selected[0].email,\r\n proStatusId: selected[0].proStatusId,\r\n onboardingComplete: selected[0].onboardingComplete,\r\n isAdmin: selected[0].isAdmin,\r\n id: selected[0].id\r\n }\r\n\r\n selectedProStatusId = this.proStatusIds[selected[0].proStatusId];\r\n }\r\n\r\n let userMerchantCommissionOverrideHistoryRecords = await this.getUserMerchantCommissionOverrideHistoryByUserId(formData.id);\r\n\r\n this.setState({\r\n selected, formData,\r\n profilePicUrl: formData.imageUrl,\r\n selectedProStatusId,\r\n userMerchantCommissionOverrideHistoryRecords\r\n });\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.state.userMerchantCommissionOverrideHistoryRecords.length === 0) {\r\n return (\r\n \r\n No data\r\n \r\n );\r\n }\r\n\r\n return _.orderBy(this.state.userMerchantCommissionOverrideHistoryRecords, ['id'], ['desc']).map((data) => {\r\n return (\r\n \r\n \r\n {data.id}\r\n \r\n \r\n {data.merchantName}\r\n \r\n \r\n {data.affiliateProgramManagerName}\r\n \r\n \r\n {(data.userShare * 100).toFixed(0) + '%'}\r\n \r\n \r\n {convertToNumericMonthAndDayAndYearAndTime(data.effectiveDate, false).replace(',', '')}\r\n \r\n \r\n {data.endDate ? convertToNumericMonthAndDayAndYearAndTime(data.endDate, false).replace(',', '') : ''}\r\n \r\n );\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Add User/Merchant Override

    \r\n

    Add user/merchant commission override

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.setSelected(selected)}\r\n isLoading={this.state.isLoading}\r\n options={this.state.options}\r\n placeholder=\"Search for users...\" />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Public Profile
    \r\n\r\n {\r\n this.state.formData.displayName || this.state.formData.userName ?\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Name:  {this.state.formData.displayName}
    Administrator:  {this.state.formData.isAdmin ? 'Yes' : 'No'}
    User Type:  {this.state.selectedProStatusId && this.state.selectedProStatusId.label}
    Merchant:  \r\n
    \r\n
    \r\n
    \r\n {/* https://v4.mui.com/components/checkboxes/#checkbox-with-formcontrollabel */}\r\n {\r\n let filteredMerchants = e.target.checked ? this.state.filteredMerchants.filter(x => x.integrated) : this.state.merchants;\r\n this.setState({ integrated: e.target.checked, filteredMerchants });\r\n }}\r\n />\r\n }\r\n checked={this.state.integrated}\r\n label=\"Integrated\"\r\n labelPlacement=\"start\"\r\n className=\"my-0\"\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n {/* https://v4.mui.com/components/autocomplete/ */}\r\n `${option.merchantName} (${option.affiliateProgramManagerName})`}\r\n onChange={(event, selected) => {\r\n this.setSelectedMerchant(selected);\r\n }}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n {this.state.filteredMerchants.length} merchants\r\n
    \r\n
    \r\n
    \r\n
    User Share:  \r\n {/* https://v4.mui.com/components/text-fields/ */}\r\n %\r\n }}\r\n inputProps={{\r\n 'data-lpignore': 'true'\r\n }}\r\n style={{ width: '244px' }}\r\n value={this.state.userShare}\r\n onChange={(e) => {\r\n let value = e.target.value.replace(/[^0-9.]/g, '');\r\n this.setState({ userShare: value });\r\n }}\r\n />\r\n
    Effective Date:  \r\n {/* https://v4.mui.com/components/pickers/ */}\r\n {\r\n let effectiveDate = e.target.value;\r\n this.setState({ effectiveDate: effectiveDate });\r\n }}\r\n />\r\n
    \r\n
    \r\n\r\n {this.renderSubmit()}\r\n\r\n this.setState({ savingProfile: false })}\r\n >\r\n Changes saved\r\n \r\n\r\n {\r\n this.state.isLoading ?\r\n \r\n : <>\r\n }\r\n \r\n :\r\n <>\r\n }\r\n
    \r\n
    \r\n
    Historical Commission Overrides
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableRows()}\r\n \r\n
    IdMerchantAffiliateUser ShareEffective DateEnd Date
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default AddUserMerchantCommissionOverride;","import React, { Component } from \"react\";\r\nimport { Link } from 'react-router-dom';\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport _, { isInteger } from \"lodash\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport Select from 'react-select'\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass ProductNotFound extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 1 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 7 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 30 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n lastYear: {\r\n value: 5,\r\n label: \"Last Year\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.selectStatusOptions = {\r\n none: {\r\n value: 0,\r\n label: \"None\",\r\n },\r\n productSearchWorking: {\r\n value: 1,\r\n label: \"Product Search Working\",\r\n },\r\n productNotInFeed: {\r\n value: 2,\r\n label: \"Product Not In Feed\",\r\n },\r\n merchantNotIntegrated: {\r\n value: 3,\r\n label: \"Merchant Not Integrated\",\r\n },\r\n actionRequired: {\r\n value: 4,\r\n label: \"Action Required\",\r\n },\r\n };\r\n\r\n this.state = {\r\n productNotFoundData: [],\r\n productNotFoundDataLoading: false,\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n this.selectOptions.lastYear,\r\n ],\r\n defaultValue: this.selectOptions.last7Days,\r\n currentValue: this.selectOptions.last7Days,\r\n },\r\n selectStatusOptions: {\r\n options: [\r\n this.selectStatusOptions.none,\r\n this.selectStatusOptions.productSearchWorking,\r\n this.selectStatusOptions.productNotInFeed,\r\n this.selectStatusOptions.merchantNotIntegrated,\r\n this.selectStatusOptions.actionRequired,\r\n ],\r\n defaultValue: this.selectStatusOptions.none,\r\n currentValue: this.selectStatusOptions.none,\r\n },\r\n productNotFoundTable: {\r\n title: \"Product Not Found\",\r\n columns: [\r\n {\r\n name: \"createdDate\",\r\n label: \"Date Created\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n }\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"User Id\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false\r\n }\r\n },\r\n {\r\n name: \"userName\",\r\n label: \"User Name\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"hostname\",\r\n label: \"Hostname\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n\r\n }\r\n },\r\n {\r\n name: \"url\",\r\n label: \"URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"600px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"status\",\r\n label: \"Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { minWidth: \"250px\" } }),\r\n\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const id = tableMeta.rowData[6];\r\n const rowStatus = this.getStatusSelectOption(value);\r\n return (\r\n { this.handleStatusSelect(e, id) }}\r\n options={this.state.selectStatusOptions.options}\r\n value={rowStatus}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"id\",\r\n label: \"Database ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false\r\n }\r\n },\r\n ],\r\n endDate: `${DateTime.now().plus({ days: 1 }).toFormat('yyyy-MM-dd')}T00:00`,\r\n options: { selectableRows: false },\r\n \r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n //ResponseScroll: {\r\n // maxWidth: \"100%\"\r\n //}\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n },\r\n\r\n }\r\n })\r\n },\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.getProductNotFoundData();\r\n let productNotFoundTable = { ...this.state.productNotFoundTable };\r\n productNotFoundTable.data = this.state.getProductNotFoundData;\r\n this.setState({ productNotFoundTable });\r\n\r\n }\r\n\r\n getProductNotFoundData = async () => {\r\n this.setState({ productNotFoundDataLoading: true });\r\n\r\n //let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1)).toUTC();\r\n //let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n let startDate = this.state.selectOptions.currentValue.getDateRange().startDate;\r\n let endDate = this.state.selectOptions.currentValue.getDateRange().endDate;\r\n\r\n this.updateProductNotFound(startDate, endDate);\r\n }\r\n\r\n updateProductNotFound = async (startDate, endDate) => {\r\n\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let updateProductsNotFoundUrl = '/Products/GetProductNotFound';\r\n\r\n if (startDate) {\r\n updateProductsNotFoundUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n updateProductsNotFoundUrl += updateProductsNotFoundUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n updateProductsNotFoundUrl += `&offset=${offset}`\r\n\r\n this.setState({ productNotFoundDataLoading: true })\r\n let productNotFoundData = await getRequest(updateProductsNotFoundUrl) ?? [];\r\n\r\n this.setState({ productNotFoundData, productNotFoundDataLoading: false });\r\n\r\n }\r\n\r\n getStatusSelectOption = (status) => {\r\n if (status != null && status != undefined) {\r\n\r\n if (status === \"Product Search Working\") {\r\n return this.selectStatusOptions.productSearchWorking;\r\n }\r\n if (status === \"Product Not In Feed\") {\r\n return this.selectStatusOptions.productNotInFeed;\r\n }\r\n if (status === \"Merchant Not Integrated\") {\r\n return this.selectStatusOptions.merchantNotIntegrated;\r\n }\r\n if (status === \"Action Required\") {\r\n return this.selectStatusOptions.actionRequired;\r\n }\r\n }\r\n\r\n return this.selectStatusOptions.none;\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.updateProductNotFound(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n updateProductNotFoundStatus = async(id, statusId, status) => {\r\n if (id && statusId >= 0) {\r\n let productNotFoundData = this.state.productNotFoundData.map(data => {\r\n if (data.id === id) {\r\n data.statusId = statusId;\r\n data.status = status;\r\n }\r\n return data;\r\n });\r\n this.setState({ productNotFoundData });\r\n\r\n let updateProductNotFoundStatusUrl = `/Products/PostProductNotFoundStatus?id=${id}&statusId=${statusId}`;\r\n await getRequest(updateProductNotFoundStatusUrl);\r\n }\r\n }\r\n\r\n handleStatusSelect = async (selectedOption, id) => {\r\n this.updateProductNotFoundStatus(id, selectedOption.value, selectedOption.label);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n this.state.productNotFoundDataLoading ?\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n defaultValue={this.state.selectOptions.defaultValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {/*
    */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/*
    */}\r\n {/*
    */}\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ProductNotFound;","import React, { Component } from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport _ from \"lodash\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport ActionButton from \"../../components/ActionButton\"\r\n\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\n\r\nclass ProductFeeds extends Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n productFeeds: [],\r\n productFeedsLoading: false,\r\n productFeedsTable: {\r\n title: \"Product Feeds\",\r\n columns: [\r\n {\r\n name: \"merchantName\",\r\n label: \"Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n \r\n },\r\n {\r\n name: \"apmName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n\r\n }\r\n },\r\n {\r\n name: \"internalId\",\r\n label: \"Internal ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false\r\n }\r\n },\r\n {\r\n name: \"feedLastProcessed\",\r\n label: \"Last Processed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const date = new Date(value);\r\n return new Date(date).toLocaleString();\r\n }\r\n }\r\n },\r\n {\r\n name: \"refreshStatus\",\r\n label: \"Refresh Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"dateLastRefreshed\",\r\n label: \"Last Refreshed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const date = new Date(value);\r\n return new Date(date).toLocaleString(); }\r\n }\r\n },\r\n {\r\n name: \"modifiedDate\",\r\n label: \"Last Modified\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const date = new Date(value);\r\n return new Date(date).toLocaleString(); }\r\n }\r\n },\r\n {\r\n name: \"legacyButton\",\r\n label: \"Mark as Legacy\",\r\n options: {\r\n display: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const apmId = tableMeta.rowData[8];\r\n const merchantId = tableMeta.rowData[9];\r\n \r\n return (\r\n { this.updateLegacyStatus(e, apmId, merchantId) }}\r\n >\r\n Legacy\r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n name: \"apmId\",\r\n label: \"Affiliate Program Manager ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false\r\n }\r\n },\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant Id\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false\r\n }\r\n },\r\n ],\r\n options: { selectableRows: false },\r\n \r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n ResponseScroll: {\r\n maxWidth: \"100%\"\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n }\r\n }\r\n })\r\n },\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n const productFeeds = await getRequest('api/Merchant/GetProductFeeds') ?? [];\r\n this.setState({ productFeeds });\r\n }\r\n\r\n updateLegacyStatus = async (e, apmId, merchantId) => {\r\n const url = `api/Merchant/UpdateLegacyStatus?apmId=${apmId}&merchantId=${merchantId}`;\r\n await getRequest(url);\r\n\r\n const copyProductFeeds = [...this.state.productFeeds];\r\n const productFeeds = copyProductFeeds.map(feed => {\r\n if (feed.apmId === apmId && feed.merchantId === merchantId) {\r\n return { ...feed, refreshStatus: \"Legacy\" };\r\n }\r\n else {\r\n return { ...feed };\r\n }\r\n });\r\n this.setState({ productFeeds });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n this.state.productFeedsLoading ?\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ProductFeeds;","import React from \"react\";\r\n\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { Form, FormGroup, Label, Input, Popover, PopoverBody, CustomInput } from \"reactstrap\";\r\nimport Select from 'react-select'\r\nimport ResetPasswordForm from \"views/Admin/ResetPasswordForm\";\r\nimport Modal from \"components/Modal\";\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport ProductNotFound from \"./ProductNotFound\";\r\nimport { symbol } from \"prop-types\";\r\n\r\nclass ProductUpdate extends React.Component {\r\n state = {\r\n isLoading: false,\r\n imageUrl: \"\",\r\n productNotFound: false,\r\n isInteger: true,\r\n product: {},\r\n formData: {\r\n merchant: \"\",\r\n manufacturer: \"\",\r\n name: \"\",\r\n price: \"\",\r\n imageUrl: \"\",\r\n },\r\n searchInput: \"\",\r\n };\r\n\r\n readOnlyFields = [\"manufacturer\", \"brand\", \"productName\", \"price\", \"imageUrl\"];\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/Users', text: 'Users' }\r\n ]\r\n\r\n componentDidMount = async () => {\r\n\r\n }\r\n\r\n submitImageUrl = async (e) => {\r\n e.preventDefault();\r\n const tempProduct = { ...this.state.product};\r\n const product = {\r\n Name: tempProduct.name, Description: tempProduct.description, Url: tempProduct.url,\r\n ImageUrl: this.state.formData.imageUrl, MerchantProductCode: tempProduct.merchantProductCode,\r\n MerchantProductId: tempProduct.merchantProductId, Price: tempProduct.price\r\n };\r\n\r\n const url = \"/Products/UpdateMerchantProductHistory\";\r\n await postRequest(url, product);\r\n\r\n this.setState({ imageUrl: this.state.formData.imageUrl });\r\n }\r\n\r\n onImageUrlInputChange = (e) => {\r\n const imageUrl = e.target.value;\r\n const formData = { ...this.state.formData };\r\n formData.imageUrl = imageUrl;\r\n this.setState({ formData });\r\n };\r\n\r\n onSearchInputChange = (e) => {\r\n const searchInput = e.target.value;\r\n this.setState({ searchInput });\r\n };\r\n\r\n onKeyDown = (e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.fetchProductByShareCode(this.state.searchInput);\r\n }\r\n \r\n }\r\n\r\n onClickImageUpload = (event) => {\r\n event.preventDefault();\r\n document.getElementById(\"profilePicInput\").click();\r\n };\r\n\r\n fetchProduct = async (merchantProductId) => {\r\n const intMerchantProductId = Number(merchantProductId);\r\n if (Number.isInteger(intMerchantProductId) && intMerchantProductId > 0) {\r\n this.setState({ isInteger: true })\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/Products/GetProductByMerchantId?merchantProductId=${merchantProductId}`;\r\n let product = await getRequest(url);\r\n\r\n this.handleProduct(product);\r\n } else {\r\n this.setState({ isInteger: false, ProductNotFound: false })\r\n }\r\n }\r\n\r\n fetchProductByShareCode = async (shareCode) => {\r\n if (shareCode.length > 0) {\r\n this.setState({ isInteger: true })\r\n\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/Products/GetProductByShareCode?shareCode=${shareCode}`;\r\n let product = await getRequest(url);\r\n\r\n this.handleProduct(product);\r\n } else {\r\n this.setState({ isInteger: false, ProductNotFound: false })\r\n }\r\n }\r\n\r\n handleProduct(product) {\r\n if (product != null) {\r\n const formData = this.formatProduct(product);\r\n\r\n this.setState({\r\n product, isLoading: false, productNotFound: false, formData, imageUrl: product.imageUrl\r\n });\r\n } else {\r\n this.setState({ productNotFound: true })\r\n }\r\n\r\n }\r\n \r\n formatProduct = (product) => {\r\n const formData = { ...this.state.formData };\r\n formData.manufacturer = product.manufacturer;\r\n formData.merchant = product.merchant;\r\n formData.name = product.name;\r\n formData.description = product.description;\r\n formData.price = `$${product.price.toFixed(2)}`;\r\n formData.imageUrl = product.imageUrl;\r\n\r\n return formData;\r\n }\r\n\r\n mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n if (this.readOnlyFields.includes(field.name) || this.state.uploadingImage) {\r\n if (field.name === \"imageUrl\") {\r\n return (\r\n \r\n\r\n
    \r\n {field.title}\r\n
    \r\n\r\n this.onImageUrlInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n />\r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n }\r\n else {\r\n if (field.name === \"description\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n \r\n });\r\n }\r\n\r\n mapInputFieldsPublic = () => {\r\n let fields = [\r\n { name: \"merchant\", title: \"Merchant\" },\r\n { name: \"manufacturer\", title: \"Brand\" },\r\n { name: \"name\", title: \"Product Name\" },\r\n { name: \"price\", title: \"Price\" },\r\n { name: \"description\", title: \"Description\" },\r\n { name: \"imageUrl\", title: \"Image URL\" }\r\n ];\r\n return this.mapInputFields(fields);\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.onSearchInputChange(e)}\r\n onKeyDown={this.onKeyDown}\r\n value={this.state.searchInput}\r\n placeholder=\"Search Product by ShareCode...\"\r\n />\r\n {this.state.productNotFound ?\r\n

    NO PRODUCT WITH THAT SHARECODE

    :

    \r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {this.state.formData.name}
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.mapInputFieldsPublic()}\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ProductUpdate;","import React, { Component } from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport _ from \"lodash\";\r\nimport LoadSpinnerOverlay from \"components/LoadSpinnerOverlay\";\r\nimport Select from 'react-select'\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass ElmahLogs extends Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 1 }));\r\n let endDate = asDate(DateTime.now().plus({ days: 1 }));\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 7 }));\r\n let endDate = asDate(DateTime.now().plus({ days: 1 }));\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 30 }));\r\n let endDate = asDate(DateTime.now().plus({ days: 1 }));\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 }));\r\n let endDate = asDate(DateTime.now().plus({ days: 1 }));\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1));\r\n let endDate = asDate(DateTime.now().plus({ days: 1 }));\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n lastYear: {\r\n value: 5,\r\n label: \"Last Year\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1));\r\n let endDate = asDate(DateTime.local(DateTime.now().year, 1, 1));\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.state = {\r\n errorLogs: [],\r\n errorLogsLoading: false,\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n this.selectOptions.lastYear,\r\n ],\r\n defaultValue: this.selectOptions.last24Hours,\r\n currentValue: this.selectOptions.last24Hours,\r\n },\r\n errorLogsTable: {\r\n title: \"Error Logs\",\r\n columns: [\r\n {\r\n name: \"apiName\",\r\n label: \"API\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n\r\n },\r\n {\r\n name: \"host\",\r\n label: \"Host\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n\r\n }\r\n },\r\n {\r\n name: \"errorId\",\r\n label: \"Error ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false\r\n }\r\n },\r\n {\r\n name: \"statusCode\",\r\n label: \"Status Code\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"100px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"type\",\r\n label: \"Type\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"300px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n {\r\n name: \"message\",\r\n label: \"Error\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"600px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const message = tableMeta.rowData[5];\r\n const id = tableMeta.rowData[2];\r\n const thisLogArray = this.state.errorLogs.filter(log => log.errorId === id);\r\n const thisLog = thisLogArray[0];\r\n return (\r\n

    {message} this.toggleErrorLog(thisLog)} > ...Details

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"user\",\r\n label: \"User\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"timeUtc\",\r\n label: \"When\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n let date = new Date(value);\r\n date = date.setHours(date.getHours() - 5);\r\n return new Date(date).toLocaleString();\r\n }\r\n }\r\n },\r\n ],\r\n options: { selectableRows: false },\r\n\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n ResponseScroll: {\r\n maxWidth: \"100%\"\r\n }\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n }\r\n }\r\n })\r\n },\r\n }\r\n }\r\n\r\n componentDidMount = async () => {\r\n //this.getErrorLogData();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.display != this.props.display && this.props.display && this.state.errorLogs.length === 0) {\r\n this.getErrorLogData();\r\n }\r\n }\r\n\r\n getErrorLogData = async () => {\r\n let startDate = this.state.selectOptions.currentValue.getDateRange().startDate;\r\n let endDate = this.state.selectOptions.currentValue.getDateRange().endDate;\r\n\r\n this.updateErrorLogs(startDate, endDate);\r\n }\r\n\r\n updateErrorLogs = async (startDate, endDate) => {\r\n this.setState({ errorLogsLoading: true });\r\n\r\n let errorLogs = await getRequest(`api/ErrorLogger/GetElmahLogs?startDate=${startDate}&endDate=${endDate}`);\r\n if (errorLogs == null) errorLogs = [];\r\n\r\n this.setState({ errorLogs, errorLogsLoading: false });\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.updateErrorLogs(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n toggleErrorLog = (log) => {\r\n this.props.toggleErrorLog(log);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n this.state.errorLogsLoading ?\r\n \r\n : <>\r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n defaultValue={this.state.selectOptions.defaultValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default ElmahLogs;","import React from \"react\";\r\nimport { useState, useEffect } from \"react\";\r\n\r\n\r\nconst ErrorLog = (props) => {\r\n\r\n const [log, setLog] = useState(props.log);\r\n\r\n useEffect(() => {\r\n if (props.log !== log) {\r\n setLog(props.log);\r\n }\r\n }, [props.log, log]);\r\n\r\n const toggleErrorLog = () => {\r\n props.toggleErrorLog();\r\n }\r\n\r\n const displayTableRows = () => {\r\n if (log) {\r\n return log.allXml.error.serverVariables.item.map((row, i) => {\r\n const value = row?.value?.string != null ? row.value.string : \"\";\r\n return (\r\n \r\n {row.name}\r\n {value}\r\n \r\n )\r\n })\r\n }\r\n else {\r\n return (\r\n \r\n No data\r\n \r\n )\r\n }\r\n }\r\n\r\n if (log) {\r\n let date = new Date(log.timeUtc);\r\n date = date.setHours(date.getHours() - 5);\r\n const dayNum = new Date(date).getDay().toLocaleString();\r\n const formattedDate = new Date(date).toLocaleString();\r\n\r\n const dayOfWeek = ['Sunday', 'Monday', 'Tuesday',\r\n 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n\r\n const day = dayOfWeek[dayNum];\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n

    {log.message}

    \r\n
    {log.type}
    \r\n {log.apiName === \"Web\" ?\r\n

    {log.allXml.error.detail}

    :\r\n
    {log.allXml.error.detail}
    \r\n }\r\n

    Logged on {day}, {formattedDate}

    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {displayTableRows()}\r\n \r\n
    NameValue
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n )\r\n } else {\r\n return (\r\n
    \r\n
    \r\n

    NO LOG

    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ErrorLog;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport ProductNotFound from \"../../components/ItOperations/ProductNotFound\";\r\nimport ProductFeeds from \"../../components/ItOperations/ProductFeeds\";\r\nimport ProductUpdate from \"../../components/ItOperations/ProductUpdate\";\r\nimport ElmahLogs from \"../../components/ItOperations/ElmahLogs\";\r\nimport ElmahLog from \"../../components/ItOperations/ElmahLog\";\r\n\r\n\r\nclass ItOperations extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n log: null,\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/ItOperations', text: 'IT Operations' }];\r\n productNotFoundBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ItOperations', text: 'Products Not Found', active: true }\r\n ];\r\n productFeedsBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ItOperations', text: 'Product Feeds', active: true }\r\n ];\r\n productUpdateBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ItOperations', text: 'Product Update', active: true }\r\n ];\r\n elmahLogsBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ItOperations', text: 'Elmah Logs', active: true }\r\n ];\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Product Not Found\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Product Feeds\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Product Update\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n },\r\n {\r\n name: \"Elmah Logs\",\r\n case: 4,\r\n action: () => this.setState({ selectedCase: 4 })\r\n },\r\n\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n toggleErrorLog = (log = null) => {\r\n if (this.state.selectedCase === 4) {\r\n this.setState({ selectedCase: 5 })\r\n } else if (this.state.selectedCase === 5) {\r\n this.setState({ selectedCase: 4 })\r\n }\r\n if (log) {\r\n this.setState({ log });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    IT Operations

    \r\n

    Manage IT Operations

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ItOperations;","import React, { Component } from \"react\";\r\nimport Select from 'react-select';\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\n\r\n\r\nclass CategoryCreation extends Component {\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Name\"];\r\n\r\n return headers.map((header, i) => {\r\n return {header}\r\n })\r\n }\r\n\r\n displayTableRows = () => {\r\n return this.props.categories.map((category, i) => {\r\n if (category.level === this.props.level && (this.props.level === 1 || category.parentCategoryId === this.props.selectedCategories[this.props.selectedCategories.length - 1].id)) {\r\n return (\r\n \r\n \r\n { e.preventDefault(); this.props.handleCategoryTableClick(category); }}>{category.name}\r\n \r\n \r\n )\r\n }\r\n })\r\n }\r\n\r\n displayBreadcrumbs = () => {\r\n return this.props.selectedCategories.map((category, i, arr) => {\r\n if (i === 0 ) {\r\n return (\r\n { e.preventDefault(); this.props.handleBreadcrumbClick(i); }}>Root Level\r\n )\r\n }\r\n if (i === arr.length - 1) {\r\n return > {category.name};\r\n }\r\n return (\r\n { e.preventDefault(); this.props.handleBreadcrumbClick(i); }}> > {category.name}\r\n )\r\n });\r\n }\r\n\r\n\r\n render() { \r\n const width = \"500px\";\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    Create Category

    \r\n
    Name:
    \r\n \r\n
    ParentCategoryId:
    \r\n
    \r\n
    \r\n

    Selected Parent Category

    \r\n
    {this.props.selectedCategories.length > 0 ? this.props.selectedCategories[this.props.selectedCategories.length - 1].name : \"Select a category...\"}
    \r\n {this.props.category?.name?.length > 0 ?\r\n \r\n Save\r\n :\r\n \r\n Save\r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n \r\n {this.displayBreadcrumbs()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CategoryCreation;","import React, { Component } from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\nimport { toggleShareModal, toggleProductPageModal } from \"stateManagement/reducers/modalReducer\";\r\nimport { connect } from \"react-redux\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\n\r\n\r\n\r\nclass CategoryProductAssignment extends Component {\r\n\r\n displayCategoryTableHeader = () => {\r\n let headers = [\"Category\"];\r\n\r\n return headers.map((header, i) => {\r\n return {header}\r\n })\r\n }\r\n\r\n displayCategoryTableRows = () => {\r\n return this.props.categories.map((category, i) => {\r\n if (category.level === this.props.level && (this.props.level === 1 || category.parentCategoryId === this.props.selectedCategories[this.props.selectedCategories.length - 1].id)) {\r\n return (\r\n \r\n \r\n { e.preventDefault(); this.props.handleProductCategoryTableClick(category); }}>{category.name}\r\n \r\n \r\n )\r\n }\r\n })\r\n }\r\n\r\n displayProducts = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayProductTableHeader()}\r\n \r\n \r\n \r\n {this.displayProductTableRows()}\r\n \r\n \r\n )\r\n }\r\n\r\n displayProductTableHeader = () => {\r\n let headers = [\"Product\", \"Brand\", \"Merchant\", \"Retail Price\"];\r\n\r\n return headers.map((header, i) => {\r\n return {header}\r\n })\r\n }\r\n\r\n displayProductTableRows = () => {\r\n return this.props.products.map((product, i) => {\r\n const url = \"/Product/ProductPage/\" + product.shareCode;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {product.manufacturer}\r\n \r\n\r\n \r\n {product.merchant}\r\n \r\n\r\n \r\n {currencyFormat(product.price)}\r\n \r\n \r\n )\r\n })\r\n }\r\n\r\n displayBreadcrumbs = () => {\r\n return this.props.selectedCategories.map((category, i, arr) => {\r\n if (i === 0) {\r\n return (\r\n { e.preventDefault(); this.props.handleBreadcrumbClick(i); }}>Root Level\r\n )\r\n }\r\n if (i === arr.length - 1) {\r\n return > {category.name};\r\n }\r\n return (\r\n { e.preventDefault(); this.props.handleBreadcrumbClick(i); }}> > {category.name}\r\n )\r\n });\r\n }\r\n\r\n\r\n handleProductPageModalClick = (product) => {\r\n if (!!(product.shareCode)) {\r\n this.props.toggleProductPageModal(product, this.props.loggedInUser, false, () => null);\r\n }\r\n }\r\n\r\n concatMerchantProduct = (product) => {\r\n if (product.name.toLowerCase().indexOf(product.manufacturer.toLowerCase()) === 0) {\r\n return product.name.slice(product.manufacturer.length - product.name.length).trim();\r\n }\r\n return product.name;\r\n }\r\n\r\n render() {\r\n const width = \"500px\";\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    Selected Product

    \r\n
    {!!(this.props.product) ? this.props.product.name : \"Select a product...\"}
    \r\n
    \r\n
    \r\n

    Selected Category

    \r\n
    {this.props.selectedCategories.length > 1 ? this.props.selectedCategories[this.props.selectedCategories.length - 1].name : \"Select a category...\"}
    \r\n {this.props.product != null && this.props.product.productId > 0 && this.props.selectedCategories[this.props.selectedCategories.length - 1].id > 0 ?\r\n \r\n Save\r\n :\r\n \r\n Save\r\n \r\n }\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
     
    \r\n
    \r\n \r\n {this.displayBreadcrumbs()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {this.displayProducts()}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n {this.displayCategoryTableHeader()}\r\n \r\n \r\n \r\n {this.displayCategoryTableRows()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(storeState, componentProps) {\r\n let result = { feedLayout: storeState.feedLayoutReducer };\r\n return result;\r\n}\r\n\r\nexport default connect(mapStateToProps, { toggleProductPageModal })(withRouter(CategoryProductAssignment));","import React, { Component } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\nclass ProductsWithoutCategoriesExcel extends Component {\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    There was an error downloading the spreadsheet. Try again.

    \r\n \r\n Download Spreadsheet\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ProductsWithoutCategoriesExcel;","import React, { Component } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\n\r\nclass UploadProductCategories extends Component {\r\n handleFileChange = (event) => {\r\n const file = event.target.files[0];\r\n this.props.handleUpload(file);\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n There was an error uploading the spreadsheet. Try again.\r\n

    \r\n (this.fileInput = input)}\r\n />\r\n this.fileInput.click()}\r\n isLoading={this.props.isLoading}\r\n >\r\n Upload Spreadsheet\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default UploadProductCategories;\r\n","import React from \"react\";\r\nimport Select from 'react-select';\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest, postRequest, postSpreadsheet } from \"sharedUtils/httpUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport CategoryCreation from \"components/CategoryCreation\";\r\nimport CategoryProductAssignment from \"components/CategoryProductAssignment\";\r\nimport ProductsWithoutCategoriesExcel from \"components/ProductsWithoutCategoriesExcel\";\r\nimport UploadProductCategories from \"components/UploadProductCategories\";\r\n\r\n\r\n\r\nclass Category extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n categories: [],\r\n selectedCategories: [],\r\n level: 1,\r\n category: {\r\n name: \"\",\r\n },\r\n savingCategory: false,\r\n\r\n // Product Category State\r\n products: [],\r\n product: null,\r\n levelPC: 1,\r\n selectedCategoriesPC: [{ id: 0, name: \"None\" }],\r\n savingProductCategory: false,\r\n finishedFetchingProducts: false,\r\n fetchingExcel: false,\r\n postingExcel: false,\r\n excelError: false,\r\n postExcelError: false,\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/Category', text: 'Category' }];\r\n categoryCreationBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Category', text: 'Category Creation', active: true }\r\n ];\r\n categoryToProductBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Category', text: 'Category to Product Assignment', active: true }\r\n ];\r\n\r\n productsWithoutCategoriesExcelBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Category', text: 'Products Without Categories Spreadsheet', active: true }\r\n ];\r\n\r\n UploadProductCategories = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Category', text: 'Upload Product Categories Spreadsheet', active: true }\r\n ];\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.fetchCategories();\r\n this.fetchProductsWithoutCategories();\r\n }\r\n\r\n fetchProductsWithoutCategories = async () => {\r\n const url = `/Products/GetProductsWithoutCategories?skip=0&take=24`;\r\n const products = await getRequest(url);\r\n\r\n this.setState({ products });\r\n }\r\n\r\n fetchMore = async () => {\r\n let skip = this.state.products?.length;\r\n\r\n const url = `/Products/GetProductsWithoutCategories?skip=${skip}&take=24`;\r\n const newProducts = await getRequest(url);\r\n\r\n if (newProducts == null || newProducts == undefined || newProducts?.length === 0) {\r\n this.setState({ finishedFetchingProducts: true });\r\n } else {\r\n const products = [...this.state.products, ...newProducts]\r\n this.setState({ products });\r\n }\r\n }\r\n\r\n getProductsWithoutCategoriesExcel = async () => {\r\n this.setState({ fetchingExcel: true });\r\n const url = `/Products/GetProductsWithoutCategoriesExcel`;\r\n const response = await getRequest(url);\r\n\r\n if (response) {\r\n this.setState({ excelError: false, fetchingExcel: false });\r\n } else {\r\n this.setState({ excelError: true, fetchingExcel: false });\r\n }\r\n }\r\n\r\n handleUpload = async (file) => {\r\n this.setState({ postExcelError: false, postingExcel: true });\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n\r\n const response = await postSpreadsheet(\"/Products/UploadProductCategoriesExcel\", formData);\r\n\r\n this.setState({ postExcelError: !(response), postingExcel: false });\r\n };\r\n\r\n\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Category Creation\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Category to Product Assignment\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Products Without Categories Spreadsheet\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n },\r\n {\r\n name: \"Upload Product Categories Spreadsheet\",\r\n case: 4,\r\n action: () => this.setState({ selectedCase: 4 })\r\n },\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n saveProductCategory = async () => {\r\n let validProductId = Number.isInteger(parseInt(this.state.productCategory.productId.trim())) && parseInt(this.state.productCategory.productId.trim()) > 0;\r\n\r\n let validCategoryId = Number.isInteger(parseInt(this.state.productCategory.categoryId.trim())) && parseInt(this.state.productCategory.categoryId.trim()) > 0;\r\n\r\n\r\n if (validProductId && validCategoryId) {\r\n this.setState({ productCategorySaving: true })\r\n\r\n const productCategory = this.state.productCategory;\r\n\r\n const url = `api/Sector/PostProductCategory`;\r\n\r\n const newProductCategory = await postRequest(url, { productId: productCategory.productId.trim(), categoryId: productCategory.categoryId.trim() });\r\n productCategory.categoryId = \"\";\r\n productCategory.productId = \"\";\r\n\r\n this.setState({ productCategory, productCategorySaving: false });\r\n\r\n }\r\n\r\n if (!validProductId) {\r\n this.setState({ productCategoryValidProductId : false })\r\n }\r\n\r\n if (!validCategoryId) {\r\n this.setState({ productCategoryValidCategoryId: false })\r\n } \r\n }\r\n\r\n /// NEW REFACTORED CODE STARTS HERE ///\r\n\r\n fetchCategories = async () => {\r\n let url = `/api/Sector/GetCategories?showAll=true`;\r\n const categories = await getRequest(url);\r\n\r\n const selectedCategories = [{ id: 0, name: \"None\" }];\r\n const category = {\r\n name: \"\",\r\n };\r\n this.setState({ categories, selectedCategories, category, level: 1 });\r\n }\r\n\r\n handleCategoryName = (e) => {\r\n let category = this.state.category;\r\n category.name = e.target.value;\r\n this.setState({ category });\r\n }\r\n\r\n saveCategory = async () => {\r\n this.setState({ savingCategory: true })\r\n\r\n const category = this.state.category;\r\n category.name = category.name.trim();\r\n if (this.state.selectedCategories.length > 1) {\r\n category.parentCategoryId = this.state.selectedCategories[this.state.selectedCategories.length - 1].id;\r\n }\r\n\r\n const url = `api/Sector/PostCategory`;\r\n const newCategory = await postRequest(url, category);\r\n this.setState({ savingCategory: false })\r\n\r\n this.fetchCategories();\r\n }\r\n\r\n handleBreadcrumbClick = index => {\r\n let selectedCategories = this.state.selectedCategories;\r\n let level = this.state.level;\r\n\r\n for (let i = selectedCategories.length - 1; i > index; i--) {\r\n selectedCategories.pop();\r\n level--;\r\n }\r\n this.setState({ selectedCategories, level });\r\n }\r\n /// NEW CODE ENDS HERE ///\r\n\r\n handleProductsTableClick = product => {\r\n this.setState({ product })\r\n }\r\n\r\n\r\n handleProductCategoryTableClick = (category) => {\r\n let selectedCategoriesPC = [...this.state.selectedCategoriesPC];\r\n selectedCategoriesPC.push(category);\r\n\r\n this.setState({ selectedCategoriesPC, levelPC: this.state.levelPC + 1 });\r\n }\r\n\r\n handleCategoryTableClick = (category) => {\r\n let selectedCategories = [...this.state.selectedCategories];\r\n selectedCategories.push(category);\r\n\r\n this.setState({ selectedCategories, level: this.state.level + 1 });\r\n }\r\n\r\n handleBreadcrumbClickPC = index => {\r\n let selectedCategoriesPC = this.state.selectedCategoriesPC;\r\n let levelPC = this.state.levelPC;\r\n\r\n for (let i = selectedCategoriesPC.length - 1; i > index; i--) {\r\n selectedCategoriesPC.pop();\r\n levelPC--;\r\n }\r\n this.setState({ selectedCategoriesPC, levelPC });\r\n }\r\n\r\n saveProductCategory = async () => {\r\n this.setState({ savingProductCategory: true });\r\n\r\n const productCategory = {\r\n productId: this.state.product.productId,\r\n categoryId: this.state.selectedCategoriesPC[this.state.selectedCategoriesPC.length - 1].id,\r\n };\r\n const url = `api/Sector/PostProductCategory`;\r\n const newProductCategory = await postRequest(url, productCategory);\r\n\r\n let products = this.state.products.filter(p => p.productId != productCategory.productId);\r\n this.setState({ products, product: null, levelPC: 1, selectedCategoriesPC: [{ id: 0, name: \"None\" }], savingProductCategory: false });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Category Management

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.state.selectedCase === 1 ?\r\n :\r\n this.state.selectedCase === 2 ?\r\n :\r\n this.state.selectedCase === 3 ?\r\n \r\n :\r\n \r\n }\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Category;","import React, { Component } from \"react\";\r\nimport Select from 'react-select';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { Link } from \"react-router-dom\";\r\nimport InfiniteScroll from \"react-infinite-scroll-component\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport CloseIcon from \"components/icons/CloseIcon\";\r\n\r\n\r\nclass BrandNames extends Component {\r\n\r\n displayTableHeader = (noButtons = false) => {\r\n let headers = [\"Brand Name\", \"\", \"\"];\r\n\r\n return headers.map((header, i) => {\r\n const borders = noButtons && i === 0 ? \"border-right-0\" : noButtons && i === 1 ? \"border-left-0 border-right-0\" : noButtons ? \"border-left-0\" : \"\";\r\n return {header}\r\n })\r\n }\r\n\r\n displayDetailsTable = () => {\r\n if (this.props.selectedBrandName?.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayBrandDetailRows()}\r\n \r\n
    \r\n
    MERCHANT:
    \r\n
    \r\n
    AFFILIATE:
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n displayTableRows = (tableType) => {\r\n return this.props.brands?.map((brand, i) => {\r\n if (this.props.brands?.length > 0) {\r\n return (\r\n \r\n {\r\n tableType === \"new\" ?\r\n <>\r\n \r\n { e.preventDefault(); this.props.handleBrandClick(brand.id, tableType) }}>{brand.name === \"\" ? \"[BLANK NAME]\" : brand.name}\r\n \r\n ({brand.productCount})\r\n \r\n \r\n \r\n this.props.handleBrandNamesClick(brand.name, brand.id)}\r\n >\r\n Affiliates\r\n \r\n \r\n \r\n this.props.handleBrandProductsClick(brand.name, brand.id)}\r\n >\r\n ProductUrls\r\n \r\n \r\n :\r\n <>\r\n \r\n { e.preventDefault(); this.props.handleBrandClick(brand.id, tableType) }}>{brand.name === \"\" ? \"[BLANK NAME]\" : brand.name}\r\n \r\n ({brand.productCount})\r\n \r\n \r\n \r\n this.props.handleBrandNamesClick(brand.name, brand.id)}\r\n >\r\n Affiliates\r\n \r\n \r\n \r\n this.props.handleBrandProductsClick(brand.name, brand.id)}\r\n >\r\n ProductUrls\r\n \r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n })\r\n }\r\n\r\n displayBrandDetailRows = () => {\r\n return this.props.selectedBrandName?.map((m, i) => {\r\n return (\r\n \r\n \r\n
    {m.merchantName}
    \r\n \r\n \r\n
    {m.affiliateProgramManager}
    \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n infiniteScrollTableRender = () => {\r\n const width = \"500px\";\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableHeader(true)}\r\n \r\n \r\n \r\n {this.displayTableRows(\"original\")}\r\n \r\n
    \r\n \r\n Original Brand\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n\r\n render() {\r\n const width = \"500px\";\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    Re-Associate Products to New Brand

    \r\n
    Original Brand: {this.props.selectedOriginalBrand[0].id !== 0 && this.props.selectedOriginalBrand[0].name === \"\" ? \"[Blank Name]\" : this.props.selectedOriginalBrand[0].name}
    \r\n
    New Brand: {this.props.selectedNewBrand[0].id !== 0 && this.props.selectedNewBrand[0].name === \"\" ? \"[Blank Name]\" : this.props.selectedNewBrand[0].name}
    \r\n
    \r\n {this.props.selectedOriginalBrand[0].id > 0 && this.props.selectedNewBrand[0].id > 0 && this.props.selectedOriginalBrand[0].id !== this.props.selectedNewBrand[0].id ?\r\n \r\n Save\r\n :\r\n \r\n Save\r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n {\r\n this.props.brandsLoading ?\r\n :\r\n <>\r\n
    \r\n
    \r\n
    \r\n
    \r\n { if (e.keyCode === 13) this.props.searchBrands(); }} />\r\n { e.preventDefault(); this.props.searchBrands() }} />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.infiniteScrollTableRender()}\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableHeader(true)}\r\n \r\n \r\n \r\n {this.displayTableRows(\"new\")}\r\n \r\n
    \r\n \r\n New Brand\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default BrandNames;","import React from \"react\";\r\nimport Select from 'react-select';\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport BrandNames from \"components/BrandNames\";\r\nimport Modal from 'react-modal';\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\n\r\nclass ManageBrands extends React.Component {\r\n\r\n state = {\r\n // NEW BRANDS CODE\r\n brands: [],\r\n selectedBrandName: null,\r\n show: false,\r\n showProducts: false,\r\n selected: \"\",\r\n selectedBrandNameLoading: false,\r\n selectedOriginalBrand: [{ name: \"\", id: 0 }],\r\n selectedNewBrand: [{ name: \"\", id: 0 }],\r\n savingBrandAssociations: false,\r\n brandsLoading: false,\r\n search: \"\",\r\n finishedFetchingBrands: false,\r\n selectedBrandProducts: [],\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/ManageBrands', text: 'Manage Brands' }];\r\n brandNamesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ManageBrands', text: 'Brand Names', active: true }\r\n ];\r\n brandProductBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ManageBrands', text: 'Brand Product Association', active: true }\r\n ];\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n this.fetchBrands();\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.search !== this.state.search && this.state.search === \"\") {\r\n this.fetchBrands();\r\n }\r\n }\r\n\r\n fetchBrands = async () => {\r\n this.setState({ brandsLoading: true, brands: [] });\r\n const search = this.state.search;\r\n const url = `/api/Merchant/GetBrandsWithAssociatedProducts?skip=0&take=200&search=${search}`;\r\n let brands = await getRequest(url);\r\n this.setState({ brands, brandsLoading: false });\r\n }\r\n\r\n handleBrandNamesClick = async (manufacturerName, manufacturerId) => {\r\n this.setState({ selected: manufacturerName, selectedBrandName: [], selectedBrandNameLoading: true, show: true });\r\n\r\n const url = `/api/Merchant/GetBrandMerchants?manufacturerId=${manufacturerId}`;\r\n const selectedBrandName = await getRequest(url); \r\n\r\n this.setState({ selectedBrandName, selectedBrandNameLoading: false });\r\n }\r\n\r\n handleBrandProductsClick = async (manufacturerName, manufacturerId) => {\r\n this.setState({ selected: manufacturerName, selectedBrandProducts: [], selectedBrandNameLoading: true, showProducts: true });\r\n\r\n const url = `/api/Merchant/GetBrandProductUrls?manufacturerId=${manufacturerId}`;\r\n const selectedBrandProducts = await getRequest(url);\r\n\r\n this.setState({ selectedBrandProducts, selectedBrandNameLoading: false });\r\n }\r\n\r\n handleBrandClick = (manufacturerId, table) => {\r\n switch (table) {\r\n case \"original\":\r\n const selectedOriginalBrand = this.state.brands.filter(brand => brand.id === manufacturerId);\r\n this.setState({ selectedOriginalBrand });\r\n return;\r\n case \"new\":\r\n const selectedNewBrand = this.state.brands.filter(brand => brand.id === manufacturerId);\r\n this.setState({ selectedNewBrand });\r\n return;\r\n }\r\n }\r\n\r\n handleSearch = (e) => {\r\n e.preventDefault();\r\n this.setState({ search: e.target.value });\r\n }\r\n\r\n resetSearch = () => {\r\n this.setState({ search: \"\", finishedFetchingBrands: false });\r\n }\r\n\r\n searchBrands = async () => {\r\n const search = this.state.search.trim();\r\n if (search.length > 0) {\r\n this.fetchBrands();\r\n }\r\n }\r\n\r\n brandsReset = () => {\r\n this.setState({\r\n selectedOriginalBrand: [{ name: \"\", id: 0 }],\r\n selectedNewBrand: [{ name: \"\", id: 0 }]\r\n });\r\n }\r\n\r\n fetchMore = async () => {\r\n let skip = this.state.brands?.length;\r\n const search = this.state.search;\r\n const url = `/api/Merchant/GetBrandsWithAssociatedProducts?skip=${skip}&take=200&search=${search}`;\r\n let newBrands = await getRequest(url);\r\n\r\n if (newBrands == null || newBrands == undefined || newBrands?.length === 0) {\r\n this.setState({ finishedFetchingBrands: true });\r\n } else {\r\n const brands = [...this.state.brands, ...newBrands]\r\n this.setState({ brands });\r\n }\r\n }\r\n\r\n showModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ show: !this.state.show });\r\n };\r\n\r\n hideModal = () => {\r\n this.setState({ show: false });\r\n }\r\n\r\n renderBuyLogic = (shareCode) => {\r\n let url = \"/Products/BuyAuthorized?shareCode=\" + shareCode + \"&referrer=\" + document.referrer + \"&browse=false\";\r\n return url;\r\n }\r\n\r\n saveBrandAssociations = async () => {\r\n this.setState({ savingBrandAssociations: true })\r\n\r\n const url = `/Products/UpdateProducts`;\r\n const model = {\r\n newManufacturerId: this.state.selectedNewBrand[0].id,\r\n newManufacturerName: this.state.selectedNewBrand[0].name,\r\n oldManufacturerId: this.state.selectedOriginalBrand[0].id,\r\n };\r\n\r\n await postRequest(url, model);\r\n\r\n this.brandsReset();\r\n this.fetchBrands();\r\n this.setState({ savingBrandAssociations: false });\r\n }\r\n\r\n displayDetailsTable = () => {\r\n if (this.state.selectedBrandName?.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayBrandDetailRows()}\r\n \r\n
    \r\n
    MERCHANT:
    \r\n
    \r\n
    AFFILIATE:
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n displayProductsDetailsTable = () => {\r\n if (this.state.selectedBrandProducts?.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayProductsBrandDetailRows()}\r\n \r\n
    \r\n
    URL:
    \r\n
    \r\n
    AFFILIATE:
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n\r\n displayBrandDetailRows = () => {\r\n return this.state.selectedBrandName?.map((m, i) => {\r\n return (\r\n \r\n \r\n
    {m.merchantName} {m.integrated ? \"*\" : \"\"}
    \r\n \r\n \r\n
    {m.affiliateProgramManager}
    \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n displayProductsBrandDetailRows = () => {\r\n return this.state.selectedBrandProducts?.map((m, i) => {\r\n const url = this.renderBuyLogic(m.shareCode)\r\n\r\n if (i === this.state.selectedBrandProducts?.length - 1) {\r\n return (\r\n \r\n \r\n {m.productUrl}\r\n {\r\n !!(m.shareCode) ?\r\n \r\n \r\n \r\n : <>\r\n }\r\n \r\n \r\n {m.affiliateProgramManager}\r\n \r\n \r\n )\r\n }\r\n return (\r\n <>\r\n \r\n \r\n {m.productUrl}\r\n {\r\n !!(m.shareCode) ?\r\n \r\n \r\n \r\n : <>\r\n }\r\n \r\n \r\n {m.affiliateProgramManager}\r\n \r\n \r\n
    \r\n \r\n )\r\n });\r\n }\r\n\r\n render() {\r\n const width = \"500px\";\r\n\r\n return (\r\n
    \r\n this.setState({ show: false })}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    Associated Merchants and Affiliates

    \r\n {\r\n this.state.selectedBrandNameLoading ?\r\n :\r\n <>\r\n
    Brand: {this.state.selected == \"\" ? \"[Blank Name]\" : this.state.selected}
    \r\n {this.displayDetailsTable()}\r\n
    \r\n

    * Merchant Integrated

    \r\n
    \r\n \r\n }\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n this.setState({ showProducts: false })}\r\n >\r\n\r\n
    \r\n
    \r\n
    \r\n

    Product URLs

    \r\n {\r\n this.state.selectedBrandNameLoading ?\r\n :\r\n <>\r\n
    Brand: {this.state.selected == \"\" ? \"[Blank Name]\" : this.state.selected}
    \r\n {this.displayProductsDetailsTable()}\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n

    Manage Brands

    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default ManageBrands;","import React from \"react\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport { convertToNumericMonthAndDayAndYearAndTime, convertToNumericMonthAndDay } from \"sharedUtils/timeUtils\";\r\n\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\n\r\nclass AnalyticsAggregateTable extends React.Component {\r\n\r\n \r\n state = {\r\n analyticsData: [],\r\n AnalyticsAggregateTable: {\r\n title: \"\",\r\n columns: [\r\n {\r\n name: \"date\",\r\n label: \"Date\",\r\n options: {\r\n filter: true,\r\n sort: true, \r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return convertToNumericMonthAndDay(new Date(value), false);\r\n }\r\n }\r\n },\r\n {\r\n name: \"productClicks\",\r\n label: \"Merchant Redirects\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n },\r\n {\r\n name: \"salesCount\",\r\n label: \"Sales Count\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"commissionsEarned\",\r\n label: \"Estimated Commission\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return ${value.toFixed(2)}\r\n }\r\n }\r\n },\r\n {\r\n name: \"username\",\r\n label: \"Username\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({ style: { maxWidth: \"600px\", overflowWrap: \"anywhere\", wordBreak: \"break-all\" } }),\r\n }\r\n },\r\n ],\r\n options: {\r\n selectableRows: false,\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\r\n MUIDataTable: {\r\n root: {\r\n },\r\n paper: {\r\n },\r\n },\r\n MUIDataTableBodyRow: {\r\n root: {\r\n '&:nth-child(odd)': {\r\n backgroundColor: '#F9F9F9'\r\n },\r\n cursor: 'pointer'\r\n }\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n }\r\n },\r\n }\r\n })\r\n },\r\n }\r\n\r\n componentDidMount = () => {\r\n this.setState({ analyticsData: this.props?.analyticsData.filter(data => data.productClicks > 0 || data.salesCount > 0 || data.commissionEarned > 0) });\r\n }\r\n\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default AnalyticsAggregateTable","import React, { Component } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport Select from 'react-select'\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport _ from \"lodash\";\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nimport AnalyticsAggregateTable from \"components/AnalyticsAggregateTable\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AnalyticsChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 1 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 7 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 30 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n lastYear: {\r\n value: 5,\r\n label: \"Last Year\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.state = {\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n this.selectOptions.lastYear,\r\n ],\r\n defaultValue: this.selectOptions.last7Days,\r\n currentValue: this.selectOptions.last7Days,\r\n },\r\n series: [ \r\n {\r\n name: 'Merchant Redirects',\r\n type: 'line',\r\n data: []\r\n },\r\n {\r\n name: 'Sales Count',\r\n type: 'line',\r\n data: []\r\n },\r\n {\r\n name: 'Estimated Commmissions',\r\n type: 'bar',\r\n data: [],\r\n }\r\n ],\r\n options: {\r\n chart: {\r\n height: 350,\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n markers: {\r\n size: [1, 1, 1],\r\n },\r\n stroke: {\r\n width: [2, 2, 2]\r\n },\r\n labels: [],\r\n xaxis: {\r\n type: 'datetime'\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Merchant Redirects',\r\n title: {\r\n text: 'Count'\r\n },\r\n labels: {\r\n // Formats the number displayed on the y-axis label and in the tooltip\r\n formatter: function (val) {\r\n return val.toFixed(0);\r\n }\r\n }\r\n },\r\n {\r\n seriesName: 'Merchant Redirects',\r\n show: false,\r\n labels: {\r\n // Formats the number displayed on the y-axis label and in the tooltip\r\n formatter: function (val) {\r\n return val.toFixed(0);\r\n }\r\n }\r\n },\r\n {\r\n seriesName: 'Estimated Commmissions',\r\n opposite: true,\r\n title: {\r\n text: '$',\r\n },\r\n }\r\n ]\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged)\r\n if (prevProps.loggedInUser !== this.props.loggedInUser) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display){\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.browseChanged !== this.props.browseChanged) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.date !== this.props.date && this.props.date != null && this.props.date != undefined) {\r\n const option = this.state.selectOptions.options.filter(option => option.value === this.props.date)[0];\r\n this.handleSelect(option);\r\n\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = option;\r\n\r\n this.setState({ selectOptions });\r\n }\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n\r\n this.props.getAnalytics(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.props.analytics.length === 0) {\r\n return (\r\n \r\n No data for this time frame\r\n \r\n );\r\n }\r\n\r\n if (this.props.aggregateChanged != null && this.props.aggregateChanged) {\r\n return this.props.analytics.map((data, i) => {\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDay(new Date(data.date), false)}\r\n \r\n {\r\n\r\n }\r\n\r\n \r\n {data.productClicks}\r\n \r\n \r\n {data.salesCount}\r\n \r\n \r\n ${data.commissionsEarned.toFixed(2)}\r\n \r\n \r\n {data.username}\r\n \r\n );\r\n }).reverse();\r\n }\r\n\r\n return this.props.analytics.map((data, i) => {\r\n if (data.productClicks > 0 || data.salesCount > 0 || data.commissionsEarned > 0) {\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDay(new Date(data.date), false)}\r\n \r\n {\r\n\r\n }\r\n\r\n \r\n {data.productClicks}\r\n \r\n \r\n {data.salesCount}\r\n \r\n \r\n ${data.commissionsEarned.toFixed(2)}\r\n \r\n );\r\n }\r\n }).reverse();\r\n \r\n \r\n }\r\n\r\n displayTotalRow = () => {\r\n if (this.props.analytics.length > 0) {\r\n let totals = { totalProductClicks: 0, merchantRedirects: 0, salesCount: 0, estimatedCommission: 0 };\r\n\r\n this.props.analytics.forEach(val => {\r\n totals.totalProductClicks = totals.totalProductClicks + val.productViews;\r\n totals.merchantRedirects = totals.merchantRedirects + val.productClicks;\r\n totals.salesCount = totals.salesCount + val.salesCount;\r\n totals.estimatedCommission = totals.estimatedCommission + val.commissionsEarned;\r\n })\r\n\r\n return (\r\n \r\n \r\n Totals\r\n \r\n \r\n \r\n {totals.merchantRedirects}\r\n \r\n \r\n \r\n \r\n {totals.salesCount}\r\n \r\n \r\n \r\n \r\n ${totals.estimatedCommission.toFixed(2)}\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = this.props.aggregateChanged != null && this.props.aggregateChanged ? [\"Date\", \"Merchant Redirects\", \"Sales Count\", \"Estimated Commission\", \"Username\"] : [\"Date\", \"Merchant Redirects\", \"Sales Count\", \"Estimated Commission\"];\r\n let infoIcon = [\"\", \"A User has clicked a Buy Now link that redirected them to a Merchant's site\", \"A User placed an order with a Merchant after clicking one of your Buy Now links\", \"The estimated commission earned across all orders. See RockPorch Terms of Service for more detail\"]\r\n\r\n return headers.map((header, i) => {\r\n return (\r\n \r\n {header}\r\n {i > 0 ?\r\n <>\r\n \r\n \r\n \r\n \r\n {infoIcon[i]}\r\n \r\n \r\n : null}\r\n\r\n \r\n )\r\n })\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new DateTime(start); dt < end; dt = dt.plus({ days: 1 })) {\r\n arr.push(dt.toJSDate());\r\n }\r\n\r\n return arr;\r\n };\r\n\r\n displayChart = () => {\r\n var data = [];\r\n var labels = [];\r\n\r\n const dateRange = this.state.selectOptions.currentValue.getDateRange();\r\n var dates = this.getDaysBetweenDates(dateRange.startDate, dateRange.endDate);\r\n dates.forEach(date => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(date, false);\r\n\r\n if (!data.find(x => x.date == formattedDate)) {\r\n data.push({\r\n date: formattedDate,\r\n postViews: 0,\r\n productViews: 0,\r\n productClicks: 0,\r\n salesCount: 0,\r\n commissionsEarned: 0\r\n });\r\n\r\n const formattedLabelDate = convertToNumericMonthAndDayAndYear(date, false);\r\n labels.push(formattedLabelDate);\r\n }\r\n });\r\n\r\n this.props.analytics.forEach(analytic => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(new Date(analytic.date), false);\r\n const item = _.find(data, (item) => item?.date === formattedDate);\r\n if (item) {\r\n item.postViews += analytic.postViews;\r\n item.productViews += analytic.productViews;\r\n item.productClicks += analytic.productClicks;\r\n item.salesCount += analytic.salesCount;\r\n item.commissionsEarned += analytic.commissionsEarned;\r\n }\r\n });\r\n\r\n const { options, series } = this.state;\r\n series[0].data = data.map((item) => item.productClicks);\r\n series[1].data = data.map((item) => item.salesCount);\r\n series[2].data = data.map((item) => item.commissionsEarned);\r\n options.labels = labels;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n value={this.state.selectOptions.currentValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.analyticsLoading ?\r\n :\r\n <>\r\n {this.displayChart()}\r\n {this.props.aggregateChanged ?\r\n \r\n \r\n :\r\n
    \r\n
    \r\n \r\n {this.props.children != null && this.props.aggregateChanged ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n {this.displayTotalRow()}\r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default AnalyticsChart;","import React, { Component } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport Select from 'react-select'\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport _ from \"lodash\";\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nimport Modal from 'react-modal';\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport { getRequest } from \"sharedUtils/httpUtils\"; \r\nimport ActionButton from \"components/ActionButton\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport ProductRowMobile from \"views/Account/ProductRowMobile\";\r\nimport ThreeDotsHorizontalIcon from \"components/icons/ThreeDotsHorizontalIcon\";\r\nimport { number } from \"prop-types\";\r\nimport { Share } from \"../icons\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass CommissionsChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 1 })).toUTC(),\r\n endDate: asDate(DateTime.now()).toUTC()\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 7 })).toUTC(),\r\n endDate: asDate(DateTime.now().plus({ days: 1 })).toUTC()\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 30 })).toUTC(),\r\n endDate: asDate(DateTime.now().plus({ days: 1 })).toUTC()\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n lastYear: {\r\n value: 5,\r\n label: \"Last Year\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.state = {\r\n openAccordianCommissionIds: [],\r\n copyCheck: false,\r\n reassignLoading: false,\r\n userBlank: false,\r\n show: false,\r\n modalCommissionId: 0,\r\n modalUserId: 0,\r\n loading: false,\r\n value: [],\r\n userOptions: [],\r\n reassignCreateMessage: { showMessage: false, messageText: \"Commission reassigning...\" },\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n this.selectOptions.lastYear,\r\n ],\r\n defaultValue: this.selectOptions.last7Days,\r\n currentValue: this.selectOptions.last7Days,\r\n },\r\n series: [\r\n {\r\n name: 'Estimated Commissions',\r\n type: 'bar',\r\n data: []\r\n }\r\n ],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'bar',\r\n toolbar: {\r\n show: false\r\n },\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n markers: {\r\n size: [2],\r\n },\r\n stroke: {\r\n width: [2]\r\n },\r\n labels: [],\r\n xaxis: {\r\n type: 'datetime'\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Estimated Commissions',\r\n title: {\r\n text: '$',\r\n },\r\n labels: {\r\n // Formats the number displayed on the y-axis label\r\n formatter: function (val) {\r\n return val.toFixed(2);\r\n }\r\n }\r\n }\r\n ],\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n } \r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (!_.isEqual(prevProps.openAccordianCommissionIds, this.props.openAccordianCommissionIds)) {\r\n this.forceUpdate();\r\n }\r\n\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged)\r\n if (prevProps.loggedInUser !== this.props.loggedInUser) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevState.show === true && this.state.show === false) {\r\n this.setState({ userBlank: false });\r\n }\r\n if (prevProps.date !== this.props.date && this.props.date != null && this.props.date != undefined) {\r\n const option = this.state.selectOptions.options.filter(option => option.value === this.props.date)[0];\r\n this.handleSelect(option);\r\n\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = option;\r\n\r\n this.setState({ selectOptions });\r\n }\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.props.getCommissions(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n commissionReassignModal = (commissionId) => {\r\n this.setState({ modalCommissionId: commissionId, show: true });\r\n }\r\n\r\n toggleCommissionId = async (commissionId) => {\r\n\r\n const openAccordianCommissionIds = this.state.openAccordianCommissionIds;\r\n const index = openAccordianCommissionIds.findIndex(obj => obj.commissionId === commissionId);\r\n\r\n if (index === -1) {\r\n // If commissionId is not found, add a new object with show set to true\r\n this.setState({ openAccordianCommissionIds: [...openAccordianCommissionIds, { commissionId, show: true, loading: true, commissionDetailItems: [] }] });\r\n var commissionDetailItems = await this.props.fetchCommissionDetailItemsByCommissionId(commissionId);\r\n this.setState((prevState) => ({\r\n openAccordianCommissionIds: prevState.openAccordianCommissionIds.map(obj =>\r\n obj.commissionId === commissionId ? { ...obj, commissionDetailItems, loading: false } : obj\r\n )\r\n }));\r\n } else {\r\n // If commissionId is found\r\n const updatedCommissionIds = [...openAccordianCommissionIds];\r\n const existingItem = updatedCommissionIds[index];\r\n\r\n if (existingItem.hasOwnProperty('show')) {\r\n existingItem.show = !existingItem.show;\r\n\r\n } else {\r\n existingItem.show = true;\r\n }\r\n\r\n this.setState({ openAccordianCommissionIds: updatedCommissionIds });\r\n }\r\n };\r\n\r\n addUserMerchantProductIfNotAddedAlreadyAndGetLink = async (product, commissionId, userId) => {\r\n const url = 'Products/AddUserMerchantProductForAnalyticsCommissionDetailItem?merchantProductId=' + product.merchantProductId + '&userId=' + userId;\r\n\r\n let result = await getRequest(url);\r\n if (!!(result)) {\r\n product.shareCode = result.shareCode;\r\n } else {\r\n this.getLinkError();\r\n }\r\n\r\n this.setState(prevState => {\r\n const updatedOpenAccordianCommissionIds = prevState.openAccordianCommissionIds.map(commission => {\r\n if (commission.commissionId === commissionId) {\r\n const updatedCommissionDetailItems = commission.commissionDetailItems.map(detailItem => {\r\n if (detailItem.merchantProductId === product.merchantProductId) {\r\n detailItem.productInfo = product;\r\n }\r\n return detailItem;\r\n });\r\n\r\n commission.commissionDetailItems = updatedCommissionDetailItems;\r\n }\r\n return commission;\r\n });\r\n\r\n return {\r\n openAccordianCommissionIds: updatedOpenAccordianCommissionIds\r\n };\r\n });\r\n\r\n this.handleGetLink(\"https://\" + window.location.host + \"/prd/\" + result.shareCode);\r\n };\r\n\r\n\r\n displayProductsMobile = (product, commissionId, userId, i, lastItem) => {\r\n return (\r\n
    499 ? \"0 auto\" : \"\" }}>\r\n \r\n
    \r\n )\r\n }\r\n\r\n handleGetLink = (shareLink) => {\r\n navigator.clipboard.writeText(shareLink);\r\n\r\n toast.success(\r\n
    \r\n

    Commissionable Link Copied to Clipboard!

    \r\n

    Your commissionable link has been copied to clipboard and is ready to be shared

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n getLinkError = () => {\r\n toast.error(\r\n
    \r\n

    Product currently unavailable

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n renderCommissionDetailItems = (commissionId) => {\r\n const cdiObject = this.state.openAccordianCommissionIds.find(item => item.commissionId === commissionId);\r\n\r\n if (!cdiObject || !cdiObject.hasOwnProperty(\"commissionDetailItems\")) {\r\n return
    Additional Product Information Unavailable
    ;\r\n }\r\n\r\n const commissionDetailItems = cdiObject.commissionDetailItems;\r\n const noProductInfo = commissionDetailItems.some(item => !(item.productInfo));\r\n const numberOfItemsWithProductInfo = commissionDetailItems.filter(item => !!(item.productInfo)).length;\r\n\r\n if (commissionDetailItems.length > 0) {\r\n return (\r\n
    \r\n {commissionDetailItems.map((item, i) => {\r\n if (!!(item.productInfo)) {\r\n return this.displayProductsMobile(item.productInfo, item.commissionId, item.userId, i, i === numberOfItemsWithProductInfo - 1 && !noProductInfo); \r\n } else {\r\n return <>;\r\n }\r\n })}\r\n {\r\n noProductInfo ?\r\n
    0 ? \"mt-3\" : \"\"}`} style={{ textAlign: this.props.deviceSize === \"sm\" ? \"\" : \"left\", margin: \"0 12px\", padding: \"10px 0\" }}>{noProductInfo}Additional Product Information Unavailable
    \r\n :\r\n <>{ noProductInfo}\r\n }\r\n
    \r\n );\r\n } else {\r\n return
    Additional Product Information Unavailable
    ;\r\n }\r\n };\r\n\r\n\r\n\r\n\r\n displayTableRows = () => {\r\n if (this.props.commissions.length === 0) {\r\n return (\r\n \r\n No data for this time frame\r\n \r\n );\r\n }\r\n\r\n if (this.props.aggregateChanged != null && this.props.aggregateChanged) {\r\n return this.props.commissions.map((data, i) => {\r\n const mayDisplay = data.status === \"Paid\" ? true : false;\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDay(new Date(data.createdDate), false)}\r\n \r\n \r\n {data.merchantName}\r\n \r\n \r\n ${data.purchaseAmount.toFixed(2)}\r\n \r\n \r\n ${data.returnAmount.toFixed(2)}\r\n \r\n \r\n ${data.qualifiedCommissionAmount.toFixed(2)}\r\n \r\n \r\n {convertToNumericMonthAndDay(data.paymentDate, false)}\r\n \r\n \r\n {data.status}\r\n \r\n \r\n {data.username}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n });\r\n }\r\n\r\n return this.props.commissions.map((data, i) => {\r\n return (\r\n \r\n this.toggleCommissionId(data.commissionId)} style={{ cursor: \"pointer\" }}>\r\n \r\n item.commissionId === data.commissionId && item.show) ? \"9px\" : \"-4px\", left: this.state.openAccordianCommissionIds.some(item => item.commissionId === data.commissionId && item.show) ? \"6px\" : \"\", }}>\r\n item.commissionId === data.commissionId && item.show) ? \"rotate(180deg)\" : \"\" }}>\r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n {convertToNumericMonthAndDay(new Date(data.createdDate), false)}\r\n \r\n \r\n {data.merchantName}\r\n \r\n \r\n ${data.purchaseAmount.toFixed(2)}\r\n \r\n \r\n ${data.returnAmount.toFixed(2)}\r\n \r\n \r\n ${data.qualifiedCommissionAmount.toFixed(2)}\r\n \r\n \r\n {convertToNumericMonthAndDay(data.paymentDate, false)}\r\n \r\n \r\n {data.status}\r\n \r\n \r\n item.commissionId === data.commissionId && item.show) ? \"\" : \"none\" }}>\r\n \r\n
    \r\n
    item.commissionId === data.commissionId)[0]?.loading ? \"35px\" : \"10px\" }}>\r\n
    Eligible Date: {convertToNumericMonthAndDay(data.paymentDate, false)}
    \r\n
    Status: {data.status}
    \r\n
    \r\n
    \r\n {\r\n this.state.openAccordianCommissionIds\r\n .filter(item => item.commissionId === data.commissionId)[0]?.loading ?\r\n\r\n \r\n :\r\n this.renderCommissionDetailItems(data.commissionId)\r\n }\r\n \r\n \r\n
    \r\n );\r\n });\r\n }\r\n \r\n displayTableHeader = () => {\r\n let headers = this.props.aggregateChanged != null && this.props.aggregateChanged ? [\"Date\", \"Merchant\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", \"Eligible Date\", \"Status\", \"Username\"] : this.props.deviceSize === \"sm\" ? [\"Date\", \"Merchant\", \"Sales Amount\", \"Returns\", \"Est. Comm.\", \"Eligible Date\", \"Status\"] : [\"Date\", \"Merchant\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", \"Eligible Date\", \"Status\"];\r\n let infoIcon = [\"\", \"\", \"The sales dollars generated after a User clicked one of your Buy Now links.\", \"The dollar amount of returns on the sale\", \"The estimated commission earned by the order. See RockPorch ToS for more detail.\", \"The date a commission is eligible for payment. See RockPorch ToS for more detail.\",\r\n\r\n [\"Qualified - The commission was generated by a Qualified Purchase and is held by the merchant or other parties for a period to account for returns, refunds, or other adjustments.\",\r\n \"Eligible - The net commission eligible for payment.Eligible commissions are paid at each RockPorch payment interval so long as the total Eligible Commissions exceed $100.\",\r\n \"Pending - The commission is ready for payment and will be paid at the next RockPorch payment interval.\",\r\n \"Paid - The commission payment has been remitted.\"]]\r\n\r\n return headers.map((header, i) => {\r\n const aggregate = this.props.aggregateChanged != null && this.props.aggregateChanged;\r\n\r\n if (aggregate || this.props.deviceSize != \"sm\" || (header != \"Eligible Date\" && header != \"Status\"))\r\n return (\r\n \r\n {header}\r\n {i > 1 ?\r\n <>\r\n \r\n \r\n \r\n \r\n {i !== 6 ? \r\n {infoIcon[i]}\r\n : {infoIcon[i].map((item) => { return <>{item}
    })}
    }\r\n \r\n \r\n : null}\r\n\r\n \r\n )\r\n })\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new DateTime(start); dt < end; dt = dt.plus({ days: 1 })) {\r\n arr.push(dt.toJSDate());\r\n }\r\n return arr;\r\n };\r\n\r\n displayChart = () => {\r\n var data = []; // [{ x: '07/31/2021', y: 2.30 }]\r\n var labels = [];\r\n\r\n const dateRange = this.state.selectOptions.currentValue.getDateRange();\r\n var dates = this.getDaysBetweenDates(dateRange.startDate, dateRange.endDate);\r\n dates.forEach(date => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(date, false);\r\n\r\n if (!data.find(x => x.x == formattedDate)) {\r\n\r\n data.push({ x: formattedDate, y: 0 });\r\n\r\n const formattedLabelDate = convertToNumericMonthAndDayAndYear(date, false);\r\n labels.push(formattedLabelDate);\r\n }\r\n });\r\n\r\n this.props.commissions.forEach(commission => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(new Date(commission.createdDate), false);\r\n\r\n const item = _.find(data, (item) => item?.x === formattedDate);\r\n if (item) {\r\n item.y += commission.qualifiedCommissionAmount;\r\n } else {\r\n data.push({ x: formattedDate, y: commission.qualifiedCommissionAmount });\r\n }\r\n\r\n const label = _.find(labels, (label) => label === formattedDate);\r\n if (!label) {\r\n labels.push(formattedDate);\r\n }\r\n });\r\n\r\n const { options, series } = this.state;\r\n series[0].data = data;\r\n options.labels = labels;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n displaySummaryTableHeader = () => {\r\n return (\r\n \r\n Status\r\n Sales Amount\r\n Returns\r\n Commission\r\n \r\n );\r\n }\r\n\r\n displaySummaryTableRows = () => {\r\n let commissionsByStatus = [\r\n { status: \"Qualified\", purchaseAmount: 0, returnAmount: 0, qualifiedCommissionAmount: 0 },\r\n { status: \"Eligible\", purchaseAmount: 0, returnAmount: 0, qualifiedCommissionAmount: 0 },\r\n { status: \"Pending\", purchaseAmount: 0, returnAmount: 0, qualifiedCommissionAmount: 0 },\r\n { status: \"Paid\", purchaseAmount: 0, returnAmount:0, qualifiedCommissionAmount: 0 },\r\n ];\r\n\r\n let infoPrompts = [\r\n \"A Qualified Purchase occurred and is held by the Merchant or other parties to account for possible returns, refunds, or other adjustments.\",\r\n \"The net commissions eligible for payment. Eligible commissions are paid at each RockPorch pay date so long as total eligible commissions exceed the Minimum Payment Threshold, currently set at $100.\",\r\n \"The commission payment has been made.\"\r\n ]\r\n\r\n for (let i = 0; i < this.props.commissions.length; i++) {\r\n for (let j = 0; j < commissionsByStatus.length; j++) {\r\n if (commissionsByStatus[j].status.toLowerCase() == this.props.commissions[i].status.toLowerCase()) {\r\n commissionsByStatus[j].purchaseAmount += this.props.commissions[i].purchaseAmount;\r\n commissionsByStatus[j].returnAmount += this.props.commissions[i].returnAmount;\r\n commissionsByStatus[j].qualifiedCommissionAmount += this.props.commissions[i].qualifiedCommissionAmount;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n commissionsByStatus.map((commission, i) => {\r\n let infoIconId = \"infoIcon-CommChart-\" + i;\r\n return (\r\n \r\n \r\n {commission.status + \" \"}\r\n\r\n {/*\r\n \r\n \r\n \r\n {infoPrompts[i]}\r\n \r\n \r\n */}\r\n \r\n ${commission.purchaseAmount.toFixed(2)} \r\n ${commission.returnAmount.toFixed(2)} \r\n ${commission.qualifiedCommissionAmount.toFixed(2)}\r\n \r\n )\r\n })\r\n ).reverse();\r\n }\r\n\r\n reassignLoading = (reassignCreateMessage) => {\r\n }\r\n\r\n onCommissionReassignClick = async (e) => {\r\n e.preventDefault();\r\n if (!this.state.modalUserId == 0) {\r\n let reassignCreateMessage = { ...this.state.reassignCreateMessage };\r\n reassignCreateMessage.showMessage = true;\r\n this.setState({ reassignLoading: true, reassignCreateMessage });\r\n\r\n await this.reassignLogic();\r\n\r\n // Timeout allows the database to finish the update before reloading screen\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n reassignCreateMessage.showMessage = false;\r\n this.setState({ reassignLoading: false, reassignCreateMessage, show: false });\r\n\r\n \r\n } else {\r\n this.setState({ userBlank: true })\r\n }\r\n }\r\n\r\n reassignLogic = async () => {\r\n \r\n \r\n let reassignCommissionUrl = `/api/Merchant/ReassignCommission?commissionId=${this.state.modalCommissionId}&userId=${this.state.modalUserId}`;\r\n if (this.state.copyCheck) {\r\n reassignCommissionUrl += `©Commission=${this.state.copyCheck}`;\r\n }\r\n await getRequest(reassignCommissionUrl);\r\n }\r\n \r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ userOptions: users, isLoading: false });\r\n }\r\n\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n this.setState({ userBlank: false });\r\n const userId = selected.length > 0 ? selected[0]?.id : this.state.modalUserId;\r\n this.setState({ modalUserId: userId });\r\n }\r\n }\r\n\r\n onChangeCopyCheck = () => {\r\n this.setState({ copyCheck: !this.state.copyCheck });\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n this.setState({ show: false })}\r\n >\r\n\r\n
    \r\n
    \r\n

    \r\n Are you sure that you want to Reassign the Commission?\r\n

    \r\n

    \r\n Search for the UserName of the User to whom to reassign the commission\r\n

    \r\n

    \r\n Check the 'Copy Commission' checkbox to keep the current commission assignment\r\n and copy the commission to the new User\r\n

    \r\n {this.state.userBlank ?\r\n <>\r\n
    \r\n

    You must select a Username

    \r\n \r\n :

    \r\n }\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.setSelected(e)}\r\n isLoading={this.state.loading}\r\n options={this.state.userOptions}\r\n placeholder=\"Search for users...\" />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {/**/}\r\n \r\n Reassign\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n value={this.state.selectOptions.currentValue}\r\n />\r\n
    \r\n
    \r\n {this.props.commissionsLoading ?\r\n null :\r\n (\r\n
    \r\n \r\n {this.displaySummaryTableHeader()}\r\n \r\n {this.displaySummaryTableRows()}\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.commissionsLoading ?\r\n :\r\n <>\r\n {this.displayChart()}\r\n
    \r\n
    \r\n \r\n {this.props.aggregateChanged != null && this.props.aggregateChanged ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default CommissionsChart;","import React, { Component } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport Select from 'react-select'\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport _, { cloneWith } from \"lodash\";\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass TransactionsChart extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 1 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 7 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 30 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n lastYear: {\r\n value: 5,\r\n label: \"Last Year\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year - 1, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.state = {\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n this.selectOptions.lastYear,\r\n ],\r\n defaultValue: this.selectOptions.last30Days,\r\n currentValue: this.selectOptions.last30Days,\r\n },\r\n currentBalance: null,\r\n previousBalance: null,\r\n width: 0,\r\n };\r\n\r\n }\r\n\r\n componentDidMount = () => {\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n };\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (this.props.transactions !== prevProps.transactions) {\r\n let total = this.props.previousBalance;\r\n this.props.transactions.forEach(item => total += item.amount);\r\n this.setState({ currentBalance: total, previousBalance: this.props.previousBalance });\r\n }\r\n\r\n if (this.props.transactions !== prevProps.transactions && this.props.transactions.length == 0) {\r\n this.setState({ currentBalance: 0, previousBalance: 0 });\r\n return;\r\n };\r\n\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged)\r\n if (prevProps.loggedInUser !== this.props.loggedInUser) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n this.handleSelect(this.state.selectOptions.currentValue);\r\n }\r\n };\r\n\r\n displayTableHeader = () => {\r\n let headers = this.props.aggregateChanged != null && this.props.aggregateChanged ? [\"Date\", \"Description\", \"Credit\", \"Debit\", \"Balance\", \"Username\"] : [\"Date\", \"Description\", \"Credit\", \"Debit\", \"Balance\"];\r\n let infoIcon = [\"\",\"\",\"\",\"\",\"\"];\r\n\r\n return headers.map((header, i) => {\r\n if (i === 0) {\r\n return (\r\n \r\n {header}\r\n \r\n );\r\n };\r\n\r\n if (i === headers.length - 1) {\r\n return (\r\n \r\n {header}\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {header} \r\n \r\n )\r\n })\r\n }\r\n\r\n displayTableRows = () => {\r\n const previousBalance = this.props.previousBalance;\r\n let runningBalance = previousBalance;\r\n\r\n if (!this.props.transactions || this.props.transactions.length === 0) {\r\n return (\r\n \r\n No data for this time frame\r\n \r\n );\r\n }\r\n\r\n if (this.props.aggregateChanged != null && this.props.aggregateChanged) {\r\n return this.props.transactions.map((data, i) => {\r\n runningBalance += data.amount\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDay(new Date(data.transactionDate), false)}\r\n \r\n \r\n {data.description}\r\n \r\n \r\n {data.amount >= 0 ? `$${data.amount.toFixed(2)}` : \"\"}\r\n \r\n \r\n {data.amount < 0 ? `($${Math.abs(data.amount).toFixed(2)})` : \"\"}\r\n \r\n \r\n {runningBalance >= 0 ? `$${runningBalance.toFixed(2)}` : `($${Math.abs((runningBalance).toFixed(2))})`}\r\n \r\n \r\n {data.username}\r\n \r\n );\r\n });\r\n }\r\n\r\n\r\n return this.props.transactions.map((data, i) => {\r\n runningBalance += data.amount\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDay(new Date(data.transactionDate), false)}\r\n \r\n \r\n {data.description}\r\n \r\n \r\n {data.amount >= 0 ? `$${data.amount.toFixed(2)}` : \"\"}\r\n \r\n \r\n {data.amount < 0 ? `($${Math.abs(data.amount).toFixed(2)})` : \"\"}\r\n \r\n \r\n {runningBalance >= 0 ? `$${runningBalance.toFixed(2)}` : `($${Math.abs((runningBalance).toFixed(2))})`}\r\n \r\n );\r\n });\r\n }\r\n\r\n // }).reverse();\r\n // { runningBalance += this.props.transactions[this.props.transactions.length - 1 - i].amount }\r\n\r\n\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.props.getTransactions(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n \r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n defaultValue={this.state.selectOptions.defaultValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.transactionsLoading ?\r\n :\r\n
    \r\n
    \r\n \r\n {this.props.aggregateChanged != null && this.props.aggregateChanged ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n {this.props.aggregateChanged != null && this.props.aggregateChanged ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n {this.displayTableRows()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    Previous Balance:
    \r\n
    \r\n

    \r\n {\r\n this.state.previousBalance == null ||\r\n this.state.previousBalance >= 0 ? `$${(Math.abs(this.state.previousBalance).toFixed(2))}` : `($${Math.abs(this.state.previousBalance).toFixed(2)})`\r\n }\r\n

    \r\n
    \r\n
    Previous Balance:
    \r\n
    \r\n

    \r\n {\r\n this.state.previousBalance == null ||\r\n this.state.previousBalance >= 0 ? `$${(Math.abs(this.state.previousBalance).toFixed(2))}` : `($${Math.abs(this.state.previousBalance).toFixed(2)})`\r\n }\r\n

    \r\n
    \r\n
    Current Balance:
    \r\n
    \r\n

    \r\n {\r\n this.state.currentBalance == null ||\r\n this.state.currentBalance >= 0 ? `$${(Math.abs(this.state.currentBalance).toFixed(2))}` : `($${Math.abs(this.state.currentBalance).toFixed(2)})`\r\n }\r\n

    \r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default TransactionsChart;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{fill:string, height?:string, width?:string}} props\r\n */\r\nconst ClickBurstIcon = (props) => {\r\n const svgStyle = {\r\n color: \"#000000\",\r\n enableBackground: \"accumulate\",\r\n ...(props.style || {})\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ClickBurstIcon;\r\n","import React, { useState } from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport ClickBurstIcon from \"components/icons/ClickBurstIcon\";\r\nimport toast from 'react-hot-toast';\r\n\r\nimport { currencyFormat } from \"sharedUtils/productUtils\";\r\n\r\n/**\r\n * \r\n * @param {{product:object,edit:Function, toggleProductModal:Function, toggleShareModal:Function}} props\r\n */\r\nconst ProductRowMobile = (props) => {\r\n let [isLoadingShareCode, setIsLoadingShareCode] = useState(false);\r\n let { product } = props;\r\n let pstyle = { fontFamily: \"Archivo\", fontSize: \"12px\", width: \"96%\" }\r\n\r\n const getLinkError = () => {\r\n toast.error(\r\n
    \r\n

    Product currently unavailable

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n const handleGetLink = async () => {\r\n if (!product.integrated) {\r\n getLinkError();\r\n return;\r\n }\r\n if (props.analytics && !(product.shareCode)) {\r\n setIsLoadingShareCode(true);\r\n await props.addUserMerchantProductIfNotAddedAlreadyAndGetLink(product, props.commissionId, props.userId);\r\n setIsLoadingShareCode(false);\r\n return;\r\n }\r\n let getLinkUrl = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!product.shareSubdomain) {\r\n getLinkUrl += product.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/prdlink/\" + product.shareCode;\r\n props.handleGetLink(getLinkUrl);\r\n }\r\n\r\n const fixedWidthStyle = { width: \"33px\", textAlign: \"center\", fontFamily: \"Archivo\", fontSize: \"12px\", position: \"relative\" }; // Fixed width style\r\n\r\n return (\r\n
    \r\n {\r\n product.clicks === \"clicks\" ?\r\n
    \r\n

    props.handleSortSelect({ value: 1, label: \"Name\" })}>\r\n Product \r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n

    \r\n\r\n
    \r\n\r\n

    \r\n {product.name}\r\n

    \r\n\r\n

    \r\n Price: 0\r\n

    \r\n\r\n

    \r\n Merchant: {product.merchant}\r\n

    \r\n
    \r\n\r\n
    props.handleSortSelect({ value: 2, label: \"Clicks\" })}>\r\n
    \r\n
    \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    props.handleSortSelect({ value: 3, label: \"Sales\" })}>\r\n

    $\r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n\r\n
    props.handleSortSelect({ value: 4, label: \"Conversion Rate\" })}>\r\n

    %\r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n\r\n
    \r\n :\r\n
    \r\n \r\n\r\n
    \r\n\r\n

    \r\n {product.name}\r\n

    \r\n\r\n

    \r\n Price: {currencyFormat(product.price)}\r\n

    \r\n\r\n

    \r\n Merchant: {product.merchant}\r\n

    \r\n
    \r\n\r\n
    props.handleClicksClick(e, product)} style={{ ...fixedWidthStyle, top: \"6px\" }} >\r\n

    {product.clicks}

    \r\n
    \r\n\r\n
    \r\n

    {product.sales}

    \r\n
    \r\n\r\n
    \r\n

    {product.conversionRate}%

    \r\n
    \r\n\r\n
    \r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default ProductRowMobile;\r\n","import React, { Component } from \"react\";\r\nimport _ from \"lodash\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { currencyFormat, titleCase } from \"sharedUtils/productUtils\";\r\nimport ProductRowMobile from \"views/Account/AnalyticsByProductRowMobile\";\r\nimport NoResults from \"components/NoResults\";\r\nimport Modal from 'react-modal';\r\n\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AnalyticsByProductTable extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ months: 1 }).startOf('day'),\r\n endDate: DateTime.utc().startOf('day'),\r\n tab: 1,\r\n show: false,\r\n clicked: null,\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.props.resetPerformanceTabs();\r\n await this.props.getAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged) {\r\n await this.props.getAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n await this.props.getAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n if (prevProps.browseChanged != null && prevProps.browseChanged !== this.props.browseChanged && this.props.display) {\r\n await this.props.getAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n }\r\n\r\n showModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ show: !this.state.show });\r\n };\r\n\r\n hideModal = () => {\r\n this.setState({ show: false, clicked: null });\r\n this.props.clearSourceSort();\r\n }\r\n\r\n displayProductsMobile = () => {\r\n if (this.props.analytics?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n const productData = {\r\n imageUrl: \"\",\r\n name: \"\",\r\n price: \"\",\r\n sale: \"\",\r\n salePrice: \"\",\r\n integrated: \"\",\r\n merchant: \"\",\r\n clicks: \"clicks\",\r\n sales: \"sales\",\r\n conversionRate: \"conversions\"\r\n };\r\n\r\n if (this.props.analytics?.length > 0) {\r\n const analytics = [productData, ...this.props.analytics];\r\n\r\n return analytics?.map((product, i) => {\r\n return (\r\n
    \r\n { }}\r\n hide={() => { }}\r\n toggleProductModal={() => { }}\r\n toggleShareModal={() => { }}\r\n isUserMerchant={false}\r\n editClick={() => { }}\r\n hideClick={() => { }}\r\n deviceSize={this.props.deviceSize}\r\n handleSortSelect={this.props.handleSortSelect}\r\n sortDescending={this.props.sortDescending}\r\n selectOptions={this.props.selectOptions}\r\n startDate={this.state.startDate}\r\n endDate={this.state.endDate}\r\n getAnalyticsPerformanceSourceByUserMerchantProduct={this.props.getAnalyticsPerformanceSourceByUserMerchantProduct}\r\n handleClicksClick={this.handleClicksClick}\r\n />\r\n
    \r\n )\r\n\r\n })\r\n }\r\n return <>;\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Product\", \"Merchant\", \"Price\", \"Clicks\", \"Sales\", \"Conversion\"];\r\n\r\n return headers.map((header, i) => {\r\n const options = [\r\n { label: \"Name\", value: 1 },\r\n { label: \"Clicks\", value: 2 },\r\n { label: \"Sales\", value: 3 },\r\n { label: \"Conversion Rate\", value: 4 },\r\n { label: \"Merchant\", value: 5 },\r\n { label: \"Price\", value: 6 },\r\n ]\r\n\r\n if (header === \"Product\") {\r\n return (\r\n this.props.handleSortSelect(options[0])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Clicks\") {\r\n return (\r\n this.props.handleSortSelect(options[1])} style={{ paddingLeft: \"7px\", width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Sales\") {\r\n return (\r\n this.props.handleSortSelect(options[2])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Conversion\") {\r\n return (\r\n this.props.handleSortSelect(options[3])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Merchant\") {\r\n return (\r\n this.props.handleSortSelect(options[4])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Price\") {\r\n return (\r\n this.props.handleSortSelect(options[5])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {header}\r\n \r\n );\r\n }\r\n });\r\n };\r\n\r\n handleClicksClick = (e, product) => {\r\n e.stopPropagation();\r\n this.props.getAnalyticsPerformanceSourceByUserMerchantProduct(this.props.startDate, this.props.endDate, product.userMerchantProductId);\r\n this.setState({ clicked: product });\r\n this.showModal(e);\r\n }\r\n\r\n\r\n displayTableRows = () => {\r\n if (this.props.analytics?.length > 0) {\r\n return this.props.analytics.map((product, i) => {\r\n let getLinkUrl = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!product.shareSubdomain) {\r\n getLinkUrl += product.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/prdlink/\" + product.shareCode;\r\n\r\n const url = \"/Product/ProductPage/\" + product.shareCode;\r\n\r\n return (\r\n this.setState({ hoverRow: i })}\r\n onMouseLeave={() => this.setState({ hoverRow: -2 })}\r\n style={{ cursor: \"pointer\", borderBottom: this.state.hoverRow === i + 1 ? \"1px solid gray\" : \"\" }}\r\n onClick={() => this.props.handleGetLink(getLinkUrl)}\r\n >\r\n \r\n
    \r\n \r\n
    {titleCase(product.name)}
    \r\n
    \r\n \r\n\r\n \r\n {product.merchant}\r\n \r\n\r\n \r\n {currencyFormat(product.price)}\r\n \r\n\r\n this.handleClicksClick(e, product) } style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {product.clicks}\r\n \r\n\r\n \r\n {product.sales}\r\n \r\n\r\n \r\n {product.conversionRate}%\r\n \r\n \r\n )\r\n })\r\n }\r\n }\r\n\r\n handleSourceClicksSort = async () => {\r\n await this.props.handleSourceReferrerClick(false);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSourceReferrerSort = async () => {\r\n await this.props.handleSourceReferrerClick(true);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n displayProductClicksTable = () => {\r\n if (this.props.performanceSourceUserMerchantProduct?.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayProductsClickRows()}\r\n \r\n
    \r\n
    \r\n
    Source
    \r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    Clicks
    \r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n displayProductsClickRows = () => {\r\n return this.props.performanceSourceUserMerchantProduct.map((p, i) => {\r\n return (\r\n <>\r\n \r\n \r\n {p.referrer?.trim().length > 0 ? p.referrer : \"direct / not provided\"}\r\n \r\n \r\n {p.count}\r\n \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {\r\n this.props.analyticsLoading ?\r\n :\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {titleCase(this.state.clicked?.name ?? \"Product\")}
    \r\n
    \r\n {\r\n this.props.analyticsPerformanceSourceByUserMerchantProductLoading ?\r\n :\r\n <>\r\n {this.displayProductClicksTable()}\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {[\"sm\", \"md\"].includes(this.props.deviceSize) ?\r\n this.displayProductsMobile()\r\n :\r\n this.props.analytics?.length === 0 ?\r\n
    \r\n \r\n
    \r\n :\r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AnalyticsByProductTable;","import React, { useState } from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport ClickBurstIcon from \"components/icons/ClickBurstIcon\";\r\nimport toast from 'react-hot-toast';\r\n\r\n/**\r\n * \r\n * @param {{product:object,edit:Function, toggleProductModal:Function, toggleShareModal:Function}} props\r\n */\r\nconst MerchantRowMobile = (props) => {\r\n let [isLoadingShareCode, setIsLoadingShareCode] = useState(false);\r\n let { merchant } = props;\r\n let pstyle = { fontFamily: \"Archivo\", fontSize: \"14px\", width: \"96%\" }\r\n\r\n const getLinkError = () => {\r\n toast.error(\r\n
    \r\n

    Merchant currently not integrated

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n }\r\n\r\n const handleGetLink = async () => {\r\n if (!merchant.integrated) {\r\n getLinkError();\r\n return;\r\n }\r\n\r\n let getLinkUrl = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!merchant.shareSubdomain) {\r\n getLinkUrl += merchant.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/mlink/\" + merchant.merchantId + \"?userId=\" + merchant.userId;\r\n props.handleGetLink(getLinkUrl);\r\n }\r\n\r\n const fixedWidthStyle = { width: \"80px\", textAlign: \"center\", fontFamily: \"Archivo\", fontSize: \"12px\", position: \"relative\" }; // Fixed width style\r\n\r\n return (\r\n
    \r\n {\r\n merchant.clicks === \"clicks\" ?\r\n
    \r\n

    props.handleSortSelect({ value: 1, label: \"Merchant\" })}>\r\n Merchant\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n

    \r\n\r\n
    \r\n\r\n

    \r\n filler\r\n

    \r\n\r\n

    \r\n Price: 0\r\n

    \r\n\r\n

    \r\n Merchant: filler\r\n

    \r\n
    \r\n\r\n
    props.handleSortSelect({ value: 2, label: \"Clicks\" })}>\r\n
    \r\n
    \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    props.handleSortSelect({ value: 3, label: \"Sales\" })}>\r\n

    $\r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n\r\n
    props.handleSortSelect({ value: 4, label: \"Conversion Rate\" })}>\r\n

    %\r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n

    \r\n
    \r\n\r\n
    \r\n :\r\n
    \r\n \r\n\r\n
    \r\n\r\n

    \r\n {merchant.merchant.trim()}\r\n

    \r\n
    \r\n\r\n
    props.handleClicksClick(e, merchant)} style={{ ...fixedWidthStyle, width: \"43px\", top: \"6px\" }} >\r\n

    {merchant.clicks}

    \r\n
    \r\n\r\n
    \r\n

    {merchant.sales}

    \r\n
    \r\n\r\n
    \r\n

    {merchant.conversionRate}%

    \r\n
    \r\n\r\n
    \r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default MerchantRowMobile;\r\n","import React, { Component } from \"react\";\r\nimport _ from \"lodash\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport { titleCase } from \"sharedUtils/productUtils\";\r\nimport MerchantRowMobile from \"views/Account/AnalyticsByMerchantRowMobile\";\r\nimport NoResults from \"components/NoResults\";\r\nimport Modal from 'react-modal';\r\n\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AnalyticsByMerchantTable extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ months: 1 }).startOf('day'),\r\n endDate: DateTime.utc().startOf('day'),\r\n tab: 1,\r\n show: false,\r\n clicked: null,\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.props.resetPerformanceTabs();\r\n await this.props.getMerchantAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged) {\r\n await this.props.getMerchantAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n await this.props.getMerchantAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n if (prevProps.browseChanged != null && prevProps.browseChanged !== this.props.browseChanged && this.props.display) {\r\n await this.props.getMerchantAnalytics(this.props.startDate, this.props.endDate);\r\n }\r\n }\r\n\r\n showModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ show: !this.state.show });\r\n };\r\n\r\n hideModal = () => {\r\n this.setState({ show: false, clicked: null });\r\n this.props.clearPerformance();\r\n this.props.clearSourceSort();\r\n }\r\n\r\n displayMerchantMobile = () => {\r\n if (this.props.merchantAnalytics?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n const merchantData = {\r\n imageUrl: \"\",\r\n name: \"\",\r\n price: \"\",\r\n sale: \"\",\r\n salePrice: \"\",\r\n integrated: \"\",\r\n merchant: \"\",\r\n clicks: \"clicks\",\r\n sales: \"sales\",\r\n conversionRate: \"conversions\"\r\n };\r\n\r\n if (this.props.merchantAnalytics?.length > 0) {\r\n const analytics = [merchantData, ...this.props.merchantAnalytics];\r\n return analytics?.map((merchant, i) => {\r\n return (\r\n
    \r\n { }}\r\n hide={() => { }}\r\n toggleProductModal={() => { }}\r\n toggleShareModal={() => { }}\r\n isUserMerchant={false}\r\n editClick={() => { }}\r\n hideClick={() => { }}\r\n deviceSize={this.props.deviceSize}\r\n handleSortSelect={this.props.handleMerchantSortSelect}\r\n sortDescending={this.props.merchantSortDescending}\r\n selectOptions={this.props.merchantSelectOptions}\r\n startDate={this.state.startDate}\r\n endDate={this.state.endDate}\r\n getAnalyticsPerformanceSourceByMerchant={this.props.getAnalyticsPerformanceSourceByMerchant}\r\n handleClicksClick={this.handleClicksClick}\r\n />\r\n
    \r\n )\r\n\r\n })\r\n }\r\n return <>;\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Merchant\", \"Clicks\", \"Sales\", \"Conversion\"];\r\n\r\n return headers.map((header, i) => {\r\n const options = [\r\n { label: \"Merchant\", value: 1 },\r\n { label: \"Clicks\", value: 2 },\r\n { label: \"Sales\", value: 3 },\r\n { label: \"Conversion Rate\", value: 4 },\r\n ]\r\n\r\n if (header === \"Merchant\") {\r\n return (\r\n this.props.handleMerchantSortSelect(options[0])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Clicks\") {\r\n return (\r\n this.props.handleMerchantSortSelect(options[1])} style={{ paddingLeft: \"7px\", width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Sales\") {\r\n return (\r\n this.props.handleMerchantSortSelect(options[2])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (header === \"Conversion\") {\r\n return (\r\n this.props.handleMerchantSortSelect(options[3])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\" }}>\r\n {header}\r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {header}\r\n \r\n );\r\n }\r\n });\r\n };\r\n\r\n handleClicksClick = (e, merchant) => {\r\n e.stopPropagation();\r\n this.props.getAnalyticsPerformanceSourceByMerchant(this.props.startDate, this.props.endDate, merchant.merchantId);\r\n this.setState({ clicked: merchant });\r\n this.showModal(e);\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.props.merchantAnalytics?.length > 0) {\r\n return this.props.merchantAnalytics.map((merchant, i) => {\r\n let getLinkUrl = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!merchant.shareSubdomain) {\r\n getLinkUrl += merchant.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/mlink/\" + merchant.merchantId + \"?userId=\" + this.props.userId;\r\n\r\n return (\r\n this.setState({ hoverRow: i })}\r\n onMouseLeave={() => this.setState({ hoverRow: -2 })}\r\n style={{ cursor: \"pointer\", borderBottom: this.state.hoverRow === i + 1 ? \"1px solid gray\" : \"\" }}\r\n onClick={() => this.props.handleGetLink(getLinkUrl)}\r\n >\r\n \r\n
    \r\n \r\n
    {titleCase(merchant.merchant.trim())}
    \r\n
    \r\n \r\n\r\n this.handleClicksClick(e, merchant)} style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {merchant.clicks}\r\n \r\n\r\n \r\n {merchant.sales}\r\n \r\n\r\n \r\n {merchant.conversionRate}%\r\n \r\n\r\n \r\n )\r\n })\r\n }\r\n }\r\n\r\n handleSourceClicksSort = async () => {\r\n await this.props.handleSourceReferrerClick(false);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSourceReferrerSort = async () => {\r\n await this.props.handleSourceReferrerClick(true);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n displayMerchantClicksTable = () => {\r\n if (this.props.performanceSourceMerchant?.length > 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayMerchantsClickRows()}\r\n \r\n
    \r\n
    \r\n
    Source
    \r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    Clicks
    \r\n \r\n \r\n \r\n Expand\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n displayMerchantsClickRows = () => {\r\n return this.props.performanceSourceMerchant.map((m, i) => {\r\n return (\r\n <>\r\n \r\n \r\n {m.referrer?.trim().length > 0 ? m.referrer : \"direct / not provided\"}\r\n \r\n \r\n {m.count}\r\n \r\n \r\n \r\n )\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {\r\n this.props.analyticsLoading ?\r\n :\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {titleCase(this.state.clicked?.merchant ?? \"Product\")}
    \r\n
    \r\n {\r\n this.props.analyticsPerformanceSourceByMerchantLoading ?\r\n :\r\n <>\r\n {this.displayMerchantClicksTable()}\r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {[\"sm\", \"md\"].includes(this.props.deviceSize) ?\r\n this.displayMerchantMobile()\r\n :\r\n this.props.merchantAnalytics?.length === 0 ?\r\n
    \r\n \r\n
    \r\n :\r\n
    \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n
    \r\n
    }\r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AnalyticsByMerchantTable;","import React, { Component } from \"react\";\r\nimport _ from \"lodash\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport AnalyticsByProductTable from \"components/AnalyticsByProductTable\";\r\nimport AnalyticsByMerchantTable from \"components/AnalyticsByMerchantTable\";\r\nimport Select from 'react-select';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AnalyticsByPerformance extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabSelectOptions = {\r\n product: {\r\n value: 1,\r\n label: \"Performance by Product\",\r\n },\r\n merchant: {\r\n value: 2,\r\n label: \"Performance by Merchant\"\r\n },\r\n } \r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ months: 1 }).startOf('day'),\r\n endDate: DateTime.utc().startOf('day'),\r\n tab: 1,\r\n tabSelectOptions: {\r\n options: [\r\n this.tabSelectOptions.product,\r\n this.tabSelectOptions.merchant,\r\n ],\r\n defaultValue: this.tabSelectOptions.product,\r\n currentValue: this.tabSelectOptions.product,\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.props.getAnalytics(this.state.startDate, this.state.endDate);\r\n await this.props.clearPerformance();\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.startDate !== this.state.startDate || prevState.endDate !== this.state.endDate) {\r\n if (this.state.startDate <= this.state.endDate) {\r\n this.setState({ dateError: false });\r\n if (this.state.tab === 1) {\r\n this.props.getAnalytics(this.state.startDate, this.state.endDate);\r\n } else {\r\n this.props.getMerchantAnalytics(this.state.startDate, this.state.endDate);\r\n }\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n if (prevState.tab !== this.state.tab) {\r\n if (this.state.tab === 1) {\r\n this.props.getAnalytics(this.state.startDate, this.state.endDate);\r\n } else {\r\n this.props.getMerchantAnalytics(this.state.startDate, this.state.endDate);\r\n }\r\n }\r\n \r\n }\r\n\r\n handleTabSortSelect = async (e) => {\r\n const tab = e.value;\r\n let tabSelectOptions = {...this.state.tabSelectOptions};\r\n tabSelectOptions.currentValue = e;\r\n this.props.resetPerformanceTabs();\r\n this.props.clearPerformance();\r\n this.setState({ tab, tabSelectOptions });\r\n }\r\n\r\n\r\n handleStartDateChange = (event) => {\r\n const startDate = DateTime.fromISO(event.target.value).toUTC().startOf('day');\r\n this.setState({\r\n startDate\r\n });\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDate = DateTime.fromISO(event.target.value).toUTC().startOf('day');\r\n this.setState({\r\n endDate\r\n });\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n const endDate = DateTime.utc().startOf('day');\r\n this.setState({ startDate, endDate });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n const endDate = DateTime.utc().startOf('day');\r\n this.setState({ startDate, endDate });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n const endDate = DateTime.utc().startOf('day');\r\n this.setState({ startDate, endDate });\r\n };\r\n\r\n handleSortSelect = async (e) => {\r\n await this.props.handleSortSelect(e);\r\n }\r\n\r\n handleMerchantSortSelect = async (e) => {\r\n await this.props.handleMerchantSortSelect(e);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleTabSortSelect(e) }}\r\n options={this.state.tabSelectOptions.options} />\r\n
    \r\n
    \r\n
    1w
    \r\n
    1m
    \r\n
    1y
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n

    Start Date must be before the End Date

    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n {\r\n this.state.tab === 1 ?\r\n \r\n :\r\n this.state.tab === 2 ?\r\n \r\n :\r\n <>\r\n } \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default AnalyticsByPerformance;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,fill:string}} props\r\n */\r\nconst AnalyticsIconNew = (props) => {\r\n return (\r\n { })} width={props.width || \"20\"} height={props.height || \"20\"} xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 256 256\" enableBackground=\"new 0 0 256 256\" xmlSpace=\"preserve\">\r\n Svg Vector Icons : http://www.onlinewebfonts.com/icon \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default AnalyticsIconNew;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,fill:string}} props\r\n */\r\nconst CommissionsIcon = (props) => {\r\n return (\r\n { })} width={props.width || \"20\"} height={props.height || \"20\"} xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 256 256\" enableBackground=\"new 0 0 256 256\" xmlSpace=\"preserve\">\r\n Svg Vector Icons : http://www.onlinewebfonts.com/icon \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CommissionsIcon;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,fill:string}} props\r\n */\r\nconst SpreadsheetIcon = (props) => {\r\n return (\r\n { })} width={props.width || \"20\"} height={props.height || \"20\"} xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 256 256\" enableBackground=\"new 0 0 256 256\" xmlSpace=\"preserve\">\r\n Svg Vector Icons : http://www.onlinewebfonts.com/icon \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SpreadsheetIcon;","import React from \"react\";\r\n\r\n/**\r\n * \r\n * @param {{width:Number,height:Number,fill:string}} props\r\n */\r\nconst SpreadsheetIcon = (props) => {\r\n return (\r\n { })} width={props.width || \"20\"} height={props.height || \"20\"} xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 256 256\" enableBackground=\"new 0 0 256 256\" xmlSpace=\"preserve\">\r\n Svg Vector Icons : http://www.onlinewebfonts.com/icon \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SpreadsheetIcon;","import React from \"react\";\r\nimport AccountBanner from \"../../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"../../../components/LoadSpinner\";\r\nimport AnalyticsChart from \"../../../components/AnalyticsChart\";\r\nimport CommissionsChart from \"../../../components/CommissionsChart\";\r\nimport TransactionsChart from \"../../../components/TransactionsChart\";\r\nimport AnalyticsByPerformance from \"../../../components/AnalyticsByPerformance\";\r\nimport AnalyticsIcon from \"../../../components/icons/AnalyticsIconNew\";\r\nimport CommissionsIcon from \"../../../components/icons/CommissionsIcon\";\r\nimport SpreadsheetIcon from \"../../../components/icons/SpreadsheetIcon\";\r\nimport SpeedometerIcon from \"../../../components/icons/SpeedometerIcon\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AdminAnalytics extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n clicks: {\r\n value: 2,\r\n label: \"Clicks\"\r\n },\r\n sales: {\r\n value: 3,\r\n label: \"Sales\"\r\n },\r\n conversionRate: {\r\n value: 4,\r\n label: \"Conversion Rate\"\r\n },\r\n name: {\r\n value: 1,\r\n label: \"Name\",\r\n },\r\n merchant: {\r\n value: 5,\r\n label: \"Merchant\",\r\n },\r\n price: {\r\n value: 6,\r\n label: \"Price\",\r\n }\r\n }\r\n\r\n this.merchantSelectOptions = {\r\n merchant: {\r\n value: 1,\r\n label: \"Merchant\",\r\n },\r\n clicks: {\r\n value: 2,\r\n label: \"Clicks\"\r\n },\r\n sales: {\r\n value: 3,\r\n label: \"Sales\"\r\n },\r\n conversionRate: {\r\n value: 4,\r\n label: \"Conversion Rate\"\r\n },\r\n } \r\n\r\n this.state = {\r\n selectedCase: 1,\r\n filter: \"\",\r\n filteredPartners: [],\r\n partners: [],\r\n loading: false,\r\n analyticsLoading: false,\r\n commissionsLoading: false,\r\n transactionsLoading: false,\r\n sectors: [],\r\n partnerSectors: [],\r\n selectedSectors: [],\r\n analytics: [],\r\n selected: [],\r\n options: [],\r\n commissions: [],\r\n transactions: [],\r\n value: [],\r\n userChanged: false,\r\n productUserChanged: false,\r\n merchantUserChanged: false,\r\n userId: this.props?.loggedInUser ? this.props.loggedInUser : null,\r\n aggregateCheck: false,\r\n browseCheck: false,\r\n analyticsByProductLoading: false,\r\n analyticsByMerchantLoading: false,\r\n analyticsByProductDatas: [],\r\n analyticsByMerchant: [],\r\n sortDescending: true,\r\n merchantSortDescending: true,\r\n analyticsPerformanceSourceByMerchantLoading: false,\r\n analyticsPerformanceSourceByUserMerchantProductLoading: false,\r\n performanceSourceUserMerchantProduct: [],\r\n performanceSourceMerchant: [],\r\n sourceSortReferrer: false,\r\n sourceSortAscending: false,\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.clicks,\r\n this.selectOptions.sales,\r\n this.selectOptions.conversionRate,\r\n this.selectOptions.name,\r\n this.selectOptions.merchant,\r\n this.selectOptions.price\r\n ],\r\n defaultValue: this.selectOptions.clicks,\r\n currentValue: this.selectOptions.clicks,\r\n },\r\n merchantSelectOptions: {\r\n options: [\r\n this.merchantSelectOptions.merchant,\r\n this.merchantSelectOptions.clicks,\r\n this.merchantSelectOptions.sales,\r\n this.merchantSelectOptions.conversionRate,\r\n ],\r\n defaultValue: this.merchantSelectOptions.clicks,\r\n currentValue: this.merchantSelectOptions.clicks,\r\n },\r\n }\r\n }\r\n \r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/Analytics/Analytics', text: 'Analytics', active: true }];\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n resetPerformanceTabs = () => {\r\n let merchantSelectOptions = { ...this.state.merchantSelectOptions };\r\n let selectOptions = { ...this.state.selectOptions };\r\n\r\n merchantSelectOptions.currentValue = this.merchantSelectOptions.clicks;\r\n selectOptions.currentValue = this.selectOptions.clicks\r\n this.setState({ merchantSelectOptions, selectOptions, sortDescending: true, merchantSortDescending: true })\r\n }\r\n\r\n handleSortSelect = async (e, data = null) => {\r\n let selectOptions = { ...this.state.selectOptions };\r\n const sortDescending = !!(e) && e.label === selectOptions.currentValue.label ? !this.state.sortDescending : true;\r\n if (!e) {\r\n e = selectOptions.currentValue;\r\n } else {\r\n selectOptions.currentValue = e;\r\n }\r\n\r\n const analyticsByProductDatas = !!(data) && data.length > 0 ? data : this.state.analyticsByProductDatas;\r\n\r\n let sortedAnalytics = [...analyticsByProductDatas];\r\n this.setState({ sortDescending });\r\n\r\n const compareFunction = (a, b) => {\r\n const comparison = this.getComparisonValue(a, b, e);\r\n\r\n if (comparison !== 0) {\r\n // Respect sortDescending flag for the initial comparison\r\n return sortDescending ? comparison : -comparison;\r\n } else {\r\n // Check for ties and sort by next priority columns\r\n const tieComparisons = [\r\n { column: 'Clicks', comparison: this.getComparisonValue(a, b, { value: 2 }), sortDescending },\r\n { column: 'Sales', comparison: this.getComparisonValue(a, b, { value: 3 }), sortDescending },\r\n { column: 'Conversion Rate', comparison: this.getComparisonValue(a, b, { value: 4 }), sortDescending },\r\n { column: 'Name', comparison: this.getComparisonValue(a, b, { value: 1 }), sortDescending },\r\n { column: 'Merchant', comparison: this.getComparisonValue(a, b, { value: 5 }), sortDescending },\r\n { column: 'Price', comparison: this.getComparisonValue(a, b, { value: 6 }), sortDescending },\r\n ];\r\n\r\n // filter out the passed in e option from further consideration\r\n const filteredTieComparisons = tieComparisons.filter(item => item.column !== e.label);\r\n\r\n for (let i = 0; i < filteredTieComparisons.length; i++) {\r\n if (tieComparisons[i].comparison !== 0) {\r\n // Respect sortDescending flag for tie comparisons\r\n return sortDescending ? tieComparisons[i].comparison : -tieComparisons[i].comparison;\r\n }\r\n }\r\n\r\n // Default comparison if all columns are equal\r\n return 0;\r\n }\r\n };\r\n\r\n\r\n // Sort the analytics array using the custom comparison function\r\n sortedAnalytics.sort(compareFunction);\r\n\r\n this.setState({ analyticsByProductDatas: sortedAnalytics, selectOptions });\r\n };\r\n\r\n handleSourceClicksSort = (performanceSourceMerchant = null, performanceSourceUserMerchantProduct = null) => {\r\n if (performanceSourceMerchant === null) {\r\n performanceSourceMerchant = [...this.state.performanceSourceMerchant];\r\n }\r\n\r\n if (performanceSourceUserMerchantProduct === null) {\r\n performanceSourceUserMerchantProduct = [...this.state.performanceSourceUserMerchantProduct];\r\n }\r\n let sourceSortAscending = this.state.sourceSortAscending;\r\n let sourceSortReferrer = this.state.sourceSortReferrer;\r\n\r\n if (performanceSourceMerchant?.length > 0) {\r\n performanceSourceMerchant.sort((a, b) => {\r\n if (sourceSortReferrer) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n } else {\r\n // Secondary sorting for tied counts\r\n if (a.count === b.count) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return sourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSourceMerchant, sourceSortAscending: !this.state.sourceSortAscending });\r\n } else if (performanceSourceUserMerchantProduct?.length > 0) {\r\n performanceSourceUserMerchantProduct.sort((a, b) => {\r\n if (sourceSortReferrer) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n } else {\r\n // Secondary sorting for tied counts\r\n if (a.count === b.count) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return sourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n\r\n this.setState({ performanceSourceUserMerchantProduct, sourceSortAscending: !this.state.sourceSortAscending });\r\n }\r\n\r\n }\r\n\r\n handleSourceReferrerClick = (sourceSortReferrer = !this.state.sourceSortReferrer) => {\r\n this.setState({ sourceSortReferrer, sourceSortAscending: sourceSortReferrer !== this.state.sourceSortReferrer ? false : this.state.sourceSortAscending });\r\n }\r\n\r\n\r\n handleMerchantSortSelect = async (e, data = null) => {\r\n let selectOptions = { ...this.state.merchantSelectOptions };\r\n const sortDescending = !!(e) && !!(e.label) && e.label === this.state.merchantSelectOptions.currentValue.label ? !this.state.merchantSortDescending : true;\r\n if (!e) {\r\n e = selectOptions.currentValue;\r\n } else {\r\n selectOptions.currentValue = e;\r\n }\r\n\r\n const analyticsByMerchant = !!(data) && data.length > 0 ? data : this.state.analyticsByMerchant;\r\n\r\n let sortedAnalytics = [...analyticsByMerchant];\r\n\r\n this.setState({ merchantSortDescending: sortDescending });\r\n \r\n const compareFunction = (a, b) => {\r\n const comparison = this.getMerchantComparisonValue(a, b, e);\r\n\r\n if (comparison !== 0) {\r\n // Respect sortDescending flag for the initial comparison\r\n return sortDescending ? comparison : -comparison;\r\n } else {\r\n // Check for ties and sort by next priority columns\r\n const tieComparisons = [\r\n { column: 'Merchant', comparison: this.getMerchantComparisonValue(a, b, { value: 1 }), sortDescending },\r\n { column: 'Clicks', comparison: this.getMerchantComparisonValue(a, b, { value: 2 }), sortDescending },\r\n { column: 'Sales', comparison: this.getMerchantComparisonValue(a, b, { value: 3 }), sortDescending },\r\n { column: 'Conversion Rate', comparison: this.getMerchantComparisonValue(a, b, { value: 4 }), sortDescending },\r\n ];\r\n\r\n // filter out the passed in e option from further consideration\r\n const filteredTieComparisons = tieComparisons.filter(item => item.column !== e.label);\r\n\r\n for (let i = 0; i < filteredTieComparisons.length; i++) {\r\n if (tieComparisons[i].comparison !== 0) {\r\n // Respect sortDescending flag for tie comparisons\r\n return sortDescending ? tieComparisons[i].comparison : -tieComparisons[i].comparison;\r\n }\r\n }\r\n\r\n // Default comparison if all columns are equal\r\n return 0;\r\n }\r\n };\r\n\r\n\r\n // Sort the analytics array using the custom comparison function\r\n sortedAnalytics.sort(compareFunction);\r\n\r\n this.setState({ analyticsByMerchant: sortedAnalytics, merchantSelectOptions: selectOptions });\r\n };\r\n\r\n // Helper function to get the comparison value based on the column\r\n getComparisonValue = (a, b, e, sortDescending) => {\r\n if (e.value === 1) {\r\n return sortDescending ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);\r\n } else if (e.value === 2) {\r\n return sortDescending ? a.clicks - b.clicks : b.clicks - a.clicks;\r\n } else if (e.value === 3) {\r\n return sortDescending ? a.sales - b.sales : b.sales - a.sales;\r\n } else if (e.value === 4) {\r\n return sortDescending ? a.conversionRate - b.conversionRate : b.conversionRate - a.conversionRate;\r\n } else if (e.value === 5) {\r\n return sortDescending ? a.merchant.localeCompare(b.merchant) : b.merchant.localeCompare(a.merchant);\r\n } else if (e.value === 6) {\r\n return sortDescending ? a.price - b.price : b.price - a.price;\r\n } else {\r\n // Default comparison if e.value is not recognized\r\n return 0;\r\n }\r\n };\r\n\r\n // Helper function to get the comparison value based on the column\r\n getMerchantComparisonValue = (a, b, e, sortDescending) => {\r\n if (e.value === 1) {\r\n return sortDescending ? a.merchant.localeCompare(b.merchant) : b.merchant.localeCompare(a.merchant);\r\n } else if (e.value === 2) {\r\n return sortDescending ? a.clicks - b.clicks : b.clicks - a.clicks;\r\n } else if (e.value === 3) {\r\n return sortDescending ? a.sales - b.sales : b.sales - a.sales;\r\n } else if (e.value === 4) {\r\n return sortDescending ? a.conversionRate - b.conversionRate : b.conversionRate - a.conversionRate;\r\n } else {\r\n // Default comparison if e.value is not recognized\r\n return 0;\r\n }\r\n };\r\n\r\n\r\n fetchCommissionDetailItemsByCommissionId = async (commissionId) => {\r\n const url = 'Products/GetCommissionDetailItemsByCommissionId?commissionId=' + commissionId;\r\n\r\n return await getRequest(url) ?? [];\r\n }\r\n\r\n getCommissions = async (startDate, endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let getCommissionsUrl = '';\r\n if (this.state.aggregateCheck) {\r\n getCommissionsUrl = '/api/Merchant/GetCommissionsAggregate';\r\n }\r\n else {\r\n getCommissionsUrl = '/api/Merchant/GetCommissions';\r\n }\r\n\r\n if (startDate) {\r\n getCommissionsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getCommissionsUrl += getCommissionsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getCommissionsUrl += `&offset=${offset}`\r\n\r\n if (!this.state.aggregateCheck) {\r\n getCommissionsUrl += `&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n }\r\n\r\n this.setState({ commissionsLoading: true });\r\n let commissions = await getRequest(getCommissionsUrl) ?? [];\r\n this.setState({ commissions: commissions, loading: false, commissionsLoading: false });\r\n }\r\n\r\n getTransactions = async (startDate, endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let getTransactionsUrl = '';\r\n if (this.state.aggregateCheck) {\r\n getTransactionsUrl = '/api/Account/GetTransactionsAggregate';\r\n }\r\n else {\r\n getTransactionsUrl = '/api/Account/GetTransactions';\r\n }\r\n\r\n if (startDate) {\r\n getTransactionsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getTransactionsUrl += getTransactionsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getTransactionsUrl += `&offset=${offset}`\r\n\r\n if (endDate) {\r\n getTransactionsUrl += `&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n }\r\n\r\n\r\n this.setState({ transactionsLoading: true });\r\n let transactions = await getRequest(getTransactionsUrl) ?? [];\r\n this.setState({ transactions: transactions, loading: false, transactionsLoading: false });\r\n\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new Date(start); dt <= end; dt.setDate(dt.getDate() + 1)) {\r\n arr.push(new Date(dt));\r\n }\r\n return arr;\r\n };\r\n\r\n getMockAnalytics = (startDate, endDate) => {\r\n var mockAnalytics = [];\r\n var dates = this.getDaysBetweenDates(startDate, endDate);\r\n dates.forEach((date, i) => {\r\n var shouldInclude = Math.random() < 0.5; // 50% probability of getting true\r\n if (shouldInclude) {\r\n const formattedDate = date.toISOString().split('T')[0] + 'T00:00:00';\r\n const postViews = Math.floor(Math.random() * 100 + 1); // Random integer from 0 to 100\r\n const productViews = Math.floor(Math.random() * postViews + 1);\r\n const productClicks = Math.floor(Math.random() * productViews + 1);\r\n const salesCount = Math.floor(Math.random() * productClicks + 1);\r\n const salesConversionPercentage = salesCount / productClicks;\r\n const commissionsEarned = parseInt(Math.floor(Math.random() * salesCount + 1));\r\n mockAnalytics.push({\r\n \"$id\": (mockAnalytics.length + 1).toString(),\r\n date: formattedDate,\r\n postViews: postViews,\r\n productViews: productViews,\r\n productClicks: productClicks,\r\n salesCount: salesCount,\r\n salesConversionPercentage: salesConversionPercentage,\r\n commissionsEarned: commissionsEarned\r\n });\r\n }\r\n });\r\n return mockAnalytics;\r\n }\r\n\r\n getAnalyticsByProductData = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsByProduct';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&browse=${this.state.aggregateCheck ? false : this.state.browseCheck}&aggregate=false`\r\n\r\n\r\n this.setState({ analyticsByProductLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n if (analytics.length > 0) {\r\n await this.handleSortSelect(null, analytics);\r\n } else {\r\n this.setState({ analyticsByProductDatas: analytics })\r\n }\r\n\r\n this.setState({ loading: false, analyticsByProductLoading: false, productUserChanged: false });\r\n };\r\n\r\n getAnalyticsPerformanceSourceByMerchant = async (startDate, endDate, merchantId) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsPerformanceSourceByMerchant';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantId=${merchantId}&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ analyticsPerformanceSourceByMerchantLoading: true });\r\n\r\n let performanceSourceMerchant = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(performanceSourceMerchant);\r\n\r\n\r\n this.setState({ analyticsPerformanceSourceByMerchantLoading: false });\r\n };\r\n\r\n getAnalyticsPerformanceSourceByUserMerchantProduct = async (startDate, endDate, userMerchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSourceByUserMerchantProduct';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&userMerchantProductId=${userMerchantProductId}&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ analyticsPerformanceSourceByUserMerchantProductLoading: true });\r\n\r\n let performanceSourceUserMerchantProduct = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(null, performanceSourceUserMerchantProduct);\r\n\r\n\r\n this.setState({ analyticsPerformanceSourceByUserMerchantProductLoading: false })\r\n };\r\n\r\n clearPerformance = () => {\r\n this.setState({ performanceSourceMerchant: [], performanceSourceUserMerchantProduct: [] })\r\n }\r\n\r\n clearSourceSort = () => {\r\n this.setState({ sourceSortReferrer: false, sourceSortAscending: false });\r\n }\r\n\r\n getAnalyticsByMerchant = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsByMerchant';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&browse=${ this.state.aggregateCheck ? false : this.state.browseCheck}&aggregate=false`\r\n\r\n\r\n this.setState({ analyticsByProductLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n if (analytics.length > 0) {\r\n await this.handleMerchantSortSelect(null, analytics);\r\n } else {\r\n this.setState({ analyticsByMerchant: analytics })\r\n }\r\n\r\n this.setState({ loading: false, analyticsByProductLoading: false, merchantUserChanged: false });\r\n };\r\n\r\n getAnalytics = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '';\r\n if (this.state.aggregateCheck) {\r\n getAnalyticsUrl = '/api/Merchant/GetAnalyticsAggregate';\r\n }\r\n else {\r\n getAnalyticsUrl = '/api/Merchant/GetAnalytics';\r\n }\r\n\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n if (!this.state.aggregateCheck) {\r\n getAnalyticsUrl += `&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&browse=${this.state.browseCheck}`\r\n }\r\n\r\n this.setState({ analyticsLoading: true });\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const useMockData = urlParams.get('useMockData');\r\n\r\n let analytics = useMockData ? this.getMockAnalytics(startDate, endDate) : await getRequest(getAnalyticsUrl) ?? [];\r\n this.setState({ analytics: analytics, loading: false, analyticsLoading: false, userChanged: false });\r\n };\r\n\r\n displayToggleButtons = () => {\r\n if (this.props.deviceSize === \"sm\") {\r\n return (\r\n
    \r\n this.setState({ selectedCase: 1 })} isActive={this.state.selectedCase === 1} />\r\n this.setState({ selectedCase: 2 })} isActive={this.state.selectedCase === 2} />\r\n this.setState({ selectedCase: 3 })} isActive={this.state.selectedCase === 3} />\r\n this.setState({ selectedCase: 4 })} isActive={this.state.selectedCase === 4} />\r\n
    \r\n );\r\n }\r\n\r\n let options = [\r\n {\r\n name: \"Analytics\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Commissions\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Transactions\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n },\r\n {\r\n name: \"Performance\",\r\n case: 4,\r\n action: () => this.setState({ selectedCase: 4 })\r\n }\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n const userId = selected[0];\r\n this.setState({ userId, userChanged: true, productUserChanged: true, merchantUserChanged: true });\r\n }\r\n }\r\n\r\n fetchUsers = async (query) => {\r\n this.setState({ isLoading: true });\r\n\r\n let url = `/api/Account/GetUserSuggestionsByUsername?username=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\r\n\r\n onChangeAggregateCheck = () => {\r\n if (this.state.aggregateCheck) {\r\n this.setState({ aggregateCheck: !this.state.aggregateCheck });\r\n } else {\r\n this.setState({ aggregateCheck: !this.state.aggregateCheck, browseCheck: false });\r\n }\r\n }\r\n\r\n onChangeBrowseCheck = () => {\r\n if (this.state.browseCheck) {\r\n this.setState({ browseCheck: !this.state.browseCheck });\r\n } else {\r\n this.setState({ browseCheck: !this.state.browseCheck, aggregateCheck: false });\r\n }\r\n }\r\n\r\n handleGetLink = (shareLink) => {\r\n navigator.clipboard.writeText(shareLink);\r\n\r\n toast.success(\r\n
    \r\n

    Commissionable Link Copied to Clipboard!

    \r\n

    Your commissionable link has been copied to clipboard and is ready to be shared

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n this.handleGoogleAnalytics4GetLinkButton();\r\n }\r\n\r\n handleGoogleAnalytics4GetLinkButton = () => {\r\n window.gtag('event', 'Analytics_By_Product_Get_Link', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Analytics By Product Get Link`,\r\n });\r\n }\r\n\r\n render() {\r\n\r\n if (this.state.loading) {\r\n return \r\n }\r\n return (\r\n <>\r\n \r\n\r\n
    \r\n \r\n

    Analytics

    \r\n

    Reporting on traffic and commissions

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.setSelected(e)}\r\n isLoading={this.state.loading}\r\n options={this.state.options}\r\n placeholder=\"Search for users...\"/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n this.state.selectedCase === 2 ?\r\n \r\n :\r\n <>\r\n }\r\n \r\n {\r\n this.state.selectedCase === 4 ?\r\n \r\n :\r\n <>\r\n }\r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default AdminAnalytics;","import * as React from \"react\";\r\nimport AccountSidebar from \"../../components/AccountSidebar\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\n\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport { getRequest, postRequest } from \"../../sharedUtils/httpUtils\";\r\n\r\nimport { WithContext as ReactTags } from 'react-tag-input';\r\nimport { Helmet } from 'react-helmet'\r\n\r\nlet readOnlyFields = [ \"profileUrl\" ];\r\n\r\nlet userFormData = {\r\n displayName: \"\",\r\n profileUrl: \"\",\r\n bio: \"\",\r\n tagLine: \"\",\r\n website: \"\",\r\n youtube: \"\",\r\n facebook: \"\",\r\n instagram: \"\",\r\n};\r\n\r\nconst Interests = (props) => {\r\n\r\n const [formData, setFormData] = React.useState(userFormData);\r\n const [savingProfile, setSavingProfile] = React.useState(false);\r\n const [sectors, setSectors] = React.useState([]);\r\n const [filter, setFilter] = React.useState(\"\");\r\n const [filteredSectors, setFilteredSectors] = React.useState([]);\r\n\r\n const getData = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n\r\n await getSectors();\r\n };\r\n\r\n const getSectors = async () => {\r\n let sectors = await getRequest('/api/Sector/GetSectors');\r\n sectors = sectors.sort((a, b) => { return a.name < b.name ? -1 : 1 })\r\n let userSectors = await getRequest('/api/Sector/GetUserSectors');\r\n\r\n for (var i = 0; i < userSectors.length; ++i) {\r\n for (var j = 0; j < sectors.length; ++j) {\r\n if (userSectors[i].sectorId === sectors[j].sectorId) {\r\n sectors[j].active = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n setSectors(sectors);\r\n setFilteredSectors(sectors);\r\n }\r\n \r\n const updateSectors = async () => {\r\n let selectedSectorIds = sectors.filter(sector => sector.active === true).map((sector) => { return sector.sectorId });\r\n await postRequest('/api/Sector/UpdateUserSectors', selectedSectorIds);\r\n }\r\n\r\n React.useEffect(() => { getData() }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const renderSectors = () => {\r\n return filteredSectors.map((sector, i) => {\r\n if (sector.active) {\r\n return \r\n }\r\n return \r\n });\r\n }\r\n\r\n const onInputChange = (e) => {\r\n let filter = e.target.value;\r\n let filteredSectors = sectors.filter(sector => sector.name.toLowerCase().includes(filter.toLowerCase()));\r\n\r\n setFilter(filter);\r\n setFilteredSectors(filteredSectors);\r\n };\r\n\r\n const onSectorClick = async (name) => {\r\n let sects = [...sectors];\r\n sects.findIndex((s) => { return s.name === name });\r\n let i = sects.findIndex((s) => { return s.name === name })\r\n sects[i].active = !sects[i].active;\r\n\r\n setSectors(sects);\r\n setFilter(\"\");\r\n setFilteredSectors(sectors);\r\n }\r\n\r\n const onSubmit = async (event) => {\r\n event.preventDefault();\r\n setSavingProfile(true);\r\n\r\n updateSectors().then(() => { setSavingProfile(false); }); \r\n };\r\n\r\n\r\n const renderSubmit = () => {\r\n let submitDisabled = sectors.filter(sector => sector.active === true).length === 0;\r\n\r\n if (submitDisabled) {\r\n return ();\r\n }\r\n\r\n return ();\r\n }\r\n\r\n const breadCrumbList = [{ link: '/Account/Dashboard', text: 'Account' }, { link: '/Account/Interests', text: 'Interests', active: true } ];\r\n return (\r\n
    \r\n \r\n RockPorch - Interests\r\n \r\n \r\n

    Interests

    \r\n

    Manage what you're interested in

    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {\r\n [\"sm\", \"md\"].includes(props.deviceSize) === false ? (\r\n
    \r\n \r\n
    \r\n\r\n ): \r\n }\r\n \r\n
    \r\n
    \r\n
    { e.preventDefault(); }}>\r\n
    \r\n
    Your Interests
    \r\n
    \r\n
    \r\n
    \r\n onInputChange(e)}/>\r\n
    \r\n
    \r\n {renderSectors()}\r\n
    \r\n
    \r\n
    \r\n\r\n {renderSubmit()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Interests;\r\n","import * as React from \"react\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nclass OnboardInterests extends React.Component {\r\n\r\n state = {\r\n sectors: [],\r\n filter: \"\",\r\n filteredSectors: [],\r\n submitting: false,\r\n loading: true,\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(false);\r\n await this.getSectors();\r\n await this.getUserSectors();\r\n this.setState({ loading: false })\r\n }\r\n\r\n getSectors = async () => {\r\n let sectors = await getRequest('/api/Sector/GetSectors');\r\n sectors = sectors.sort((a, b) => { return a.name < b.name ? -1 : 1 })\r\n this.setState({ sectors: sectors, filteredSectors: sectors });\r\n }\r\n\r\n getUserSectors = async () => {\r\n let userSectors = await getRequest('/api/Sector/GetUserSectors');\r\n let sectors = this.state.sectors;\r\n\r\n for (var i = 0; i < userSectors.length; ++i) {\r\n for (var j = 0; j < sectors.length; ++j) {\r\n if (userSectors[i].sectorId === sectors[j].sectorId) {\r\n sectors[j].active = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ sectors: sectors });\r\n }\r\n\r\n renderSectors = () => {\r\n return this.state.filteredSectors.map((sector, i) => {\r\n if (sector.active) {\r\n return \r\n }\r\n return \r\n });\r\n }\r\n\r\n renderSubmit = () => {\r\n if (this.state.sectors.filter(sector => sector.active === true).length > 0) {\r\n if (this.state.submitting) {\r\n return ;\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    );\r\n }\r\n\r\n return ;\r\n }\r\n\r\n convertToUserModel = () => {\r\n return {\r\n name: this.props.loggedInUser.name,\r\n firstName: this.props.loggedInUser.firstName,\r\n lastName: this.props.loggedInUser.lastName,\r\n bio: this.props.loggedInUser.bio,\r\n tagLine: this.props.loggedInUser.tagLine,\r\n website: this.props.loggedInUser.website,\r\n imageUrl: this.props.loggedInUser.imageUrl,\r\n userName: this.props.loggedInUser.userName,\r\n email: this.props.loggedInUser.email,\r\n\r\n phoneNumber: this.props.loggedInUser.phoneNumber,\r\n proStatusId: this.props.loggedInUser.proStatusId,\r\n address: this.props.loggedInUser.address,\r\n city: this.props.loggedInUser.city,\r\n state: this.props.loggedInUser.state,\r\n postalCode: this.props.loggedInUser.postalCode,\r\n country: this.props.loggedInUser.country,\r\n\r\n onboardingComplete: this.props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: this.props.loggedInUser.profileBannerUrl,\r\n quickStart: this.props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n saveUser = async () => {\r\n let userUrl = '/api/Account/PostUser';\r\n let user = await postRequest(userUrl, this.convertToUserModel());\r\n this.props.setLoggedInUser(user);\r\n }\r\n\r\n updateSectors = async () => {\r\n let selectedSectorIds = this.state.sectors.filter(sector => sector.active === true).map((sector) => { return sector.sectorId });\r\n await postRequest('/api/Sector/UpdateUserSectors', selectedSectorIds);\r\n }\r\n\r\n onSubmitClick = async () => {\r\n this.props.setShowTopNav(true);\r\n this.setState({ submitting: true });\r\n\r\n await this.updateSectors();\r\n await this.saveUser();\r\n this.setState({ submitting: false });\r\n }\r\n\r\n onSectorClick = async (name) => {\r\n let sectors = this.state.sectors;\r\n let i = sectors.findIndex((s) => { return s.name === name })\r\n sectors[i].active = !sectors[i].active;\r\n this.setState({ sectors: sectors, filter: \"\", filteredSectors: this.state.sectors });\r\n }\r\n\r\n onInputChange = async (e) => {\r\n let filter = e.target.value;\r\n let filteredSectors = this.state.sectors.filter(sector => sector.name.toLowerCase().includes(filter.toLowerCase()));\r\n\r\n this.setState({filter: filter, filteredSectors : filteredSectors })\r\n }\r\n\r\n render = () => {\r\n if (this.state.loading)\r\n {\r\n return \r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n

    Pick Your Interests

    \r\n

    Tell us what you're interested in so we can populate your explore feed

    \r\n
      \r\n
    • 1
    • \r\n
    • 2
    • \r\n
    • 3
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.onInputChange(e)} />\r\n \r\n
    \r\n
    \r\n
    \r\n {this.renderSectors()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.renderSubmit()} \r\n
    \r\n
    \r\n
    )\r\n }\r\n}\r\n\r\nexport default OnboardInterests;","import * as React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\nimport Modal from \"../../components/Modal\";\r\nimport CreatorApplication from \"../../components/CreatorApplication\";\r\n\r\nclass OnboardUserType extends React.Component {\r\n\r\n state = {\r\n submitting: false,\r\n formData: {},\r\n modalOpen: false,\r\n }\r\n\r\n toggleModal = () => {\r\n let newModalOpen = !this.state.modalOpen;\r\n this.setState({ modalOpen: newModalOpen });\r\n }\r\n\r\n renderModal = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(false);\r\n this.setState({ formData: this.convertToFormData(this.props.loggedInUser) });\r\n }\r\n\r\n saveUser = async () => {\r\n let userUrl = '/api/Account/PostUser';\r\n\r\n let user = await postRequest(userUrl, this.convertToUserModel());\r\n this.props.setLoggedInUser(user);\r\n }\r\n\r\n mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n />\r\n \r\n );\r\n });\r\n }\r\n\r\n mapInputFieldsSocial = () => {\r\n let fields = [\r\n { name: \"instagram\", title: \"Instagram\" },\r\n { name: \"facebook\", title: \"Facebook\" },\r\n { name: \"youtube\", title: \"YouTube\" },\r\n ];\r\n return this.mapInputFields(fields);\r\n };\r\n\r\n mapInputFieldsPersonal = () => {\r\n let fields = [\r\n { name: \"name\", title: \"Name\" },\r\n { name: \"audience\", title: \"Primary Audience / Region\" },\r\n ];\r\n return this.mapInputFields(fields);\r\n };\r\n\r\n\r\n onInputChange = (e) => {\r\n let formkey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n formData[formkey] = newData;\r\n\r\n this.setState({ formData: formData });\r\n };\r\n\r\n convertToFormData = (user) => {\r\n return {\r\n youtube: user.googleUsername,\r\n facebook: user.facebookUsername,\r\n instagram: user.instagramUsername,\r\n realName: \"\",\r\n audience: \"\",\r\n postFrequency: \"\",\r\n timeCommitment: \"\",\r\n platform: \"\",\r\n platformUsername: \"\",\r\n followers: \"\",\r\n userName:user.userName\r\n };\r\n }\r\n\r\n convertToUserModel = () => {\r\n return {\r\n name: this.props.loggedInUser.name,\r\n firstName: this.props.loggedInUser.firstName,\r\n lastName: this.props.loggedInUser.lastName,\r\n bio: this.props.loggedInUser.bio,\r\n tagLine: this.props.loggedInUser.tagLine,\r\n website: this.props.loggedInUser.website,\r\n googleUsername: this.state.formData.youtube,\r\n facebookUsername: this.state.formData.facebook,\r\n instagramUsername: this.state.formData.instagram,\r\n imageUrl: this.props.loggedInUser.imageUrl,\r\n userName: this.props.loggedInUser.userName,\r\n email: this.props.loggedInUser.email,\r\n\r\n phoneNumber: this.props.loggedInUser.phoneNumber,\r\n proStatusId: this.props.loggedInUser.proStatusId,\r\n address: this.props.loggedInUser.address,\r\n city: this.props.loggedInUser.city,\r\n state: this.props.loggedInUser.state,\r\n postalCode: this.props.loggedInUser.postalCode,\r\n country: this.props.loggedInUser.country,\r\n\r\n onboardingComplete: this.props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: this.props.loggedInUser.profileBannerUrl,\r\n quickStart: this.props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n {this.renderModal()}\r\n
    \r\n
    \r\n \"\"\r\n
    \r\n

    Explore and Create

    \r\n

    Sign up as a user to explore products, lockers, and posts from your favorite Creators, or apply to become a Creator

    \r\n
      \r\n
    • 1
    • \r\n
    • 2
    • \r\n
    • 3
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Login as a User

    \r\n to explore content\r\n
    \r\n
      \r\n
    • Shop your favorite content
    • \r\n
    • Discover new gear
    • \r\n
    • Learn a new skill
    • \r\n
    • Message Creators for curated gear lists
    • \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    Apply as a Creator

    \r\n to share content\r\n
    \r\n
      \r\n
    • Requires RockPorch Approval
    • \r\n
    • Content aligned with RockPorch
    • \r\n
    • Demonstrates a positive influence
    • \r\n
    • Earn commissions
    • \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    )\r\n }\r\n}\r\n\r\nexport default OnboardUserType;","import * as React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { Form, FormGroup, Label, Input } from \"reactstrap\";\r\n\r\nclass OnboardGoPro extends React.Component {\r\n\r\n state = {\r\n submitting: false,\r\n formData: {}\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(false);\r\n this.setState({ formData: this.convertToFormData(this.props.loggedInUser) });\r\n }\r\n\r\n renderSubmit = () => {\r\n if (this.state.formData?.google || this.state.formData?.instagram || this.state.formData?.facebook) {\r\n if (this.state.submitting) {\r\n return ;\r\n }\r\n return (\r\n \r\n ;\r\n );\r\n }\r\n return ;\r\n\r\n }\r\n\r\n saveUser = async () => {\r\n let userUrl = '/api/Account/PostUser';\r\n this.props.loggedInUser.onboardingComplete = true;\r\n\r\n let user = await postRequest(userUrl, this.convertToUserModel());\r\n this.props.setLoggedInUser(user);\r\n }\r\n\r\n applyForPro = async () => {\r\n let userUrl = '/api/Account/ApplyForPro';\r\n await postRequest(userUrl, this.props.loggedInUser);\r\n }\r\n\r\n onSubmitClick = async () => {\r\n this.props.setShowTopNav(true);\r\n\r\n this.setState({ submitting: true });\r\n await this.saveUser();\r\n await this.applyForPro();\r\n this.setState({ submitting: false });\r\n }\r\n\r\n mapInputFields = (fields) => {\r\n return fields.map((field, i) => {\r\n return (\r\n \r\n \r\n this.onInputChange(e)}\r\n value={this.state.formData[field.name]}\r\n />\r\n \r\n );\r\n });\r\n }\r\n\r\n mapInputFieldsSocial = () => {\r\n let fields = [\r\n { name: \"instagram\", title: \"Instagram\" },\r\n { name: \"facebook\", title: \"Facebook\" },\r\n { name: \"youtube\", title: \"YouTube\" },\r\n ];\r\n return this.mapInputFields(fields);\r\n };\r\n\r\n mapInputFieldsPersonal = () => {\r\n let fields = [\r\n { name: \"name\", title: \"Name\" },\r\n { name: \"audience\", title: \"Primary Audience / Region\" },\r\n ];\r\n return this.mapInputFields(fields);\r\n };\r\n\r\n onInputChange = (e) => {\r\n let formkey = e.target.name;\r\n let newData = e.target.value;\r\n let formData = this.state.formData;\r\n formData[formkey] = newData;\r\n this.setState({ formData: formData });\r\n };\r\n\r\n convertToFormData = (user) => {\r\n return {\r\n youtube: user.googleUsername,\r\n facebook: user.facebookUsername,\r\n instagram: user.instagramUsername,\r\n userName: user.userName\r\n };\r\n }\r\n\r\n convertToUserModel = () => {\r\n return {\r\n name: this.props.loggedInUser.name,\r\n firstName: this.props.loggedInUser.firstName,\r\n lastName: this.props.loggedInUser.lastName,\r\n bio: this.props.loggedInUser.bio,\r\n tagLine: this.props.loggedInUser.tagLine,\r\n website: this.props.loggedInUser.website,\r\n googleUsername: this.state.formData.youtube,\r\n facebookUsername: this.state.formData.facebook,\r\n instagramUsername: this.state.formData.instagram,\r\n imageUrl: this.props.loggedInUser.imageUrl,\r\n userName: this.props.loggedInUser.userName,\r\n email: this.props.loggedInUser.email,\r\n\r\n phoneNumber: this.props.loggedInUser.phoneNumber,\r\n proStatusId: this.props.loggedInUser.proStatusId,\r\n address: this.props.loggedInUser.address,\r\n city: this.props.loggedInUser.city,\r\n state: this.props.loggedInUser.state,\r\n postalCode: this.props.loggedInUser.postalCode,\r\n country: this.props.loggedInUser.country,\r\n\r\n onboardingComplete: this.props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: this.props.loggedInUser.profileBannerUrl,\r\n quickStart: this.props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n \r\n Skip this step\r\n \r\n \r\n \r\n \r\n \r\n \r\n

    Apply as Creator

    \r\n

    Creators get access to more features, analytics, and payouts

    \r\n
      \r\n
    • 1
    • \r\n
    • 2
    • \r\n
    • 3
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    Apply as Creator

    \r\n

    RockPorch is the leading community of outhdoor enthusiasts where users communicate and collaborate, and Creators get paid sharing their passion. Ready to apply as a Creator?

    \r\n

    Apply today to become a Creator and get paid for the content you share.

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    Your Info
    \r\n

    We just need to know a few things about you

    \r\n {this.mapInputFieldsSocial()}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    Social Profiles
    \r\n

    Please provide your username to the social platforms you regulary contribute.

    \r\n {this.mapInputFieldsSocial()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    Not ready to apply? No problem! Skip this step

    \r\n {this.renderSubmit()} \r\n
    \r\n
    \r\n
    )\r\n }\r\n}\r\n\r\nexport default OnboardGoPro;","import * as React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport {\r\n Carousel,\r\n CarouselItem,\r\n CarouselControl,\r\n CarouselIndicators,\r\n CarouselCaption\r\n} from 'reactstrap';\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nclass OnboardGettingStarted extends React.Component {\r\n\r\n state = {\r\n activeIndex: 0,\r\n animating: false\r\n }\r\n\r\n convertToUserModel = () => {\r\n return {\r\n name: this.props.loggedInUser.name,\r\n firstName: this.props.loggedInUser.firstName,\r\n lastName: this.props.loggedInUser.lastName,\r\n bio: this.props.loggedInUser.bio,\r\n tagLine: this.props.loggedInUser.tagLine,\r\n website: this.props.loggedInUser.website,\r\n googleUsername: this.props.loggedInUser.googleUsername,\r\n facebookUsername: this.props.loggedInUser.facebookUsername,\r\n instagramUsername: this.props.loggedInUser.instagramUsername,\r\n imageUrl: this.props.loggedInUser.imageUrl,\r\n userName: this.props.loggedInUser.userName,\r\n email: this.props.loggedInUser.email,\r\n\r\n phoneNumber: this.props.loggedInUser.phoneNumber,\r\n proStatusId: this.props.loggedInUser.proStatusId,\r\n address: this.props.loggedInUser.address,\r\n city: this.props.loggedInUser.city,\r\n state: this.props.loggedInUser.state,\r\n postalCode: this.props.loggedInUser.postalCode,\r\n country: this.props.loggedInUser.country,\r\n\r\n onboardingComplete: this.props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: this.props.loggedInUser.profileBannerUrl,\r\n\r\n quickStart: this.props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n saveUser = async () => {\r\n let userUrl = '/api/Account/PostUser';\r\n this.props.loggedInUser.onboardingComplete = true;\r\n let user = await postRequest(userUrl, this.convertToUserModel());\r\n this.props.setLoggedInUser(user);\r\n }\r\n\r\n items = [\r\n {\r\n src: 'https://picsum.photos/600/400',\r\n altText: 'Slide 1',\r\n caption: 'Slide 1',\r\n key: 1\r\n },\r\n {\r\n src: 'https://picsum.photos/600/401',\r\n altText: 'Slide 2',\r\n caption: 'Slide 2',\r\n key: 2\r\n },\r\n {\r\n src: 'https://picsum.photos/600/402',\r\n altText: 'Slide 3',\r\n caption: 'Slide 3',\r\n key: 3\r\n },\r\n {\r\n src: 'https://picsum.photos/600/403',\r\n altText: 'Slide 4',\r\n caption: 'Slide 4',\r\n key: 4\r\n },\r\n {\r\n src: 'https://picsum.photos/600/404',\r\n altText: 'Slide 5',\r\n caption: 'Slide 5',\r\n key: 5\r\n },\r\n ];\r\n\r\n next = () => {\r\n if (this.state.animating) return;\r\n const nextIndex = this.state.activeIndex === this.items.length - 1 ? 0 : this.state.activeIndex + 1;\r\n this.setState({ activeIndex: nextIndex });\r\n }\r\n\r\n previous = () => {\r\n if (this.state.animating) return;\r\n const nextIndex = this.state.activeIndex === 0 ? this.items.length - 1 : this.state.activeIndex - 1;\r\n this.setState({ activeIndex: nextIndex });\r\n }\r\n\r\n goToIndex = (newIndex) => {\r\n if (this.state.animating) return;\r\n this.setState({ activeIndex: newIndex });\r\n }\r\n\r\n slides = this.items.map((item) => {\r\n return (\r\n this.setState({ animating: true })}\r\n onExited={() => this.setState({ animating: false })}\r\n key={item.src}\r\n >\r\n {item.altText}\r\n \r\n \r\n );\r\n });\r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n onSubmitClick = async () => {\r\n this.props.setShowTopNav(true);\r\n await this.saveUser();\r\n this.props.history.push('/HomeFeed');\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n

    Getting Started

    \r\n

    Click through to view different components of the platform

    \r\n
      \r\n
    • 1
    • \r\n
    • 2
    • \r\n
    • 3
    • \r\n
    • 4
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.slides}\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    )\r\n }\r\n}\r\n\r\nexport default OnboardGettingStarted;","import * as React from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\n\r\nimport ProfileInfoCardOnboarding from \"components/ProfileInfoCardOnboarding\";\r\n\r\nclass OnboardWhoToFollow extends React.Component {\r\n\r\n state = {\r\n whoToFollow: [],\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.props.setShowTopNav(false);\r\n }\r\n\r\n onSubmitClick = async () => {\r\n this.props.setShowTopNav(true);\r\n await this.saveUser();\r\n this.props.history.push('/HomeFeed');\r\n }\r\n\r\n convertToUserModel = () => {\r\n return {\r\n name: this.props.loggedInUser.name,\r\n firstName: this.props.loggedInUser.firstName,\r\n lastName: this.props.loggedInUser.lastName,\r\n bio: this.props.loggedInUser.bio,\r\n tagLine: this.props.loggedInUser.tagLine,\r\n website: this.props.loggedInUser.website,\r\n googleUsername: this.props.loggedInUser.googleUsername,\r\n facebookUsername: this.props.loggedInUser.facebookUsername,\r\n instagramUsername: this.props.loggedInUser.instagramUsername,\r\n imageUrl: this.props.loggedInUser.imageUrl,\r\n userName: this.props.loggedInUser.userName,\r\n email: this.props.loggedInUser.email,\r\n\r\n phoneNumber: this.props.loggedInUser.phoneNumber,\r\n proStatusId: this.props.loggedInUser.proStatusId,\r\n address: this.props.loggedInUser.address,\r\n city: this.props.loggedInUser.city,\r\n state: this.props.loggedInUser.state,\r\n postalCode: this.props.loggedInUser.postalCode,\r\n country: this.props.loggedInUser.country,\r\n\r\n onboardingComplete: this.props.loggedInUser.onboardingComplete,\r\n profileBannerUrl: this.props.loggedInUser.profileBannerUrl,\r\n\r\n quickStart: this.props.loggedInUser.quickStart\r\n }\r\n }\r\n\r\n saveUser = async () => {\r\n let userUrl = '/api/Account/PostUser';\r\n this.props.loggedInUser.onboardingComplete = true;\r\n let user = await postRequest(userUrl, this.convertToUserModel());\r\n await this.props.setLoggedInUser(user)\r\n }\r\n\r\n render = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"\"\r\n
    \r\n

    Who To Follow

    \r\n

    Build your feed by following Creators

    \r\n
      \r\n
    • 1
    • \r\n
    • 2
    • \r\n
    • 3
    • \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    )\r\n }\r\n}\r\n\r\nexport default OnboardWhoToFollow;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport AnalyticsChart from \"../../components/AnalyticsChart\";\r\nimport AnalyticsByPerformance from \"../../components/AnalyticsByPerformance\";\r\nimport CommissionsChart from \"../../components/CommissionsChart\";\r\nimport TransactionsChart from \"../../components/TransactionsChart\";\r\nimport AnalyticsIcon from \"../../components/icons/AnalyticsIconNew\";\r\nimport CommissionsIcon from \"../../components/icons/CommissionsIcon\";\r\nimport SpreadsheetIcon from \"../../components/icons/SpreadsheetIcon\";\r\nimport SpeedometerIcon from \"../../components/icons/SpeedometerIcon\";\r\nimport { Helmet } from 'react-helmet';\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass Analytics extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n clicks: {\r\n value: 2,\r\n label: \"Clicks\"\r\n },\r\n sales: {\r\n value: 3,\r\n label: \"Sales\"\r\n },\r\n conversionRate: {\r\n value: 4,\r\n label: \"Conversion Rate\"\r\n },\r\n name: {\r\n value: 1,\r\n label: \"Name\",\r\n },\r\n merchant: {\r\n value: 5,\r\n label: \"Merchant\",\r\n },\r\n price: {\r\n value: 6,\r\n label: \"Price\",\r\n },\r\n } \r\n\r\n this.merchantSelectOptions = {\r\n merchant: {\r\n value: 1,\r\n label: \"Merchant\",\r\n },\r\n clicks: {\r\n value: 2,\r\n label: \"Clicks\"\r\n },\r\n sales: {\r\n value: 3,\r\n label: \"Sales\"\r\n },\r\n conversionRate: {\r\n value: 4,\r\n label: \"Conversion Rate\"\r\n },\r\n } \r\n\r\n this.state = {\r\n selectedCase: 1,\r\n filter: \"\",\r\n filteredPartners: [],\r\n partners: [],\r\n loading: false,\r\n analyticsLoading: false,\r\n commissionsLoading: false,\r\n transactionsLoading: false,\r\n analyticsByProductLoading: false,\r\n analyticsByMerchantLoading: false,\r\n analyticsByProductDatas: [],\r\n analyticsByMerchant: [],\r\n sectors: [],\r\n partnerSectors: [],\r\n selectedSectors: [],\r\n analytics: [],\r\n commissions: [],\r\n transactions: [],\r\n userId: this.props?.loggedInUser ? this.props.loggedInUser : null,\r\n date: null,\r\n sortDescending: true,\r\n merchantSortDescending: true,\r\n analyticsPerformanceSourceByMerchantLoading: false,\r\n analyticsPerformanceSourceByUserMerchantProductLoading: false,\r\n performanceSourceUserMerchantProduct: [],\r\n performanceSourceMerchant: [],\r\n sourceSortReferrer: false,\r\n sourceSortAscending: false,\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.clicks,\r\n this.selectOptions.sales,\r\n this.selectOptions.conversionRate,\r\n this.selectOptions.name,\r\n this.selectOptions.merchant,\r\n this.selectOptions.price\r\n ],\r\n defaultValue: this.selectOptions.clicks,\r\n currentValue: this.selectOptions.clicks,\r\n },\r\n merchantSelectOptions: {\r\n options: [\r\n this.merchantSelectOptions.merchant,\r\n this.merchantSelectOptions.clicks,\r\n this.merchantSelectOptions.sales,\r\n this.merchantSelectOptions.conversionRate,\r\n ],\r\n defaultValue: this.merchantSelectOptions.clicks,\r\n currentValue: this.merchantSelectOptions.clicks,\r\n },\r\n }\r\n }\r\n\r\n resetPerformanceTabs = () => {\r\n let merchantSelectOptions = { ...this.state.merchantSelectOptions };\r\n let selectOptions = { ...this.state.selectOptions };\r\n\r\n merchantSelectOptions.currentValue = this.merchantSelectOptions.clicks;\r\n selectOptions.currentValue = this.selectOptions.clicks\r\n this.setState({ merchantSelectOptions, selectOptions, sortDescending: true, merchantSortDescending: true })\r\n }\r\n\r\n breadCrumbList = [{ link: \"/CreatorDashboard\", text: 'Creator Dashboard' }, { link: '/Account/Analytics', text: 'Analytics', active: true }];\r\n\r\n componentDidMount = async () => {\r\n const params = getQueryStringParams(window.location.search);\r\n let date = params.date;\r\n let selectedCase = params.tab;\r\n\r\n if (date !== undefined && date !== null && !isNaN(date) && Number.isInteger(Number(date)) && parseInt(date, 10) > -1 && parseInt(date, 10) < 6) {\r\n date = parseInt(date, 10);\r\n } else {\r\n date = null;\r\n }\r\n\r\n if (selectedCase !== undefined && selectedCase !== null && !isNaN(selectedCase) && Number.isInteger(Number(selectedCase)) && parseInt(selectedCase, 10) > 0 && parseInt(selectedCase, 10) < 5) {\r\n selectedCase = parseInt(selectedCase, 10);\r\n } else {\r\n selectedCase = this.state.selectedCase\r\n }\r\n \r\n this.setState({ date, selectedCase });\r\n\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n clearPerformance = () => {\r\n this.setState({ performanceSourceMerchant: [], performanceSourceUserMerchantProduct: [] })\r\n }\r\n\r\n clearSourceSort = () => {\r\n this.setState({ sourceSortReferrer: false, sourceSortAscending: false });\r\n }\r\n\r\n handleGetLink = (shareLink) => {\r\n navigator.clipboard.writeText(shareLink);\r\n\r\n toast.success(\r\n
    \r\n

    Commissionable Link Copied to Clipboard!

    \r\n

    Your commissionable link has been copied to clipboard and is ready to be shared

    \r\n
    ,\r\n {\r\n duration: 3000,\r\n position: 'top-center',\r\n icon: null,\r\n }\r\n );\r\n this.handleGoogleAnalytics4GetLinkButton();\r\n }\r\n\r\n handleGoogleAnalytics4GetLinkButton = () => {\r\n window.gtag('event', 'Analytics_By_Product_Get_Link', {\r\n send_to: 'G-9F2DZRE5FG',\r\n event_category: 'Button',\r\n event_label: `Analytics By Product Get Link`,\r\n });\r\n }\r\n\r\n handleSourceClicksSort = (performanceSourceMerchant = null, performanceSourceUserMerchantProduct = null) => {\r\n if (performanceSourceMerchant === null) {\r\n performanceSourceMerchant = [...this.state.performanceSourceMerchant];\r\n }\r\n\r\n if (performanceSourceUserMerchantProduct === null) {\r\n performanceSourceUserMerchantProduct = [...this.state.performanceSourceUserMerchantProduct];\r\n }\r\n let sourceSortAscending = this.state.sourceSortAscending;\r\n let sourceSortReferrer = this.state.sourceSortReferrer;\r\n\r\n if (performanceSourceMerchant?.length > 0) {\r\n performanceSourceMerchant.sort((a, b) => {\r\n if (sourceSortReferrer) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n } else {\r\n // Secondary sorting for tied counts\r\n if (a.count === b.count) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return sourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSourceMerchant, sourceSortAscending: !this.state.sourceSortAscending });\r\n } else if (performanceSourceUserMerchantProduct?.length > 0) {\r\n performanceSourceUserMerchantProduct.sort((a, b) => {\r\n if (sourceSortReferrer) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n } else {\r\n // Secondary sorting for tied counts\r\n if (a.count === b.count) {\r\n return sourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return sourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n\r\n this.setState({ performanceSourceUserMerchantProduct, sourceSortAscending: !this.state.sourceSortAscending });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n getCommissions = async (startDate, endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let getCommissionsUrl = '/api/Merchant/GetCommissions';\r\n\r\n if (startDate) {\r\n getCommissionsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getCommissionsUrl += getCommissionsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getCommissionsUrl += `&offset=${offset}`\r\n\r\n this.setState({ commissionsLoading: true });\r\n let commissions = await getRequest(getCommissionsUrl) ?? [];\r\n this.setState({ commissions: commissions, loading: false, commissionsLoading: false });\r\n }\r\n\r\n getTransactions = async (startDate, endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let getTransactionsUrl = '/api/Account/GetTransactions';\r\n\r\n if (startDate) {\r\n getTransactionsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getTransactionsUrl += getTransactionsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getTransactionsUrl += `&offset=${offset}`\r\n\r\n this.setState({ transactionsLoading: true });\r\n let transactions = await getRequest(getTransactionsUrl) ?? [];\r\n this.setState({ transactions: transactions, loading: false, transactionsLoading: false });\r\n\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new Date(start); dt <= end; dt.setDate(dt.getDate() + 1)) {\r\n arr.push(new Date(dt));\r\n }\r\n return arr;\r\n };\r\n\r\n getMockAnalytics = (startDate, endDate) => {\r\n var mockAnalytics = [];\r\n var dates = this.getDaysBetweenDates(startDate, endDate);\r\n dates.forEach((date, i) => {\r\n var shouldInclude = Math.random() < 0.5; // 50% probability of getting true\r\n if (shouldInclude) {\r\n const formattedDate = date.toISOString().split('T')[0] + 'T00:00:00';\r\n const postViews = Math.floor(Math.random() * 100 + 1); // Random integer from 0 to 100\r\n const productViews = Math.floor(Math.random() * postViews + 1);\r\n const productClicks = Math.floor(Math.random() * productViews + 1);\r\n const salesCount = Math.floor(Math.random() * productClicks + 1);\r\n const salesConversionPercentage = salesCount / productClicks;\r\n const commissionsEarned = parseInt(Math.floor(Math.random() * salesCount + 1));\r\n mockAnalytics.push({\r\n \"$id\": (mockAnalytics.length + 1).toString(),\r\n date: formattedDate,\r\n postViews: postViews,\r\n productViews: productViews,\r\n productClicks: productClicks,\r\n salesCount: salesCount,\r\n salesConversionPercentage: salesConversionPercentage,\r\n commissionsEarned: commissionsEarned\r\n });\r\n }\r\n });\r\n return mockAnalytics;\r\n }\r\n\r\n getAnalyticsPerformanceSourceByMerchant = async (startDate, endDate, merchantId) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsPerformanceSourceByMerchant';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantId=${merchantId}&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSourceByMerchantLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(response);\r\n\r\n this.setState({ AnalyticsPerformanceSourceByMerchantLoading: false });\r\n };\r\n\r\n getAnalyticsPerformanceSourceByUserMerchantProduct = async (startDate, endDate, userMerchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSourceByUserMerchantProduct';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&userMerchantProductId=${userMerchantProductId}&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n getAnalyticsByProductData = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsByProduct';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n this.setState({ analyticsByProductLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n if (analytics.length > 0) {\r\n await this.handleSortSelect(null, analytics);\r\n } else {\r\n this.setState({ analyticsByProductDatas: analytics })\r\n }\r\n\r\n this.setState({ loading: false, analyticsByProductLoading: false });\r\n };\r\n\r\n\r\n getAnalyticsByMerchant = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsByMerchant';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n this.setState({ analyticsByProductLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n if (analytics.length > 0) {\r\n await this.handleMerchantSortSelect(null, analytics);\r\n } else {\r\n this.setState({ analyticsByMerchant: analytics })\r\n }\r\n\r\n this.setState({ loading: false, analyticsByProductLoading: false });\r\n };\r\n\r\n getAnalytics = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalytics';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n this.setState({ analyticsLoading: true });\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const useMockData = urlParams.get('useMockData');\r\n\r\n let analytics = useMockData ? this.getMockAnalytics(startDate, endDate) : await getRequest(getAnalyticsUrl) ?? [];\r\n this.setState({ analytics: analytics, loading: false, analyticsLoading: false });\r\n };\r\n\r\n fetchCommissionDetailItemsByCommissionId = async (commissionId) => {\r\n const url = 'Products/GetCommissionDetailItemsByCommissionId?commissionId=' + commissionId;\r\n\r\n return await getRequest(url) ?? [];\r\n }\r\n\r\n displayToggleButtons = () => {\r\n if (this.props.deviceSize === \"sm\") {\r\n return (\r\n
    \r\n this.setState({ selectedCase: 1 })} isActive={this.state.selectedCase === 1} />\r\n this.setState({ selectedCase: 2 })} isActive={this.state.selectedCase === 2} />\r\n this.setState({ selectedCase: 3 })} isActive={this.state.selectedCase === 3} />\r\n this.setState({ selectedCase: 4 })} isActive={this.state.selectedCase === 4} />\r\n
    \r\n );\r\n }\r\n\r\n let options = [\r\n {\r\n name: \"Analytics\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Commissions\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Transactions\",\r\n case: 3,\r\n action: () => this.setState({ selectedCase: 3 })\r\n },\r\n {\r\n name: \"Performance\",\r\n case: 4,\r\n action: () => this.setState({ selectedCase: 4 })\r\n }\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n handleSortSelect = async (e, data = null) => {\r\n let selectOptions = { ...this.state.selectOptions };\r\n const sortDescending = !!(e) && e.label === selectOptions.currentValue.label ? !this.state.sortDescending : true;\r\n if (!e) {\r\n e = selectOptions.currentValue;\r\n } else {\r\n selectOptions.currentValue = e;\r\n }\r\n\r\n const analyticsByProductDatas = !!(data) && data.length > 0 ? data : this.state.analyticsByProductDatas;\r\n\r\n let sortedAnalytics = [...analyticsByProductDatas];\r\n\r\n this.setState({ sortDescending });\r\n\r\n const compareFunction = (a, b) => {\r\n const comparison = this.getComparisonValue(a, b, e);\r\n\r\n if (comparison !== 0) {\r\n // Respect sortDescending flag for the initial comparison\r\n return sortDescending ? comparison : -comparison;\r\n } else {\r\n // Check for ties and sort by next priority columns\r\n const tieComparisons = [\r\n { column: 'Clicks', comparison: this.getComparisonValue(a, b, { value: 2 }), sortDescending },\r\n { column: 'Sales', comparison: this.getComparisonValue(a, b, { value: 3 }), sortDescending },\r\n { column: 'Conversion Rate', comparison: this.getComparisonValue(a, b, { value: 4 }), sortDescending },\r\n { column: 'Name', comparison: this.getComparisonValue(a, b, { value: 1 }), sortDescending },\r\n { column: 'Merchant', comparison: this.getComparisonValue(a, b, { value: 5 }), sortDescending },\r\n { column: 'Price', comparison: this.getComparisonValue(a, b, { value: 6 }), sortDescending }\r\n ];\r\n\r\n // filter out the passed in e option from further consideration\r\n const filteredTieComparisons = tieComparisons.filter(item => item.column !== e.label);\r\n\r\n for (let i = 0; i < filteredTieComparisons.length; i++) {\r\n if (tieComparisons[i].comparison !== 0) {\r\n // Respect sortDescending flag for tie comparisons\r\n return sortDescending ? tieComparisons[i].comparison : -tieComparisons[i].comparison;\r\n }\r\n }\r\n\r\n // Default comparison if all columns are equal\r\n return 0;\r\n }\r\n };\r\n\r\n\r\n // Sort the analytics array using the custom comparison function\r\n sortedAnalytics.sort(compareFunction);\r\n\r\n this.setState({ analyticsByProductDatas: sortedAnalytics, selectOptions });\r\n };\r\n\r\n handleMerchantSortSelect = async (e, data = null) => {\r\n let selectOptions = { ...this.state.merchantSelectOptions };\r\n const sortDescending = !!(e) && !!(e.label) && e.label === this.state.merchantSelectOptions.currentValue.label ? !this.state.merchantSortDescending : true;\r\n if (!e) {\r\n e = selectOptions.currentValue;\r\n } else {\r\n selectOptions.currentValue = e;\r\n }\r\n\r\n const analyticsByMerchant = !!(data) && data.length > 0 ? data : this.state.analyticsByMerchant;\r\n\r\n let sortedAnalytics = [...analyticsByMerchant];\r\n\r\n this.setState({ merchantSortDescending: sortDescending });\r\n\r\n const compareFunction = (a, b) => {\r\n const comparison = this.getMerchantComparisonValue(a, b, e);\r\n\r\n if (comparison !== 0) {\r\n // Respect sortDescending flag for the initial comparison\r\n return sortDescending ? comparison : -comparison;\r\n } else {\r\n // Check for ties and sort by next priority columns\r\n const tieComparisons = [\r\n { column: 'Merchant', comparison: this.getMerchantComparisonValue(a, b, { value: 1 }), sortDescending },\r\n { column: 'Clicks', comparison: this.getMerchantComparisonValue(a, b, { value: 2 }), sortDescending },\r\n { column: 'Sales', comparison: this.getMerchantComparisonValue(a, b, { value: 3 }), sortDescending },\r\n { column: 'Conversion Rate', comparison: this.getMerchantComparisonValue(a, b, { value: 4 }), sortDescending },\r\n ];\r\n\r\n // filter out the passed in e option from further consideration\r\n const filteredTieComparisons = tieComparisons.filter(item => item.column !== e.label);\r\n\r\n for (let i = 0; i < filteredTieComparisons.length; i++) {\r\n if (tieComparisons[i].comparison !== 0) {\r\n // Respect sortDescending flag for tie comparisons\r\n return sortDescending ? tieComparisons[i].comparison : -tieComparisons[i].comparison;\r\n }\r\n }\r\n\r\n // Default comparison if all columns are equal\r\n return 0;\r\n }\r\n };\r\n\r\n\r\n // Sort the analytics array using the custom comparison function\r\n sortedAnalytics.sort(compareFunction);\r\n\r\n this.setState({ analyticsByMerchant: sortedAnalytics, merchantSelectOptions: selectOptions });\r\n };\r\n\r\n // Helper function to get the comparison value based on the column\r\n getComparisonValue = (a, b, e, sortDescending) => {\r\n if (e.value === 1) {\r\n return sortDescending ? a.name.localeCompare(b.name) : b.name.localeCompare(a.name);\r\n } else if (e.value === 2) {\r\n return sortDescending ? a.clicks - b.clicks :b.clicks - a.clicks;\r\n } else if (e.value === 3) {\r\n return sortDescending ? a.sales - b.sales : b.sales - a.sales;\r\n } else if (e.value === 4) {\r\n return sortDescending ? a.conversionRate - b.conversionRate : b.conversionRate - a.conversionRate;\r\n } else if (e.value === 5) {\r\n return sortDescending ? a.merchant.localeCompare(b.merchant) : b.merchant.localeCompare(a.merchant);\r\n } else if (e.value === 6) {\r\n return sortDescending ? a.price - b.price : b.price - a.price;\r\n } else {\r\n // Default comparison if e.value is not recognized\r\n return 0;\r\n }\r\n };\r\n\r\n // Helper function to get the comparison value based on the column\r\n getMerchantComparisonValue = (a, b, e, sortDescending) => {\r\n if (e.value === 1) {\r\n return sortDescending ? a.merchant.localeCompare(b.merchant) : b.merchant.localeCompare(a.merchant);\r\n } else if (e.value === 2) {\r\n return sortDescending ? a.clicks - b.clicks : b.clicks - a.clicks;\r\n } else if (e.value === 3) {\r\n return sortDescending ? a.sales - b.sales : b.sales - a.sales;\r\n } else if (e.value === 4) {\r\n return sortDescending ? a.conversionRate - b.conversionRate : b.conversionRate - a.conversionRate;\r\n } else {\r\n // Default comparison if e.value is not recognized\r\n return 0;\r\n }\r\n };\r\n\r\n handleSourceReferrerClick = (sourceSortReferrer = !this.state.sourceSortReferrer) => {\r\n this.setState({ sourceSortReferrer, sourceSortAscending: sourceSortReferrer !== this.state.sourceSortReferrer ? false : this.state.sourceSortAscending });\r\n }\r\n\r\n render() {\r\n\r\n if (this.state.loading) {\r\n return\r\n }\r\n return (\r\n <>\r\n \r\n\r\n {this.state.loading ?\r\n <>\r\n <>\r\n \r\n :\r\n <>\r\n \r\n RockPorch - Analytics\r\n \r\n\r\n
    \r\n \r\n

    Analytics

    \r\n

    Reporting on traffic and commissions

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n {\r\n this.state.selectedCase === 2 ?\r\n \r\n :\r\n <>\r\n } \r\n\r\n \r\n\r\n {\r\n this.state.selectedCase === 4 ?\r\n \r\n :\r\n <>\r\n }\r\n\r\n
    \r\n \r\n }\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default Analytics;","import React, { Component } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport Select from 'react-select'\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport _ from \"lodash\";\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass BrandAnalyticsChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 1 })).toUTC(),\r\n endDate: asDate(DateTime.now()).toUTC()\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 7 })).toUTC(),\r\n endDate: asDate(DateTime.now()).toUTC()\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 30 })).toUTC(),\r\n endDate: asDate(DateTime.now()).toUTC()\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now()).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.state = {\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate\r\n ],\r\n defaultValue: this.selectOptions.last7Days,\r\n currentValue: this.selectOptions.last7Days,\r\n },\r\n series: [\r\n {\r\n name: 'Merchant Redirects',\r\n type: 'line',\r\n data: []\r\n },\r\n {\r\n name: 'Sales Count',\r\n type: 'line',\r\n data: []\r\n },\r\n {\r\n name: 'Estimated Commissions',\r\n type: 'bar',\r\n data: []\r\n }\r\n ],\r\n options: {\r\n chart: {\r\n height: 350,\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n markers: {\r\n size: [1, 1, 1],\r\n },\r\n stroke: {\r\n width: [2, 2, 2]\r\n },\r\n dataLabels: {\r\n enabled: false,\r\n enabledOnSeries: [2]\r\n },\r\n labels: [],\r\n xaxis: {\r\n type: 'datetime'\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Merchant Redirects',\r\n title: {\r\n text: 'Count'\r\n },\r\n labels: {\r\n // Formats the number displayed on the y-axis label and in the tooltip\r\n formatter: function (val) {\r\n return val.toFixed(0);\r\n }\r\n }\r\n },\r\n {\r\n seriesName: 'Merchant Redirects',\r\n show: false,\r\n labels: {\r\n // Formats the number displayed on the y-axis label and in the tooltip\r\n formatter: function (val) {\r\n return val.toFixed(0);\r\n }\r\n }\r\n },\r\n {\r\n seriesName: 'Commissions Earned',\r\n opposite: true,\r\n title: {\r\n text: '$',\r\n },\r\n }\r\n ]\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.props.getAnalytics(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.props.analytics.length === 0) {\r\n return (\r\n \r\n No data for this time frame\r\n \r\n );\r\n }\r\n\r\n let aggregated = [];\r\n\r\n this.props.analytics.forEach((dataPoint, i) => {\r\n\r\n let dt2 = new Date(dataPoint.date).toLocaleDateString(\"en-us\");\r\n let found = aggregated.findIndex(el => el.date === dataPoint.date);\r\n if (found === -1) {\r\n aggregated.push({ ...dataPoint });\r\n }\r\n else {\r\n aggregated[found].productClicks = aggregated[found].productClicks + dataPoint.productClicks;\r\n aggregated[found].productViews = aggregated[found].productViews + dataPoint.productViews;\r\n aggregated[found].postViews = aggregated[found].postViews + dataPoint.postViews;\r\n aggregated[found].salesCount = aggregated[found].salesCount + dataPoint.salesCount;\r\n aggregated[found].commissionsEarned = aggregated[found].commissionsEarned + dataPoint.commissionsEarned;\r\n }\r\n })\r\n\r\n return aggregated.map((data, i) => {\r\n if (data.productClicks > 0 || data.salesCount > 0 || data.commissionsEarned > 0) {\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDay(data.date, false)}\r\n \r\n \r\n {data.productClicks}\r\n \r\n \r\n {data.salesCount}\r\n \r\n \r\n ${data.commissionsEarned.toFixed(2)}\r\n \r\n );\r\n }\r\n }).reverse();\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Date\", \"Merchant Redirects\", \"Sales Count\", \"Estimated Commission\"];\r\n let infoIcon = [\"\", \"A User has clicked a link that redirected them to a Merchant’s site\", \"A User placed an order with a Merchant within the allowable cookie life\", \"The estimated commission earned across all orders. See RockPorch ToS for more detail\"]\r\n\r\n return headers.map((header, i) => {\r\n return (\r\n \r\n {header}\r\n {i > 1 ?\r\n <>\r\n \r\n \r\n \r\n \r\n {infoIcon[i]}\r\n \r\n \r\n : null}\r\n\r\n \r\n )\r\n })\r\n }\r\n\r\n displayTotals = () => {\r\n let totalAnalytics = {\r\n postViews: 0,\r\n productClicks: 0,\r\n productViews: 0,\r\n salesConversionPercentage: 0,\r\n salesCount: 0,\r\n commissionsEarned: 0\r\n }\r\n\r\n this.props.analytics.forEach((dataPoint) => {\r\n totalAnalytics.postViews += dataPoint.postViews;\r\n totalAnalytics.productClicks += dataPoint.productClicks;\r\n totalAnalytics.productViews += dataPoint.productViews;\r\n totalAnalytics.salesCount += dataPoint.salesCount;\r\n totalAnalytics.commissionsEarned += dataPoint.commissionsEarned;\r\n })\r\n\r\n return (\r\n \r\n \r\n \r\n Totals\r\n \r\n \r\n \r\n \r\n {totalAnalytics.productClicks}\r\n \r\n \r\n \r\n \r\n {totalAnalytics.salesCount}\r\n \r\n \r\n \r\n \r\n ${totalAnalytics.commissionsEarned.toFixed(2)}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new DateTime(start); dt < end; dt = dt.plus({ days: 1 })) {\r\n arr.push(dt.toJSDate());\r\n }\r\n return arr;\r\n };\r\n\r\n displayChart = () => {\r\n var data = [];\r\n var labels = [];\r\n\r\n const dateRange = this.state.selectOptions.currentValue.getDateRange();\r\n var dates = this.getDaysBetweenDates(dateRange.startDate, dateRange.endDate);\r\n dates.forEach(date => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(date, false);\r\n\r\n if (!data.find(x => x.date == formattedDate)) {\r\n\r\n data.push({\r\n date: formattedDate,\r\n postViews: 0,\r\n productViews: 0,\r\n productClicks: 0,\r\n salesCount: 0,\r\n commissionsEarned: 0\r\n });\r\n\r\n const formattedLabelDate = convertToNumericMonthAndDayAndYear(date, false);\r\n labels.push(formattedLabelDate);\r\n }\r\n });\r\n\r\n this.props.analytics.forEach(analytic => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(new Date(analytic.date), false);\r\n const item = _.find(data, (item) => item?.date === formattedDate);\r\n if (item) {\r\n item.postViews += analytic.postViews;\r\n item.productViews += analytic.productViews;\r\n item.productClicks += analytic.productClicks;\r\n item.salesCount += analytic.salesCount;\r\n item.commissionsEarned += analytic.commissionsEarned;\r\n }\r\n });\r\n\r\n const { options, series } = this.state;\r\n series[0].data = data.map((item) => item.productClicks);\r\n series[1].data = data.map((item) => item.salesCount);\r\n series[2].data = data.map((item) => item.commissionsEarned);\r\n options.labels = labels;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n defaultValue={this.state.selectOptions.defaultValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.analyticsLoading ?\r\n :\r\n <>\r\n {this.displayChart()}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n {this.displayTotals()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default BrandAnalyticsChart;","import React, { Component } from \"react\";\r\nimport ReactApexChart from \"react-apexcharts\";\r\nimport InformationIcon from \"components/icons/InformationIcon\";\r\nimport Select from 'react-select'\r\nimport { UncontrolledPopover, PopoverBody } from \"reactstrap\";\r\nimport _, { forEach } from \"lodash\";\r\nimport { asDate, convertToLocaleDateTimeString, convertToNumericMonthAndDayAndYear, convertToNumericMonthAndDay, convertToAbbreviatedMonthAndDay } from \"sharedUtils/timeUtils\";\r\nimport LoadSpinner from \"./LoadSpinner\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass BrandCommissionsChart extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.selectOptions = {\r\n last24Hours: {\r\n value: 0,\r\n label: \"Yesterday\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 1 })).toUTC(),\r\n endDate: asDate(DateTime.now()).toUTC()\r\n }\r\n }\r\n },\r\n last7Days: {\r\n value: 1,\r\n label: \"Last 7 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 7 })).toUTC(),\r\n endDate: asDate(DateTime.now().plus({ days: 1 })).toUTC()\r\n }\r\n }\r\n },\r\n last30Days: {\r\n value: 2,\r\n label: \"Last 30 Days\",\r\n getDateRange: () => {\r\n return {\r\n startDate: asDate(DateTime.now().minus({ days: 30 })).toUTC(),\r\n endDate: asDate(DateTime.now().plus({ days: 1 })).toUTC()\r\n }\r\n }\r\n },\r\n last90Days: {\r\n value: 3,\r\n label: \"Last 90 Days\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.now().minus({ days: 90 })).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n },\r\n yearToDate: {\r\n value: 4,\r\n label: \"Year To Date\",\r\n getDateRange: () => {\r\n let startDate = asDate(DateTime.local(DateTime.now().year, 1, 1)).toUTC();\r\n let endDate = asDate(DateTime.now().plus({ days: 1 })).toUTC();\r\n\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.state = {\r\n selectOptions: {\r\n options: [\r\n this.selectOptions.last24Hours,\r\n this.selectOptions.last7Days,\r\n this.selectOptions.last30Days,\r\n this.selectOptions.last90Days,\r\n this.selectOptions.yearToDate,\r\n ],\r\n defaultValue: this.selectOptions.last7Days,\r\n currentValue: this.selectOptions.last7Days,\r\n },\r\n series: [\r\n {\r\n name: 'Estimated Commissions',\r\n type: 'bar',\r\n data: []\r\n }\r\n ],\r\n options: {\r\n chart: {\r\n height: 350,\r\n type: 'bar',\r\n toolbar: {\r\n show: false\r\n },\r\n zoom: {\r\n enabled: false\r\n }\r\n },\r\n markers: {\r\n size: [4],\r\n },\r\n stroke: {\r\n width: [4]\r\n },\r\n labels: [],\r\n xaxis: {\r\n type: 'datetime'\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Estimated Commissions',\r\n title: {\r\n text: '$',\r\n },\r\n labels: {\r\n // Formats the number displayed on the y-axis label\r\n formatter: function (val) {\r\n return val.toFixed(2);\r\n }\r\n }\r\n }\r\n ],\r\n dataLabels: {\r\n formatter: function (val) {\r\n // Formats the number displayed on the bar\r\n return val.toFixed(2);\r\n }\r\n }\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.handleSelect(this.state.selectOptions.defaultValue);\r\n }\r\n\r\n handleSelect = async (selectedOption) => {\r\n if (selectedOption) {\r\n const selectOptions = { ...this.state.selectOptions };\r\n selectOptions.currentValue = selectedOption;\r\n this.setState({ selectOptions });\r\n }\r\n const dateRange = selectedOption?.getDateRange();\r\n this.props.getCommissions(dateRange?.startDate, dateRange?.endDate);\r\n }\r\n\r\n displayTableRows = () => {\r\n if (this.props.commissions.length === 0) {\r\n return (\r\n \r\n No data for this time frame\r\n \r\n );\r\n }\r\n\r\n let aggregated = [];\r\n\r\n this.props.commissions.forEach((commission) => {\r\n let found = aggregated.findIndex(el => el.username === commission.username && el.status === commission.status);\r\n\r\n if (found === -1) {\r\n aggregated.push({ ...commission });\r\n }\r\n else {\r\n aggregated[found].purchaseAmount += commission.purchaseAmount;\r\n aggregated[found].qualifiedCommissionAmount += commission.qualifiedCommissionAmount;\r\n\r\n }\r\n\r\n })\r\n\r\n return aggregated.map((data, i) => {\r\n return (\r\n \r\n {/*\r\n \r\n {convertToNumericMonthAndDay(new Date(data.createdDate), false)}\r\n \r\n */}\r\n \r\n {data.username}\r\n \r\n \r\n {data.purchaseAmount.toFixed(2)}\r\n \r\n \r\n {data.returnAmount.toFixed(2)}\r\n \r\n \r\n {data.qualifiedCommissionAmount.toFixed(2)}\r\n \r\n {/*\r\n \r\n {convertToNumericMonthAndDay(data.paymentDate, false)}\r\n \r\n */}\r\n \r\n {data.status}\r\n \r\n );\r\n });\r\n }\r\n\r\n displayTotals = () => {\r\n let totals = {\r\n purchaseAmount: 0,\r\n returnAmount: 0,\r\n qualifiedCommissionAmount:0\r\n }\r\n\r\n this.props.commissions.forEach((commission) => {\r\n totals.purchaseAmount += commission.purchaseAmount;\r\n totals.qualifiedCommissionAmount += commission.qualifiedCommissionAmount;\r\n })\r\n\r\n return (\r\n \r\n \r\n \r\n Totals\r\n \r\n \r\n\r\n \r\n \r\n ${totals.purchaseAmount.toFixed(2)}\r\n \r\n \r\n\r\n \r\n \r\n ${totals.returnAmount.toFixed(2)}\r\n \r\n \r\n\r\n \r\n \r\n ${totals.qualifiedCommissionAmount.toFixed(2)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [/*\"Date\",*/ \"Creator\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", /*\"Eligible Date\",*/ \"Status\"];\r\n let infoIcon = [/*\"\",*/ \"\", \"The total sales dollars generated after a User clicked a Buy Now link from this Creator\", \"The dollar amount of returns on the sale\", \"The estimated commission earned by the order. See RockPorch ToS for more detail.\", \"The date a commission is eligible for payment. See RockPorch ToS for more detail.\",\r\n [\"Qualified - The commission was generated by a Qualified Purchase and is held by the merchant or other parties for a period to account for returns, refunds, or other adjustments.\",\r\n \"Eligible - The net commission eligible for payment.Eligible commissions are paid at each RockPorch payment interval so long as the total Eligible Commissions exceed $100.\",\r\n \"Pending - The commission is ready for payment and will be paid at the next RockPorch payment interval.\",\r\n \"Paid - The commission payment has been remitted.\"]]\r\n\r\n return headers.map((header, i) => {\r\n return (\r\n \r\n {header}\r\n {i > 0 ?\r\n <>\r\n \r\n \r\n \r\n \r\n {i !== 6 ?\r\n {infoIcon[i]}\r\n : {infoIcon[i].map((item) => { return <>{item}
    })}
    }\r\n \r\n \r\n : null}\r\n\r\n \r\n )\r\n })\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new DateTime(start); dt < end; dt = dt.plus({ days: 1 })) {\r\n arr.push(dt.toJSDate());\r\n }\r\n return arr;\r\n };\r\n\r\n displayChart = () => {\r\n var data = []; // [{ x: '07/31/2021', y: 2.30 }]\r\n var labels = [];\r\n\r\n const dateRange = this.state.selectOptions.currentValue.getDateRange();\r\n var dates = this.getDaysBetweenDates(dateRange.startDate, dateRange.endDate);\r\n dates.forEach(date => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(date, false);\r\n\r\n if (!data.find(x => x.x == formattedDate)) {\r\n\r\n data.push({ x: formattedDate, y: 0 });\r\n\r\n const formattedLabelDate = convertToNumericMonthAndDayAndYear(date, false);\r\n labels.push(formattedLabelDate);\r\n }\r\n });\r\n\r\n this.props.commissions.forEach(commission => {\r\n const formattedDate = convertToNumericMonthAndDayAndYear(new Date(commission.createdDate), false);\r\n\r\n const item = _.find(data, (item) => item?.x === formattedDate);\r\n if (item) {\r\n item.y += commission.qualifiedCommissionAmount;\r\n } else {\r\n data.push({ x: formattedDate, y: commission.qualifiedCommissionAmount });\r\n }\r\n\r\n const label = _.find(labels, (label) => label === formattedDate);\r\n if (!label) {\r\n labels.push(formattedDate);\r\n }\r\n });\r\n\r\n const { options, series } = this.state;\r\n series[0].data = data;\r\n options.labels = labels;\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.handleSelect(e) }}\r\n options={this.state.selectOptions.options}\r\n defaultValue={this.state.selectOptions.defaultValue}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.commissionsLoading ?\r\n :\r\n <>\r\n {this.displayChart()}\r\n
    \r\n
    \r\n \r\n \r\n {/**/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n {this.displayTotals()}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default BrandCommissionsChart;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"../../components/LoadSpinner\";\r\nimport BrandAnalyticsChart from \"../../components/BrandAnalyticsChart\";\r\nimport BrandCommissionsChart from \"../../components/BrandCommissionsChart\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass BrandAnalytics extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n filter: \"\",\r\n filteredPartners: [],\r\n partners: [],\r\n loading: false,\r\n analyticsLoading: false,\r\n commissionsLoading: false,\r\n sectors: [],\r\n partnerSectors: [],\r\n selectedSectors: [],\r\n analytics: [],\r\n commissions: []\r\n }\r\n\r\n breadCrumbList = [{ link: '/Account/CreatorDashboard', text: 'Creator Dashboard' }, { link: '/Account/BrandAnalytics', text: 'Analytics', active: true }];\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n getCommissions = async (startDate, endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let getCommissionsUrl = '/api/Merchant/GetBrandCommissions';\r\n\r\n if (startDate) {\r\n getCommissionsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getCommissionsUrl += getCommissionsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getCommissionsUrl += `&offset=${offset}`\r\n\r\n this.setState({ commissionsLoading: true });\r\n let commissions = await getRequest(getCommissionsUrl) ?? [];\r\n\r\n this.setState({ commissions: commissions, loading: false, commissionsLoading: false });\r\n }\r\n\r\n getDaysBetweenDates = function (start, end) {\r\n for (var arr = [], dt = new Date(start); dt <= end; dt.setDate(dt.getDate() + 1)) {\r\n arr.push(new Date(dt));\r\n }\r\n return arr;\r\n };\r\n\r\n getMockAnalytics = (startDate, endDate) => {\r\n var mockAnalytics = [];\r\n var dates = this.getDaysBetweenDates(startDate, endDate);\r\n dates.forEach((date, i) => {\r\n var shouldInclude = Math.random() < 0.5; // 50% probability of getting true\r\n if (shouldInclude) {\r\n const formattedDate = date.toISOString().split('T')[0] + 'T00:00:00';\r\n const postViews = Math.floor(Math.random() * 100 + 1); // Random integer from 0 to 100\r\n const productViews = Math.floor(Math.random() * postViews + 1);\r\n const productClicks = Math.floor(Math.random() * productViews + 1);\r\n const salesCount = Math.floor(Math.random() * productClicks + 1);\r\n const salesConversionPercentage = salesCount / productClicks;\r\n const commissionsEarned = parseInt(Math.floor(Math.random() * salesCount + 1));\r\n mockAnalytics.push({\r\n \"$id\": (mockAnalytics.length + 1).toString(),\r\n date: formattedDate,\r\n postViews: postViews,\r\n productViews: productViews,\r\n productClicks: productClicks,\r\n salesCount: salesCount,\r\n salesConversionPercentage: salesConversionPercentage,\r\n commissionsEarned: commissionsEarned\r\n });\r\n }\r\n });\r\n return mockAnalytics;\r\n }\r\n\r\n getAnalytics = async (startDate, endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetBrandAnalytics';\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.toSQL({ includeOffset: false })}` : `?endDate=${endDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n this.setState({ analyticsLoading: true });\r\n\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const useMockData = urlParams.get('useMockData');\r\n\r\n let analytics = useMockData ? this.getMockAnalytics(startDate, endDate) : await getRequest(getAnalyticsUrl) ?? [];\r\n this.setState({ analytics: analytics, loading: false, analyticsLoading: false });\r\n };\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Analytics\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Commissions\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n }\r\n ];\r\n\r\n return options.map((toggle, i) => {\r\n return (\r\n \r\n )\r\n })\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return \r\n }\r\n return (\r\n <>\r\n
    \r\n \r\n

    Analytics

    \r\n

    Reporting on traffic and commissions

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.displayToggleButtons()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n\r\n \r\n
    \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default BrandAnalytics;","import React from \"react\";\r\n\r\nclass ErrorTest extends React.Component {\r\n\r\n componentDidMount = () => {\r\n let a = this.state.errorTesting.errorTesting;\r\n }\r\n\r\n render() {\r\n return <>\r\n }\r\n}\r\n\r\nexport default ErrorTest;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\"\r\nclass NotFound extends React.Component {\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n
    Not all who wander are lost
    \r\n
    But we can't find the page you're looking for
    \r\n
    \r\n Enjoy the view and go \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default NotFound;","import React from \"react\";\r\nimport { postRequest } from \"sharedUtils/httpUtils\";\r\nimport LoadSpinner from \"./LoadSpinner\"\r\nimport StackTrace from \"stacktrace-js\";\r\n\r\nclass ErrorBoundary extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { hasError: false, error: \"\", errorInfo: \"\" };\r\n }\r\n\r\n static getDerivedStateFromError(error) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true };\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n StackTrace.fromError(error).then(async (err) => {\r\n await postRequest('/api/ErrorLogger/LogError', { error: error.toString(), stack: err.toString() } );\r\n window.location = \"/ErrorPage\" });\r\n this.setState({ error, errorInfo });\r\n }\r\n\r\n render() {\r\n const { error } = this.state\r\n\r\n // if there's an error render the fallback UI\r\n // otherwise render the child component(s)\r\n return error ? (\r\n \r\n ) : (\r\n <>\r\n {this.props.children}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ErrorBoundary;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Form } from \"reactstrap\";\r\n\r\nclass InstagramAuth extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n if (this.props.location.search === \"\") {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Connecting to Instagram ...\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n You have successfully connected your Instagram account!\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default InstagramAuth;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Form } from \"reactstrap\";\r\n\r\nclass TikTokAuth extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n if (this.props.location.search === \"\") {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Connecting to TikTok ...\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n }\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n You have successfully connected your TikTok account!\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default TikTokAuth;","import React from \"react\";\r\nimport AccountBanner from \"./AccountBanner\"\r\nimport { Helmet } from 'react-helmet';\r\n\r\nclass Contact extends React.Component {\r\n\r\n componentDidMount = async () => {\r\n let scrollOptions = {\r\n left: 0,\r\n top: 0,\r\n behavior: 'auto'\r\n }\r\n window.scrollTo(scrollOptions);\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n RockPorch - Contact\r\n \r\n
    \r\n \r\n

    Contact

    \r\n

    Need to get in touch with us?

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    General inquiries

    \r\n info@rockporch.com\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    General help

    \r\n help@rockporch.com\r\n
    \r\n
    \r\n {this.props.loggedInUser?.proStatusId === 2 ?\r\n
    \r\n
    \r\n

    Merchant Partner Support

    \r\n merchantsupport@rockporch.com\r\n
    \r\n
    : <>}\r\n {this.props.loggedInUser?.proStatusId === 1 ?\r\n
    \r\n
    \r\n

    Creator Support

    \r\n creatorsupport@rockporch.com\r\n
    \r\n
    : <>}\r\n
    \r\n
    \r\n

    Report an issue

    \r\n report@rockporch.com\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport default Contact;","import React, { Component } from 'react';\r\nimport { getRequest } from \"../sharedUtils/httpUtils\";\r\n\r\nclass ChatBot extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.lastMessageRef = React.createRef();\r\n this.messageContainerRef = React.createRef();\r\n this.textareaRef = React.createRef();\r\n\r\n this.messageContainerRef = React.createRef();\r\n this.observer = null; \r\n }\r\n\r\n state = {\r\n messages: [],\r\n inputText: '',\r\n isSubmitting: false,\r\n scrollToBottomOnTyping: true,\r\n scrollPosition: 0,\r\n currentIndex: 0,\r\n };\r\n\r\n componentDidMount = () => {\r\n this.props.setShowTopNav(false);\r\n this.addBotMessage('Hi and welcome to the RockPorch ChatBot!\\n\\nAsk me a question below about any topic you like!\\n\\nFeel free to ask about product recommendations related to your interests.');\r\n this.observer = new MutationObserver(this.handleMutation);\r\n const config = { attributes: true, childList: true, subtree: true };\r\n this.observer.observe(this.messageContainerRef.current, config);\r\n }\r\n\r\n componentDidUpdate = () => {\r\n if (this.state.scrollToBottomOnTyping) {\r\n this.scrollToLastMessage();\r\n }\r\n\r\n this.adjustTextareaHeight();\r\n }\r\n\r\n componentWillUnmount = () => {\r\n if (this.observer) {\r\n this.observer.disconnect();\r\n }\r\n }\r\n\r\n handleScroll = (e) => {\r\n const messageContainer = e.target;\r\n const { scrollTop, scrollHeight, clientHeight } = messageContainer;\r\n\r\n // Check if the user has scrolled to the bottom (with a small threshold)\r\n const atBottom = scrollTop + clientHeight + 5 >= scrollHeight;\r\n\r\n // Check if the user is actively scrolling (not just the page being programmatically scrolled)\r\n if (scrollTop !== this.state.scrollPosition) {\r\n const upwardScroll = scrollTop < this.state.scrollPosition;\r\n\r\n // Update the scrollToBottomOnTyping state based on the scroll behavior\r\n this.setState({ scrollPosition: scrollTop, scrollToBottomOnTyping: atBottom && !upwardScroll });\r\n }\r\n };\r\n\r\n\r\n handleMutation = (mutationsList, observer) => {\r\n // Iterate through the mutations\r\n for (const mutation of mutationsList) {\r\n // Check if the height of the container has changed\r\n if (mutation.type === 'childList' || mutation.type === 'attributes') {\r\n const messageContainer = this.messageContainerRef.current;\r\n const newDivHeight = messageContainer.getBoundingClientRect().height;\r\n if (newDivHeight !== this.lastDivHeight) {\r\n this.lastDivHeight = newDivHeight;\r\n if (this.state.scrollToBottomOnTyping) {\r\n this.scrollToLastMessage();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n formatBotMessage = (message) => {\r\n let formattedMessage = message;\r\n\r\n // Check for anchor tags and replace them with appropriate formatting\r\n const anchorRegex = /]*?\\s+)?href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>/g;\r\n formattedMessage = formattedMessage.replace(anchorRegex, '$2');\r\n\r\n // Check for image tags and replace them with the image element\r\n const imageRegex = //g;\r\n formattedMessage = formattedMessage.replace(imageRegex, '');\r\n //console.log(formattedMessage);\r\n return (\r\n \r\n );\r\n };\r\n\r\n\r\n addBotMessage = (message) => {\r\n var content = this.formatBotMessage(message);\r\n this.setState((prevState) => ({\r\n messages: [...prevState.messages, { type: 'bot', content }],\r\n }));\r\n };\r\n\r\n scrollToLastMessage = () => {\r\n this.lastMessageRef.current.scrollIntoView({ behavior: 'smooth' });\r\n };\r\n\r\n scrollToInput = () => {\r\n const messageContainer = this.messageContainerRef.current;\r\n messageContainer.scrollTop = messageContainer.scrollHeight;\r\n };\r\n\r\n handleInputChange = (e) => {\r\n this.setState({ inputText: e.target.value }, this.adjustTextareaHeight);\r\n };\r\n\r\n adjustTextareaHeight = () => {\r\n const textarea = this.textareaRef.current;\r\n\r\n // Reset the height first\r\n textarea.style.height = 'auto';\r\n // Set the height based on content\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n };\r\n\r\n handleSendMessage = async () => {\r\n const { inputText, messages } = this.state;\r\n\r\n if (inputText.trim() !== '') {\r\n this.setState({\r\n messages: [\r\n ...messages,\r\n { type: 'user', content: this.formatBotMessage(inputText) },\r\n ],\r\n isSubmitting: true,\r\n inputText: '',\r\n scrollToBottomOnTyping: true,\r\n });\r\n\r\n const url = \"search/GetChatGPTProductUrls?searchText=\" + this.state.inputText + \"&referrer=\" + document.referrer;\r\n const response = await getRequest(url);\r\n\r\n if (!!response && !!response.textResponse) {\r\n let textResponse = response.textResponse;\r\n if (response.referralLinkReplacements !== undefined && response.referralLinkReplacements !== null && response.referralLinkReplacements.length > 0) {\r\n // Replace occurrences of the replacementCode with the title and image in the textResponse\r\n response.referralLinkReplacements.forEach((replacement) => {\r\n\r\n const regex = new RegExp(replacement.replacementCode, 'g');\r\n let url = null;\r\n if (!!replacement.shareCode) {\r\n url = \"/prd/\" + replacement.shareCode + \"?browse=true\";\r\n }\r\n const anchorTag = !!url\r\n ? `${replacement.title}`\r\n : replacement.title;\r\n\r\n // Check if there's a shareCode and imageUrl and add the image element within the anchor tag\r\n if (!!replacement.shareCode && !!replacement.imageUrl) {\r\n const imgElement = ``;\r\n textResponse = textResponse.replace(regex, `${imgElement}${anchorTag}`);\r\n\r\n } else {\r\n textResponse = textResponse.replace(regex, anchorTag);\r\n }\r\n });\r\n }\r\n const content = this.formatBotMessage(textResponse);\r\n this.setState(\r\n (prevState) => ({\r\n response,\r\n messages: [\r\n ...prevState.messages,\r\n { type: 'bot', content },\r\n ],\r\n isSubmitting: false\r\n }));\r\n this.textareaRef.current.focus();\r\n } else {\r\n this.setErrorMessage();\r\n this.textareaRef.current.focus();\r\n }\r\n };\r\n };\r\n\r\n\r\n renderBotMessage = (messageHtml) => {\r\n const formattedString = messageHtml.props.dangerouslySetInnerHTML.__html;\r\n const regex = /(]*>[\\s\\S]*?<\\/a>|<[^>]+>|[^<]+)/g;\r\n const elements = formattedString.split(regex).filter((el) => el.trim() !== '');\r\n\r\n const content = elements.map((element, index) => {\r\n if (element.startsWith('<')) {\r\n // If it's an HTML element, push it directly into the content array\r\n return ;\r\n } else {\r\n // If it's a pure text, push it into the content array as a ReactTyped element\r\n return (\r\n {element}\r\n );\r\n }\r\n });\r\n\r\n return
    {content}
    ;\r\n };\r\n\r\n setErrorMessage = () => {\r\n const content = this.formatBotMessage(\"AN ERROR OCCURRED. Please resubmit your question\");\r\n this.setState({\r\n messages: [\r\n ...this.state.messages,\r\n { type: 'bot', content },\r\n ],\r\n isSubmitting: false,\r\n });\r\n }\r\n\r\n render() {\r\n const { messages, inputText } = this.state;\r\n\r\n return (\r\n
    \r\n
    \r\n {messages.map((message, index) => (\r\n
    \r\n {/* Check if it's the last bot message and apply the typing effect IF TYPING CODE ADDED BACK IN */}\r\n {message.type === 'bot' && index === messages.length - 1 ? (\r\n this.renderBotMessage(message.content)\r\n ) : (\r\n message.content\r\n )}\r\n
    \r\n ))}\r\n {this.state.isSubmitting && (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n} \r\n\r\nexport default ChatBot;\r\n","import React, { Component } from \"react\";\r\nimport { Route, Switch, withRouter } from \"react-router\";\r\nimport Layout from \"./components/Layout\";\r\nimport AuthorizedLanding from \"components/api-authorization/AuthorizedLanding\";\r\nimport AuthorizeRoute from \"./components/api-authorization/AuthorizeRoute\";\r\nimport AdminRoute from \"components/api-authorization/AdminRoute\";\r\nimport ApiAuthorizationRoutes from \"./components/api-authorization/ApiAuthorizationRoutes\";\r\nimport { ApplicationPaths } from \"./components/api-authorization/ApiAuthorizationConstants\";\r\nimport AccountIndex from \"./views/Account/Index\";\r\nimport CreatorDashboard from \"./views/Account/CreatorDashboard\";\r\nimport NewCreatorDashboard from \"./views/CreatorDashboard/CreatorDashboard\";\r\nimport AccountSaves from \"./views/Account/Saves\";\r\nimport MyProducts from \"views/Account/MyProducts\";\r\nimport EditProfile from \"./views/Account/EditProfile\";\r\nimport GoPro from \"./views/Account/GoPro\";\r\nimport CreatorApp from \"./views/Account/CreatorApp\";\r\nimport AccountSettings from \"./views/Account/AccountSettings\";\r\nimport ProSettings from \"./views/Account/ProSettings\";\r\nimport Drafts from \"views/Account/Drafts\";\r\nimport CommunicationSettings from \"./views/Account/CommunicationSettings\";\r\nimport SiteMap from \"./views/SiteMap/SiteMap\";\r\nimport NotificationsAndMessages from \"./views/Account/NotificationsAndMessages\";\r\nimport LockerPage from './views/Locker/LockerPage';\r\nimport ProductPage from \"./views/Product/ProductPage\";\r\nimport ProductPageEmbed from \"./views/Embed/ProductPageEmbed\";\r\nimport ProductPageEmbedBrand from \"./views/Embed/ProductPageEmbedBrand\";\r\nimport NewLockerPage from \"./views/Locker/NewLockerPage\";\r\nimport PostPageAuthor from \"./views/Post/PostPageAuthor\";\r\nimport NewBlogPage from \"./views/Blog/NewBlogPage\";\r\nimport PostPage from \"./views/Post/PostPage\";\r\nimport BlogPage from \"./views/Blog/BlogPage\"\r\nimport PostPageEmbed from \"./views/Embed/PostPageEmbed\";\r\nimport BlogPageEmbed from \"./views/Embed/BlogPageEmbed\";\r\nimport FeaturedContent from \"./views/Embed/FeaturedContent\";\r\nimport FeaturedProducts from \"./views/Embed/FeaturedProducts\";\r\nimport FeaturedPostsAndProducts from \"./views/Embed/FeaturedPostsAndProducts\";\r\nimport ProfileEmbed from \"./views/Embed/ProfileEmbed\";\r\nimport PostPageEmbedBrand from \"./views/Embed/PostPageEmbedBrand\";\r\nimport LockerPageEmbed from \"./views/Embed/LockerPageEmbed\";\r\nimport LockerPageEmbedBrand from \"./views/Embed/LockerPageEmbedBrand\";\r\nimport ProductModal from \"./views/Product/ProductModal\";\r\nimport AddProductModal from \"./views/Product/AddProductModal\";\r\nimport AddProductOrDeepLinkModal from \"components/AddProductOrDeepLink/AddProductOrDeepLinkModal\";\r\nimport MerchantPage from \"./views/Merchant/MerchantPage\";\r\nimport HomeFeed from \"./views/Home/Home\";\r\nimport Explore from \"./views/Explore/Explore.jsx\";\r\nimport Search from \"views/Search/Search\";\r\nimport Browse from \"views/Browse/Browse\";\r\nimport Profile from \"views/Profile/Profile\";\r\nimport Links from \"views/Profile/Links\";\r\nimport User from \"views/Profile/User\";\r\nimport ErrorPage from \"views/ErrorPage\";\r\n\r\nimport AdminDashboard from \"views/Admin/AdminDashboard\";\r\nimport CreatorApplications from \"views/Admin/CreatorApplications\";\r\nimport CreateCommission from \"views/Admin/CreateCommission\";\r\nimport BrandApplications from \"views/Admin/BrandApplications\";\r\nimport AdminBrands from \"views/Admin/Brands\";\r\nimport Brand from \"views/Admin/Brand\";\r\nimport AffiliateNetworks from \"views/Admin/AffiliateNetworks\";\r\nimport AffiliateNetwork from \"views/Admin/AffiliateNetwork\";\r\nimport Sectors from \"views/Admin/Sectors\";\r\nimport Users from \"views/Admin/Users\";\r\nimport CurrentDeals from \"views/Admin/CurrentDeals\";\r\nimport Featured from \"views/Admin/Featured\";\r\nimport PaymentRuns from \"views/Admin/PaymentRuns\";\r\nimport PaymentRunDetails from \"views/Admin/PaymentRunDetails\";\r\nimport CommissionOverrides from \"views/Admin/CommissionOverrides\";\r\nimport AddUserCommissionOverride from \"views/Admin/AddUserCommissionOverride\";\r\nimport AddMerchantCommissionOverride from \"views/Admin/AddMerchantCommissionOverride\";\r\nimport AddUserMerchantCommissionOverride from \"views/Admin/AddUserMerchantCommissionOverride\";\r\nimport ItOperations from \"views/Admin/ItOperations\";\r\nimport Category from \"views/Admin/Category\";\r\nimport ManageBrands from \"views/Admin/ManageBrands\";\r\nimport AdminAnalytics from \"views/Admin/Analytics/Analytics\";\r\n\r\n\r\nimport { getAuthorizedUserData } from \"./sharedUtils/authUtils\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport { Create } from \"./views/Post/Create\";\r\nimport { getMessageCount, getNotificationCount } from \"sharedUtils/notificationUtils\";\r\n\r\nimport \"./custom.css\";\r\n\r\nimport Interests from \"./views/Account/Interests\";\r\nimport Brands from \"./views/Account/Brands\";\r\nimport OnboardInterests from \"./views/Account/OnboardInterests\";\r\nimport OnboardUserType from \"./views/Account/OnboardUserType\";\r\nimport OnboardGoPro from \"./views/Account/OnboardGoPro\";\r\nimport OnboardGettingStarted from \"./views/Account/OnboardGettingStarted\";\r\nimport OnboardWhoToFollow from \"./views/Account/OnboardWhoToFollow\";\r\nimport Analytics from \"./views/Account/Analytics\";\r\nimport BrandAnalytics from \"./views/Account/BrandAnalytics\";\r\nimport AddToHomescreenIOS from \"components/AddToHomescreenIOS\";\r\n\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { DateTime, Interval } from \"luxon\";\r\n\r\nimport ErrorTest from \"./views/Error\"\r\nimport NotFound from \"views/NotFound\";\r\nimport ErrorBoundary from \"./components/ErrorBoundary\";\r\nimport InstagramAuth from \"./components/Post/Create/InstagramAuth\";\r\nimport TikTokAuth from \"./components/Post/Create/TikTokAuth\";\r\nimport Contact from \"./components/Contact\"\r\nimport ChatBot from \"./components/ChatBot\";\r\n\r\nimport { showBrandNav } from \"./sharedUtils/navUtils\"\r\n\r\n\r\nclass App extends Component {\r\n static displayName = App.name;\r\n state = {\r\n loading: true,\r\n loggedInUser: null,\r\n showTopNav: true,\r\n unviewedMessageCount: 0,\r\n unviewedNotificationCount: 0,\r\n deviceSize: 'md',\r\n showSignUpModal: false,\r\n hamOpen: false,\r\n toggleMenu: false,\r\n homeFeedSaveUser: false,\r\n exploreSaveUser: false,\r\n embed: false,\r\n brandNav: true,\r\n screenWidth: 576,\r\n screenHeight: 700,\r\n searchInput: \"\",\r\n browseFilterOpen: false,\r\n resetBrowseSearch: false,\r\n resetSearchBar: false,\r\n mobileSearchOpen: false,\r\n categories: [],\r\n productPageOnly: false,\r\n reloadCreatorDashboardAnalyticsData: 0,\r\n }\r\n\r\n reloadCreatorDashboardAnalyticsData = () => {\r\n this.setState({ reloadCreatorDashboardAnalyticsData: this.state.reloadCreatorDashboardAnalyticsData + 1 })\r\n }\r\n\r\n setBrowseFilterOpen = (browseFilterOpen) => {\r\n this.setState({ browseFilterOpen });\r\n }\r\n\r\n handleResetSearchBar = (resetSearchBar = false) => {\r\n this.setState({ resetSearchBar });\r\n }\r\n\r\n handleMobileSearchOpen = (mobileSearchOpen) => {\r\n this.setState({ mobileSearchOpen });\r\n }\r\n\r\n populateSearch = (searchInput) => {\r\n this.setState({ searchInput });\r\n }\r\n\r\n setSignUpInterval = () => {\r\n this.signUpTimer = setTimeout(() => { this.refreshSignUp() }, 1000 * 20);\r\n }\r\n\r\n toggleSignUpModal = () => {\r\n this.setState({ showSignUpModal: !this.state.showSignUpModal });\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this.timer);\r\n clearTimeout(this.signUpTimer);\r\n }\r\n\r\n fetchCategories = async () => {\r\n let url = `/api/Sector/GetMenuCategories?showAll=false&menuVisibleOnly=true`;\r\n const categories = await getRequest(url);\r\n this.setState({ categories });\r\n }\r\n\r\n async componentDidMount() {\r\n //const fullPageRender = this.allowFullPageLoadEnabledForUrl();\r\n const fullPageRender = true;\r\n\r\n let loggedInUser = undefined;\r\n\r\n if (fullPageRender) {\r\n this.loadAddToHomescreenCssAndJs();\r\n this.loadCssAndJs();\r\n this.timer = setInterval(() => { this.refreshState() }, 1000 * 60 * 10);\r\n this.setState({ loading: true });\r\n this.handleResize();\r\n\r\n window.addEventListener('resize', this.handleResize)\r\n if (window.location.pathname.toLowerCase().includes('authentication') || window.location.pathname === '/') {\r\n this.setShowTopNav(false);\r\n }\r\n\r\n if (!window.location.pathname.toLowerCase().includes('embed/brand') && !window.location.pathname.toLowerCase().includes('embed/prf')) {\r\n loggedInUser = await getAuthorizedUserData(\r\n window.location.pathname.toLowerCase().startsWith('/product/') ||\r\n window.location.pathname.toLowerCase().startsWith('/prd/') ||\r\n\r\n window.location.pathname.toLowerCase().startsWith('/locker/') ||\r\n window.location.pathname.toLowerCase().startsWith('/l/') ||\r\n\r\n window.location.pathname.toLowerCase().startsWith('/post/') ||\r\n window.location.pathname.toLowerCase().startsWith('/p/') ||\r\n\r\n window.location.pathname.toLowerCase().startsWith('/profile/') ||\r\n window.location.pathname.toLowerCase().startsWith('/prf/')\r\n );\r\n\r\n if (loggedInUser != undefined) {\r\n var sectors = await getRequest(\"/api/Sector/GetUserSectors\");\r\n sectors = sectors.sort((a, b) => { if (a.name < b.name) return -1; });\r\n loggedInUser.sectors.$values = sectors;\r\n }\r\n\r\n //await this.fetchCategories();\r\n\r\n } else {\r\n this.setState({ embed: true })\r\n }\r\n } else {\r\n this.setState({ productPageOnly: true });\r\n this.setShowTopNav(false);\r\n loggedInUser = await getAuthorizedUserData(true);\r\n }\r\n\r\n this.setState({ loggedInUser }, () => {\r\n this.setState({ loading: false }, () => this.trackPage());\r\n });\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (this.props.location !== prevProps.location) {\r\n this.trackPage();\r\n }\r\n }\r\n\r\n allowFullPageLoadEnabledForUrl = () => {\r\n // if pathname contains product or prd AND query does not contain b=1 or r=0 FALSE is returned\r\n // to avoid unnecessary delays for ProductPage redirects\r\n if (!window.location.pathname.toLowerCase().includes(\"addproduct\") &&\r\n ((window.location.pathname.toLowerCase().startsWith('/product/') ||\r\n window.location.pathname.toLowerCase().startsWith('/prd/')) &&\r\n !(window.location.search.toLowerCase().includes('b=1') ||\r\n window.location.search.toLowerCase().includes('r=0')))) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n loadAddToHomescreenCssAndJs = () => {\r\n const link = document.createElement('link');\r\n link.href = 'addToHomeScreen/addtohomescreen.css';\r\n link.rel = 'stylesheet';\r\n document.head.appendChild(link);\r\n\r\n const script = document.createElement('script');\r\n script.src = 'addToHomeScreen/addtohomescreen.min.js';\r\n script.type = 'text/javascript';\r\n document.body.appendChild(script);\r\n }\r\n\r\n loadCssAndJs = () => {\r\n // Load Bootstrap CSS\r\n const bootstrapCssLink = document.createElement('link');\r\n bootstrapCssLink.href = 'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css';\r\n bootstrapCssLink.rel = 'stylesheet';\r\n bootstrapCssLink.integrity = 'sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm';\r\n bootstrapCssLink.crossOrigin = 'anonymous';\r\n document.head.appendChild(bootstrapCssLink);\r\n\r\n // Load Google Font\r\n const googleFontLink = document.createElement('link');\r\n googleFontLink.href = 'https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;700&display=swap';\r\n googleFontLink.rel = 'stylesheet';\r\n document.head.appendChild(googleFontLink);\r\n\r\n // Load Font Awesome\r\n const fontAwesomeCssLink = document.createElement('link');\r\n fontAwesomeCssLink.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css';\r\n fontAwesomeCssLink.rel = 'stylesheet';\r\n fontAwesomeCssLink.integrity = 'sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog==';\r\n fontAwesomeCssLink.crossOrigin = 'anonymous';\r\n document.head.appendChild(fontAwesomeCssLink);\r\n\r\n // Load the stylesheets\r\n const cssLink = document.createElement('link');\r\n cssLink.href = `${process.env.PUBLIC_URL}/css/master.min.css?version=20240430`;\r\n cssLink.rel = 'stylesheet';\r\n document.head.appendChild(cssLink);\r\n\r\n //// Load jQuery\r\n //const jqueryScript = document.createElement('script');\r\n //jqueryScript.src = 'https://code.jquery.com/jquery-3.2.1.slim.min.js';\r\n //jqueryScript.integrity = 'sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN';\r\n //jqueryScript.crossOrigin = 'anonymous';\r\n //document.body.appendChild(jqueryScript);\r\n\r\n //// Load Popper.js\r\n //const popperScript = document.createElement('script');\r\n //popperScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js';\r\n //popperScript.integrity = 'sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q';\r\n //popperScript.crossOrigin = 'anonymous';\r\n //document.body.appendChild(popperScript);\r\n\r\n //// Load Bootstrap JS JS\r\n //const bootstrapScript = document.createElement('script');\r\n //bootstrapScript.src = 'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js';\r\n //bootstrapScript.integrity = 'sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl';\r\n //bootstrapScript.crossOrigin = 'anonymous';\r\n //document.body.appendChild(bootstrapScript);\r\n }\r\n\r\n\r\n trackPage() {\r\n setTimeout(() => {\r\n const host = window.location.host.toLowerCase().includes(\"app.rockpor\");\r\n if (!host) return;\r\n const { search, hash } = this.props.location;\r\n window.gtag(\"event\", \"page_view\", {\r\n page_path: window.location.href,\r\n page_search: search,\r\n page_hash: hash,\r\n });\r\n }, 0);\r\n }\r\n\r\n handleResize = () => {\r\n let sizes = {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200\r\n };\r\n let windowSize = window.innerWidth;\r\n let windowHeight = window.innerHeight;\r\n\r\n this.setState({ screenWidth: windowSize, screenHeight: windowHeight });\r\n if (windowSize <= sizes.sm || windowSize < sizes.md) {\r\n this.setState({ deviceSize: \"sm\" })\r\n }\r\n else if (windowSize >= sizes.md && windowSize < sizes.lg) {\r\n this.setState({ deviceSize: \"md\" })\r\n }\r\n else if (windowSize >= sizes.lg && windowSize < sizes.xl) {\r\n this.setState({ deviceSize: \"lg\" })\r\n }\r\n else {\r\n this.setState({ deviceSize: \"xl\" })\r\n }\r\n }\r\n\r\n handleResetBrowseSearch = (resetBrowseSearch) => {\r\n this.setState({ resetBrowseSearch });\r\n }\r\n\r\n selectUserToFetchFollowersFollowing = (user) => {\r\n return user;\r\n }\r\n\r\n setShowTopNav = (show, brandNav = this.state.brandNav) => {\r\n this.setState({ showTopNav: show, brandNav });\r\n }\r\n\r\n setLoggedInUser = async (user) => {\r\n this.setState({ loggedInUser: user });\r\n }\r\n\r\n redirectToOnboarding = () => {\r\n if (!!(this.state.loggedInUser?.onboardingComplete) && this.state.loggedInUser.onboardingComplete == 1 && this.state.loggedInUser.proStatusId !== 1) {\r\n return \r\n } else {\r\n return \r\n }\r\n }\r\n\r\n refreshSignUp = async () => {\r\n this.setState({ showSignUpModal: true });\r\n clearInterval(this.signUpTimer);\r\n }\r\n\r\n refreshState = async () => {\r\n let profilePic = document.getElementById(\"profilePicId\");\r\n if (profilePic != null) {\r\n let profilePicSrc = profilePic.src;\r\n\r\n var d = new Date();\r\n let index = profilePicSrc.lastIndexOf(\"?ver=\");\r\n\r\n if (index >= 0) {\r\n profilePicSrc = profilePicSrc.substring(0, index);\r\n }\r\n\r\n profilePicSrc += \"?ver=\" + d.getTime();\r\n profilePic.src = profilePicSrc;\r\n }\r\n }\r\n hamburgerOpen = (isOpen) => {\r\n this.setState({hamOpen: isOpen})\r\n }\r\n\r\n setToggleMenu = () => {\r\n this.setState({ toggleMenu: !this.state.toggleMenu })\r\n }\r\n\r\n setHomeFeedSaveUser = () => {\r\n this.setState({ homeFeedSaveUser: true })\r\n }\r\n\r\n setExploreSaveUser = () => {\r\n this.setState({ exploreSaveUser: true })\r\n }\r\n\r\n displayAdminRoutes = () => {\r\n let standardViewProps = {\r\n loggedInUser: this.state.loggedInUser,\r\n setLoggedInUser: this.setLoggedInUser,\r\n deviceSize: this.state.deviceSize,\r\n setShowTopNav: this.setShowTopNav,\r\n setLoggedInUser: this.setLoggedInUser,\r\n isModal: false,\r\n showBrandNav,\r\n }\r\n\r\n if (this.state?.loggedInUser?.isAdmin === true) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n else {\r\n return \r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return <>;\r\n }\r\n\r\n let standardViewProps = {\r\n loggedInUser: this.state.loggedInUser,\r\n setLoggedInUser: this.setLoggedInUser,\r\n deviceSize: this.state.deviceSize,\r\n setShowTopNav: this.setShowTopNav,\r\n setLoggedInUser: this.setLoggedInUser,\r\n isModal: false,\r\n showBrandNav,\r\n brandNav:this.state.brandNav,\r\n screenWidth: this.state.screenWidth,\r\n screenHeight: this.state.screenHeight,\r\n }\r\n\r\n //if (this.state.productPageOnly) {\r\n // return (\r\n // \r\n // \r\n // } />\r\n // } />\r\n // \r\n // \r\n // );\r\n //}\r\n\r\n return (\r\n \r\n \r\n {/*\r\n this.state.showInstallIcon ? : \r\n */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n {/**/}\r\n\r\n }\r\n />\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n } />\r\n\r\n } />\r\n } />\r\n\r\n } />\r\n } />\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n } />\r\n } />\r\n\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n /> \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n\r\n \r\n \r\n\r\n }\r\n />\r\n }\r\n />\r\n\r\n \r\n }\r\n />\r\n\r\n \r\n }\r\n />\r\n\r\n \r\n }\r\n />\r\n\r\n \r\n }\r\n />\r\n\r\n {/* Done this way so component has access to route props*/}\r\n } />\r\n } />\r\n } /> \r\n } />\r\n } />\r\n } />\r\n } />\r\n\r\n {/**/}\r\n\r\n\r\n\r\n \r\n\r\n } />\r\n\r\n } />\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(App);\r\n\r\n","const initialState = {\r\n count: 0,\r\n};\r\n\r\nconst INCREMENT_COUNT = \"INCREMENT_COUNT\";\r\nconst DECREMENT_COUNT = \"DECREMENT_COUNT\";\r\n\r\n/**\r\n * @returns {{type:string}}\r\n */\r\nexport function increment() {\r\n return { type: INCREMENT_COUNT };\r\n}\r\n\r\nexport default function counterReducer(state = initialState, action) {\r\n switch (action.type) {\r\n case INCREMENT_COUNT: {\r\n return { ...state, count: state.count + 1 };\r\n }\r\n case DECREMENT_COUNT: {\r\n return { ...state, count: state.count - 1 };\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { combineReducers } from \"redux\";\r\nimport counterReducer from \"./counterReducer\";\r\nimport modalReducer from \"./modalReducer\";\r\nimport feedLayoutReducer from \"./feedLayoutReducer\";\r\nimport brandNavReducer from \"./brandNavReducer\";\r\n\r\nconst reducer = combineReducers({ counterReducer, modalReducer, feedLayoutReducer, brandNavReducer });\r\n\r\nexport default reducer;\r\n","import { createStore, applyMiddleware,compose } from \"redux\";\r\nimport { composeWithDevTools } from \"redux-devtools-extension\";\r\n\r\nimport reducer from \"./reducers/reducer\";\r\n\r\nexport const myRefStore = {};\r\n\r\nfunction refHandler({ getState }) {\r\n return next => action => {\r\n switch (action.type) {\r\n case 'TOGGLE_POST_PAGE_MODAL':\r\n if (!myRefStore.setPost) {\r\n myRefStore.setPost = action.payload.setPost;\r\n } else {\r\n myRefStore.setPost(action.payload.post);\r\n }\r\n break;\r\n case 'TOGGLE_LOCKER_PAGE_MODAL':\r\n if (!myRefStore.setLocker) {\r\n myRefStore.setLocker = action.payload.setPost;\r\n } else {\r\n myRefStore.setLocker(action.payload.post);\r\n }\r\n break;\r\n case 'TOGGLE_PRODUCT_PAGE_MODAL':\r\n if (!myRefStore.setProduct) {\r\n myRefStore.setProduct = action.payload.setProduct;\r\n } else {\r\n myRefStore.setProduct(action.payload.product);\r\n }\r\n break;\r\n }\r\n const returnValue = next(action);\r\n return returnValue;\r\n };\r\n} \r\n\r\nconst composedEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n//const composedEnhancers = composeWithDevTools();\r\nconst store = createStore(reducer, composedEnhancers(applyMiddleware(refHandler)));\r\n\r\nexport default store;\r\n","import \"bootstrap/dist/css/bootstrap.css\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport store from \"./stateManagement/store\";\r\nimport { Provider } from \"react-redux\";\r\n//import registerServiceWorker from './registerServiceWorker';\r\nimport Analytics from \"react-router-ga\";\r\n\r\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\r\nconst rootElement = document.getElementById(\"root\");\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n"],"sourceRoot":""}