{"version":3,"sources":["components/api-authorization/ApiAuthorizationConstants.js","sharedUtils/httpUtils.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/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/icons/RightArrowIcon.jsx","components/icons/LeftArrowIcon.jsx","components/PostBanner.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/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/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/LinkItemDropdown.jsx","views/Account/LinkRowMobile.jsx","components/EditProductModal/EditProductModal.jsx","components/EditProductModal/EditLinkModal.jsx","components/Share/MerchantShareBlock.jsx","components/LoadSpinnerOverlay.jsx","components/NoResults.jsx","views/Account/MyProducts.jsx","views/CreatorDashboard/CreatorDashboardContactUs.jsx","views/Account/Brands.jsx","views/Account/CurrentDeals.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","sharedUtils/navUtils.js","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","GeographicalData/UsStates.js","GeographicalData/Countries.js","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","views/Admin/CreatorAppAdmin.jsx","components/icons/DownloadIcon.jsx","views/Admin/CreatorApplications.jsx","views/Admin/CreateCommission.jsx","views/Admin/UpdateAffiliateNetworkPaidDate.jsx","views/Admin/CommissionAdmin.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/CreatorDashboard.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/icons/PriceTagIcon.jsx","views/Account/AnalyticsByCommissionDetailItemRowMobile.jsx","components/AnalyticsByCommissionDetailItemTable.jsx","components/AnalyticsPerformanceByHour.jsx","components/AnalyticsPerformanceByDay.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","components/icons/images/rockporch-logo.svg","sharedUtils/postFunctions.js","../node_modules/typescript/lib sync","sharedUtils/productUtils.js","sharedUtils/validationUtils.js"],"names":["QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","IdentityLoginPath","jsonref","require","getRequest","url","a","shouldReturnError","access_token","authService","getAccessToken","token","headers","Authorization","fetchInit","fetchExcel","fetch","then","result","status","contentType","get","includes","blob","dispositionHeader","matches","exec","filename","replace","window","URL","createObjectURL","link","document","createElement","href","setAttribute","click","revokeObjectURL","json","parse","scope","location","parsed","text","error","length","trim","startsWith","errorMessage","substring","catch","err","response","postRequest","payload","stringify","authHeader","method","body","JSON","redirected","toLowerCase","urlWithoutQueryString","split","newRedirectUrl","pathname","console","log","postSpreadsheet","formData","ok","Error","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","getUser","user","profile","ensureUserManagerInitialized","userManager","state","signinSilent","createArguments","silentUser","updateState","success","signinPopup","popUpUser","message","signinRedirect","redirect","signinCallback","toString","stack","signoutPopup","undefined","signoutRedirect","signoutCallback","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","splice","i","useReplaceToNavigate","AuthenticationResultStatus","Fail","Success","Redirect","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","ActionButton","props","useState","Math","floor","random","buttonId","displayPrompt","showMessage","Popover","placement","isOpen","target","PopoverBody","messageText","isLoading","className","onClick","style","id","disabled","role","children","isDisabled","onMouseEnter","type","GridIcon","width","height","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","productId","fetchFollowing","postPageModal","showPostPageModal","post","loggedInUser","isCommenting","parentModal","shareCode","parentState","blogPageModal","showBlogPageModal","lockerPageModal","showLockerPageModal","productPageModal","showProductPageModal","product","isBrowse","isSearch","addProductModal","stage","productUrl","shareBlogModal","showShareBlogModal","shareDeepLinkModal","showShareDeepLinkModal","addProductOrDeepLinkModal","showAddProductOrDeepLinkModal","resetState","newState","Object","keys","forEach","stateKey","toggleBodyScroll","shouldHide","querySelector","overflow","closeAllModals","toggleSharePostModal","toggleAddProductModal","toggleShareBlogModal","toggleShareDeepLinkModal","toggleAddProductOrDeepLinkModal","toggleCreateLockerModal","toggleProductSelectModal","toggleFetchFollowing","toggleShareModal","toggleFollowersFollowingModal","togglePostPageModal","setPost","toggleBlogPageModal","toggleLockerPageModal","toggleProductPageModal","setProduct","getMessageCount","unviewedOnly","messageCountUrl","getNotificationCount","notificationCountUrl","LoginMenu","displayLayoutToggleButton","to","e","preventDefault","feedLayout","togglePrompt","showPrompt","setState","mapAddIconDropdown","deviceSize","title","action","iconPath","infoPrompt","infoPromptId","menuItem","key","display","justifyContent","mapThreeDotIconDropdown","menu","path","proStatusId","userName","nestedItems","nestedPaths","nested","NavLink","tag","Link","populateState","isAuthenticated","setDefaultProfilePicture","userDetails","name","firstName","lastName","bio","tagLine","website","googleUsername","facebookUsername","instagramUsername","email","phoneNumber","address","city","postalCode","country","onboardingComplete","profileBannerUrl","quickStart","imageUrl","protocol","host","setLoggedInUser","searchInputHandle","event","toggleShowDropdown","searchValue","value","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","slice","contains","stopImmediatePropagation","handleMouseEnter","indexOf","handleMouseLeave","handleMouseEnterDropdown","handleMouseLeaveDropdown","handleCloseDropdown","handleTouchStart","menuCategories","mapSubcategories","category","parentCategoryId","subC","subName","menuName","encodeURIComponent","Date","now","mapMoreMenuItems","item","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","comment","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","noPaddingTop","isSmall","YoutubeIcon","hrefStyle","RightArrowIcon","LeftArrowIcon","PostBanner","currentMedia","setMedia","mediaPageHandlers","useSwipeable","onSwipedLeft","nextMedia","onSwipedRight","prevMedia","preventDefaultTouchmoveEvent","trackMouse","images","blogEmbed","postBanner","poster","getThumbnail","properties","imageStyle","postPage","setVideoLoaded","pic","ImageWrapper","useLayoutEffect","video","genId","pause","currentTime","fallbackMessage","setFallbackMessage","containerRef","useRef","script","async","appendChild","remove","setImageLoaded","c","crypto","getRandomValues","Uint8Array","reloadKey","setReloadKey","emptyClick","isFeed","size","preload","controls","controlsList","disablePictureInPicture","onCanPlay","onError","postFeedPostGridItem","postFeedPost","tikTokPadding","dangerouslySetInnerHTML","__html","lazy","onLoad","loading","getAuthorizedUserData","ignoreRedirect","encodeURI","jsonData","GreyTickIcon","RatingIcon","RatingIconHalf","RatingIconEmpty","SaleIcon","data-name","AddProductForm","addInterestFromTag","sector","newInterests","interestTags","tagInput","addSectorsToProduct","userMerchantProductId","selectedSectors","sectorIds","sectorId","addProductToLockers","selectedLockers","products","displayDropdownMenu","lockers","locker","toggleSelectLocker","findIndex","$values","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","merchantProductId","UserDescription","Rating","userMerchantProduct","advance","alert","selection","showLockerDropdown","manufacturer","price","vendor","commission","loaded","firstLetter","charAt","match","titleCase","estimatedCommission","merchant","productImageColumnStyling","isModal","sale","salePrice","currencyFormat","originalPrice","UncontrolledPopover","onSubmit","htmlFor","isClearable","isSearchable","blurInputOnSelect","captureMenuScroll","options","data-dismiss","cancel","closeWindow","minHeight","SvgRockporchLogo","RockporchMountainIcon","LookupProductUrlForm","showLearnMore","setLearnMore","showValidationMessage","setShowValidationMessage","inputRef","isValid","isValidUrl","isMobileDevice","test","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","property","class","visibility","productItems","renderPost","LikeIcon","strokeOpacity","Carousel","data-ride","imgUrl","data-slide","carouselIcons","CommentIcon","BookmarkIcon","PlusIcon","ProductReviewUsersList","displayButtonText","displayRatings","ratings","smallSizes","userTileStyle","buttonClass","rating","buttonText","editing","unfollowUser","followUser","fetchRatings","ratingIndex","BrowseProductDetailSection","ratingCount","description","likes","collapsedContentStyle","maxHeight","expandedContentStyle","contentStyle","setContentStyle","merchantOverflow","setMerchantOverflow","showUserReviewList","setShowReviewList","contentRef","merchantRef","useCallback","node","offsetHeight","displayTableRows","showMerchant","referrer","buyAction","btnStyle","logoUrl","overflowWrap","toFixed","handleGoogleAnalytics4BuyButton","displayManufacturer","concatMerchantProduct","toUpperCase","loadingPartial","onStarHover","starHover","onStarHoverOut","starHoverOut","marginleft","toggleSignUpModal","renderThumbsUpOverlay","productInfo","ratingIcons","renderRatingIcons","ProductDetailSection","commissionable","loadingBuy","pointerEvents","integrated","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","onSwiped","eventData","onSwipedUp","onSwipedDown","onSwiping","onTap","xmlnsXlink","xmlSpace","Tick","ProductPage","noCommission","loadingComments","loadingNextLinkedPosts","loadingPrevLinkedPosts","commentInput","linkedPostPage","lastLinkedPostPage","userDescriptionPage","userDescriptions","userDescription","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","creatorCount","toggleCreatorsModal","displayAddToInventory","approvedCreatorsOnly","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","resolve","reject","request","ClientRequest","endpoint","InstagramAuthApi","appId","_appId","_authorization","_authHeader","authorize","doAuthorize","doInitAsync","doGetAuthorizationTicket","authorization","code","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","join","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","thumbnail","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","FormTextArea","PreviewCard","setMediaIndex","captionInput","setCaptionInput","handleMounted","postImages","values","parentId","getProperties","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","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","ordinal","productCode","merchantProductCode","coupon","commentCount","$type","$id","userPost","$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","trimProductsArray","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","setMerchantName","merchantLink","setMerchantLink","resultType","setResultType","setDoDeepLinkDetails","setDeepLinkDetailsFailed","setDoAddDeepLinkData","setManufacturer","setName","setPrice","savedDeepLinkReturnObject","setSavedDeepLinkReturnObject","setDeepLinkPopoverOpen","resetUrlInput","handleLogic","handleGoogleAnalytics4Bookmark","fetchProductOrDeepLinkByUrl","requestData","productOrDeepLinkResult","returnType","merchantName","reloadCreatorDashboardAnalyticsData","displayMerchantNotIntegratedMessage","displayLinkSavedMessage","displayProductAddedMessage","displayProductData","alignSelf","displaySavedLinkData","referralUrl","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","getLinkError","analytics","addUserMerchantProductIfNotAddedAlreadyAndGetLink","commissionId","getLinkUrl","flex","LinkItemDropdown","getUrl","LinkRowMobile","createMerchantLinkUrl","brand","EditProductModal","setDescription","sectorFilter","setSectorFilter","setProductRating","saving","setSaving","productSectors","secId","saveDescription","saveSectorChanges","submitRating","updateProductsAndLinks","goToSavedLinks","EditLinkModal","setLink","setBrand","tryParseFloat","parseFloat","isNaN","updateLink","updatedLink","convertMerchantLinkToUploadableObject","uploadLink","loadingLinkUpload","MerchantShareBlock","LoadSpinnerOverlay","NoResults","MyProducts","isValidDate","date","updateProducts","fetchLinks","combinedArray","filteredProductsLinks","dateA","modifiedDate","productLinks","reset","searchIcon","mostRecentSearch","productsLinks","filterLowerCase","hide","isHidden","handleGoogleAnalytics4GetLinkButton","displayTableHeader","header","tab","displayShareModal","toggleProductShareModal","displayLinksRows","wordWrap","showEditProduct","productToEditIndex","toggleMerchantLinkShareModal","hideMerchantLink","showEditLink","linkToEdit","handleEditClick","merchantLinkShareLink","merchantShareModalOpen","displayMerchantShareModal","shareProps","creatorUserId","showProductsMobile","displayProductsMobile","edit","displayLinksMobile","showLinksMobile","fetchCounts","productCountUrl","productCount","basePath","fetchMoreProducts","saveProductSectors","updateProductDescription","updateProductRating","updatedProducts","updatedProductsLinks","updateProductSectors","onInputKeydown","resetFilter","filteredLinks","displayGetLinkModal","getLinkPopover","onTabChange","setProductsTab","linkToEdite","addedProduct","addingProduct","creatorDashboard","productDescription","CreatorDashboardContactUs","handleContactClick","mailtoLink","fontStyle","Brands","all","getPartners","getPartnerSectors","filterPartners","partners","partner","integratedDate","filteredPartners","partnerSectors","bounce","handleUserFavorite","updatedPartners","userFavorite","updatedFilteredPartners","userMerchant","featuredCount","favorites","redirectToMerchatUrl","thirtyDaysPriorToToday","setDate","getDate","newLabel","featuredLabel","shareBtn","commissionPercentage","roundedCommissionPercentage","endsWith","merchantLogoUrl","handleSortSelect","selectOptions","currentValue","finalFilteredPartners","partnersWithOrdinal","partnersWithoutOrdinal","favoritesPartners","nonFavoritePartners","filteredArray","fa","sortedPartnersWithOrdinal","partnersFilteredBySectors","partnerSector","v","filteredPartnerSector","saveUser","serializedUser","recentlyAdded","isMulti","CurrentDeals","getCurrentDeals","currentDealsInitial","currentDeals","addMerchantNameAndLogoToDeals","setHours","upcomingDeals","remainingCurrentDeals","deal","startDateUTC","startDateLocal","getTimezoneOffset","upcoming","dealsWithOrdinal","dealsWithoutOrdinal","sortedDealsWithOrdinal","finalCurrentDeals","deals","merchants","correspondingMerchant","upcomingCurrentDeals","largeScreen","redirectToMerchantUrl","lastCard","lastRowIndex","dateString","toLocaleDateString","dealStyle","formatDate","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","results","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","queryString","Proxy","searchParams","prop","paramName","Array","from","showbrandnav","getQueryStringParams","CustomSingleValue","handleInfoClick","toggleDropdown","SingleValue","infoTab","menuIsOpen","mobile","productsTab","fetchCreatorDashboardMarquee","sharePath","handleDragLeave","updatePersistantUserInformation","getCreatorDashboardAnalytics","selectedOption","selectContentOptions","handleContentSelect","queryTaskActions","fetchTaskList","getPaymentEmail","fetchActivityFeed","activeIndex","selectOption","forceUpdate","creatorDashboardMarquee","uiHtml","marqueeHtml","marqueeBackgroundColor","marqueeRedirectUrl","toggleDisplay","basic","creatorDisplay","basicDisplay","screenX","dateRange","getDateRange","updateQueryString","fromWhere","tagName","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","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","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","resetProductsTab","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","usStates","countries","CreatorAppProfile","anonymous","selectedCountry","Countries","countryId","countryObj","stateId","stateObj","onInputAdditionalPlatformsChange","additionalPlatforms","renderAdditionalPlatforms","platformObj","addAdditionalPlatform","isAdditionalPlatformAddable","deleteAdditionalPlatform","isReadyToApply","dynamicQuestionsReady","dynamicQuestions","every","question","isStateValid","emailExists","validPassword","validUserName","usernameExists","password","confirmedPassword","confirmedEmail","agreeToTerms","platforms","platformUserName","submitWithUnansweredRequiredFields","highlightRequiredFields","renderDynamicQuestions","mapOptions","onNewUserNameInputChange","selectedCountryId","selectedStateId","selectedState","UsStates","handleAgreeToTerms","for","CreatorApp","debounceNewUserNameInputChange","checkPasswordCriteria","hasUpperCase","hasLowerCase","hasDigit","debounceEmailInputChange","checkUserNameExists","checkEmailExists","fetchCreatorApplicationDynamicDropdownQuestions","userIsCreator","approved","userPendingCreatorApplicationExists","link1","link2","crossOrigin","link3","head","linkElements","Image","fetchUserRoleApplicationsByUserId","applicationsForLoggedInUser","latestApplication","hasApprovedProperty","whyRockporchToday","affiliateMarketingExperience","howWillUseRockporch","convertToUserModel","onUserRelatedInputChange","updatedObject","renderConfirmationModal","tempObject","newPlatformWithId","waitForModalClose","checkModalOpen","createNewUser","selectedSectorsNames","userModel","excelError","postingExcel","userI","readonly","uploadedFileNames","removeChild","defer","AccountSettings","minLengthMessage","doesNotMatchMessage","requiredCharactersMessage","debounceEmailLookup","enableEmailSubmit","emailMessageStyle","emailMessage","newPassword","confirmPassword","formkey","isValidPassword","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","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","disabledPublishButton","savingChanges","selectedFiles","selectedImagePreviews","refreshingProducts","isForEdit","calledEditPost","draftRedirect","addSectorToLocker","lockerCopy","postSector","removeSectorFromLocker","sectorSelected","cancelChanges","displayEditNavButtons","disabledButtonClassName","saveChanges","publish","displayProducts","displayProductDescriptionModal","saveProductDescription","fetchLocker","mappedUsers","statusId","published","payload2","refreshBanner","verifyAndSetLocker","uploadMedia","updateLockerContent","newProperties","reorderedItems","newValues","productGridRowClass","PostAuthorBanner","PostPageAuthor","isPublished","isPublishing","postText","videoLoaded","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","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","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","fullProducts","selectedFileTempUrl","uploadBackroundImage","uploadImageResponse","trackingUrl","productList","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","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","synchApplication","CreatorAppAdmin","savingQuestions","optionsVisible","acc","handleOptionChange","questionIndex","optionIndex","updatedQuestions","handleQuestionChange","handleOrdinalChange","addOption","deleteOption","deleteQuestion","updatedQuestionsWithOrdinals","q","addQuestion","newQuestionIndex","newQuestion","toggleOptionsVisibility","validateQuestions","cleanedQuestions","sortedQuestions","questionsToSend","handleReset","confirm","DownloadIcon","CreatorApplications","fetchApplications","applications","handleMouseDown","startX","clientX","scrollLeft","scrollContainer","handleMouseMove","handleMouseUp","walk","fetchApprovedOrDeniedApplications","isApproved","fetchAllApplications","updateApplication","forDelete","app","jsonApplication","renderUpcomingProjects","descriptionUrlObjectArray","appliedPreviously","platformUsernameAsLink","noMargin","referralUserName","handleDateSort","sortedApplications","ascending","dateAsc","dateB","applicationsAll","onMouseDown","CreateCommission","campaignFilter","filteredCampaignPartners","merchantValue","campaignMerchantValue","selectedMerchant","selectedCampaignMerchant","selectedUser","show","isLoadingMerchants","saleAmount","transactionDate","affiliateNetworkPaidDate","isSubmitting","showMerchantInput","commissionRate","creatorCommission","popover","popoverMessage","zeroSaleAmountCheck","hundredPercentCommissionRate","partnersUrl","onInputChangeQuery","onInputChangeCampaignMerchantQuery","setSelectedMerchant","setSelectedCampaignMerchant","setSelected","onCommissionInputChange","onDateInputChange","onAffiliateNetworkPaidDateInputChange","merchantHostname","apmId","affiliateProgramManagerId","zeroSaleAmount","campaignMerchantHostname","commissionInfo","commissionAmount","onChangeDummy","handlePopover","setsState","onChangeZeroSaleAmountCheck","onChangeHundredPercentCommissionRate","enableSubmit","labelKey","defaultSelected","clearButton","onSearch","affilateNetworkPaidDate","UpdateAffiliateNetworkPaidDate","isFetching","commissions","utc","startOf","months","CommissionsTable","customBodyRender","tableMeta","updateValue","customToolbarSelect","selectableRows","sortOrder","selectedRows","displayData","setSelectedRows","confirmPublishSelected","getTheme","createTheme","overrides","MUIDataTable","root","paper","MUIDataTableBodyRow","MUIDataTableBodyCell","fetchCommissionWithNoAffiliateNetworkPaidDate","handleAffilateNetworkPaidDateChange","toFormat","handlePublish","handleStartDateChange","handleEndDateChange","handleWeekToDate","weeks","handleMonthToDate","handleYearToDate","years","commissionIds","selectedRowsData","row","publishUrl","publishError","TextField","toISODate","InputLabelProps","shrink","InputProps","deleteError","ThemeProvider","theme","CommissionAdmin","merchantCommissionOverridesLoading","userMerchantCommissionOverridesLoading","userCommissionOverrides","merchantCommissionOverrides","userMerchantCommissionOverrides","createCommissionBreadCrumbList","createAffiliateNetworkPaidDateBreadCrumbList","BrandSelectorForm","cleanUp","submit","setMerchantUser","submitting","BrandApplications","Email","Phone","CompanyName","Website","AffiliateNetwork","OtherAffiliateNetwork","Relationship","RelationshipDetails","fetchingExcel","merchantHomePage","exportMerchants","merchantHomepage","CheckIconBlack","deepLinkOnly","displayTableFooter","totalBrands","totalIntegrated","totalDeepLinked","colSpan","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","brandPresent","manualProductCreation","renderInterests","renderAffiliateProgramManagers","updateMerchant","managerObj","diplay","AffiliateNetworks","affiliateNetworks","newApmName","newApmUrl","commissionRuns","commissionStatusByApm","addNewApm","networks","newApm","apiUrl","displayHeaders","calculateCommissionRunStatus","cr","isSaS","affiliate","dateNow","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","settlementPeriodChange","affiliateTracking","modalType","createEditTracking","isSubmittingTracking","fetchAffiliateProgramManager","fetchTracking","settlementPeriod","tracking","handleTrackingSubmit","requestBody","postTrackingError","resetTrackingState","getModalTitle","openTableRowModal","newMerchantTracking","onAbort","Sectors","sectorCreateInput","sectorName","checkIfSectorExists","handleSectorInput","ResetPasswordForm","submitPassword","newPasswordConfirmed","passwordsMatch","resetPasswordSuccess","toggleResetPasswordModal","resetPasswordError","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","handleImpersonateClick","impersonateUrl","displayImpersonateButton","setSelectedReferral","setSelectedRPManager","getSubaffiliates","rPManagerUserId","affiliateName","amazonSubaffiliateObject","subaffiliateID","postAmazonSubaffiliate","subaffiliateObject","createUserMerchantCommissionOverride","amazonMapmArray","amazonMapm","merchantAffiliateProgramManagerId","userShare","effectiveDate","stateChange","CurrentDealsTable","setCellProps","wordBreak","onRowClick","rowData","rowMeta","addMerchantNameToDeals","fetchMerchants","fetchCurrentDeals","noShow","handleUrl","handleOrdinal","handleDescription","handleStartDate","handleEndDate","validateDate","submitUrl","handleDelete","handleCreateCurrentDealButton","startTimestamp","endTimestamp","currentTimestamp","FeaturedContent","addShareCode","addSubmitError","topContentFromDb","FeaturedContentTable","String","fetchFeaturedContent","tc","createContentForDatatable","creatorUserName","featuredPublished","getType","handleAddContentButton","handleShareCode","postsWithAdd","confirmPublishAll","publishedPosts","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","EmojiBlot","quillEmoji","ShortNameEmoji","ToolbarEmoji","TextAreaEmoji","Quill","register","htmlToState","renderTranslatedHTML","adminHtml","creatorDashboardMarqueeId","saveCreatorDashboardMarquee","cdm","convertSpacesAndTabs","newCdm","deleteCreatorDashboardMarquee","handleChange","extractBackgroundColor","extractRedirectUrl","removeBackslashesFromStyle","cleanedStyle","convertTextSize","convertedHTML","htmlString","cleanedHTML","divHeight","hasStyle","parser","Parser","modules","toolbar","PaymentRuns","toISO","last180Days","last365Days","loadingApply","commissionsApplied","creatingNewPaymentRun","paymentRunInfos","getPaymentRunInfos","orderBy","handleApplyReferralCommissions","handleCreateNewPaymentRun","runPaymentsResponse","paymentRunId","paymentRunDetailRecordCount","paymentRunInfo","paymentRun","paymentRunDetailCount","pendingCount","pendingAmount","skippedCount","skippedAmount","rejectedCount","rejectedAmount","noPaymentEmailCount","noPaymentEmailAmount","approvedCount","approvedAmount","paidCount","paidAmount","paymentRunStatus","CreatorPaymentRunTotals","paymentRunDetailInfos","creatorPaymentRunTotals","reversingPayments","affiliateTable","customBodyRenderLite","dataIndex","rowIndex","amount","handlePaymentReversal","affiliateDetailTableWrapperRef","affiliateDetailTableMessageTextboxRef","processCreatorPaymentRunTotals","totals","payment","userPaymentEmail","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","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","table","handleUpdateEndDate","getUserCommissionOverrideHistoryByUserId","userCommissionOverridesHistoryTable","userCommissionOverridesHistoryTableWrapperRef","getUserCommissionOverrides","r","getMockUserCommissionOverrides","getUserCommissionOverridesUrl","userCommissionOverrideHistoryByUserIdRecords","getMockUserCommissionOverrideHistoryByUserId","getUserCommissionOverrideHistoryByUserIdUrl","updateUserCommissionOverrideEndDate","userCommissionOverrideHistoryIds","updatedUserCommissionOverrides","getRandomDateBetweenDates","recordCount","tableData","updateData","recordsUpdatedCount","updatedData","updatedRecords","updatedRecord","parsedDate","isDateTime","isoEndDate","toJSDate","alreadyHasEndDateCount","updatedSummaryData","updatedHistoryData","MerchantCommissionOverrides","merchantCommissionOverridesSummaryTable","handleMerchantUpdateEndDate","getMerchantCommissionOverrideHistory","merchantCommissionOverridesHistoryTable","merchantCommissionOverridesHistoryTableWrapperRef","getMerchantCommissionOverrides","getMockMerchantCommissionOverrides","getCurrentMerchantAffiliateProgramManagerOverrides","merchantCommissionOverrideHistoryRecords","getMockMerchantCommissionOverrideHistory","getMerchantCommissionOverrideHistoryUrl","updateMerchantCommissionOverrideEndDate","ids","merchantAffiliateProgramManagerOverrideHistoryIds","updatedmerchantCommissionOverrides","UserMerchantCommissionOverrides","userMerchantCommissionOverridesSummaryTable","handleUserMerchantUpdateEndDate","getUserMerchantCommissionOverrideHistory","userMerchantCommissionOverridesHistoryTable","userMerchantCommissionOverridesHistoryTableWrapperRef","getUserMerchantCommissionOverrides","getCurrentUserMerchantCommissionOverrides","userMerchantCommissionOverrideHistoryRecords","getUserMerchantCommissionOverrideHistoryUrl","updateUserMerchantCommissionOverrideEndDate","userMerchantCommissionOverrideHistoryIds","updatedUserMerchantCommissionOverrides","usreMerchantCommissionOverridesLoading","CommissionOverrides","userCommissionOverridesBreadCrumbList","merchantCommissionOverridesBreadCrumbList","userMerchantCommissionOverridesBreadCrumbList","AddUserCommissionOverride","userCommissionOverrideHistoryRecords","recordsWithoutEndDate","records","endAdornment","InputAdornment","inputProps","AddMerchantCommissionOverride","filteredOptions","integratedCheckbox","MerchantSelectAutocomplete","showSavedMerchant","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","MerchantProductCode","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","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","zone","utcDate","displayChart","labels","postViews","formattedLabelDate","analytic","series","chart","markers","xaxis","yaxis","seriesName","opposite","dateError","userChanged","browseChanged","CommissionsChart","getCommissions","commissionReassignModal","modalCommissionId","toggleCommissionId","openAccordianCommissionIds","obj","commissionDetailItems","fetchCommissionDetailItemsByCommissionId","updatedCommissionIds","existingItem","updatedCommissionDetailItems","detailItem","lastItem","renderCommissionDetailItems","cdiObject","noProductInfo","numberOfItemsWithProductInfo","mayDisplay","purchaseAmount","returnAmount","qualifiedCommissionAmount","colspan","displaySummaryTableHeader","displaySummaryTableRows","commissionsByStatus","reassignLoading","reassignCreateMessage","onCommissionReassignClick","modalUserId","reassignLogic","userBlank","reassignCommissionUrl","copyCheck","userOptions","onChangeCopyCheck","zoom","dataLabels","isEqual","commissionsLoading","TransactionsChart","getTransactions","transactions","total","previousBalance","currentBalance","runningBalance","transactionsLoading","ClickBurstIcon","svgStyle","marker","clicksZero","clicks","salesZero","sales","fixedWidthStyle","sortDescending","salesAmount","handleClicksClick","handleSalesClicksClick","sourceDataAvailable","conversionRate","AnalyticsByProductTable","resetPerformanceTabs","showSalesModal","showSales","clearPerformance","clearSourceSort","hideSalesModal","salesClicked","clearSalesSourceSort","getAnalyticsPerformanceSourceByUserMerchantProduct","getAnalyticsPerformanceSourceByLink","handleLinkSalesClicksClick","getAnalyticsPerformanceSourceByUserMerchantProductAggregate","merchantLinkId","getAnalyticsPerformanceSalesSourceByLink","getAnalyticsPerformanceSalesSourceByUserMerchantProductAggregate","getAnalyticsPerformanceSalesSourceByUserMerchantProduct","hoverRow","handleSourceClicksSort","handleSourceReferrerClick","sourceSortAscending","handleSalesSourceClicksSort","handleSalesSourceReferrerClick","salesSourceSortAscending","handleSourceReferrerSort","handleSalesSourceReferrerSort","displayProductClicksTable","performanceSourceUserMerchantProduct","sourceSortReferrer","displayProductsClickRows","displayProductSalesClicksTable","performanceSalesSourceUserMerchantProduct","salesSourceSortReferrer","displayProductsSalesClickRows","analyticsPerformanceSourceByUserMerchantProductLoading","lineBreak","analyticsPerformanceSalesSourceByUserMerchantProductLoading","MerchantRowMobile","AnalyticsByMerchantTable","getMerchantAnalytics","displayMerchantMobile","merchantAnalytics","handleMerchantSortSelect","merchantSortDescending","merchantSelectOptions","getAnalyticsPerformanceSourceByMerchant","getAnalyticsPerformanceSalesSourceByMerchant","displayMerchantClicksTable","performanceSourceMerchant","displayMerchantsClickRows","displayMerchantSalesClicksTable","performanceSalesSourceMerchant","displayMerchantsSalesClickRows","analyticsPerformanceSourceByMerchantLoading","analyticsPerformanceSalesSourceByMerchantLoading","PriceTageIcon","CommissionDetailItemRowMobile","PriceTagIcon","AnalyticsByCommissionDetailItemTable","getCommissionDetailItemsAnalytics","getAnalyticsPerformanceSalesSourceByCommissionDetailItem","commissionDetailItemsAnalytics","handleCommissionDetailItemsSortSelect","commissionDetailItemsSortDescending","commissionDetailItemsSelectOptions","performanceSalesSourceCommissionDetailItem","analyticsByCommissionDetailItemLoading","AnalyticsPerformanceByHour","convertTo12HourFormat","period","rotate","rotateAlways","tooltip","opts","dataPointIndex","userIdSelected","AnalyticsPerformanceByDay","AnalyticsByPerformance","handleTabSortSelect","tabSelectOptions","commissionDetailItem","showNA","productUserChanged","merchantUserChanged","merchantAnalyticsLoading","analyticsByMerchantLoading","analyticsHourly","analyticsHourlyLoading","getAnalyticsHourly","hourlyUserChanged","analyticsDaily","analyticsDailyLoading","getAnalyticsDaily","dailyUserChanged","AnalyticsIconNew","fillClass","CommissionsIcon","SpreadsheetIcon","AdminAnalytics","startDateRaw","minDate","maxDate","isLuxonDateTime","endDateRaw","analyticsByProductDatas","sortedAnalytics","compareFunction","comparison","getComparisonValue","tieComparisons","column","filteredTieComparisons","localeCompare","analyticsByMerchant","getMerchantComparisonValue","analyticsByCommissionDetailItems","getCommissionDetailItemsComparisonValue","getStringValue","getNumericValue","aName","bName","aMerchant","bMerchant","aPrice","bPrice","aggregateCheck","urlParams","getMockAnalytics","getCommissionsUrl","getTransactionsUrl","mockAnalytics","salesConversionPercentage","getAnalyticsByProductData","getAnalyticsLinkUrl","browseCheck","analyticsByProductLoading","convertedAnalytics","getAnalyticsByCommissionDetailItem","commissionDetailItemUserChanged","AnalyticsPerformanceSalesSourceByMerchantLoading","performanceSourceLink","AnalyticsPerformanceSalesSourceByUserMerchantProductLoading","getAnalyticsByMerchant","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","ManageCommissions","AdminBrands","CreatorDashboardAdmin","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","module","exports","webpackEmptyContext","req","sentence","allowNoPath","rx"],"mappings":"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","file":"static/js/main.413e41fe.chunk.js","sourcesContent":["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 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 { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\nimport { postRequest } from '../../sharedUtils/httpUtils';\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 let user = \"\";\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n 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 postRequest('/api/ErrorLogger/LogError', { error: error.toString(), stack: \"AuthorizeService - user: \" + user?.toString() + \" - URL: \" + url });\r\n\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 { 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 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, { 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, { 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\nimport PostBanner from \"./PostBanner\";\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 [fallbackMessage, setFallbackMessage] = useState(\"none\");\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 const [reloadKey, setReloadKey] = useState(0);\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 let overlayStyle = { position: \"absolute\", zIndex: 3, cursor: \"pointer\", top: \"50%\", left: \"50%\", transform: \"translate(-50%, -50%)\" };\r\n\r\n return (\r\n \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 onCanPlay={() => {\r\n document.getElementById(genId).style.display = ''; // Show the fallback message\r\n setFallbackMessage(\"none\")\r\n\r\n if (typeof props.setVideoLoaded === \"function\") {\r\n props.setVideoLoaded(true);\r\n }\r\n }}\r\n onError={() => {\r\n setFallbackMessage(\"\");\r\n document.getElementById(genId).style.display = 'none'; // Show the fallback message\r\n setTimeout(() => {\r\n setReloadKey(reloadKey + 1); // Update the reload state to force component re-render\r\n }, 150000); // 15 seconds\r\n if (typeof props.setVideoLoaded === \"function\") {\r\n props.setVideoLoaded(false);\r\n }\r\n }}\r\n >\r\n {/* Specify video source */}\r\n \r\n \r\n \r\n {/* Fallback content displayed if video cannot be played */}\r\n
    \r\n
    \r\n Loading...\r\n
    \r\n {props.alt\r\n
    \r\n

    Please be patient! We are processing this video.

    \r\n

    It will be ready in a few minutes. You can wait to publish this post or save it to drafts and come back later.

    \r\n
    \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\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,user.info.profile&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 (popup.location.search.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 // 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\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 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\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 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\nimport CloseIcon from \"components/icons/CloseIcon\";\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\nimport { DateTime } from \"luxon\";\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 [merchantName, setMerchantName] = useState(0);\r\n const [merchantLink, setMerchantLink] = useState(null);\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 [loadingDeepLinkDetails, setLoadingDeepLinkDetails] = useState(false);\r\n const [product, setProduct] = useState(null);\r\n const [showLearnMore, setLearnMore] = useState(false);\r\n const [doDeepLinkDetails, setDoDeepLinkDetails] = useState(false);\r\n const [deepLinkDetailsFailed, setDeepLinkDetailsFailed] = useState(false);\r\n const [doAddDeepLinkData, setDoAddDeepLinkData] = useState(false);\r\n const [manufacturer, setManufacturer] = useState('');\r\n const [name, setName] = useState('');\r\n const [price, setPrice] = useState(''); // You can set an initial value if needed\r\n const [savedDeepLinkReturnObject, setSavedDeepLinkReturnObject] = useState(null);\r\n const [deepLinkPopoverOpen, setDeepLinkPopoverOpen] = useState(false);\r\n\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 setDoDeepLinkDetails(false);\r\n setDoAddDeepLinkData(false);\r\n setMerchantExists(true);\r\n setValidUrl(true);\r\n setMerchantId(0);\r\n setMerchantName(\"\");\r\n setMerchantLink(null);\r\n setManufacturer('');\r\n setName('');\r\n setPrice('');\r\n setDeepLinkDetailsFailed(false);\r\n setDeepLinkPopoverOpen(false);\r\n setSavedDeepLinkReturnObject(null);\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 resetMerchantLinkData = () => {\r\n setMerchantLink(null);\r\n setPrice(\"\");\r\n setName(\"\");\r\n setManufacturer(\"\");\r\n setDeepLinkDetailsFailed(false);\r\n setDoAddDeepLinkData(false);\r\n }\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 const handleAddDeepLinkData = () => {\r\n setDeepLinkPopoverOpen(false);\r\n setDoAddDeepLinkData(true);\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 setMerchantName(productOrDeepLinkResult.merchantName);\r\n setMerchantLink(productOrDeepLinkResult.merchantLink);\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 setSavedDeepLinkReturnObject({ logoUrl: productOrDeepLinkResult.logoUrl });\r\n let event = new Event(\"_productAddedEvent\");\r\n document.dispatchEvent(event);\r\n }\r\n props.reloadCreatorDashboardAnalyticsData();\r\n } else {\r\n setMerchantExists(false);\r\n setRedirectUrl(\"\");\r\n setMerchantId(0);\r\n setMerchantName(\"\");\r\n setMerchantLink(null);\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 displayLinkSavedMessage = () => {\r\n if (!!(savedDeepLinkReturnObject) && resultType === 2 && props.deviceSize === \"sm\") {\r\n return (\r\n
    \r\n \r\n The product was successfully added to
    \r\n Saved Links!\r\n
    \r\n
    \r\n )\r\n } else if (!!(savedDeepLinkReturnObject) && resultType === 2) {\r\n return (\r\n
    \r\n \r\n The link 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 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 Saved Links!\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 submitDeepLinkDetails = async () => {\r\n setLoadingDeepLinkDetails(true);\r\n\r\n const referralUrl = merchantLink.referralUrl;\r\n const id = merchantLink.id;\r\n const merchantId = merchantLink.merchantId;\r\n const creatorUserId = merchantLink.creatorUserId;\r\n\r\n let uiControllerUrl = \"/Products/AddMerchantLinkData\";\r\n let manualProduct = {\r\n brand: manufacturer,\r\n price,\r\n description: referralUrl,\r\n id,\r\n merchantId,\r\n referralUrl,\r\n creatorUserId,\r\n };\r\n\r\n let productOrDeepLinkResult = await postRequest(uiControllerUrl, manualProduct);\r\n\r\n if (!!(productOrDeepLinkResult)) {\r\n productOrDeepLinkResult.merchantName = merchantName;\r\n setSavedDeepLinkReturnObject(productOrDeepLinkResult);\r\n\r\n resetMerchantLinkData()\r\n let event = new Event(\"_productAddedEvent\");\r\n document.dispatchEvent(event);\r\n } else {\r\n setDeepLinkDetailsFailed(true);\r\n }\r\n\r\n setLoadingDeepLinkDetails(false);\r\n };\r\n\r\n\r\n const renderAddDeepLinkDetails = () => {\r\n if (doAddDeepLinkData) {\r\n return (\r\n
    \r\n
    Save Link Details
    \r\n

    Add FAILED. Check data and try again.

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

    Link

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

    Retailer

    \r\n setManufacturer(e.target.value)}\r\n style={{ backgroundColor: \"white\", border: \"none\", marginTop: \"\" }}\r\n readOnly\r\n />\r\n
    \r\n
    \r\n

    Brand Name

    \r\n 0 ? manufacturer : \"\"}\r\n id=\"manufacturer\"\r\n placeholder={manufacturer.length === 0 ? \"Enter brand name if any\" : 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

    Description*

    \r\n 0 ? name : \"\"}\r\n id=\"name\"\r\n placeholder={name.length === 0 ? \"Enter link description\" : 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

    Retail Price

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

    * Required field

    \r\n\r\n Save Link\r\n
    \r\n );\r\n }\r\n }\r\n\r\n const displaySaveLinkDetails = () => {\r\n return (\r\n
    \r\n

    Your commissionable link is in the box above!

    \r\n

    You can save this link and add details by pressing the button below.

    \r\n
    \r\n \r\n Save Link\r\n \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 const displaySavedLinkData = () => {\r\n if (resultType === 2 && !!(savedDeepLinkReturnObject)) {\r\n return (\r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n props.deviceSize === \"sm\" ?\r\n <>\r\n {\r\n e.target.onError = null\r\n e.target.src = `images/blank-banner.png`\r\n }} />\r\n
    {merchantLink?.referralUrl}
    \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
    {merchantLink?.referralUrl}
    \r\n \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 {displayLinkSavedMessage()}\r\n {displaySavedLinkData()}\r\n\r\n 0 ? \"\" : \"none\" }} className=\"btn btn-outline-brand btn-block\">Create another link\r\n\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\r\n {displayProductData()}\r\n {displayValidationMessage()}\r\n {displayMerchantNotIntegratedMessage()}\r\n {displayProductAddedMessage()}\r\n {displayLinkSavedMessage()}\r\n {displaySavedLinkData()}\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\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 handleGetLink = async () => {\r\n if (!product.integrated) {\r\n props.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 { 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 Retailer: {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 } 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 LinkItemDropdown = (props) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const getUrl = () => {\r\n let url = \"https://\";\r\n if (window.location.host.includes(\"app.rockp\") && !!props.link.shareSubdomain) {\r\n url += props.link.shareSubdomain + \".rockporch.com/mlink/\" + props.link.merchantId + \"?userId=\" + props.loggedInUser.id + \"&redirectUrl=\" + encodeURIComponent(props.link.referralUrl);\r\n } else {\r\n url += window.location.host + \"/mlink/\" + props.link.merchantId + \"?userId=\" + props.loggedInUser.id + \"&redirectUrl=\" + encodeURIComponent(props.link.referralUrl);\r\n }\r\n\r\n return url;\r\n }\r\n \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(getUrl())}>\r\n Share\r\n \r\n\r\n \r\n Edit\r\n \r\n\r\n props.hideClick(props.link)} className=\"p-1\">\r\n Delete\r\n \r\n \r\n\r\n \r\n\r\n )\r\n}\r\n\r\n\r\nexport default LinkItemDropdown;","import React, { useState } from \"react\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport LinkItemDropdown from \"views/Account/LinkItemDropdown\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\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 LinkRowMobile = (props) => {\r\n let { link } = props;\r\n let pstyle = { fontFamily: \"Archivo\", fontSize: \"12px\", width: \"96%\" }\r\n\r\n const createMerchantLinkUrl = () => {\r\n let getLinkUrl = \"https://\";\r\n\r\n if (window.location.host.includes(\"app.rockp\") && !!link.shareSubdomain) {\r\n getLinkUrl += link.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/mlink/\" + link.merchantId + \"?userId=\" + props.loggedInUser.id + \"&redirectUrl=\" + encodeURIComponent(link.referralUrl);\r\n return getLinkUrl;\r\n }\r\n\r\n const handleGetLink = async () => { \r\n props.handleGetLink(createMerchantLinkUrl());\r\n }\r\n\r\n const redirectUrl = \"https://\" + window.location.host + \"/mlink/\" + link.merchantId + \"?userId=\" + props.loggedInUser.id + \"&redirectUrl=\" + link.referralUrl;\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n { window.open(redirectUrl, '_blank') }}\r\n />\r\n\r\n
    \r\n

    \r\n { window.open(redirectUrl, '_blank') }}>{link.brand}\r\n

    \r\n\r\n

    \r\n { window.open(redirectUrl, '_blank') }}>{!!(link?.description?.trim()) ? link?.description?.trim() : createMerchantLinkUrl()?.substring(0,35) + \"...\"}\r\n

    \r\n\r\n

    \r\n { window.open(redirectUrl, '_blank') }} style={{ cursor: \"pointer\" }}>Retailer: {link.merchantName}\r\n

    \r\n\r\n

    \r\n { window.open(redirectUrl, '_blank') }} style={{ cursor: \"pointer\" }}> { window.open(redirectUrl, '_blank') }} style={{ cursor: \"pointer\" }}>Price: {currencyFormat(link.price || 0)}\r\n

    \r\n\r\n

    \r\n { window.open(redirectUrl, '_blank') }} style={{ cursor: \"pointer\" }}>{props.analytics ? \"Estimated\" : \"Est.\"} Commission\r\n *\r\n : {currencyFormat(link.estimatedCommission || 0)}\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 LinkRowMobile;","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 if (!saving) {\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 }\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 await props.saveDescription(description);\r\n await props.saveSectorChanges();\r\n await props.submitRating(productRating, product);\r\n await props.updateProductsAndLinks();\r\n setSaving(false);\r\n props.toggleModal();\r\n props.goToSavedLinks();\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 { Modal } from \"reactstrap\";\r\n\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 EditLinkModal = (props) => {\r\n const [link, setLink] = useState({});\r\n const [brand, setBrand] = useState(\"\");\r\n const [description, setDescription] = useState(\"\");\r\n const [price, setPrice] = useState(\"\")\r\n\r\n const tryParseFloat = (text) => {\r\n const parsed = parseFloat(text);\r\n return isNaN(parsed) ? null : parsed.toFixed(2);\r\n }\r\n\r\n useEffect(() => {\r\n setLink(props.link);\r\n setBrand(props.link.brand ?? \"\");\r\n setDescription(props.link.description ?? \"\");\r\n setPrice(props.link.price ?? \"\");\r\n }, [props.link]);\r\n\r\n const updateLink = async () => {\r\n let updatedLink = props.convertMerchantLinkToUploadableObject(props.link);\r\n updatedLink.brand = brand;\r\n updatedLink.description = description;\r\n updatedLink.price = tryParseFloat(price);\r\n\r\n await props.uploadLink(updatedLink);\r\n props.toggleModal();\r\n }\r\n\r\n //

    Add FAILED. Check data and try again.

    \r\n\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n

    Link

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

    Retailer

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

    Description*

    \r\n 0 ? description : \"\"}\r\n id=\"name\"\r\n placeholder={description.length === 0 ? \"Enter link 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

    Brand Name

    \r\n 0 ? brand : \"\"}\r\n id=\"manufacturer\"\r\n placeholder={brand.length === 0 ? \"Enter brand name if any\" : brand}\r\n onChange={(e) => setBrand(e.target.value)}\r\n style={{ backgroundColor: \"#e9ecef\", border: \"none\", marginTop: \"\" }}\r\n autoFocus\r\n />\r\n
    \r\n\r\n
    \r\n

    Retail Price

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

    * Required field

    \r\n\r\n
    \r\n Cancel\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\nexport default EditLinkModal;","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;","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\n\r\nimport ProductRowMobile from \"views/Account/ProductRowMobile\";\r\nimport LinkRowMobile from \"views/Account/LinkRowMobile\";\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 EditLinkModal from \"components/EditProductModal/EditLinkModal\";\r\nimport Modal from \"../../components/Modal\";\r\nimport ShareBlock from \"components/Share/ShareBlock\";\r\nimport MerchantShareBlock from \"components/Share/MerchantShareBlock\";\r\n\r\nimport MyProductsItemDropdown from \"views/Account/MyProductsItemDropdown\";\r\nimport LinkItemDropdown from \"views/Account/LinkItemDropdown\";\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, getReferralShareLink } 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 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\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 links: [],\r\n filteredLinks: [],\r\n productsLinks: [],\r\n showEditProduct: false,\r\n showEditLink: false,\r\n productToEditIndex: 0,\r\n sectors: [],\r\n loading: true,\r\n loadingMore: false,\r\n modalOpen: false,\r\n linkToEdite: null,\r\n shareLink: \"\",\r\n isUserMerchant: false,\r\n tab: 0,\r\n filter: \"\",\r\n reset: 0,\r\n addedProduct: null,\r\n addingProduct: false,\r\n searchIcon: 0,\r\n mostRecentSearch: \"\",\r\n loadingLinkUpload: 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.tab) {\r\n this.setState({ tab: this.props.tab });\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();\r\n let sectors = await this.fetchSectors();\r\n let links = await this.fetchLinks();\r\n\r\n // Combine products and links\r\n let combinedArray = [...links, ...products];\r\n\r\n // Helper function to check if a date is valid\r\n \r\n // Sort the combined array\r\n let filteredProductsLinks = combinedArray.sort((a, b) => {\r\n let dateA = this.isValidDate(new Date(a.modifiedDate)) ? new Date(a.modifiedDate) : new Date(a.createdDate);\r\n let dateB = this.isValidDate(new Date(b.modifiedDate)) ? new Date(b.modifiedDate) : new Date(b.createdDate);\r\n\r\n return dateB - dateA;\r\n });\r\n\r\n\r\n this.setState({ products, sectors, loading: false, filteredProducts: products, filteredProductsLinks, productsLinks: filteredProductsLinks, links, filteredLinks: links });\r\n\r\n document.addEventListener(\"_productAddedEvent\", this.updateProductsAndLinks)\r\n window.addEventListener('storage', () => {\r\n var productAdded = new Date(window.localStorage.getItem('productAdded'));\r\n if (productAdded < new Date()) {\r\n this.updateProductsAndLinks();\r\n }\r\n });\r\n }\r\n\r\n isValidDate = (date) => {\r\n return date instanceof Date && !isNaN(date);\r\n }\r\n\r\n updateProductsAndLinks = async () => {\r\n this.setState({ loading: true });\r\n this.updateProducts();\r\n let links = await this.fetchLinks();\r\n let products = await this.fetchProducts();\r\n\r\n let combinedArray = [...links, ...products];\r\n\r\n // Helper function to check if a date is valid\r\n\r\n // Sort the combined array\r\n let filteredProductsLinks = combinedArray.sort((a, b) => {\r\n let dateA = this.isValidDate(new Date(a.modifiedDate)) ? new Date(a.modifiedDate) : new Date(a.createdDate);\r\n let dateB = this.isValidDate(new Date(b.modifiedDate)) ? new Date(b.modifiedDate) : new Date(b.createdDate);\r\n\r\n return dateB - dateA;\r\n });\r\n this.setState({ filteredProductsLinks, productLinks: filteredProductsLinks, links, products, loading: false })\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.reset !== this.state.reset) {\r\n this.updateProducts();\r\n }\r\n if (prevState.searchIcon !== this.state.searchIcon && (this.state.mostRecentSearch !== \"\" || (this.state.mostRecentSearch === \"\" && this.state.filter !== \"\"))) {\r\n this.updateProducts();\r\n }\r\n }\r\n\r\n updateProducts = async () => {\r\n this.setState({ loading: true });\r\n\r\n let filteredProductsLinks = this.state.productsLinks;\r\n let filter = this.state.filter ?? \"\";\r\n\r\n filteredProductsLinks = filteredProductsLinks.filter(p => {\r\n const filterLowerCase = filter.toLowerCase();\r\n return (p.merchantName?.toLowerCase().includes(filterLowerCase) ?? false) ||\r\n ((!!(p.logoUrl) && p.description?.toLowerCase().includes(filterLowerCase)) ?? false) ||\r\n (p.manufacturer?.toLowerCase().includes(filterLowerCase) ?? false) ||\r\n (p.name?.toLowerCase().includes(filterLowerCase) ?? false) ||\r\n (p.merchant?.toLowerCase().includes(filterLowerCase) ?? false);\r\n });\r\n\r\n filteredProductsLinks = filteredProductsLinks.sort((a, b) => {\r\n let dateA = this.isValidDate(new Date(a.modifiedDate)) ? new Date(a.modifiedDate) : new Date(a.createdDate);\r\n let dateB = this.isValidDate(new Date(b.modifiedDate)) ? new Date(b.modifiedDate) : new Date(b.createdDate);\r\n\r\n return dateB - dateA;\r\n });\r\n\r\n this.setState({ loading: false, filteredProductsLinks });\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"_productAddedEvent\", this.updateProductsAndLinks);\r\n window.removeEventListener(\"storage\", () => { });\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.filteredProductsLinks[i].userMerchantProductId;\r\n let product = { ...this.state.filteredProductsLinks[i] };\r\n\r\n const filteredProductsLinks = this.state.filteredProductsLinks.filter(p => p.userMerchantProductId !== productId || !!(p.logoUrl))\r\n const products = this.state.products.filter(p => p.userMerchantProductId !== productId)\r\n this.setState({ products, filteredProductsLinks });\r\n\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 await postRequest(url, payload);\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 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 displayTableHeader = () => {\r\n let headers = [\"Description\", \"Brand\", \"Retailer\", \"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 retailer 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.filteredProductsLinks?.length > 0) {\r\n return this.state.filteredProductsLinks.map((product, i) => {\r\n\r\n if (product.logoUrl?.length > 0) {\r\n return this.displayLinksRows(product, i);\r\n }\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\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 displayLinksRows = (link, i) => {\r\n\r\n let getLinkUrl = \"https://\";\r\n\r\n if (window.location.host.includes(\"app.rockp\") && !!link.shareSubdomain) {\r\n getLinkUrl += link.shareSubdomain + \".rockporch.com\";\r\n } else {\r\n getLinkUrl += window.location.host;\r\n }\r\n\r\n getLinkUrl = getLinkUrl + \"/mlink/\" + link.merchantId + \"?userId=\" + this.props.loggedInUser.id + \"&redirectUrl=\" + encodeURIComponent(link.referralUrl);\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n
    {link.description?.trim()?.length > 0 ? link.description : getLinkUrl}
    \r\n
    \r\n
    \r\n \r\n\r\n\r\n \r\n {link.brand}\r\n \r\n\r\n \r\n {link.merchantName}\r\n \r\n\r\n \r\n {!!(link.price) ? currencyFormat(link.price) : \"\"}\r\n \r\n\r\n \r\n {!!(link.estimatedCommission) ? currencyFormat(link.estimatedCommission) : \"\"}\r\n \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 this.setState({ showEditLink: !this.state.showEditLink, linkToEdit: link })\r\n }}\r\n />\r\n
    \r\n \r\n \r\n )\r\n }\r\n\r\n handleEditClick = (link) => {\r\n this.setState({ showEditLink: !this.state.showEditLink, linkToEdit: link })\r\n }\r\n\r\n toggleMerchantLinkShareModal = (merchantLinkShareLink) => {\r\n this.setState({ merchantShareModalOpen: !this.state.merchantShareModalOpen, merchantLinkShareLink: this.state.merchantShareModalOpen ? \"\" : merchantLinkShareLink });\r\n }\r\n\r\n displayMerchantShareModal = () => {\r\n let shareProps = {\r\n shareCode: this.state.merchantLinkShareLink,\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 this.toggleMerchantLinkShareModal(\"\")}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n convertMerchantLinkToUploadableObject = (link) => {\r\n return {\r\n id: link.id,\r\n merchantId: link.merchantId,\r\n creatorUserId: link.creatorUserId,\r\n referralUrl: link.referralUrl,\r\n description: link.description,\r\n brand: link.brand ?? null,\r\n price: link.price ?? null,\r\n hide: link.hide ?? null\r\n };\r\n }\r\n\r\n hideMerchantLink = async (link) => {\r\n var links = this.state.links.filter(l => l.id !== link.id)\r\n var filteredProductsLinks = this.state.filteredProductsLinks.filter(l => l.id !== link.id || !(link.logoUrl));\r\n this.setState({ links, filteredProductsLinks });\r\n\r\n let url = `/Products/AddMerchantLinkData/`;\r\n let uploadLink = this.convertMerchantLinkToUploadableObject(link);\r\n uploadLink.hide = true;\r\n await postRequest(url, uploadLink);\r\n }\r\n\r\n uploadLink = async (link) => {\r\n this.setState({ loadingLinkUpload: true })\r\n let url = `/Products/AddMerchantLinkData/`;\r\n await postRequest(url, link);\r\n await this.updateProductsAndLinks();\r\n this.props.goToSavedLinks();\r\n this.setState({ loadingLinkUpload: false })\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.filteredProductsLinks?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return this.displayProductsMobile();\r\n }\r\n\r\n displayProductsMobile = () => {\r\n return this.state.filteredProductsLinks?.map((product, i) => {\r\n if (product.logoUrl?.length > 0) {\r\n return (\r\n {\r\n this.setState({ showEditLink: !this.state.showEditLink, linkToEdit: product })\r\n }}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n )\r\n }\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 displayLinksMobile = () => {\r\n return this.state.links?.map((link, i) => {\r\n return (\r\n {\r\n this.setState({ showEditLink: !this.state.showEditLink, linkToEdit: link })\r\n }}\r\n deviceSize={this.props.deviceSize}\r\n />\r\n )\r\n\r\n })\r\n }\r\n\r\n showLinksMobile = () => {\r\n if (this.state.links?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n ) \r\n }\r\n return (\r\n this.displayLinksMobile()\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 () => {\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}`;\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\r\n return products;\r\n }\r\n\r\n fetchLinks = async () => {\r\n let url = \"/Products/GetMerchantLinksByUserId?userId=\" + this.props.loggedInUser.id;\r\n let links = await getRequest(url);\r\n if (links) {\r\n links.forEach(link => link.user = this.props.loggedInUser);\r\n\r\n }\r\n return links;\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.filteredProductsLinks[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.filteredProductsLinks[productIndex].userMerchantProductId;\r\n let product = { ...this.state.filteredProductsLinks[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, filteredProductsLinks } = this.state;\r\n const productToEditIndex = this.state.productToEditIndex;\r\n\r\n let product = filteredProductsLinks[productToEditIndex];\r\n product.rating = productRating;\r\n\r\n const updatedProducts = products.map(p =>\r\n p.userMerchantProductId === product.userMerchantProductId\r\n ? { ...p, rating: productRating }\r\n : p\r\n );\r\n\r\n const updatedProductsLinks = filteredProductsLinks.map(p =>\r\n !!(p.userMerchantProductId) && p.userMerchantProductId === product.userMerchantProductId\r\n ? { ...p, rating: productRating }\r\n : p\r\n );\r\n this.setState({ filteredProductsLinks: updatedProductsLinks, products: updatedProducts });\r\n }\r\n\r\n\r\n updateProductSectors = async (productIndex, sectors) => {\r\n let filteredProductsLinks = [...this.state.filteredProductsLinks];\r\n let product = filteredProductsLinks[productIndex];\r\n\r\n if (!!(product)) {\r\n product.sectorIds = sectors;\r\n filteredProductsLinks[productIndex] = product;\r\n\r\n this.setState({ filteredProductsLinks });\r\n }\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 onInputKeydown = (e) => {\r\n if (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({ filter: \"\", filteredLinks: this.state.links });\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 this.props.setProductsTab(tab);\r\n }\r\n\r\n submitRating = async (productRating, product) => {\r\n if (productRating > 0) {\r\n this.updateProductRating(productRating);\r\n\r\n let url = \"/Products/Rate?id=\" + product.userMerchantProductId + \"&rating=\" + productRating;\r\n let rating = await getRequest(url);\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.filteredProductsLinks[this.state.productToEditIndex]}\r\n productDescription={this.state.filteredProductsLinks[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 updateProductsAndLinks={this.updateProductsAndLinks}\r\n setLoading={this.setLoading}\r\n goToSavedLinks={this.props.goToSavedLinks}\r\n /> \r\n ): null\r\n }\r\n\r\n {\r\n !!(this.state.linkToEdit) && this.state.showEditLink ?(\r\n this.setState({ showEditLink: false, linkToEdit: null })}\r\n loadingLinkUpload={this.state.loadingLinkUpload}\r\n uploadLink={this.uploadLink}\r\n link={this.state.linkToEdit}\r\n convertMerchantLinkToUploadableObject={this.convertMerchantLinkToUploadableObject}\r\n />\r\n ) : null\r\n }\r\n\r\n {\r\n this.displayShareModal()\r\n }\r\n\r\n {\r\n this.displayMerchantShareModal()\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 retailer 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.state.loading ? this.onInputChange(e) : () => { }} onKeyDown={!this.state.loading ? this.onInputKeydown : () => { } }/>\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 {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.loading ? (\r\n <>\r\n {this.showProductsMobile()}\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.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\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, Comments, or Ideas?\r\n

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

    \r\n We’re here to help!\r\n

    \r\n

    \r\n The RockPorch Creator Development Team is here to help guide and support you every step of the way! Whether that's questions on how to get started or keep the momentum going, or you have great ideas on features that would make your life easier, 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 { 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 { Helmet } from 'react-helmet';\r\nimport BookmarkIcon from \"components/icons/BookmarkIcon\";\r\nimport { filter } from \"lodash\";\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 favorites: {\r\n value: 4,\r\n label: \"Favorites\"\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 selectOptions: {\r\n options: [\r\n this.selectOptions.name,\r\n this.selectOptions.recentlyAdded,\r\n this.selectOptions.commission,\r\n this.selectOptions.favorites,\r\n ],\r\n defaultValue: this.selectOptions.name,\r\n currentValue: this.selectOptions.name,\r\n },\r\n favorites: false,\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 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.filterPartners();\r\n\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) => { 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\r\n if (!!(partners)) {\r\n partners = partners.map(partner => ({\r\n ...partner,\r\n date: partner.integratedDate.split('T')[0]\r\n }));\r\n }\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 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 handleUserFavorite = async (partner) => {\r\n const updatedPartners = this.state.partners.map(p => {\r\n if (p.id === partner.id) {\r\n return { ...p, userFavorite: !p.userFavorite };\r\n }\r\n return p;\r\n });\r\n\r\n const updatedFilteredPartners = this.state.filteredPartners.map(p => {\r\n if (p.id === partner.id) {\r\n return { ...p, userFavorite: !p.userFavorite };\r\n }\r\n return p;\r\n });\r\n\r\n this.setState({\r\n partners: updatedPartners,\r\n filteredPartners: updatedFilteredPartners,\r\n });\r\n\r\n const userMerchant = {\r\n merchantId: partner.id,\r\n userId: this.props.loggedInUser.id,\r\n };\r\n\r\n if (partner.userFavorite) {\r\n let url = '/api/Account/DeleteUserFavoriteBrand';\r\n await postRequest(url, userMerchant);\r\n } else {\r\n let url = '/api/Account/CreateUserFavoriteBrand';\r\n await postRequest(url, userMerchant);\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.favorites ? 0 : 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?.date).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) && !this.state.favorites ?\r\n //
    \r\n
    \r\n
    \r\n Featured\r\n
    \r\n
    \r\n //
    \r\n :\r\n
    ;\r\n const renderBookmarkOverlay = () => {\r\n return (\r\n {this.handleUserFavorite(partner)}} style={{ cursor: \"pointer\", }}>\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 {renderBookmarkOverlay()}\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 let favorites = e.value === 4;\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.date > b.date ? -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 if (e.value === 4) {\r\n let favoritesPartners = filteredPartners.filter(partner => partner.userFavorite === true);\r\n let nonFavoritePartners = filteredPartners.filter(partner => partner.userFavorite === false);\r\n\r\n favoritesPartners.sort((a, b) => a.merchantName.toLowerCase() < b.merchantName.toLowerCase() ? -1 : 1);\r\n nonFavoritePartners.sort((a, b) => a.merchantName.toLowerCase() < b.merchantName.toLowerCase() ? -1 : 1);\r\n\r\n finalFilteredPartners = [...favoritesPartners, ...nonFavoritePartners];\r\n }\r\n\r\n this.setState({ filteredPartners: finalFilteredPartners, selectOptions, favorites });\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 Partners\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
    \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

    Looking for a brand that's not on RockPorch?

    \r\n

    Sugggest it to us here, and we'll work on adding it!!

    \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

    Looking for a brand that's not on RockPorch?

    \r\n

    Sugggest it to us here, and we'll work on adding it!!

    \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 {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\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\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 { Helmet } from 'react-helmet';\r\nimport { flatMap } from \"lodash\";\r\n\r\nclass CurrentDeals 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 partners: [],\r\n loading: true,\r\n currentDeals: [],\r\n upcomingCurrentDeals: [],\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 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 ]);\r\n\r\n await this.getCurrentDeals();\r\n\r\n this.setState({ loading: false })\r\n }\r\n\r\n getCurrentDeals = async () => {\r\n const getUrl = \"api/Merchant/GetCurrentDeals?admin=false&upcoming=true\";\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 today = new Date();\r\n today.setHours(0, 0, 0, 0); // Reset time part to 00:00:00\r\n\r\n const upcomingDeals = [];\r\n const remainingCurrentDeals = [];\r\n\r\n currentDeals.forEach(deal => {\r\n const startDateUTC = new Date(deal.startDate);\r\n const startDateLocal = new Date(startDateUTC.getTime() - (startDateUTC.getTimezoneOffset() * 60000));\r\n startDateLocal.setHours(0, 0, 0, 0); // Reset time part to 00:00:00\r\n\r\n if (startDateLocal > today) {\r\n deal.startDateLocal = startDateLocal;\r\n deal.upcoming = true;\r\n upcomingDeals.push(deal);\r\n } else {\r\n deal.startDateLocal = startDateLocal;\r\n deal.upcoming = false;\r\n remainingCurrentDeals.push(deal);\r\n }\r\n });\r\n\r\n const dealsWithOrdinal = remainingCurrentDeals.filter(deal => deal.ordinal !== undefined && deal.ordinal !== null);\r\n const dealsWithoutOrdinal = remainingCurrentDeals.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, ...upcomingDeals];\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 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 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 if (!(this.state.currentDeals) || this.state.currentDeals.length === 0) {\r\n return (\r\n
    \r\n No current deals are available at this time\r\n
    \r\n )\r\n }\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 const formatDate = (date) => {\r\n return date.toLocaleDateString(\"en-US\", {\r\n month: \"numeric\",\r\n day: \"numeric\",\r\n year: \"numeric\"\r\n })\r\n };\r\n\r\n return (\r\n
    \r\n\r\n deal.upcoming ? e.preventDefault() : console.log()} target=\"_blank\">\r\n
    \r\n
    \r\n

    {deal.merchantName}

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

    {deal.description}

    \r\n
    \r\n {\r\n !!(deal.upcoming) ?\r\n e.preventDefault()}>Starting {formatDate(deal.startDateLocal)}\r\n\r\n :\r\n e.preventDefault()}>Explore Sale\r\n }\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 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 - Current Deals\r\n \r\n \r\n )\r\n }\r\n return (\r\n <>\r\n \r\n RockPorch - Current Deals\r\n \r\n {this.displayShareModal()}\r\n
    \r\n \r\n

    Current Deals

    \r\n

    View current deals from brands

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\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 )\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 })(CurrentDeals);","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 postFeedPostGridItem={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.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\", 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;","// 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 * 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 CurrentDeals from \"../Account/CurrentDeals\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport Marquee from \"react-fast-marquee\";\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 productsTab = 0;\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: \"Current Deals\"},\r\n { value: 6, 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 marqueeHtml: \"\",\r\n marqueeBackgroundColor: \"\",\r\n marqueeRedirectUrl: null,\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 this.fetchCreatorDashboardMarquee();\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 const productsTab = Math.floor(params.productsTab);\r\n\r\n if (!isNaN(tab) && Number.isInteger(tab) && tab >= 0 && tab <= 6) {\r\n if (tab === 6) {\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 if (!isNaN(productsTab) && Number.isInteger(productsTab) && productsTab >= 0 && productsTab <= 1) {\r\n this.productsTab = productsTab;\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.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 const prevKey = prevProps.location.state?.key;\r\n const currentKey = this.props.location.state?.key;\r\n\r\n if (prevKey !== currentKey) {\r\n const params = getQueryStringParams(window.location.search);\r\n const productsTab = Math.floor(params.productsTab);\r\n\r\n if (!isNaN(productsTab) && Number.isInteger(productsTab) && productsTab >= 0 && productsTab <= 1) {\r\n this.productsTab = productsTab;\r\n }\r\n //this.productsTab = 1;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n document.documentElement.removeEventListener('dragleave', this.handleDragLeave);\r\n }\r\n\r\n fetchCreatorDashboardMarquee = async () => {\r\n let url = `/api/Creator/GetCreatorDashboardMarquee`;\r\n let creatorDashboardMarquee = await getRequest(url);\r\n if (!!(creatorDashboardMarquee) && creatorDashboardMarquee.uiHtml?.trim().length > 0) {\r\n this.setState({ marqueeHtml: creatorDashboardMarquee.uiHtml, marqueeBackgroundColor: creatorDashboardMarquee.backgroundColor, marqueeRedirectUrl: creatorDashboardMarquee.redirectUrl });\r\n }\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 === 6) {\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 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://meetings.hubspot.com/elaine80';\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 setProductsTab = (tab) => {\r\n this.productsTab = tab;\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 Drafts\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 Drafts\r\n\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 case 5: {\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 this.state.marqueeHtml ?\r\n
    \r\n {\r\n !!(this.state.marqueeRedirectUrl) ?\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n :\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n :\r\n <>\r\n }\r\n \r\n\r\n
    \r\n \r\n RockPorch - Creator Dashboard\r\n \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
    • this.onTabChange(5)}>\r\n Current Deals\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","let usStates = [\r\n {\r\n \"id\": 1456,\r\n \"name\": \"Alabama\",\r\n \"state_code\": \"AL\"\r\n },\r\n {\r\n \"id\": 1400,\r\n \"name\": \"Alaska\",\r\n \"state_code\": \"AK\"\r\n },\r\n {\r\n \"id\": 1424,\r\n \"name\": \"American Samoa\",\r\n \"state_code\": \"AS\"\r\n },\r\n {\r\n \"id\": 1434,\r\n \"name\": \"Arizona\",\r\n \"state_code\": \"AZ\"\r\n },\r\n {\r\n \"id\": 1444,\r\n \"name\": \"Arkansas\",\r\n \"state_code\": \"AR\"\r\n },\r\n {\r\n \"id\": 1402,\r\n \"name\": \"Baker Island\",\r\n \"state_code\": \"UM-81\"\r\n },\r\n {\r\n \"id\": 1416,\r\n \"name\": \"California\",\r\n \"state_code\": \"CA\"\r\n },\r\n {\r\n \"id\": 1450,\r\n \"name\": \"Colorado\",\r\n \"state_code\": \"CO\"\r\n },\r\n {\r\n \"id\": 1435,\r\n \"name\": \"Connecticut\",\r\n \"state_code\": \"CT\"\r\n },\r\n {\r\n \"id\": 1399,\r\n \"name\": \"Delaware\",\r\n \"state_code\": \"DE\"\r\n },\r\n {\r\n \"id\": 1437,\r\n \"name\": \"District of Columbia\",\r\n \"state_code\": \"DC\"\r\n },\r\n {\r\n \"id\": 1436,\r\n \"name\": \"Florida\",\r\n \"state_code\": \"FL\"\r\n },\r\n {\r\n \"id\": 1455,\r\n \"name\": \"Georgia\",\r\n \"state_code\": \"GA\"\r\n },\r\n {\r\n \"id\": 1412,\r\n \"name\": \"Guam\",\r\n \"state_code\": \"GU\"\r\n },\r\n {\r\n \"id\": 1411,\r\n \"name\": \"Hawaii\",\r\n \"state_code\": \"HI\"\r\n },\r\n {\r\n \"id\": 1398,\r\n \"name\": \"Howland Island\",\r\n \"state_code\": \"UM-84\"\r\n },\r\n {\r\n \"id\": 1460,\r\n \"name\": \"Idaho\",\r\n \"state_code\": \"ID\"\r\n },\r\n {\r\n \"id\": 1425,\r\n \"name\": \"Illinois\",\r\n \"state_code\": \"IL\"\r\n },\r\n {\r\n \"id\": 1440,\r\n \"name\": \"Indiana\",\r\n \"state_code\": \"IN\"\r\n },\r\n {\r\n \"id\": 1459,\r\n \"name\": \"Iowa\",\r\n \"state_code\": \"IA\"\r\n },\r\n {\r\n \"id\": 1410,\r\n \"name\": \"Jarvis Island\",\r\n \"state_code\": \"UM-86\"\r\n },\r\n {\r\n \"id\": 1428,\r\n \"name\": \"Johnston Atoll\",\r\n \"state_code\": \"UM-67\"\r\n },\r\n {\r\n \"id\": 1406,\r\n \"name\": \"Kansas\",\r\n \"state_code\": \"KS\"\r\n },\r\n {\r\n \"id\": 1419,\r\n \"name\": \"Kentucky\",\r\n \"state_code\": \"KY\"\r\n },\r\n {\r\n \"id\": 1403,\r\n \"name\": \"Kingman Reef\",\r\n \"state_code\": \"UM-89\"\r\n },\r\n {\r\n \"id\": 1457,\r\n \"name\": \"Louisiana\",\r\n \"state_code\": \"LA\"\r\n },\r\n {\r\n \"id\": 1453,\r\n \"name\": \"Maine\",\r\n \"state_code\": \"ME\"\r\n },\r\n {\r\n \"id\": 1401,\r\n \"name\": \"Maryland\",\r\n \"state_code\": \"MD\"\r\n },\r\n {\r\n \"id\": 1433,\r\n \"name\": \"Massachusetts\",\r\n \"state_code\": \"MA\"\r\n },\r\n {\r\n \"id\": 1426,\r\n \"name\": \"Michigan\",\r\n \"state_code\": \"MI\"\r\n },\r\n {\r\n \"id\": 1438,\r\n \"name\": \"Midway Atoll\",\r\n \"state_code\": \"UM-71\"\r\n },\r\n {\r\n \"id\": 1420,\r\n \"name\": \"Minnesota\",\r\n \"state_code\": \"MN\"\r\n },\r\n {\r\n \"id\": 1430,\r\n \"name\": \"Mississippi\",\r\n \"state_code\": \"MS\"\r\n },\r\n {\r\n \"id\": 1451,\r\n \"name\": \"Missouri\",\r\n \"state_code\": \"MO\"\r\n },\r\n {\r\n \"id\": 1446,\r\n \"name\": \"Montana\",\r\n \"state_code\": \"MT\"\r\n },\r\n {\r\n \"id\": 1439,\r\n \"name\": \"Navassa Island\",\r\n \"state_code\": \"UM-76\"\r\n },\r\n {\r\n \"id\": 1408,\r\n \"name\": \"Nebraska\",\r\n \"state_code\": \"NE\"\r\n },\r\n {\r\n \"id\": 1458,\r\n \"name\": \"Nevada\",\r\n \"state_code\": \"NV\"\r\n },\r\n {\r\n \"id\": 1404,\r\n \"name\": \"New Hampshire\",\r\n \"state_code\": \"NH\"\r\n },\r\n {\r\n \"id\": 1417,\r\n \"name\": \"New Jersey\",\r\n \"state_code\": \"NJ\"\r\n },\r\n {\r\n \"id\": 1423,\r\n \"name\": \"New Mexico\",\r\n \"state_code\": \"NM\"\r\n },\r\n {\r\n \"id\": 1452,\r\n \"name\": \"New York\",\r\n \"state_code\": \"NY\"\r\n },\r\n {\r\n \"id\": 1447,\r\n \"name\": \"North Carolina\",\r\n \"state_code\": \"NC\"\r\n },\r\n {\r\n \"id\": 1418,\r\n \"name\": \"North Dakota\",\r\n \"state_code\": \"ND\"\r\n },\r\n {\r\n \"id\": 1431,\r\n \"name\": \"Northern Mariana Islands\",\r\n \"state_code\": \"MP\"\r\n },\r\n {\r\n \"id\": 4851,\r\n \"name\": \"Ohio\",\r\n \"state_code\": \"OH\"\r\n },\r\n {\r\n \"id\": 1421,\r\n \"name\": \"Oklahoma\",\r\n \"state_code\": \"OK\"\r\n },\r\n {\r\n \"id\": 1415,\r\n \"name\": \"Oregon\",\r\n \"state_code\": \"OR\"\r\n },\r\n {\r\n \"id\": 1448,\r\n \"name\": \"Palmyra Atoll\",\r\n \"state_code\": \"UM-95\"\r\n },\r\n {\r\n \"id\": 1422,\r\n \"name\": \"Pennsylvania\",\r\n \"state_code\": \"PA\"\r\n },\r\n {\r\n \"id\": 1449,\r\n \"name\": \"Puerto Rico\",\r\n \"state_code\": \"PR\"\r\n },\r\n {\r\n \"id\": 1461,\r\n \"name\": \"Rhode Island\",\r\n \"state_code\": \"RI\"\r\n },\r\n {\r\n \"id\": 1443,\r\n \"name\": \"South Carolina\",\r\n \"state_code\": \"SC\"\r\n },\r\n {\r\n \"id\": 1445,\r\n \"name\": \"South Dakota\",\r\n \"state_code\": \"SD\"\r\n },\r\n {\r\n \"id\": 1454,\r\n \"name\": \"Tennessee\",\r\n \"state_code\": \"TN\"\r\n },\r\n {\r\n \"id\": 1407,\r\n \"name\": \"Texas\",\r\n \"state_code\": \"TX\"\r\n },\r\n {\r\n \"id\": 1432,\r\n \"name\": \"United States Minor Outlying Islands\",\r\n \"state_code\": \"UM\"\r\n },\r\n {\r\n \"id\": 1413,\r\n \"name\": \"United States Virgin Islands\",\r\n \"state_code\": \"VI\"\r\n },\r\n {\r\n \"id\": 1414,\r\n \"name\": \"Utah\",\r\n \"state_code\": \"UT\"\r\n },\r\n {\r\n \"id\": 1409,\r\n \"name\": \"Vermont\",\r\n \"state_code\": \"VT\"\r\n },\r\n {\r\n \"id\": 1427,\r\n \"name\": \"Virginia\",\r\n \"state_code\": \"VA\"\r\n },\r\n {\r\n \"id\": 1405,\r\n \"name\": \"Wake Island\",\r\n \"state_code\": \"UM-79\"\r\n },\r\n {\r\n \"id\": 1462,\r\n \"name\": \"Washington\",\r\n \"state_code\": \"WA\"\r\n },\r\n {\r\n \"id\": 1429,\r\n \"name\": \"West Virginia\",\r\n \"state_code\": \"WV\"\r\n },\r\n {\r\n \"id\": 1441,\r\n \"name\": \"Wisconsin\",\r\n \"state_code\": \"WI\"\r\n },\r\n {\r\n \"id\": 1442,\r\n \"name\": \"Wyoming\",\r\n \"state_code\": \"WY\"\r\n }\r\n]\r\n\r\nexport default usStates;","let countries = [\r\n {\r\n \"id\": 1,\r\n \"name\": \"Afghanistan\",\r\n \"iso3\": \"AFG\",\r\n \"iso2\": \"AF\",\r\n \"numeric_code\": \"004\",\r\n \"phone_code\": 93,\r\n \"capital\": \"Kabul\",\r\n \"currency\": \"AFN\",\r\n \"currency_name\": \"Afghan afghani\",\r\n \"currency_symbol\": \"؋\",\r\n \"tld\": \".af\",\r\n \"native\": \"افغانستان\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"33.00000000\",\r\n \"longitude\": \"65.00000000\",\r\n \"emoji\": \"🇦🇫\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"name\": \"Aland Islands\",\r\n \"iso3\": \"ALA\",\r\n \"iso2\": \"AX\",\r\n \"numeric_code\": \"248\",\r\n \"phone_code\": 358,\r\n \"capital\": \"Mariehamn\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".ax\",\r\n \"native\": \"Åland\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"60.11666700\",\r\n \"longitude\": \"19.90000000\",\r\n \"emoji\": \"🇦🇽\"\r\n },\r\n {\r\n \"id\": 3,\r\n \"name\": \"Albania\",\r\n \"iso3\": \"ALB\",\r\n \"iso2\": \"AL\",\r\n \"numeric_code\": \"008\",\r\n \"phone_code\": 355,\r\n \"capital\": \"Tirana\",\r\n \"currency\": \"ALL\",\r\n \"currency_name\": \"Albanian lek\",\r\n \"currency_symbol\": \"Lek\",\r\n \"tld\": \".al\",\r\n \"native\": \"Shqipëria\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"41.00000000\",\r\n \"longitude\": \"20.00000000\",\r\n \"emoji\": \"🇦🇱\"\r\n },\r\n {\r\n \"id\": 4,\r\n \"name\": \"Algeria\",\r\n \"iso3\": \"DZA\",\r\n \"iso2\": \"DZ\",\r\n \"numeric_code\": \"012\",\r\n \"phone_code\": 213,\r\n \"capital\": \"Algiers\",\r\n \"currency\": \"DZD\",\r\n \"currency_name\": \"Algerian dinar\",\r\n \"currency_symbol\": \"دج\",\r\n \"tld\": \".dz\",\r\n \"native\": \"الجزائر\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"28.00000000\",\r\n \"longitude\": \"3.00000000\",\r\n \"emoji\": \"🇩🇿\"\r\n },\r\n {\r\n \"id\": 5,\r\n \"name\": \"American Samoa\",\r\n \"iso3\": \"ASM\",\r\n \"iso2\": \"AS\",\r\n \"numeric_code\": \"016\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Pago Pago\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"US Dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".as\",\r\n \"native\": \"American Samoa\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-14.33333333\",\r\n \"longitude\": \"-170.00000000\",\r\n \"emoji\": \"🇦🇸\"\r\n },\r\n {\r\n \"id\": 6,\r\n \"name\": \"Andorra\",\r\n \"iso3\": \"AND\",\r\n \"iso2\": \"AD\",\r\n \"numeric_code\": \"020\",\r\n \"phone_code\": 376,\r\n \"capital\": \"Andorra la Vella\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".ad\",\r\n \"native\": \"Andorra\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"42.50000000\",\r\n \"longitude\": \"1.50000000\",\r\n \"emoji\": \"🇦🇩\"\r\n },\r\n {\r\n \"id\": 7,\r\n \"name\": \"Angola\",\r\n \"iso3\": \"AGO\",\r\n \"iso2\": \"AO\",\r\n \"numeric_code\": \"024\",\r\n \"phone_code\": 244,\r\n \"capital\": \"Luanda\",\r\n \"currency\": \"AOA\",\r\n \"currency_name\": \"Angolan kwanza\",\r\n \"currency_symbol\": \"Kz\",\r\n \"tld\": \".ao\",\r\n \"native\": \"Angola\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"-12.50000000\",\r\n \"longitude\": \"18.50000000\",\r\n \"emoji\": \"🇦🇴\"\r\n },\r\n {\r\n \"id\": 8,\r\n \"name\": \"Anguilla\",\r\n \"iso3\": \"AIA\",\r\n \"iso2\": \"AI\",\r\n \"numeric_code\": \"660\",\r\n \"phone_code\": 1,\r\n \"capital\": \"The Valley\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"East Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ai\",\r\n \"native\": \"Anguilla\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.25000000\",\r\n \"longitude\": \"-63.16666666\",\r\n \"emoji\": \"🇦🇮\"\r\n },\r\n {\r\n \"id\": 9,\r\n \"name\": \"Antarctica\",\r\n \"iso3\": \"ATA\",\r\n \"iso2\": \"AQ\",\r\n \"numeric_code\": \"010\",\r\n \"phone_code\": 672,\r\n \"capital\": \"\",\r\n \"currency\": \"AAD\",\r\n \"currency_name\": \"Antarctican dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".aq\",\r\n \"native\": \"Antarctica\",\r\n \"region\": \"Polar\",\r\n \"subregion\": \"\",\r\n \"latitude\": \"-74.65000000\",\r\n \"longitude\": \"4.48000000\",\r\n \"emoji\": \"🇦🇶\"\r\n },\r\n {\r\n \"id\": 10,\r\n \"name\": \"Antigua And Barbuda\",\r\n \"iso3\": \"ATG\",\r\n \"iso2\": \"AG\",\r\n \"numeric_code\": \"028\",\r\n \"phone_code\": 1,\r\n \"capital\": \"St. John's\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ag\",\r\n \"native\": \"Antigua and Barbuda\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"17.05000000\",\r\n \"longitude\": \"-61.80000000\",\r\n \"emoji\": \"🇦🇬\"\r\n },\r\n {\r\n \"id\": 11,\r\n \"name\": \"Argentina\",\r\n \"iso3\": \"ARG\",\r\n \"iso2\": \"AR\",\r\n \"numeric_code\": \"032\",\r\n \"phone_code\": 54,\r\n \"capital\": \"Buenos Aires\",\r\n \"currency\": \"ARS\",\r\n \"currency_name\": \"Argentine peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ar\",\r\n \"native\": \"Argentina\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-34.00000000\",\r\n \"longitude\": \"-64.00000000\",\r\n \"emoji\": \"🇦🇷\"\r\n },\r\n {\r\n \"id\": 12,\r\n \"name\": \"Armenia\",\r\n \"iso3\": \"ARM\",\r\n \"iso2\": \"AM\",\r\n \"numeric_code\": \"051\",\r\n \"phone_code\": 374,\r\n \"capital\": \"Yerevan\",\r\n \"currency\": \"AMD\",\r\n \"currency_name\": \"Armenian dram\",\r\n \"currency_symbol\": \"֏\",\r\n \"tld\": \".am\",\r\n \"native\": \"Հայաստան\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"40.00000000\",\r\n \"longitude\": \"45.00000000\",\r\n \"emoji\": \"🇦🇲\"\r\n },\r\n {\r\n \"id\": 13,\r\n \"name\": \"Aruba\",\r\n \"iso3\": \"ABW\",\r\n \"iso2\": \"AW\",\r\n \"numeric_code\": \"533\",\r\n \"phone_code\": 297,\r\n \"capital\": \"Oranjestad\",\r\n \"currency\": \"AWG\",\r\n \"currency_name\": \"Aruban florin\",\r\n \"currency_symbol\": \"ƒ\",\r\n \"tld\": \".aw\",\r\n \"native\": \"Aruba\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"12.50000000\",\r\n \"longitude\": \"-69.96666666\",\r\n \"emoji\": \"🇦🇼\"\r\n },\r\n {\r\n \"id\": 14,\r\n \"name\": \"Australia\",\r\n \"iso3\": \"AUS\",\r\n \"iso2\": \"AU\",\r\n \"numeric_code\": \"036\",\r\n \"phone_code\": 61,\r\n \"capital\": \"Canberra\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".au\",\r\n \"native\": \"Australia\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Australia and New Zealand\",\r\n \"latitude\": \"-27.00000000\",\r\n \"longitude\": \"133.00000000\",\r\n \"emoji\": \"🇦🇺\"\r\n },\r\n {\r\n \"id\": 15,\r\n \"name\": \"Austria\",\r\n \"iso3\": \"AUT\",\r\n \"iso2\": \"AT\",\r\n \"numeric_code\": \"040\",\r\n \"phone_code\": 43,\r\n \"capital\": \"Vienna\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".at\",\r\n \"native\": \"Österreich\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"47.33333333\",\r\n \"longitude\": \"13.33333333\",\r\n \"emoji\": \"🇦🇹\"\r\n },\r\n {\r\n \"id\": 16,\r\n \"name\": \"Azerbaijan\",\r\n \"iso3\": \"AZE\",\r\n \"iso2\": \"AZ\",\r\n \"numeric_code\": \"031\",\r\n \"phone_code\": 994,\r\n \"capital\": \"Baku\",\r\n \"currency\": \"AZN\",\r\n \"currency_name\": \"Azerbaijani manat\",\r\n \"currency_symbol\": \"m\",\r\n \"tld\": \".az\",\r\n \"native\": \"Azərbaycan\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"40.50000000\",\r\n \"longitude\": \"47.50000000\",\r\n \"emoji\": \"🇦🇿\"\r\n },\r\n {\r\n \"id\": 18,\r\n \"name\": \"Bahrain\",\r\n \"iso3\": \"BHR\",\r\n \"iso2\": \"BH\",\r\n \"numeric_code\": \"048\",\r\n \"phone_code\": 973,\r\n \"capital\": \"Manama\",\r\n \"currency\": \"BHD\",\r\n \"currency_name\": \"Bahraini dinar\",\r\n \"currency_symbol\": \".د.ب\",\r\n \"tld\": \".bh\",\r\n \"native\": \"‏البحرين\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"26.00000000\",\r\n \"longitude\": \"50.55000000\",\r\n \"emoji\": \"🇧🇭\"\r\n },\r\n {\r\n \"id\": 19,\r\n \"name\": \"Bangladesh\",\r\n \"iso3\": \"BGD\",\r\n \"iso2\": \"BD\",\r\n \"numeric_code\": \"050\",\r\n \"phone_code\": 880,\r\n \"capital\": \"Dhaka\",\r\n \"currency\": \"BDT\",\r\n \"currency_name\": \"Bangladeshi taka\",\r\n \"currency_symbol\": \"৳\",\r\n \"tld\": \".bd\",\r\n \"native\": \"Bangladesh\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"24.00000000\",\r\n \"longitude\": \"90.00000000\",\r\n \"emoji\": \"🇧🇩\"\r\n },\r\n {\r\n \"id\": 20,\r\n \"name\": \"Barbados\",\r\n \"iso3\": \"BRB\",\r\n \"iso2\": \"BB\",\r\n \"numeric_code\": \"052\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Bridgetown\",\r\n \"currency\": \"BBD\",\r\n \"currency_name\": \"Barbadian dollar\",\r\n \"currency_symbol\": \"Bds$\",\r\n \"tld\": \".bb\",\r\n \"native\": \"Barbados\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"13.16666666\",\r\n \"longitude\": \"-59.53333333\",\r\n \"emoji\": \"🇧🇧\"\r\n },\r\n {\r\n \"id\": 21,\r\n \"name\": \"Belarus\",\r\n \"iso3\": \"BLR\",\r\n \"iso2\": \"BY\",\r\n \"numeric_code\": \"112\",\r\n \"phone_code\": 375,\r\n \"capital\": \"Minsk\",\r\n \"currency\": \"BYN\",\r\n \"currency_name\": \"Belarusian ruble\",\r\n \"currency_symbol\": \"Br\",\r\n \"tld\": \".by\",\r\n \"native\": \"Белару́сь\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"53.00000000\",\r\n \"longitude\": \"28.00000000\",\r\n \"emoji\": \"🇧🇾\"\r\n },\r\n {\r\n \"id\": 22,\r\n \"name\": \"Belgium\",\r\n \"iso3\": \"BEL\",\r\n \"iso2\": \"BE\",\r\n \"numeric_code\": \"056\",\r\n \"phone_code\": 32,\r\n \"capital\": \"Brussels\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".be\",\r\n \"native\": \"België\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"50.83333333\",\r\n \"longitude\": \"4.00000000\",\r\n \"emoji\": \"🇧🇪\"\r\n },\r\n {\r\n \"id\": 23,\r\n \"name\": \"Belize\",\r\n \"iso3\": \"BLZ\",\r\n \"iso2\": \"BZ\",\r\n \"numeric_code\": \"084\",\r\n \"phone_code\": 501,\r\n \"capital\": \"Belmopan\",\r\n \"currency\": \"BZD\",\r\n \"currency_name\": \"Belize dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".bz\",\r\n \"native\": \"Belize\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"17.25000000\",\r\n \"longitude\": \"-88.75000000\",\r\n \"emoji\": \"🇧🇿\"\r\n },\r\n {\r\n \"id\": 24,\r\n \"name\": \"Benin\",\r\n \"iso3\": \"BEN\",\r\n \"iso2\": \"BJ\",\r\n \"numeric_code\": \"204\",\r\n \"phone_code\": 229,\r\n \"capital\": \"Porto-Novo\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".bj\",\r\n \"native\": \"Bénin\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"9.50000000\",\r\n \"longitude\": \"2.25000000\",\r\n \"emoji\": \"🇧🇯\"\r\n },\r\n {\r\n \"id\": 25,\r\n \"name\": \"Bermuda\",\r\n \"iso3\": \"BMU\",\r\n \"iso2\": \"BM\",\r\n \"numeric_code\": \"060\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Hamilton\",\r\n \"currency\": \"BMD\",\r\n \"currency_name\": \"Bermudian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".bm\",\r\n \"native\": \"Bermuda\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Northern America\",\r\n \"latitude\": \"32.33333333\",\r\n \"longitude\": \"-64.75000000\",\r\n \"emoji\": \"🇧🇲\"\r\n },\r\n {\r\n \"id\": 26,\r\n \"name\": \"Bhutan\",\r\n \"iso3\": \"BTN\",\r\n \"iso2\": \"BT\",\r\n \"numeric_code\": \"064\",\r\n \"phone_code\": 975,\r\n \"capital\": \"Thimphu\",\r\n \"currency\": \"BTN\",\r\n \"currency_name\": \"Bhutanese ngultrum\",\r\n \"currency_symbol\": \"Nu.\",\r\n \"tld\": \".bt\",\r\n \"native\": \"ʼbrug-yul\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"27.50000000\",\r\n \"longitude\": \"90.50000000\",\r\n \"emoji\": \"🇧🇹\"\r\n },\r\n {\r\n \"id\": 27,\r\n \"name\": \"Bolivia\",\r\n \"iso3\": \"BOL\",\r\n \"iso2\": \"BO\",\r\n \"numeric_code\": \"068\",\r\n \"phone_code\": 591,\r\n \"capital\": \"Sucre\",\r\n \"currency\": \"BOB\",\r\n \"currency_name\": \"Bolivian boliviano\",\r\n \"currency_symbol\": \"Bs.\",\r\n \"tld\": \".bo\",\r\n \"native\": \"Bolivia\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-17.00000000\",\r\n \"longitude\": \"-65.00000000\",\r\n \"emoji\": \"🇧🇴\"\r\n },\r\n {\r\n \"id\": 155,\r\n \"name\": \"Bonaire, Sint Eustatius and Saba\",\r\n \"iso3\": \"BES\",\r\n \"iso2\": \"BQ\",\r\n \"numeric_code\": \"535\",\r\n \"phone_code\": 599,\r\n \"capital\": \"Kralendijk\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".an\",\r\n \"native\": \"Caribisch Nederland\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"12.15000000\",\r\n \"longitude\": \"-68.26666700\",\r\n \"emoji\": \"🇧🇶\"\r\n },\r\n {\r\n \"id\": 28,\r\n \"name\": \"Bosnia and Herzegovina\",\r\n \"iso3\": \"BIH\",\r\n \"iso2\": \"BA\",\r\n \"numeric_code\": \"070\",\r\n \"phone_code\": 387,\r\n \"capital\": \"Sarajevo\",\r\n \"currency\": \"BAM\",\r\n \"currency_name\": \"Bosnia and Herzegovina convertible mark\",\r\n \"currency_symbol\": \"KM\",\r\n \"tld\": \".ba\",\r\n \"native\": \"Bosna i Hercegovina\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"44.00000000\",\r\n \"longitude\": \"18.00000000\",\r\n \"emoji\": \"🇧🇦\"\r\n },\r\n {\r\n \"id\": 29,\r\n \"name\": \"Botswana\",\r\n \"iso3\": \"BWA\",\r\n \"iso2\": \"BW\",\r\n \"numeric_code\": \"072\",\r\n \"phone_code\": 267,\r\n \"capital\": \"Gaborone\",\r\n \"currency\": \"BWP\",\r\n \"currency_name\": \"Botswana pula\",\r\n \"currency_symbol\": \"P\",\r\n \"tld\": \".bw\",\r\n \"native\": \"Botswana\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Southern Africa\",\r\n \"latitude\": \"-22.00000000\",\r\n \"longitude\": \"24.00000000\",\r\n \"emoji\": \"🇧🇼\"\r\n },\r\n {\r\n \"id\": 30,\r\n \"name\": \"Bouvet Island\",\r\n \"iso3\": \"BVT\",\r\n \"iso2\": \"BV\",\r\n \"numeric_code\": \"074\",\r\n \"phone_code\": 55,\r\n \"capital\": \"\",\r\n \"currency\": \"NOK\",\r\n \"currency_name\": \"Norwegian Krone\",\r\n \"currency_symbol\": \"kr\",\r\n \"tld\": \".bv\",\r\n \"native\": \"Bouvetøya\",\r\n \"region\": \"\",\r\n \"subregion\": \"\",\r\n \"latitude\": \"-54.43333333\",\r\n \"longitude\": \"3.40000000\",\r\n \"emoji\": \"🇧🇻\"\r\n },\r\n {\r\n \"id\": 31,\r\n \"name\": \"Brazil\",\r\n \"iso3\": \"BRA\",\r\n \"iso2\": \"BR\",\r\n \"numeric_code\": \"076\",\r\n \"phone_code\": 55,\r\n \"capital\": \"Brasilia\",\r\n \"currency\": \"BRL\",\r\n \"currency_name\": \"Brazilian real\",\r\n \"currency_symbol\": \"R$\",\r\n \"tld\": \".br\",\r\n \"native\": \"Brasil\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-10.00000000\",\r\n \"longitude\": \"-55.00000000\",\r\n \"emoji\": \"🇧🇷\"\r\n },\r\n {\r\n \"id\": 32,\r\n \"name\": \"British Indian Ocean Territory\",\r\n \"iso3\": \"IOT\",\r\n \"iso2\": \"IO\",\r\n \"numeric_code\": \"086\",\r\n \"phone_code\": 246,\r\n \"capital\": \"Diego Garcia\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".io\",\r\n \"native\": \"British Indian Ocean Territory\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-6.00000000\",\r\n \"longitude\": \"71.50000000\",\r\n \"emoji\": \"🇮🇴\"\r\n },\r\n {\r\n \"id\": 33,\r\n \"name\": \"Brunei\",\r\n \"iso3\": \"BRN\",\r\n \"iso2\": \"BN\",\r\n \"numeric_code\": \"096\",\r\n \"phone_code\": 673,\r\n \"capital\": \"Bandar Seri Begawan\",\r\n \"currency\": \"BND\",\r\n \"currency_name\": \"Brunei dollar\",\r\n \"currency_symbol\": \"B$\",\r\n \"tld\": \".bn\",\r\n \"native\": \"Negara Brunei Darussalam\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"4.50000000\",\r\n \"longitude\": \"114.66666666\",\r\n \"emoji\": \"🇧🇳\"\r\n },\r\n {\r\n \"id\": 34,\r\n \"name\": \"Bulgaria\",\r\n \"iso3\": \"BGR\",\r\n \"iso2\": \"BG\",\r\n \"numeric_code\": \"100\",\r\n \"phone_code\": 359,\r\n \"capital\": \"Sofia\",\r\n \"currency\": \"BGN\",\r\n \"currency_name\": \"Bulgarian lev\",\r\n \"currency_symbol\": \"Лв.\",\r\n \"tld\": \".bg\",\r\n \"native\": \"България\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"43.00000000\",\r\n \"longitude\": \"25.00000000\",\r\n \"emoji\": \"🇧🇬\"\r\n },\r\n {\r\n \"id\": 35,\r\n \"name\": \"Burkina Faso\",\r\n \"iso3\": \"BFA\",\r\n \"iso2\": \"BF\",\r\n \"numeric_code\": \"854\",\r\n \"phone_code\": 226,\r\n \"capital\": \"Ouagadougou\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".bf\",\r\n \"native\": \"Burkina Faso\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"13.00000000\",\r\n \"longitude\": \"-2.00000000\",\r\n \"emoji\": \"🇧🇫\"\r\n },\r\n {\r\n \"id\": 36,\r\n \"name\": \"Burundi\",\r\n \"iso3\": \"BDI\",\r\n \"iso2\": \"BI\",\r\n \"numeric_code\": \"108\",\r\n \"phone_code\": 257,\r\n \"capital\": \"Bujumbura\",\r\n \"currency\": \"BIF\",\r\n \"currency_name\": \"Burundian franc\",\r\n \"currency_symbol\": \"FBu\",\r\n \"tld\": \".bi\",\r\n \"native\": \"Burundi\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-3.50000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇧🇮\"\r\n },\r\n {\r\n \"id\": 37,\r\n \"name\": \"Cambodia\",\r\n \"iso3\": \"KHM\",\r\n \"iso2\": \"KH\",\r\n \"numeric_code\": \"116\",\r\n \"phone_code\": 855,\r\n \"capital\": \"Phnom Penh\",\r\n \"currency\": \"KHR\",\r\n \"currency_name\": \"Cambodian riel\",\r\n \"currency_symbol\": \"KHR\",\r\n \"tld\": \".kh\",\r\n \"native\": \"Kâmpŭchéa\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"13.00000000\",\r\n \"longitude\": \"105.00000000\",\r\n \"emoji\": \"🇰🇭\"\r\n },\r\n {\r\n \"id\": 38,\r\n \"name\": \"Cameroon\",\r\n \"iso3\": \"CMR\",\r\n \"iso2\": \"CM\",\r\n \"numeric_code\": \"120\",\r\n \"phone_code\": 237,\r\n \"capital\": \"Yaounde\",\r\n \"currency\": \"XAF\",\r\n \"currency_name\": \"Central African CFA franc\",\r\n \"currency_symbol\": \"FCFA\",\r\n \"tld\": \".cm\",\r\n \"native\": \"Cameroon\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"6.00000000\",\r\n \"longitude\": \"12.00000000\",\r\n \"emoji\": \"🇨🇲\"\r\n },\r\n {\r\n \"id\": 39,\r\n \"name\": \"Canada\",\r\n \"iso3\": \"CAN\",\r\n \"iso2\": \"CA\",\r\n \"numeric_code\": \"124\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Ottawa\",\r\n \"currency\": \"CAD\",\r\n \"currency_name\": \"Canadian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ca\",\r\n \"native\": \"Canada\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Northern America\",\r\n \"latitude\": \"60.00000000\",\r\n \"longitude\": \"-95.00000000\",\r\n \"emoji\": \"🇨🇦\"\r\n },\r\n {\r\n \"id\": 40,\r\n \"name\": \"Cape Verde\",\r\n \"iso3\": \"CPV\",\r\n \"iso2\": \"CV\",\r\n \"numeric_code\": \"132\",\r\n \"phone_code\": 238,\r\n \"capital\": \"Praia\",\r\n \"currency\": \"CVE\",\r\n \"currency_name\": \"Cape Verdean escudo\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".cv\",\r\n \"native\": \"Cabo Verde\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"16.00000000\",\r\n \"longitude\": \"-24.00000000\",\r\n \"emoji\": \"🇨🇻\"\r\n },\r\n {\r\n \"id\": 41,\r\n \"name\": \"Cayman Islands\",\r\n \"iso3\": \"CYM\",\r\n \"iso2\": \"KY\",\r\n \"numeric_code\": \"136\",\r\n \"phone_code\": 1,\r\n \"capital\": \"George Town\",\r\n \"currency\": \"KYD\",\r\n \"currency_name\": \"Cayman Islands dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ky\",\r\n \"native\": \"Cayman Islands\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"19.50000000\",\r\n \"longitude\": \"-80.50000000\",\r\n \"emoji\": \"🇰🇾\"\r\n },\r\n {\r\n \"id\": 42,\r\n \"name\": \"Central African Republic\",\r\n \"iso3\": \"CAF\",\r\n \"iso2\": \"CF\",\r\n \"numeric_code\": \"140\",\r\n \"phone_code\": 236,\r\n \"capital\": \"Bangui\",\r\n \"currency\": \"XAF\",\r\n \"currency_name\": \"Central African CFA franc\",\r\n \"currency_symbol\": \"FCFA\",\r\n \"tld\": \".cf\",\r\n \"native\": \"Ködörösêse tî Bêafrîka\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"7.00000000\",\r\n \"longitude\": \"21.00000000\",\r\n \"emoji\": \"🇨🇫\"\r\n },\r\n {\r\n \"id\": 43,\r\n \"name\": \"Chad\",\r\n \"iso3\": \"TCD\",\r\n \"iso2\": \"TD\",\r\n \"numeric_code\": \"148\",\r\n \"phone_code\": 235,\r\n \"capital\": \"N'Djamena\",\r\n \"currency\": \"XAF\",\r\n \"currency_name\": \"Central African CFA franc\",\r\n \"currency_symbol\": \"FCFA\",\r\n \"tld\": \".td\",\r\n \"native\": \"Tchad\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"15.00000000\",\r\n \"longitude\": \"19.00000000\",\r\n \"emoji\": \"🇹🇩\"\r\n },\r\n {\r\n \"id\": 44,\r\n \"name\": \"Chile\",\r\n \"iso3\": \"CHL\",\r\n \"iso2\": \"CL\",\r\n \"numeric_code\": \"152\",\r\n \"phone_code\": 56,\r\n \"capital\": \"Santiago\",\r\n \"currency\": \"CLP\",\r\n \"currency_name\": \"Chilean peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".cl\",\r\n \"native\": \"Chile\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-30.00000000\",\r\n \"longitude\": \"-71.00000000\",\r\n \"emoji\": \"🇨🇱\"\r\n },\r\n {\r\n \"id\": 45,\r\n \"name\": \"China\",\r\n \"iso3\": \"CHN\",\r\n \"iso2\": \"CN\",\r\n \"numeric_code\": \"156\",\r\n \"phone_code\": 86,\r\n \"capital\": \"Beijing\",\r\n \"currency\": \"CNY\",\r\n \"currency_name\": \"Chinese yuan\",\r\n \"currency_symbol\": \"¥\",\r\n \"tld\": \".cn\",\r\n \"native\": \"中国\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"35.00000000\",\r\n \"longitude\": \"105.00000000\",\r\n \"emoji\": \"🇨🇳\"\r\n },\r\n {\r\n \"id\": 46,\r\n \"name\": \"Christmas Island\",\r\n \"iso3\": \"CXR\",\r\n \"iso2\": \"CX\",\r\n \"numeric_code\": \"162\",\r\n \"phone_code\": 61,\r\n \"capital\": \"Flying Fish Cove\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".cx\",\r\n \"native\": \"Christmas Island\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Australia and New Zealand\",\r\n \"latitude\": \"-10.50000000\",\r\n \"longitude\": \"105.66666666\",\r\n \"emoji\": \"🇨🇽\"\r\n },\r\n {\r\n \"id\": 47,\r\n \"name\": \"Cocos (Keeling) Islands\",\r\n \"iso3\": \"CCK\",\r\n \"iso2\": \"CC\",\r\n \"numeric_code\": \"166\",\r\n \"phone_code\": 61,\r\n \"capital\": \"West Island\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".cc\",\r\n \"native\": \"Cocos (Keeling) Islands\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Australia and New Zealand\",\r\n \"latitude\": \"-12.50000000\",\r\n \"longitude\": \"96.83333333\",\r\n \"emoji\": \"🇨🇨\"\r\n },\r\n {\r\n \"id\": 48,\r\n \"name\": \"Colombia\",\r\n \"iso3\": \"COL\",\r\n \"iso2\": \"CO\",\r\n \"numeric_code\": \"170\",\r\n \"phone_code\": 57,\r\n \"capital\": \"Bogotá\",\r\n \"currency\": \"COP\",\r\n \"currency_name\": \"Colombian peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".co\",\r\n \"native\": \"Colombia\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"4.00000000\",\r\n \"longitude\": \"-72.00000000\",\r\n \"emoji\": \"🇨🇴\"\r\n },\r\n {\r\n \"id\": 49,\r\n \"name\": \"Comoros\",\r\n \"iso3\": \"COM\",\r\n \"iso2\": \"KM\",\r\n \"numeric_code\": \"174\",\r\n \"phone_code\": 269,\r\n \"capital\": \"Moroni\",\r\n \"currency\": \"KMF\",\r\n \"currency_name\": \"Comorian franc\",\r\n \"currency_symbol\": \"CF\",\r\n \"tld\": \".km\",\r\n \"native\": \"Komori\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-12.16666666\",\r\n \"longitude\": \"44.25000000\",\r\n \"emoji\": \"🇰🇲\"\r\n },\r\n {\r\n \"id\": 50,\r\n \"name\": \"Congo\",\r\n \"iso3\": \"COG\",\r\n \"iso2\": \"CG\",\r\n \"numeric_code\": \"178\",\r\n \"phone_code\": 242,\r\n \"capital\": \"Brazzaville\",\r\n \"currency\": \"XAF\",\r\n \"currency_name\": \"Central African CFA franc\",\r\n \"currency_symbol\": \"FC\",\r\n \"tld\": \".cg\",\r\n \"native\": \"République du Congo\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"-1.00000000\",\r\n \"longitude\": \"15.00000000\",\r\n \"emoji\": \"🇨🇬\"\r\n },\r\n {\r\n \"id\": 52,\r\n \"name\": \"Cook Islands\",\r\n \"iso3\": \"COK\",\r\n \"iso2\": \"CK\",\r\n \"numeric_code\": \"184\",\r\n \"phone_code\": 682,\r\n \"capital\": \"Avarua\",\r\n \"currency\": \"NZD\",\r\n \"currency_name\": \"Cook Islands dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ck\",\r\n \"native\": \"Cook Islands\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-21.23333333\",\r\n \"longitude\": \"-159.76666666\",\r\n \"emoji\": \"🇨🇰\"\r\n },\r\n {\r\n \"id\": 53,\r\n \"name\": \"Costa Rica\",\r\n \"iso3\": \"CRI\",\r\n \"iso2\": \"CR\",\r\n \"numeric_code\": \"188\",\r\n \"phone_code\": 506,\r\n \"capital\": \"San Jose\",\r\n \"currency\": \"CRC\",\r\n \"currency_name\": \"Costa Rican colón\",\r\n \"currency_symbol\": \"₡\",\r\n \"tld\": \".cr\",\r\n \"native\": \"Costa Rica\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"10.00000000\",\r\n \"longitude\": \"-84.00000000\",\r\n \"emoji\": \"🇨🇷\"\r\n },\r\n {\r\n \"id\": 54,\r\n \"name\": \"Cote D'Ivoire (Ivory Coast)\",\r\n \"iso3\": \"CIV\",\r\n \"iso2\": \"CI\",\r\n \"numeric_code\": \"384\",\r\n \"phone_code\": 225,\r\n \"capital\": \"Yamoussoukro\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".ci\",\r\n \"native\": null,\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"8.00000000\",\r\n \"longitude\": \"-5.00000000\",\r\n \"emoji\": \"🇨🇮\"\r\n },\r\n {\r\n \"id\": 55,\r\n \"name\": \"Croatia\",\r\n \"iso3\": \"HRV\",\r\n \"iso2\": \"HR\",\r\n \"numeric_code\": \"191\",\r\n \"phone_code\": 385,\r\n \"capital\": \"Zagreb\",\r\n \"currency\": \"HRK\",\r\n \"currency_name\": \"Croatian kuna\",\r\n \"currency_symbol\": \"kn\",\r\n \"tld\": \".hr\",\r\n \"native\": \"Hrvatska\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"45.16666666\",\r\n \"longitude\": \"15.50000000\",\r\n \"emoji\": \"🇭🇷\"\r\n },\r\n {\r\n \"id\": 56,\r\n \"name\": \"Cuba\",\r\n \"iso3\": \"CUB\",\r\n \"iso2\": \"CU\",\r\n \"numeric_code\": \"192\",\r\n \"phone_code\": 53,\r\n \"capital\": \"Havana\",\r\n \"currency\": \"CUP\",\r\n \"currency_name\": \"Cuban peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".cu\",\r\n \"native\": \"Cuba\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"21.50000000\",\r\n \"longitude\": \"-80.00000000\",\r\n \"emoji\": \"🇨🇺\"\r\n },\r\n {\r\n \"id\": 249,\r\n \"name\": \"Curaçao\",\r\n \"iso3\": \"CUW\",\r\n \"iso2\": \"CW\",\r\n \"numeric_code\": \"531\",\r\n \"phone_code\": 599,\r\n \"capital\": \"Willemstad\",\r\n \"currency\": \"ANG\",\r\n \"currency_name\": \"Netherlands Antillean guilder\",\r\n \"currency_symbol\": \"ƒ\",\r\n \"tld\": \".cw\",\r\n \"native\": \"Curaçao\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"12.11666700\",\r\n \"longitude\": \"-68.93333300\",\r\n \"emoji\": \"🇨🇼\"\r\n },\r\n {\r\n \"id\": 57,\r\n \"name\": \"Cyprus\",\r\n \"iso3\": \"CYP\",\r\n \"iso2\": \"CY\",\r\n \"numeric_code\": \"196\",\r\n \"phone_code\": 357,\r\n \"capital\": \"Nicosia\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".cy\",\r\n \"native\": \"Κύπρος\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"35.00000000\",\r\n \"longitude\": \"33.00000000\",\r\n \"emoji\": \"🇨🇾\"\r\n },\r\n {\r\n \"id\": 58,\r\n \"name\": \"Czech Republic\",\r\n \"iso3\": \"CZE\",\r\n \"iso2\": \"CZ\",\r\n \"numeric_code\": \"203\",\r\n \"phone_code\": 420,\r\n \"capital\": \"Prague\",\r\n \"currency\": \"CZK\",\r\n \"currency_name\": \"Czech koruna\",\r\n \"currency_symbol\": \"Kč\",\r\n \"tld\": \".cz\",\r\n \"native\": \"Česká republika\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"49.75000000\",\r\n \"longitude\": \"15.50000000\",\r\n \"emoji\": \"🇨🇿\"\r\n },\r\n {\r\n \"id\": 51,\r\n \"name\": \"Democratic Republic of the Congo\",\r\n \"iso3\": \"COD\",\r\n \"iso2\": \"CD\",\r\n \"numeric_code\": \"180\",\r\n \"phone_code\": 243,\r\n \"capital\": \"Kinshasa\",\r\n \"currency\": \"CDF\",\r\n \"currency_name\": \"Congolese Franc\",\r\n \"currency_symbol\": \"FC\",\r\n \"tld\": \".cd\",\r\n \"native\": \"République démocratique du Congo\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"0.00000000\",\r\n \"longitude\": \"25.00000000\",\r\n \"emoji\": \"🇨🇩\"\r\n },\r\n {\r\n \"id\": 59,\r\n \"name\": \"Denmark\",\r\n \"iso3\": \"DNK\",\r\n \"iso2\": \"DK\",\r\n \"numeric_code\": \"208\",\r\n \"phone_code\": 45,\r\n \"capital\": \"Copenhagen\",\r\n \"currency\": \"DKK\",\r\n \"currency_name\": \"Danish krone\",\r\n \"currency_symbol\": \"Kr.\",\r\n \"tld\": \".dk\",\r\n \"native\": \"Danmark\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"56.00000000\",\r\n \"longitude\": \"10.00000000\",\r\n \"emoji\": \"🇩🇰\"\r\n },\r\n {\r\n \"id\": 60,\r\n \"name\": \"Djibouti\",\r\n \"iso3\": \"DJI\",\r\n \"iso2\": \"DJ\",\r\n \"numeric_code\": \"262\",\r\n \"phone_code\": 253,\r\n \"capital\": \"Djibouti\",\r\n \"currency\": \"DJF\",\r\n \"currency_name\": \"Djiboutian franc\",\r\n \"currency_symbol\": \"Fdj\",\r\n \"tld\": \".dj\",\r\n \"native\": \"Djibouti\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"11.50000000\",\r\n \"longitude\": \"43.00000000\",\r\n \"emoji\": \"🇩🇯\"\r\n },\r\n {\r\n \"id\": 61,\r\n \"name\": \"Dominica\",\r\n \"iso3\": \"DMA\",\r\n \"iso2\": \"DM\",\r\n \"numeric_code\": \"212\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Roseau\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".dm\",\r\n \"native\": \"Dominica\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"15.41666666\",\r\n \"longitude\": \"-61.33333333\",\r\n \"emoji\": \"🇩🇲\"\r\n },\r\n {\r\n \"id\": 62,\r\n \"name\": \"Dominican Republic\",\r\n \"iso3\": \"DOM\",\r\n \"iso2\": \"DO\",\r\n \"numeric_code\": \"214\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Santo Domingo\",\r\n \"currency\": \"DOP\",\r\n \"currency_name\": \"Dominican peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".do\",\r\n \"native\": \"República Dominicana\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"19.00000000\",\r\n \"longitude\": \"-70.66666666\",\r\n \"emoji\": \"🇩🇴\"\r\n },\r\n {\r\n \"id\": 63,\r\n \"name\": \"East Timor\",\r\n \"iso3\": \"TLS\",\r\n \"iso2\": \"TL\",\r\n \"numeric_code\": \"626\",\r\n \"phone_code\": 670,\r\n \"capital\": \"Dili\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".tl\",\r\n \"native\": \"Timor-Leste\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"-8.83333333\",\r\n \"longitude\": \"125.91666666\",\r\n \"emoji\": \"🇹🇱\"\r\n },\r\n {\r\n \"id\": 64,\r\n \"name\": \"Ecuador\",\r\n \"iso3\": \"ECU\",\r\n \"iso2\": \"EC\",\r\n \"numeric_code\": \"218\",\r\n \"phone_code\": 593,\r\n \"capital\": \"Quito\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ec\",\r\n \"native\": \"Ecuador\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-2.00000000\",\r\n \"longitude\": \"-77.50000000\",\r\n \"emoji\": \"🇪🇨\"\r\n },\r\n {\r\n \"id\": 65,\r\n \"name\": \"Egypt\",\r\n \"iso3\": \"EGY\",\r\n \"iso2\": \"EG\",\r\n \"numeric_code\": \"818\",\r\n \"phone_code\": 20,\r\n \"capital\": \"Cairo\",\r\n \"currency\": \"EGP\",\r\n \"currency_name\": \"Egyptian pound\",\r\n \"currency_symbol\": \"ج.م\",\r\n \"tld\": \".eg\",\r\n \"native\": \"مصر‎\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"27.00000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇪🇬\"\r\n },\r\n {\r\n \"id\": 66,\r\n \"name\": \"El Salvador\",\r\n \"iso3\": \"SLV\",\r\n \"iso2\": \"SV\",\r\n \"numeric_code\": \"222\",\r\n \"phone_code\": 503,\r\n \"capital\": \"San Salvador\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".sv\",\r\n \"native\": \"El Salvador\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"13.83333333\",\r\n \"longitude\": \"-88.91666666\",\r\n \"emoji\": \"🇸🇻\"\r\n },\r\n {\r\n \"id\": 67,\r\n \"name\": \"Equatorial Guinea\",\r\n \"iso3\": \"GNQ\",\r\n \"iso2\": \"GQ\",\r\n \"numeric_code\": \"226\",\r\n \"phone_code\": 240,\r\n \"capital\": \"Malabo\",\r\n \"currency\": \"XAF\",\r\n \"currency_name\": \"Central African CFA franc\",\r\n \"currency_symbol\": \"FCFA\",\r\n \"tld\": \".gq\",\r\n \"native\": \"Guinea Ecuatorial\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"2.00000000\",\r\n \"longitude\": \"10.00000000\",\r\n \"emoji\": \"🇬🇶\"\r\n },\r\n {\r\n \"id\": 68,\r\n \"name\": \"Eritrea\",\r\n \"iso3\": \"ERI\",\r\n \"iso2\": \"ER\",\r\n \"numeric_code\": \"232\",\r\n \"phone_code\": 291,\r\n \"capital\": \"Asmara\",\r\n \"currency\": \"ERN\",\r\n \"currency_name\": \"Eritrean nakfa\",\r\n \"currency_symbol\": \"Nfk\",\r\n \"tld\": \".er\",\r\n \"native\": \"ኤርትራ\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"15.00000000\",\r\n \"longitude\": \"39.00000000\",\r\n \"emoji\": \"🇪🇷\"\r\n },\r\n {\r\n \"id\": 69,\r\n \"name\": \"Estonia\",\r\n \"iso3\": \"EST\",\r\n \"iso2\": \"EE\",\r\n \"numeric_code\": \"233\",\r\n \"phone_code\": 372,\r\n \"capital\": \"Tallinn\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".ee\",\r\n \"native\": \"Eesti\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"59.00000000\",\r\n \"longitude\": \"26.00000000\",\r\n \"emoji\": \"🇪🇪\"\r\n },\r\n {\r\n \"id\": 70,\r\n \"name\": \"Ethiopia\",\r\n \"iso3\": \"ETH\",\r\n \"iso2\": \"ET\",\r\n \"numeric_code\": \"231\",\r\n \"phone_code\": 251,\r\n \"capital\": \"Addis Ababa\",\r\n \"currency\": \"ETB\",\r\n \"currency_name\": \"Ethiopian birr\",\r\n \"currency_symbol\": \"Nkf\",\r\n \"tld\": \".et\",\r\n \"native\": \"ኢትዮጵያ\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"8.00000000\",\r\n \"longitude\": \"38.00000000\",\r\n \"emoji\": \"🇪🇹\"\r\n },\r\n {\r\n \"id\": 71,\r\n \"name\": \"Falkland Islands\",\r\n \"iso3\": \"FLK\",\r\n \"iso2\": \"FK\",\r\n \"numeric_code\": \"238\",\r\n \"phone_code\": 500,\r\n \"capital\": \"Stanley\",\r\n \"currency\": \"FKP\",\r\n \"currency_name\": \"Falkland Islands pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".fk\",\r\n \"native\": \"Falkland Islands\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-51.75000000\",\r\n \"longitude\": \"-59.00000000\",\r\n \"emoji\": \"🇫🇰\"\r\n },\r\n {\r\n \"id\": 72,\r\n \"name\": \"Faroe Islands\",\r\n \"iso3\": \"FRO\",\r\n \"iso2\": \"FO\",\r\n \"numeric_code\": \"234\",\r\n \"phone_code\": 298,\r\n \"capital\": \"Torshavn\",\r\n \"currency\": \"DKK\",\r\n \"currency_name\": \"Danish krone\",\r\n \"currency_symbol\": \"Kr.\",\r\n \"tld\": \".fo\",\r\n \"native\": \"Føroyar\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"62.00000000\",\r\n \"longitude\": \"-7.00000000\",\r\n \"emoji\": \"🇫🇴\"\r\n },\r\n {\r\n \"id\": 73,\r\n \"name\": \"Fiji Islands\",\r\n \"iso3\": \"FJI\",\r\n \"iso2\": \"FJ\",\r\n \"numeric_code\": \"242\",\r\n \"phone_code\": 679,\r\n \"capital\": \"Suva\",\r\n \"currency\": \"FJD\",\r\n \"currency_name\": \"Fijian dollar\",\r\n \"currency_symbol\": \"FJ$\",\r\n \"tld\": \".fj\",\r\n \"native\": \"Fiji\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Melanesia\",\r\n \"latitude\": \"-18.00000000\",\r\n \"longitude\": \"175.00000000\",\r\n \"emoji\": \"🇫🇯\"\r\n },\r\n {\r\n \"id\": 74,\r\n \"name\": \"Finland\",\r\n \"iso3\": \"FIN\",\r\n \"iso2\": \"FI\",\r\n \"numeric_code\": \"246\",\r\n \"phone_code\": 358,\r\n \"capital\": \"Helsinki\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".fi\",\r\n \"native\": \"Suomi\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"64.00000000\",\r\n \"longitude\": \"26.00000000\",\r\n \"emoji\": \"🇫🇮\"\r\n },\r\n {\r\n \"id\": 75,\r\n \"name\": \"France\",\r\n \"iso3\": \"FRA\",\r\n \"iso2\": \"FR\",\r\n \"numeric_code\": \"250\",\r\n \"phone_code\": 33,\r\n \"capital\": \"Paris\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".fr\",\r\n \"native\": \"France\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"46.00000000\",\r\n \"longitude\": \"2.00000000\",\r\n \"emoji\": \"🇫🇷\"\r\n },\r\n {\r\n \"id\": 76,\r\n \"name\": \"French Guiana\",\r\n \"iso3\": \"GUF\",\r\n \"iso2\": \"GF\",\r\n \"numeric_code\": \"254\",\r\n \"phone_code\": 594,\r\n \"capital\": \"Cayenne\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".gf\",\r\n \"native\": \"Guyane française\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"4.00000000\",\r\n \"longitude\": \"-53.00000000\",\r\n \"emoji\": \"🇬🇫\"\r\n },\r\n {\r\n \"id\": 77,\r\n \"name\": \"French Polynesia\",\r\n \"iso3\": \"PYF\",\r\n \"iso2\": \"PF\",\r\n \"numeric_code\": \"258\",\r\n \"phone_code\": 689,\r\n \"capital\": \"Papeete\",\r\n \"currency\": \"XPF\",\r\n \"currency_name\": \"CFP franc\",\r\n \"currency_symbol\": \"₣\",\r\n \"tld\": \".pf\",\r\n \"native\": \"Polynésie française\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-15.00000000\",\r\n \"longitude\": \"-140.00000000\",\r\n \"emoji\": \"🇵🇫\"\r\n },\r\n {\r\n \"id\": 78,\r\n \"name\": \"French Southern Territories\",\r\n \"iso3\": \"ATF\",\r\n \"iso2\": \"TF\",\r\n \"numeric_code\": \"260\",\r\n \"phone_code\": 262,\r\n \"capital\": \"Port-aux-Francais\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".tf\",\r\n \"native\": \"Territoire des Terres australes et antarctiques fr\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Southern Africa\",\r\n \"latitude\": \"-49.25000000\",\r\n \"longitude\": \"69.16700000\",\r\n \"emoji\": \"🇹🇫\"\r\n },\r\n {\r\n \"id\": 79,\r\n \"name\": \"Gabon\",\r\n \"iso3\": \"GAB\",\r\n \"iso2\": \"GA\",\r\n \"numeric_code\": \"266\",\r\n \"phone_code\": 241,\r\n \"capital\": \"Libreville\",\r\n \"currency\": \"XAF\",\r\n \"currency_name\": \"Central African CFA franc\",\r\n \"currency_symbol\": \"FCFA\",\r\n \"tld\": \".ga\",\r\n \"native\": \"Gabon\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"-1.00000000\",\r\n \"longitude\": \"11.75000000\",\r\n \"emoji\": \"🇬🇦\"\r\n },\r\n {\r\n \"id\": 80,\r\n \"name\": \"Gambia The\",\r\n \"iso3\": \"GMB\",\r\n \"iso2\": \"GM\",\r\n \"numeric_code\": \"270\",\r\n \"phone_code\": 220,\r\n \"capital\": \"Banjul\",\r\n \"currency\": \"GMD\",\r\n \"currency_name\": \"Gambian dalasi\",\r\n \"currency_symbol\": \"D\",\r\n \"tld\": \".gm\",\r\n \"native\": \"Gambia\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"13.46666666\",\r\n \"longitude\": \"-16.56666666\",\r\n \"emoji\": \"🇬🇲\"\r\n },\r\n {\r\n \"id\": 81,\r\n \"name\": \"Georgia\",\r\n \"iso3\": \"GEO\",\r\n \"iso2\": \"GE\",\r\n \"numeric_code\": \"268\",\r\n \"phone_code\": 995,\r\n \"capital\": \"Tbilisi\",\r\n \"currency\": \"GEL\",\r\n \"currency_name\": \"Georgian lari\",\r\n \"currency_symbol\": \"ლ\",\r\n \"tld\": \".ge\",\r\n \"native\": \"საქართველო\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"42.00000000\",\r\n \"longitude\": \"43.50000000\",\r\n \"emoji\": \"🇬🇪\"\r\n },\r\n {\r\n \"id\": 82,\r\n \"name\": \"Germany\",\r\n \"iso3\": \"DEU\",\r\n \"iso2\": \"DE\",\r\n \"numeric_code\": \"276\",\r\n \"phone_code\": 49,\r\n \"capital\": \"Berlin\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".de\",\r\n \"native\": \"Deutschland\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"51.00000000\",\r\n \"longitude\": \"9.00000000\",\r\n \"emoji\": \"🇩🇪\"\r\n },\r\n {\r\n \"id\": 83,\r\n \"name\": \"Ghana\",\r\n \"iso3\": \"GHA\",\r\n \"iso2\": \"GH\",\r\n \"numeric_code\": \"288\",\r\n \"phone_code\": 233,\r\n \"capital\": \"Accra\",\r\n \"currency\": \"GHS\",\r\n \"currency_name\": \"Ghanaian cedi\",\r\n \"currency_symbol\": \"GH₵\",\r\n \"tld\": \".gh\",\r\n \"native\": \"Ghana\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"8.00000000\",\r\n \"longitude\": \"-2.00000000\",\r\n \"emoji\": \"🇬🇭\"\r\n },\r\n {\r\n \"id\": 84,\r\n \"name\": \"Gibraltar\",\r\n \"iso3\": \"GIB\",\r\n \"iso2\": \"GI\",\r\n \"numeric_code\": \"292\",\r\n \"phone_code\": 350,\r\n \"capital\": \"Gibraltar\",\r\n \"currency\": \"GIP\",\r\n \"currency_name\": \"Gibraltar pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".gi\",\r\n \"native\": \"Gibraltar\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"36.13333333\",\r\n \"longitude\": \"-5.35000000\",\r\n \"emoji\": \"🇬🇮\"\r\n },\r\n {\r\n \"id\": 85,\r\n \"name\": \"Greece\",\r\n \"iso3\": \"GRC\",\r\n \"iso2\": \"GR\",\r\n \"numeric_code\": \"300\",\r\n \"phone_code\": 30,\r\n \"capital\": \"Athens\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".gr\",\r\n \"native\": \"Ελλάδα\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"39.00000000\",\r\n \"longitude\": \"22.00000000\",\r\n \"emoji\": \"🇬🇷\"\r\n },\r\n {\r\n \"id\": 86,\r\n \"name\": \"Greenland\",\r\n \"iso3\": \"GRL\",\r\n \"iso2\": \"GL\",\r\n \"numeric_code\": \"304\",\r\n \"phone_code\": 299,\r\n \"capital\": \"Nuuk\",\r\n \"currency\": \"DKK\",\r\n \"currency_name\": \"Danish krone\",\r\n \"currency_symbol\": \"Kr.\",\r\n \"tld\": \".gl\",\r\n \"native\": \"Kalaallit Nunaat\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Northern America\",\r\n \"latitude\": \"72.00000000\",\r\n \"longitude\": \"-40.00000000\",\r\n \"emoji\": \"🇬🇱\"\r\n },\r\n {\r\n \"id\": 87,\r\n \"name\": \"Grenada\",\r\n \"iso3\": \"GRD\",\r\n \"iso2\": \"GD\",\r\n \"numeric_code\": \"308\",\r\n \"phone_code\": 1,\r\n \"capital\": \"St. George's\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".gd\",\r\n \"native\": \"Grenada\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"12.11666666\",\r\n \"longitude\": \"-61.66666666\",\r\n \"emoji\": \"🇬🇩\"\r\n },\r\n {\r\n \"id\": 88,\r\n \"name\": \"Guadeloupe\",\r\n \"iso3\": \"GLP\",\r\n \"iso2\": \"GP\",\r\n \"numeric_code\": \"312\",\r\n \"phone_code\": 590,\r\n \"capital\": \"Basse-Terre\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".gp\",\r\n \"native\": \"Guadeloupe\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"16.25000000\",\r\n \"longitude\": \"-61.58333300\",\r\n \"emoji\": \"🇬🇵\"\r\n },\r\n {\r\n \"id\": 89,\r\n \"name\": \"Guam\",\r\n \"iso3\": \"GUM\",\r\n \"iso2\": \"GU\",\r\n \"numeric_code\": \"316\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Hagatna\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"US Dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".gu\",\r\n \"native\": \"Guam\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"13.46666666\",\r\n \"longitude\": \"144.78333333\",\r\n \"emoji\": \"🇬🇺\"\r\n },\r\n {\r\n \"id\": 90,\r\n \"name\": \"Guatemala\",\r\n \"iso3\": \"GTM\",\r\n \"iso2\": \"GT\",\r\n \"numeric_code\": \"320\",\r\n \"phone_code\": 502,\r\n \"capital\": \"Guatemala City\",\r\n \"currency\": \"GTQ\",\r\n \"currency_name\": \"Guatemalan quetzal\",\r\n \"currency_symbol\": \"Q\",\r\n \"tld\": \".gt\",\r\n \"native\": \"Guatemala\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"15.50000000\",\r\n \"longitude\": \"-90.25000000\",\r\n \"emoji\": \"🇬🇹\"\r\n },\r\n {\r\n \"id\": 91,\r\n \"name\": \"Guernsey and Alderney\",\r\n \"iso3\": \"GGY\",\r\n \"iso2\": \"GG\",\r\n \"numeric_code\": \"831\",\r\n \"phone_code\": 44,\r\n \"capital\": \"St Peter Port\",\r\n \"currency\": \"GBP\",\r\n \"currency_name\": \"British pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".gg\",\r\n \"native\": \"Guernsey\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"49.46666666\",\r\n \"longitude\": \"-2.58333333\",\r\n \"emoji\": \"🇬🇬\"\r\n },\r\n {\r\n \"id\": 92,\r\n \"name\": \"Guinea\",\r\n \"iso3\": \"GIN\",\r\n \"iso2\": \"GN\",\r\n \"numeric_code\": \"324\",\r\n \"phone_code\": 224,\r\n \"capital\": \"Conakry\",\r\n \"currency\": \"GNF\",\r\n \"currency_name\": \"Guinean franc\",\r\n \"currency_symbol\": \"FG\",\r\n \"tld\": \".gn\",\r\n \"native\": \"Guinée\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"11.00000000\",\r\n \"longitude\": \"-10.00000000\",\r\n \"emoji\": \"🇬🇳\"\r\n },\r\n {\r\n \"id\": 93,\r\n \"name\": \"Guinea-Bissau\",\r\n \"iso3\": \"GNB\",\r\n \"iso2\": \"GW\",\r\n \"numeric_code\": \"624\",\r\n \"phone_code\": 245,\r\n \"capital\": \"Bissau\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".gw\",\r\n \"native\": \"Guiné-Bissau\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"12.00000000\",\r\n \"longitude\": \"-15.00000000\",\r\n \"emoji\": \"🇬🇼\"\r\n },\r\n {\r\n \"id\": 94,\r\n \"name\": \"Guyana\",\r\n \"iso3\": \"GUY\",\r\n \"iso2\": \"GY\",\r\n \"numeric_code\": \"328\",\r\n \"phone_code\": 592,\r\n \"capital\": \"Georgetown\",\r\n \"currency\": \"GYD\",\r\n \"currency_name\": \"Guyanese dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".gy\",\r\n \"native\": \"Guyana\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"5.00000000\",\r\n \"longitude\": \"-59.00000000\",\r\n \"emoji\": \"🇬🇾\"\r\n },\r\n {\r\n \"id\": 95,\r\n \"name\": \"Haiti\",\r\n \"iso3\": \"HTI\",\r\n \"iso2\": \"HT\",\r\n \"numeric_code\": \"332\",\r\n \"phone_code\": 509,\r\n \"capital\": \"Port-au-Prince\",\r\n \"currency\": \"HTG\",\r\n \"currency_name\": \"Haitian gourde\",\r\n \"currency_symbol\": \"G\",\r\n \"tld\": \".ht\",\r\n \"native\": \"Haïti\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"19.00000000\",\r\n \"longitude\": \"-72.41666666\",\r\n \"emoji\": \"🇭🇹\"\r\n },\r\n {\r\n \"id\": 96,\r\n \"name\": \"Heard Island and McDonald Islands\",\r\n \"iso3\": \"HMD\",\r\n \"iso2\": \"HM\",\r\n \"numeric_code\": \"334\",\r\n \"phone_code\": 672,\r\n \"capital\": \"\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".hm\",\r\n \"native\": \"Heard Island and McDonald Islands\",\r\n \"region\": \"\",\r\n \"subregion\": \"\",\r\n \"latitude\": \"-53.10000000\",\r\n \"longitude\": \"72.51666666\",\r\n \"emoji\": \"🇭🇲\"\r\n },\r\n {\r\n \"id\": 97,\r\n \"name\": \"Honduras\",\r\n \"iso3\": \"HND\",\r\n \"iso2\": \"HN\",\r\n \"numeric_code\": \"340\",\r\n \"phone_code\": 504,\r\n \"capital\": \"Tegucigalpa\",\r\n \"currency\": \"HNL\",\r\n \"currency_name\": \"Honduran lempira\",\r\n \"currency_symbol\": \"L\",\r\n \"tld\": \".hn\",\r\n \"native\": \"Honduras\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"15.00000000\",\r\n \"longitude\": \"-86.50000000\",\r\n \"emoji\": \"🇭🇳\"\r\n },\r\n {\r\n \"id\": 98,\r\n \"name\": \"Hong Kong S.A.R.\",\r\n \"iso3\": \"HKG\",\r\n \"iso2\": \"HK\",\r\n \"numeric_code\": \"344\",\r\n \"phone_code\": 852,\r\n \"capital\": \"Hong Kong\",\r\n \"currency\": \"HKD\",\r\n \"currency_name\": \"Hong Kong dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".hk\",\r\n \"native\": \"香港\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"22.25000000\",\r\n \"longitude\": \"114.16666666\",\r\n \"emoji\": \"🇭🇰\"\r\n },\r\n {\r\n \"id\": 99,\r\n \"name\": \"Hungary\",\r\n \"iso3\": \"HUN\",\r\n \"iso2\": \"HU\",\r\n \"numeric_code\": \"348\",\r\n \"phone_code\": 36,\r\n \"capital\": \"Budapest\",\r\n \"currency\": \"HUF\",\r\n \"currency_name\": \"Hungarian forint\",\r\n \"currency_symbol\": \"Ft\",\r\n \"tld\": \".hu\",\r\n \"native\": \"Magyarország\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"47.00000000\",\r\n \"longitude\": \"20.00000000\",\r\n \"emoji\": \"🇭🇺\"\r\n },\r\n {\r\n \"id\": 100,\r\n \"name\": \"Iceland\",\r\n \"iso3\": \"ISL\",\r\n \"iso2\": \"IS\",\r\n \"numeric_code\": \"352\",\r\n \"phone_code\": 354,\r\n \"capital\": \"Reykjavik\",\r\n \"currency\": \"ISK\",\r\n \"currency_name\": \"Icelandic króna\",\r\n \"currency_symbol\": \"kr\",\r\n \"tld\": \".is\",\r\n \"native\": \"Ísland\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"65.00000000\",\r\n \"longitude\": \"-18.00000000\",\r\n \"emoji\": \"🇮🇸\"\r\n },\r\n {\r\n \"id\": 101,\r\n \"name\": \"India\",\r\n \"iso3\": \"IND\",\r\n \"iso2\": \"IN\",\r\n \"numeric_code\": \"356\",\r\n \"phone_code\": 91,\r\n \"capital\": \"New Delhi\",\r\n \"currency\": \"INR\",\r\n \"currency_name\": \"Indian rupee\",\r\n \"currency_symbol\": \"₹\",\r\n \"tld\": \".in\",\r\n \"native\": \"भारत\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"20.00000000\",\r\n \"longitude\": \"77.00000000\",\r\n \"emoji\": \"🇮🇳\"\r\n },\r\n {\r\n \"id\": 102,\r\n \"name\": \"Indonesia\",\r\n \"iso3\": \"IDN\",\r\n \"iso2\": \"ID\",\r\n \"numeric_code\": \"360\",\r\n \"phone_code\": 62,\r\n \"capital\": \"Jakarta\",\r\n \"currency\": \"IDR\",\r\n \"currency_name\": \"Indonesian rupiah\",\r\n \"currency_symbol\": \"Rp\",\r\n \"tld\": \".id\",\r\n \"native\": \"Indonesia\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"-5.00000000\",\r\n \"longitude\": \"120.00000000\",\r\n \"emoji\": \"🇮🇩\"\r\n },\r\n {\r\n \"id\": 103,\r\n \"name\": \"Iran\",\r\n \"iso3\": \"IRN\",\r\n \"iso2\": \"IR\",\r\n \"numeric_code\": \"364\",\r\n \"phone_code\": 98,\r\n \"capital\": \"Tehran\",\r\n \"currency\": \"IRR\",\r\n \"currency_name\": \"Iranian rial\",\r\n \"currency_symbol\": \"﷼\",\r\n \"tld\": \".ir\",\r\n \"native\": \"ایران\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"32.00000000\",\r\n \"longitude\": \"53.00000000\",\r\n \"emoji\": \"🇮🇷\"\r\n },\r\n {\r\n \"id\": 104,\r\n \"name\": \"Iraq\",\r\n \"iso3\": \"IRQ\",\r\n \"iso2\": \"IQ\",\r\n \"numeric_code\": \"368\",\r\n \"phone_code\": 964,\r\n \"capital\": \"Baghdad\",\r\n \"currency\": \"IQD\",\r\n \"currency_name\": \"Iraqi dinar\",\r\n \"currency_symbol\": \"د.ع\",\r\n \"tld\": \".iq\",\r\n \"native\": \"العراق\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"33.00000000\",\r\n \"longitude\": \"44.00000000\",\r\n \"emoji\": \"🇮🇶\"\r\n },\r\n {\r\n \"id\": 105,\r\n \"name\": \"Ireland\",\r\n \"iso3\": \"IRL\",\r\n \"iso2\": \"IE\",\r\n \"numeric_code\": \"372\",\r\n \"phone_code\": 353,\r\n \"capital\": \"Dublin\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".ie\",\r\n \"native\": \"Éire\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"53.00000000\",\r\n \"longitude\": \"-8.00000000\",\r\n \"emoji\": \"🇮🇪\"\r\n },\r\n {\r\n \"id\": 106,\r\n \"name\": \"Israel\",\r\n \"iso3\": \"ISR\",\r\n \"iso2\": \"IL\",\r\n \"numeric_code\": \"376\",\r\n \"phone_code\": 972,\r\n \"capital\": \"Jerusalem\",\r\n \"currency\": \"ILS\",\r\n \"currency_name\": \"Israeli new shekel\",\r\n \"currency_symbol\": \"₪\",\r\n \"tld\": \".il\",\r\n \"native\": \"יִשְׂרָאֵל\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"31.50000000\",\r\n \"longitude\": \"34.75000000\",\r\n \"emoji\": \"🇮🇱\"\r\n },\r\n {\r\n \"id\": 107,\r\n \"name\": \"Italy\",\r\n \"iso3\": \"ITA\",\r\n \"iso2\": \"IT\",\r\n \"numeric_code\": \"380\",\r\n \"phone_code\": 39,\r\n \"capital\": \"Rome\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".it\",\r\n \"native\": \"Italia\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"42.83333333\",\r\n \"longitude\": \"12.83333333\",\r\n \"emoji\": \"🇮🇹\"\r\n },\r\n {\r\n \"id\": 108,\r\n \"name\": \"Jamaica\",\r\n \"iso3\": \"JAM\",\r\n \"iso2\": \"JM\",\r\n \"numeric_code\": \"388\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Kingston\",\r\n \"currency\": \"JMD\",\r\n \"currency_name\": \"Jamaican dollar\",\r\n \"currency_symbol\": \"J$\",\r\n \"tld\": \".jm\",\r\n \"native\": \"Jamaica\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.25000000\",\r\n \"longitude\": \"-77.50000000\",\r\n \"emoji\": \"🇯🇲\"\r\n },\r\n {\r\n \"id\": 109,\r\n \"name\": \"Japan\",\r\n \"iso3\": \"JPN\",\r\n \"iso2\": \"JP\",\r\n \"numeric_code\": \"392\",\r\n \"phone_code\": 81,\r\n \"capital\": \"Tokyo\",\r\n \"currency\": \"JPY\",\r\n \"currency_name\": \"Japanese yen\",\r\n \"currency_symbol\": \"¥\",\r\n \"tld\": \".jp\",\r\n \"native\": \"日本\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"36.00000000\",\r\n \"longitude\": \"138.00000000\",\r\n \"emoji\": \"🇯🇵\"\r\n },\r\n {\r\n \"id\": 110,\r\n \"name\": \"Jersey\",\r\n \"iso3\": \"JEY\",\r\n \"iso2\": \"JE\",\r\n \"numeric_code\": \"832\",\r\n \"phone_code\": 44,\r\n \"capital\": \"Saint Helier\",\r\n \"currency\": \"GBP\",\r\n \"currency_name\": \"British pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".je\",\r\n \"native\": \"Jersey\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"49.25000000\",\r\n \"longitude\": \"-2.16666666\",\r\n \"emoji\": \"🇯🇪\"\r\n },\r\n {\r\n \"id\": 111,\r\n \"name\": \"Jordan\",\r\n \"iso3\": \"JOR\",\r\n \"iso2\": \"JO\",\r\n \"numeric_code\": \"400\",\r\n \"phone_code\": 962,\r\n \"capital\": \"Amman\",\r\n \"currency\": \"JOD\",\r\n \"currency_name\": \"Jordanian dinar\",\r\n \"currency_symbol\": \"ا.د\",\r\n \"tld\": \".jo\",\r\n \"native\": \"الأردن\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"31.00000000\",\r\n \"longitude\": \"36.00000000\",\r\n \"emoji\": \"🇯🇴\"\r\n },\r\n {\r\n \"id\": 112,\r\n \"name\": \"Kazakhstan\",\r\n \"iso3\": \"KAZ\",\r\n \"iso2\": \"KZ\",\r\n \"numeric_code\": \"398\",\r\n \"phone_code\": 7,\r\n \"capital\": \"Astana\",\r\n \"currency\": \"KZT\",\r\n \"currency_name\": \"Kazakhstani tenge\",\r\n \"currency_symbol\": \"лв\",\r\n \"tld\": \".kz\",\r\n \"native\": \"Қазақстан\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Central Asia\",\r\n \"latitude\": \"48.00000000\",\r\n \"longitude\": \"68.00000000\",\r\n \"emoji\": \"🇰🇿\"\r\n },\r\n {\r\n \"id\": 113,\r\n \"name\": \"Kenya\",\r\n \"iso3\": \"KEN\",\r\n \"iso2\": \"KE\",\r\n \"numeric_code\": \"404\",\r\n \"phone_code\": 254,\r\n \"capital\": \"Nairobi\",\r\n \"currency\": \"KES\",\r\n \"currency_name\": \"Kenyan shilling\",\r\n \"currency_symbol\": \"KSh\",\r\n \"tld\": \".ke\",\r\n \"native\": \"Kenya\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"1.00000000\",\r\n \"longitude\": \"38.00000000\",\r\n \"emoji\": \"🇰🇪\"\r\n },\r\n {\r\n \"id\": 114,\r\n \"name\": \"Kiribati\",\r\n \"iso3\": \"KIR\",\r\n \"iso2\": \"KI\",\r\n \"numeric_code\": \"296\",\r\n \"phone_code\": 686,\r\n \"capital\": \"Tarawa\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ki\",\r\n \"native\": \"Kiribati\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"1.41666666\",\r\n \"longitude\": \"173.00000000\",\r\n \"emoji\": \"🇰🇮\"\r\n },\r\n {\r\n \"id\": 248,\r\n \"name\": \"Kosovo\",\r\n \"iso3\": \"XKX\",\r\n \"iso2\": \"XK\",\r\n \"numeric_code\": \"926\",\r\n \"phone_code\": 383,\r\n \"capital\": \"Pristina\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".xk\",\r\n \"native\": \"Republika e Kosovës\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"42.56129090\",\r\n \"longitude\": \"20.34030350\",\r\n \"emoji\": \"🇽🇰\"\r\n },\r\n {\r\n \"id\": 117,\r\n \"name\": \"Kuwait\",\r\n \"iso3\": \"KWT\",\r\n \"iso2\": \"KW\",\r\n \"numeric_code\": \"414\",\r\n \"phone_code\": 965,\r\n \"capital\": \"Kuwait City\",\r\n \"currency\": \"KWD\",\r\n \"currency_name\": \"Kuwaiti dinar\",\r\n \"currency_symbol\": \"ك.د\",\r\n \"tld\": \".kw\",\r\n \"native\": \"الكويت\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"29.50000000\",\r\n \"longitude\": \"45.75000000\",\r\n \"emoji\": \"🇰🇼\"\r\n },\r\n {\r\n \"id\": 118,\r\n \"name\": \"Kyrgyzstan\",\r\n \"iso3\": \"KGZ\",\r\n \"iso2\": \"KG\",\r\n \"numeric_code\": \"417\",\r\n \"phone_code\": 996,\r\n \"capital\": \"Bishkek\",\r\n \"currency\": \"KGS\",\r\n \"currency_name\": \"Kyrgyzstani som\",\r\n \"currency_symbol\": \"лв\",\r\n \"tld\": \".kg\",\r\n \"native\": \"Кыргызстан\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Central Asia\",\r\n \"latitude\": \"41.00000000\",\r\n \"longitude\": \"75.00000000\",\r\n \"emoji\": \"🇰🇬\"\r\n },\r\n {\r\n \"id\": 119,\r\n \"name\": \"Laos\",\r\n \"iso3\": \"LAO\",\r\n \"iso2\": \"LA\",\r\n \"numeric_code\": \"418\",\r\n \"phone_code\": 856,\r\n \"capital\": \"Vientiane\",\r\n \"currency\": \"LAK\",\r\n \"currency_name\": \"Lao kip\",\r\n \"currency_symbol\": \"₭\",\r\n \"tld\": \".la\",\r\n \"native\": \"ສປປລາວ\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"18.00000000\",\r\n \"longitude\": \"105.00000000\",\r\n \"emoji\": \"🇱🇦\"\r\n },\r\n {\r\n \"id\": 120,\r\n \"name\": \"Latvia\",\r\n \"iso3\": \"LVA\",\r\n \"iso2\": \"LV\",\r\n \"numeric_code\": \"428\",\r\n \"phone_code\": 371,\r\n \"capital\": \"Riga\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".lv\",\r\n \"native\": \"Latvija\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"57.00000000\",\r\n \"longitude\": \"25.00000000\",\r\n \"emoji\": \"🇱🇻\"\r\n },\r\n {\r\n \"id\": 121,\r\n \"name\": \"Lebanon\",\r\n \"iso3\": \"LBN\",\r\n \"iso2\": \"LB\",\r\n \"numeric_code\": \"422\",\r\n \"phone_code\": 961,\r\n \"capital\": \"Beirut\",\r\n \"currency\": \"LBP\",\r\n \"currency_name\": \"Lebanese pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".lb\",\r\n \"native\": \"لبنان\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"33.83333333\",\r\n \"longitude\": \"35.83333333\",\r\n \"emoji\": \"🇱🇧\"\r\n },\r\n {\r\n \"id\": 122,\r\n \"name\": \"Lesotho\",\r\n \"iso3\": \"LSO\",\r\n \"iso2\": \"LS\",\r\n \"numeric_code\": \"426\",\r\n \"phone_code\": 266,\r\n \"capital\": \"Maseru\",\r\n \"currency\": \"LSL\",\r\n \"currency_name\": \"Lesotho loti\",\r\n \"currency_symbol\": \"L\",\r\n \"tld\": \".ls\",\r\n \"native\": \"Lesotho\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Southern Africa\",\r\n \"latitude\": \"-29.50000000\",\r\n \"longitude\": \"28.50000000\",\r\n \"emoji\": \"🇱🇸\"\r\n },\r\n {\r\n \"id\": 123,\r\n \"name\": \"Liberia\",\r\n \"iso3\": \"LBR\",\r\n \"iso2\": \"LR\",\r\n \"numeric_code\": \"430\",\r\n \"phone_code\": 231,\r\n \"capital\": \"Monrovia\",\r\n \"currency\": \"LRD\",\r\n \"currency_name\": \"Liberian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".lr\",\r\n \"native\": \"Liberia\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"6.50000000\",\r\n \"longitude\": \"-9.50000000\",\r\n \"emoji\": \"🇱🇷\"\r\n },\r\n {\r\n \"id\": 124,\r\n \"name\": \"Libya\",\r\n \"iso3\": \"LBY\",\r\n \"iso2\": \"LY\",\r\n \"numeric_code\": \"434\",\r\n \"phone_code\": 218,\r\n \"capital\": \"Tripolis\",\r\n \"currency\": \"LYD\",\r\n \"currency_name\": \"Libyan dinar\",\r\n \"currency_symbol\": \"د.ل\",\r\n \"tld\": \".ly\",\r\n \"native\": \"‏ليبيا\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"25.00000000\",\r\n \"longitude\": \"17.00000000\",\r\n \"emoji\": \"🇱🇾\"\r\n },\r\n {\r\n \"id\": 125,\r\n \"name\": \"Liechtenstein\",\r\n \"iso3\": \"LIE\",\r\n \"iso2\": \"LI\",\r\n \"numeric_code\": \"438\",\r\n \"phone_code\": 423,\r\n \"capital\": \"Vaduz\",\r\n \"currency\": \"CHF\",\r\n \"currency_name\": \"Swiss franc\",\r\n \"currency_symbol\": \"CHf\",\r\n \"tld\": \".li\",\r\n \"native\": \"Liechtenstein\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"47.26666666\",\r\n \"longitude\": \"9.53333333\",\r\n \"emoji\": \"🇱🇮\"\r\n },\r\n {\r\n \"id\": 126,\r\n \"name\": \"Lithuania\",\r\n \"iso3\": \"LTU\",\r\n \"iso2\": \"LT\",\r\n \"numeric_code\": \"440\",\r\n \"phone_code\": 370,\r\n \"capital\": \"Vilnius\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".lt\",\r\n \"native\": \"Lietuva\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"56.00000000\",\r\n \"longitude\": \"24.00000000\",\r\n \"emoji\": \"🇱🇹\"\r\n },\r\n {\r\n \"id\": 127,\r\n \"name\": \"Luxembourg\",\r\n \"iso3\": \"LUX\",\r\n \"iso2\": \"LU\",\r\n \"numeric_code\": \"442\",\r\n \"phone_code\": 352,\r\n \"capital\": \"Luxembourg\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".lu\",\r\n \"native\": \"Luxembourg\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"49.75000000\",\r\n \"longitude\": \"6.16666666\",\r\n \"emoji\": \"🇱🇺\"\r\n },\r\n {\r\n \"id\": 128,\r\n \"name\": \"Macau S.A.R.\",\r\n \"iso3\": \"MAC\",\r\n \"iso2\": \"MO\",\r\n \"numeric_code\": \"446\",\r\n \"phone_code\": 853,\r\n \"capital\": \"Macao\",\r\n \"currency\": \"MOP\",\r\n \"currency_name\": \"Macanese pataca\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".mo\",\r\n \"native\": \"澳門\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"22.16666666\",\r\n \"longitude\": \"113.55000000\",\r\n \"emoji\": \"🇲🇴\"\r\n },\r\n {\r\n \"id\": 129,\r\n \"name\": \"Macedonia\",\r\n \"iso3\": \"MKD\",\r\n \"iso2\": \"MK\",\r\n \"numeric_code\": \"807\",\r\n \"phone_code\": 389,\r\n \"capital\": \"Skopje\",\r\n \"currency\": \"MKD\",\r\n \"currency_name\": \"Denar\",\r\n \"currency_symbol\": \"ден\",\r\n \"tld\": \".mk\",\r\n \"native\": \"Северна Македонија\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"41.83333333\",\r\n \"longitude\": \"22.00000000\",\r\n \"emoji\": \"🇲🇰\"\r\n },\r\n {\r\n \"id\": 130,\r\n \"name\": \"Madagascar\",\r\n \"iso3\": \"MDG\",\r\n \"iso2\": \"MG\",\r\n \"numeric_code\": \"450\",\r\n \"phone_code\": 261,\r\n \"capital\": \"Antananarivo\",\r\n \"currency\": \"MGA\",\r\n \"currency_name\": \"Malagasy ariary\",\r\n \"currency_symbol\": \"Ar\",\r\n \"tld\": \".mg\",\r\n \"native\": \"Madagasikara\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-20.00000000\",\r\n \"longitude\": \"47.00000000\",\r\n \"emoji\": \"🇲🇬\"\r\n },\r\n {\r\n \"id\": 131,\r\n \"name\": \"Malawi\",\r\n \"iso3\": \"MWI\",\r\n \"iso2\": \"MW\",\r\n \"numeric_code\": \"454\",\r\n \"phone_code\": 265,\r\n \"capital\": \"Lilongwe\",\r\n \"currency\": \"MWK\",\r\n \"currency_name\": \"Malawian kwacha\",\r\n \"currency_symbol\": \"MK\",\r\n \"tld\": \".mw\",\r\n \"native\": \"Malawi\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-13.50000000\",\r\n \"longitude\": \"34.00000000\",\r\n \"emoji\": \"🇲🇼\"\r\n },\r\n {\r\n \"id\": 132,\r\n \"name\": \"Malaysia\",\r\n \"iso3\": \"MYS\",\r\n \"iso2\": \"MY\",\r\n \"numeric_code\": \"458\",\r\n \"phone_code\": 60,\r\n \"capital\": \"Kuala Lumpur\",\r\n \"currency\": \"MYR\",\r\n \"currency_name\": \"Malaysian ringgit\",\r\n \"currency_symbol\": \"RM\",\r\n \"tld\": \".my\",\r\n \"native\": \"Malaysia\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"2.50000000\",\r\n \"longitude\": \"112.50000000\",\r\n \"emoji\": \"🇲🇾\"\r\n },\r\n {\r\n \"id\": 133,\r\n \"name\": \"Maldives\",\r\n \"iso3\": \"MDV\",\r\n \"iso2\": \"MV\",\r\n \"numeric_code\": \"462\",\r\n \"phone_code\": 960,\r\n \"capital\": \"Male\",\r\n \"currency\": \"MVR\",\r\n \"currency_name\": \"Maldivian rufiyaa\",\r\n \"currency_symbol\": \"Rf\",\r\n \"tld\": \".mv\",\r\n \"native\": \"Maldives\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"3.25000000\",\r\n \"longitude\": \"73.00000000\",\r\n \"emoji\": \"🇲🇻\"\r\n },\r\n {\r\n \"id\": 134,\r\n \"name\": \"Mali\",\r\n \"iso3\": \"MLI\",\r\n \"iso2\": \"ML\",\r\n \"numeric_code\": \"466\",\r\n \"phone_code\": 223,\r\n \"capital\": \"Bamako\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".ml\",\r\n \"native\": \"Mali\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"17.00000000\",\r\n \"longitude\": \"-4.00000000\",\r\n \"emoji\": \"🇲🇱\"\r\n },\r\n {\r\n \"id\": 135,\r\n \"name\": \"Malta\",\r\n \"iso3\": \"MLT\",\r\n \"iso2\": \"MT\",\r\n \"numeric_code\": \"470\",\r\n \"phone_code\": 356,\r\n \"capital\": \"Valletta\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".mt\",\r\n \"native\": \"Malta\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"35.83333333\",\r\n \"longitude\": \"14.58333333\",\r\n \"emoji\": \"🇲🇹\"\r\n },\r\n {\r\n \"id\": 136,\r\n \"name\": \"Man (Isle of)\",\r\n \"iso3\": \"IMN\",\r\n \"iso2\": \"IM\",\r\n \"numeric_code\": \"833\",\r\n \"phone_code\": 44,\r\n \"capital\": \"Douglas, Isle of Man\",\r\n \"currency\": \"GBP\",\r\n \"currency_name\": \"British pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".im\",\r\n \"native\": \"Isle of Man\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"54.25000000\",\r\n \"longitude\": \"-4.50000000\",\r\n \"emoji\": \"🇮🇲\"\r\n },\r\n {\r\n \"id\": 137,\r\n \"name\": \"Marshall Islands\",\r\n \"iso3\": \"MHL\",\r\n \"iso2\": \"MH\",\r\n \"numeric_code\": \"584\",\r\n \"phone_code\": 692,\r\n \"capital\": \"Majuro\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".mh\",\r\n \"native\": \"M̧ajeļ\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"9.00000000\",\r\n \"longitude\": \"168.00000000\",\r\n \"emoji\": \"🇲🇭\"\r\n },\r\n {\r\n \"id\": 138,\r\n \"name\": \"Martinique\",\r\n \"iso3\": \"MTQ\",\r\n \"iso2\": \"MQ\",\r\n \"numeric_code\": \"474\",\r\n \"phone_code\": 596,\r\n \"capital\": \"Fort-de-France\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".mq\",\r\n \"native\": \"Martinique\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"14.66666700\",\r\n \"longitude\": \"-61.00000000\",\r\n \"emoji\": \"🇲🇶\"\r\n },\r\n {\r\n \"id\": 139,\r\n \"name\": \"Mauritania\",\r\n \"iso3\": \"MRT\",\r\n \"iso2\": \"MR\",\r\n \"numeric_code\": \"478\",\r\n \"phone_code\": 222,\r\n \"capital\": \"Nouakchott\",\r\n \"currency\": \"MRO\",\r\n \"currency_name\": \"Mauritanian ouguiya\",\r\n \"currency_symbol\": \"MRU\",\r\n \"tld\": \".mr\",\r\n \"native\": \"موريتانيا\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"20.00000000\",\r\n \"longitude\": \"-12.00000000\",\r\n \"emoji\": \"🇲🇷\"\r\n },\r\n {\r\n \"id\": 140,\r\n \"name\": \"Mauritius\",\r\n \"iso3\": \"MUS\",\r\n \"iso2\": \"MU\",\r\n \"numeric_code\": \"480\",\r\n \"phone_code\": 230,\r\n \"capital\": \"Port Louis\",\r\n \"currency\": \"MUR\",\r\n \"currency_name\": \"Mauritian rupee\",\r\n \"currency_symbol\": \"₨\",\r\n \"tld\": \".mu\",\r\n \"native\": \"Maurice\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-20.28333333\",\r\n \"longitude\": \"57.55000000\",\r\n \"emoji\": \"🇲🇺\"\r\n },\r\n {\r\n \"id\": 141,\r\n \"name\": \"Mayotte\",\r\n \"iso3\": \"MYT\",\r\n \"iso2\": \"YT\",\r\n \"numeric_code\": \"175\",\r\n \"phone_code\": 262,\r\n \"capital\": \"Mamoudzou\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".yt\",\r\n \"native\": \"Mayotte\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-12.83333333\",\r\n \"longitude\": \"45.16666666\",\r\n \"emoji\": \"🇾🇹\"\r\n },\r\n {\r\n \"id\": 142,\r\n \"name\": \"Mexico\",\r\n \"iso3\": \"MEX\",\r\n \"iso2\": \"MX\",\r\n \"numeric_code\": \"484\",\r\n \"phone_code\": 52,\r\n \"capital\": \"Ciudad de México\",\r\n \"currency\": \"MXN\",\r\n \"currency_name\": \"Mexican peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".mx\",\r\n \"native\": \"México\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"23.00000000\",\r\n \"longitude\": \"-102.00000000\",\r\n \"emoji\": \"🇲🇽\"\r\n },\r\n {\r\n \"id\": 143,\r\n \"name\": \"Micronesia\",\r\n \"iso3\": \"FSM\",\r\n \"iso2\": \"FM\",\r\n \"numeric_code\": \"583\",\r\n \"phone_code\": 691,\r\n \"capital\": \"Palikir\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".fm\",\r\n \"native\": \"Micronesia\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"6.91666666\",\r\n \"longitude\": \"158.25000000\",\r\n \"emoji\": \"🇫🇲\"\r\n },\r\n {\r\n \"id\": 144,\r\n \"name\": \"Moldova\",\r\n \"iso3\": \"MDA\",\r\n \"iso2\": \"MD\",\r\n \"numeric_code\": \"498\",\r\n \"phone_code\": 373,\r\n \"capital\": \"Chisinau\",\r\n \"currency\": \"MDL\",\r\n \"currency_name\": \"Moldovan leu\",\r\n \"currency_symbol\": \"L\",\r\n \"tld\": \".md\",\r\n \"native\": \"Moldova\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"47.00000000\",\r\n \"longitude\": \"29.00000000\",\r\n \"emoji\": \"🇲🇩\"\r\n },\r\n {\r\n \"id\": 145,\r\n \"name\": \"Monaco\",\r\n \"iso3\": \"MCO\",\r\n \"iso2\": \"MC\",\r\n \"numeric_code\": \"492\",\r\n \"phone_code\": 377,\r\n \"capital\": \"Monaco\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".mc\",\r\n \"native\": \"Monaco\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"43.73333333\",\r\n \"longitude\": \"7.40000000\",\r\n \"emoji\": \"🇲🇨\"\r\n },\r\n {\r\n \"id\": 146,\r\n \"name\": \"Mongolia\",\r\n \"iso3\": \"MNG\",\r\n \"iso2\": \"MN\",\r\n \"numeric_code\": \"496\",\r\n \"phone_code\": 976,\r\n \"capital\": \"Ulan Bator\",\r\n \"currency\": \"MNT\",\r\n \"currency_name\": \"Mongolian tögrög\",\r\n \"currency_symbol\": \"₮\",\r\n \"tld\": \".mn\",\r\n \"native\": \"Монгол улс\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"46.00000000\",\r\n \"longitude\": \"105.00000000\",\r\n \"emoji\": \"🇲🇳\"\r\n },\r\n {\r\n \"id\": 147,\r\n \"name\": \"Montenegro\",\r\n \"iso3\": \"MNE\",\r\n \"iso2\": \"ME\",\r\n \"numeric_code\": \"499\",\r\n \"phone_code\": 382,\r\n \"capital\": \"Podgorica\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".me\",\r\n \"native\": \"Црна Гора\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"42.50000000\",\r\n \"longitude\": \"19.30000000\",\r\n \"emoji\": \"🇲🇪\"\r\n },\r\n {\r\n \"id\": 148,\r\n \"name\": \"Montserrat\",\r\n \"iso3\": \"MSR\",\r\n \"iso2\": \"MS\",\r\n \"numeric_code\": \"500\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Plymouth\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".ms\",\r\n \"native\": \"Montserrat\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"16.75000000\",\r\n \"longitude\": \"-62.20000000\",\r\n \"emoji\": \"🇲🇸\"\r\n },\r\n {\r\n \"id\": 149,\r\n \"name\": \"Morocco\",\r\n \"iso3\": \"MAR\",\r\n \"iso2\": \"MA\",\r\n \"numeric_code\": \"504\",\r\n \"phone_code\": 212,\r\n \"capital\": \"Rabat\",\r\n \"currency\": \"MAD\",\r\n \"currency_name\": \"Moroccan dirham\",\r\n \"currency_symbol\": \"DH\",\r\n \"tld\": \".ma\",\r\n \"native\": \"المغرب\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"32.00000000\",\r\n \"longitude\": \"-5.00000000\",\r\n \"emoji\": \"🇲🇦\"\r\n },\r\n {\r\n \"id\": 150,\r\n \"name\": \"Mozambique\",\r\n \"iso3\": \"MOZ\",\r\n \"iso2\": \"MZ\",\r\n \"numeric_code\": \"508\",\r\n \"phone_code\": 258,\r\n \"capital\": \"Maputo\",\r\n \"currency\": \"MZN\",\r\n \"currency_name\": \"Mozambican metical\",\r\n \"currency_symbol\": \"MT\",\r\n \"tld\": \".mz\",\r\n \"native\": \"Moçambique\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-18.25000000\",\r\n \"longitude\": \"35.00000000\",\r\n \"emoji\": \"🇲🇿\"\r\n },\r\n {\r\n \"id\": 151,\r\n \"name\": \"Myanmar\",\r\n \"iso3\": \"MMR\",\r\n \"iso2\": \"MM\",\r\n \"numeric_code\": \"104\",\r\n \"phone_code\": 95,\r\n \"capital\": \"Nay Pyi Taw\",\r\n \"currency\": \"MMK\",\r\n \"currency_name\": \"Burmese kyat\",\r\n \"currency_symbol\": \"K\",\r\n \"tld\": \".mm\",\r\n \"native\": \"မြန်မာ\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"22.00000000\",\r\n \"longitude\": \"98.00000000\",\r\n \"emoji\": \"🇲🇲\"\r\n },\r\n {\r\n \"id\": 152,\r\n \"name\": \"Namibia\",\r\n \"iso3\": \"NAM\",\r\n \"iso2\": \"NA\",\r\n \"numeric_code\": \"516\",\r\n \"phone_code\": 264,\r\n \"capital\": \"Windhoek\",\r\n \"currency\": \"NAD\",\r\n \"currency_name\": \"Namibian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".na\",\r\n \"native\": \"Namibia\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Southern Africa\",\r\n \"latitude\": \"-22.00000000\",\r\n \"longitude\": \"17.00000000\",\r\n \"emoji\": \"🇳🇦\"\r\n },\r\n {\r\n \"id\": 153,\r\n \"name\": \"Nauru\",\r\n \"iso3\": \"NRU\",\r\n \"iso2\": \"NR\",\r\n \"numeric_code\": \"520\",\r\n \"phone_code\": 674,\r\n \"capital\": \"Yaren\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".nr\",\r\n \"native\": \"Nauru\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"-0.53333333\",\r\n \"longitude\": \"166.91666666\",\r\n \"emoji\": \"🇳🇷\"\r\n },\r\n {\r\n \"id\": 154,\r\n \"name\": \"Nepal\",\r\n \"iso3\": \"NPL\",\r\n \"iso2\": \"NP\",\r\n \"numeric_code\": \"524\",\r\n \"phone_code\": 977,\r\n \"capital\": \"Kathmandu\",\r\n \"currency\": \"NPR\",\r\n \"currency_name\": \"Nepalese rupee\",\r\n \"currency_symbol\": \"₨\",\r\n \"tld\": \".np\",\r\n \"native\": \"नपल\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"28.00000000\",\r\n \"longitude\": \"84.00000000\",\r\n \"emoji\": \"🇳🇵\"\r\n },\r\n {\r\n \"id\": 156,\r\n \"name\": \"Netherlands\",\r\n \"iso3\": \"NLD\",\r\n \"iso2\": \"NL\",\r\n \"numeric_code\": \"528\",\r\n \"phone_code\": 31,\r\n \"capital\": \"Amsterdam\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".nl\",\r\n \"native\": \"Nederland\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"52.50000000\",\r\n \"longitude\": \"5.75000000\",\r\n \"emoji\": \"🇳🇱\"\r\n },\r\n {\r\n \"id\": 157,\r\n \"name\": \"New Caledonia\",\r\n \"iso3\": \"NCL\",\r\n \"iso2\": \"NC\",\r\n \"numeric_code\": \"540\",\r\n \"phone_code\": 687,\r\n \"capital\": \"Noumea\",\r\n \"currency\": \"XPF\",\r\n \"currency_name\": \"CFP franc\",\r\n \"currency_symbol\": \"₣\",\r\n \"tld\": \".nc\",\r\n \"native\": \"Nouvelle-Calédonie\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Melanesia\",\r\n \"latitude\": \"-21.50000000\",\r\n \"longitude\": \"165.50000000\",\r\n \"emoji\": \"🇳🇨\"\r\n },\r\n {\r\n \"id\": 158,\r\n \"name\": \"New Zealand\",\r\n \"iso3\": \"NZL\",\r\n \"iso2\": \"NZ\",\r\n \"numeric_code\": \"554\",\r\n \"phone_code\": 64,\r\n \"capital\": \"Wellington\",\r\n \"currency\": \"NZD\",\r\n \"currency_name\": \"New Zealand dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".nz\",\r\n \"native\": \"New Zealand\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Australia and New Zealand\",\r\n \"latitude\": \"-41.00000000\",\r\n \"longitude\": \"174.00000000\",\r\n \"emoji\": \"🇳🇿\"\r\n },\r\n {\r\n \"id\": 159,\r\n \"name\": \"Nicaragua\",\r\n \"iso3\": \"NIC\",\r\n \"iso2\": \"NI\",\r\n \"numeric_code\": \"558\",\r\n \"phone_code\": 505,\r\n \"capital\": \"Managua\",\r\n \"currency\": \"NIO\",\r\n \"currency_name\": \"Nicaraguan córdoba\",\r\n \"currency_symbol\": \"C$\",\r\n \"tld\": \".ni\",\r\n \"native\": \"Nicaragua\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"13.00000000\",\r\n \"longitude\": \"-85.00000000\",\r\n \"emoji\": \"🇳🇮\"\r\n },\r\n {\r\n \"id\": 160,\r\n \"name\": \"Niger\",\r\n \"iso3\": \"NER\",\r\n \"iso2\": \"NE\",\r\n \"numeric_code\": \"562\",\r\n \"phone_code\": 227,\r\n \"capital\": \"Niamey\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".ne\",\r\n \"native\": \"Niger\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"16.00000000\",\r\n \"longitude\": \"8.00000000\",\r\n \"emoji\": \"🇳🇪\"\r\n },\r\n {\r\n \"id\": 161,\r\n \"name\": \"Nigeria\",\r\n \"iso3\": \"NGA\",\r\n \"iso2\": \"NG\",\r\n \"numeric_code\": \"566\",\r\n \"phone_code\": 234,\r\n \"capital\": \"Abuja\",\r\n \"currency\": \"NGN\",\r\n \"currency_name\": \"Nigerian naira\",\r\n \"currency_symbol\": \"₦\",\r\n \"tld\": \".ng\",\r\n \"native\": \"Nigeria\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"10.00000000\",\r\n \"longitude\": \"8.00000000\",\r\n \"emoji\": \"🇳🇬\"\r\n },\r\n {\r\n \"id\": 162,\r\n \"name\": \"Niue\",\r\n \"iso3\": \"NIU\",\r\n \"iso2\": \"NU\",\r\n \"numeric_code\": \"570\",\r\n \"phone_code\": 683,\r\n \"capital\": \"Alofi\",\r\n \"currency\": \"NZD\",\r\n \"currency_name\": \"New Zealand dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".nu\",\r\n \"native\": \"Niuē\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-19.03333333\",\r\n \"longitude\": \"-169.86666666\",\r\n \"emoji\": \"🇳🇺\"\r\n },\r\n {\r\n \"id\": 163,\r\n \"name\": \"Norfolk Island\",\r\n \"iso3\": \"NFK\",\r\n \"iso2\": \"NF\",\r\n \"numeric_code\": \"574\",\r\n \"phone_code\": 672,\r\n \"capital\": \"Kingston\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".nf\",\r\n \"native\": \"Norfolk Island\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Australia and New Zealand\",\r\n \"latitude\": \"-29.03333333\",\r\n \"longitude\": \"167.95000000\",\r\n \"emoji\": \"🇳🇫\"\r\n },\r\n {\r\n \"id\": 115,\r\n \"name\": \"North Korea\",\r\n \"iso3\": \"PRK\",\r\n \"iso2\": \"KP\",\r\n \"numeric_code\": \"408\",\r\n \"phone_code\": 850,\r\n \"capital\": \"Pyongyang\",\r\n \"currency\": \"KPW\",\r\n \"currency_name\": \"North Korean Won\",\r\n \"currency_symbol\": \"₩\",\r\n \"tld\": \".kp\",\r\n \"native\": \"북한\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"40.00000000\",\r\n \"longitude\": \"127.00000000\",\r\n \"emoji\": \"🇰🇵\"\r\n },\r\n {\r\n \"id\": 164,\r\n \"name\": \"Northern Mariana Islands\",\r\n \"iso3\": \"MNP\",\r\n \"iso2\": \"MP\",\r\n \"numeric_code\": \"580\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Saipan\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".mp\",\r\n \"native\": \"Northern Mariana Islands\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"15.20000000\",\r\n \"longitude\": \"145.75000000\",\r\n \"emoji\": \"🇲🇵\"\r\n },\r\n {\r\n \"id\": 165,\r\n \"name\": \"Norway\",\r\n \"iso3\": \"NOR\",\r\n \"iso2\": \"NO\",\r\n \"numeric_code\": \"578\",\r\n \"phone_code\": 47,\r\n \"capital\": \"Oslo\",\r\n \"currency\": \"NOK\",\r\n \"currency_name\": \"Norwegian krone\",\r\n \"currency_symbol\": \"kr\",\r\n \"tld\": \".no\",\r\n \"native\": \"Norge\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"62.00000000\",\r\n \"longitude\": \"10.00000000\",\r\n \"emoji\": \"🇳🇴\"\r\n },\r\n {\r\n \"id\": 166,\r\n \"name\": \"Oman\",\r\n \"iso3\": \"OMN\",\r\n \"iso2\": \"OM\",\r\n \"numeric_code\": \"512\",\r\n \"phone_code\": 968,\r\n \"capital\": \"Muscat\",\r\n \"currency\": \"OMR\",\r\n \"currency_name\": \"Omani rial\",\r\n \"currency_symbol\": \".ع.ر\",\r\n \"tld\": \".om\",\r\n \"native\": \"عمان\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"21.00000000\",\r\n \"longitude\": \"57.00000000\",\r\n \"emoji\": \"🇴🇲\"\r\n },\r\n {\r\n \"id\": 167,\r\n \"name\": \"Pakistan\",\r\n \"iso3\": \"PAK\",\r\n \"iso2\": \"PK\",\r\n \"numeric_code\": \"586\",\r\n \"phone_code\": 92,\r\n \"capital\": \"Islamabad\",\r\n \"currency\": \"PKR\",\r\n \"currency_name\": \"Pakistani rupee\",\r\n \"currency_symbol\": \"₨\",\r\n \"tld\": \".pk\",\r\n \"native\": \"Pakistan\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"30.00000000\",\r\n \"longitude\": \"70.00000000\",\r\n \"emoji\": \"🇵🇰\"\r\n },\r\n {\r\n \"id\": 168,\r\n \"name\": \"Palau\",\r\n \"iso3\": \"PLW\",\r\n \"iso2\": \"PW\",\r\n \"numeric_code\": \"585\",\r\n \"phone_code\": 680,\r\n \"capital\": \"Melekeok\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".pw\",\r\n \"native\": \"Palau\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Micronesia\",\r\n \"latitude\": \"7.50000000\",\r\n \"longitude\": \"134.50000000\",\r\n \"emoji\": \"🇵🇼\"\r\n },\r\n {\r\n \"id\": 169,\r\n \"name\": \"Palestinian Territory Occupied\",\r\n \"iso3\": \"PSE\",\r\n \"iso2\": \"PS\",\r\n \"numeric_code\": \"275\",\r\n \"phone_code\": 970,\r\n \"capital\": \"East Jerusalem\",\r\n \"currency\": \"ILS\",\r\n \"currency_name\": \"Israeli new shekel\",\r\n \"currency_symbol\": \"₪\",\r\n \"tld\": \".ps\",\r\n \"native\": \"فلسطين\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"31.90000000\",\r\n \"longitude\": \"35.20000000\",\r\n \"emoji\": \"🇵🇸\"\r\n },\r\n {\r\n \"id\": 170,\r\n \"name\": \"Panama\",\r\n \"iso3\": \"PAN\",\r\n \"iso2\": \"PA\",\r\n \"numeric_code\": \"591\",\r\n \"phone_code\": 507,\r\n \"capital\": \"Panama City\",\r\n \"currency\": \"PAB\",\r\n \"currency_name\": \"Panamanian balboa\",\r\n \"currency_symbol\": \"B/.\",\r\n \"tld\": \".pa\",\r\n \"native\": \"Panamá\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Central America\",\r\n \"latitude\": \"9.00000000\",\r\n \"longitude\": \"-80.00000000\",\r\n \"emoji\": \"🇵🇦\"\r\n },\r\n {\r\n \"id\": 171,\r\n \"name\": \"Papua new Guinea\",\r\n \"iso3\": \"PNG\",\r\n \"iso2\": \"PG\",\r\n \"numeric_code\": \"598\",\r\n \"phone_code\": 675,\r\n \"capital\": \"Port Moresby\",\r\n \"currency\": \"PGK\",\r\n \"currency_name\": \"Papua New Guinean kina\",\r\n \"currency_symbol\": \"K\",\r\n \"tld\": \".pg\",\r\n \"native\": \"Papua Niugini\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Melanesia\",\r\n \"latitude\": \"-6.00000000\",\r\n \"longitude\": \"147.00000000\",\r\n \"emoji\": \"🇵🇬\"\r\n },\r\n {\r\n \"id\": 172,\r\n \"name\": \"Paraguay\",\r\n \"iso3\": \"PRY\",\r\n \"iso2\": \"PY\",\r\n \"numeric_code\": \"600\",\r\n \"phone_code\": 595,\r\n \"capital\": \"Asuncion\",\r\n \"currency\": \"PYG\",\r\n \"currency_name\": \"Paraguayan guarani\",\r\n \"currency_symbol\": \"₲\",\r\n \"tld\": \".py\",\r\n \"native\": \"Paraguay\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-23.00000000\",\r\n \"longitude\": \"-58.00000000\",\r\n \"emoji\": \"🇵🇾\"\r\n },\r\n {\r\n \"id\": 173,\r\n \"name\": \"Peru\",\r\n \"iso3\": \"PER\",\r\n \"iso2\": \"PE\",\r\n \"numeric_code\": \"604\",\r\n \"phone_code\": 51,\r\n \"capital\": \"Lima\",\r\n \"currency\": \"PEN\",\r\n \"currency_name\": \"Peruvian sol\",\r\n \"currency_symbol\": \"S/.\",\r\n \"tld\": \".pe\",\r\n \"native\": \"Perú\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-10.00000000\",\r\n \"longitude\": \"-76.00000000\",\r\n \"emoji\": \"🇵🇪\"\r\n },\r\n {\r\n \"id\": 174,\r\n \"name\": \"Philippines\",\r\n \"iso3\": \"PHL\",\r\n \"iso2\": \"PH\",\r\n \"numeric_code\": \"608\",\r\n \"phone_code\": 63,\r\n \"capital\": \"Manila\",\r\n \"currency\": \"PHP\",\r\n \"currency_name\": \"Philippine peso\",\r\n \"currency_symbol\": \"₱\",\r\n \"tld\": \".ph\",\r\n \"native\": \"Pilipinas\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"13.00000000\",\r\n \"longitude\": \"122.00000000\",\r\n \"emoji\": \"🇵🇭\"\r\n },\r\n {\r\n \"id\": 175,\r\n \"name\": \"Pitcairn Island\",\r\n \"iso3\": \"PCN\",\r\n \"iso2\": \"PN\",\r\n \"numeric_code\": \"612\",\r\n \"phone_code\": 870,\r\n \"capital\": \"Adamstown\",\r\n \"currency\": \"NZD\",\r\n \"currency_name\": \"New Zealand dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".pn\",\r\n \"native\": \"Pitcairn Islands\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-25.06666666\",\r\n \"longitude\": \"-130.10000000\",\r\n \"emoji\": \"🇵🇳\"\r\n },\r\n {\r\n \"id\": 176,\r\n \"name\": \"Poland\",\r\n \"iso3\": \"POL\",\r\n \"iso2\": \"PL\",\r\n \"numeric_code\": \"616\",\r\n \"phone_code\": 48,\r\n \"capital\": \"Warsaw\",\r\n \"currency\": \"PLN\",\r\n \"currency_name\": \"Polish złoty\",\r\n \"currency_symbol\": \"zł\",\r\n \"tld\": \".pl\",\r\n \"native\": \"Polska\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"52.00000000\",\r\n \"longitude\": \"20.00000000\",\r\n \"emoji\": \"🇵🇱\"\r\n },\r\n {\r\n \"id\": 177,\r\n \"name\": \"Portugal\",\r\n \"iso3\": \"PRT\",\r\n \"iso2\": \"PT\",\r\n \"numeric_code\": \"620\",\r\n \"phone_code\": 351,\r\n \"capital\": \"Lisbon\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".pt\",\r\n \"native\": \"Portugal\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"39.50000000\",\r\n \"longitude\": \"-8.00000000\",\r\n \"emoji\": \"🇵🇹\"\r\n },\r\n {\r\n \"id\": 178,\r\n \"name\": \"Puerto Rico\",\r\n \"iso3\": \"PRI\",\r\n \"iso2\": \"PR\",\r\n \"numeric_code\": \"630\",\r\n \"phone_code\": 1,\r\n \"capital\": \"San Juan\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".pr\",\r\n \"native\": \"Puerto Rico\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.25000000\",\r\n \"longitude\": \"-66.50000000\",\r\n \"emoji\": \"🇵🇷\"\r\n },\r\n {\r\n \"id\": 179,\r\n \"name\": \"Qatar\",\r\n \"iso3\": \"QAT\",\r\n \"iso2\": \"QA\",\r\n \"numeric_code\": \"634\",\r\n \"phone_code\": 974,\r\n \"capital\": \"Doha\",\r\n \"currency\": \"QAR\",\r\n \"currency_name\": \"Qatari riyal\",\r\n \"currency_symbol\": \"ق.ر\",\r\n \"tld\": \".qa\",\r\n \"native\": \"قطر\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"25.50000000\",\r\n \"longitude\": \"51.25000000\",\r\n \"emoji\": \"🇶🇦\"\r\n },\r\n {\r\n \"id\": 180,\r\n \"name\": \"Reunion\",\r\n \"iso3\": \"REU\",\r\n \"iso2\": \"RE\",\r\n \"numeric_code\": \"638\",\r\n \"phone_code\": 262,\r\n \"capital\": \"Saint-Denis\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".re\",\r\n \"native\": \"La Réunion\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-21.15000000\",\r\n \"longitude\": \"55.50000000\",\r\n \"emoji\": \"🇷🇪\"\r\n },\r\n {\r\n \"id\": 181,\r\n \"name\": \"Romania\",\r\n \"iso3\": \"ROU\",\r\n \"iso2\": \"RO\",\r\n \"numeric_code\": \"642\",\r\n \"phone_code\": 40,\r\n \"capital\": \"Bucharest\",\r\n \"currency\": \"RON\",\r\n \"currency_name\": \"Romanian leu\",\r\n \"currency_symbol\": \"lei\",\r\n \"tld\": \".ro\",\r\n \"native\": \"România\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"46.00000000\",\r\n \"longitude\": \"25.00000000\",\r\n \"emoji\": \"🇷🇴\"\r\n },\r\n {\r\n \"id\": 182,\r\n \"name\": \"Russia\",\r\n \"iso3\": \"RUS\",\r\n \"iso2\": \"RU\",\r\n \"numeric_code\": \"643\",\r\n \"phone_code\": 7,\r\n \"capital\": \"Moscow\",\r\n \"currency\": \"RUB\",\r\n \"currency_name\": \"Russian ruble\",\r\n \"currency_symbol\": \"₽\",\r\n \"tld\": \".ru\",\r\n \"native\": \"Россия\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"60.00000000\",\r\n \"longitude\": \"100.00000000\",\r\n \"emoji\": \"🇷🇺\"\r\n },\r\n {\r\n \"id\": 183,\r\n \"name\": \"Rwanda\",\r\n \"iso3\": \"RWA\",\r\n \"iso2\": \"RW\",\r\n \"numeric_code\": \"646\",\r\n \"phone_code\": 250,\r\n \"capital\": \"Kigali\",\r\n \"currency\": \"RWF\",\r\n \"currency_name\": \"Rwandan franc\",\r\n \"currency_symbol\": \"FRw\",\r\n \"tld\": \".rw\",\r\n \"native\": \"Rwanda\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-2.00000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇷🇼\"\r\n },\r\n {\r\n \"id\": 184,\r\n \"name\": \"Saint Helena\",\r\n \"iso3\": \"SHN\",\r\n \"iso2\": \"SH\",\r\n \"numeric_code\": \"654\",\r\n \"phone_code\": 290,\r\n \"capital\": \"Jamestown\",\r\n \"currency\": \"SHP\",\r\n \"currency_name\": \"Saint Helena pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".sh\",\r\n \"native\": \"Saint Helena\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"-15.95000000\",\r\n \"longitude\": \"-5.70000000\",\r\n \"emoji\": \"🇸🇭\"\r\n },\r\n {\r\n \"id\": 185,\r\n \"name\": \"Saint Kitts And Nevis\",\r\n \"iso3\": \"KNA\",\r\n \"iso2\": \"KN\",\r\n \"numeric_code\": \"659\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Basseterre\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".kn\",\r\n \"native\": \"Saint Kitts and Nevis\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"17.33333333\",\r\n \"longitude\": \"-62.75000000\",\r\n \"emoji\": \"🇰🇳\"\r\n },\r\n {\r\n \"id\": 186,\r\n \"name\": \"Saint Lucia\",\r\n \"iso3\": \"LCA\",\r\n \"iso2\": \"LC\",\r\n \"numeric_code\": \"662\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Castries\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".lc\",\r\n \"native\": \"Saint Lucia\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"13.88333333\",\r\n \"longitude\": \"-60.96666666\",\r\n \"emoji\": \"🇱🇨\"\r\n },\r\n {\r\n \"id\": 187,\r\n \"name\": \"Saint Pierre and Miquelon\",\r\n \"iso3\": \"SPM\",\r\n \"iso2\": \"PM\",\r\n \"numeric_code\": \"666\",\r\n \"phone_code\": 508,\r\n \"capital\": \"Saint-Pierre\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".pm\",\r\n \"native\": \"Saint-Pierre-et-Miquelon\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Northern America\",\r\n \"latitude\": \"46.83333333\",\r\n \"longitude\": \"-56.33333333\",\r\n \"emoji\": \"🇵🇲\"\r\n },\r\n {\r\n \"id\": 188,\r\n \"name\": \"Saint Vincent And The Grenadines\",\r\n \"iso3\": \"VCT\",\r\n \"iso2\": \"VC\",\r\n \"numeric_code\": \"670\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Kingstown\",\r\n \"currency\": \"XCD\",\r\n \"currency_name\": \"Eastern Caribbean dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".vc\",\r\n \"native\": \"Saint Vincent and the Grenadines\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"13.25000000\",\r\n \"longitude\": \"-61.20000000\",\r\n \"emoji\": \"🇻🇨\"\r\n },\r\n {\r\n \"id\": 189,\r\n \"name\": \"Saint-Barthelemy\",\r\n \"iso3\": \"BLM\",\r\n \"iso2\": \"BL\",\r\n \"numeric_code\": \"652\",\r\n \"phone_code\": 590,\r\n \"capital\": \"Gustavia\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".bl\",\r\n \"native\": \"Saint-Barthélemy\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.50000000\",\r\n \"longitude\": \"-63.41666666\",\r\n \"emoji\": \"🇧🇱\"\r\n },\r\n {\r\n \"id\": 190,\r\n \"name\": \"Saint-Martin (French part)\",\r\n \"iso3\": \"MAF\",\r\n \"iso2\": \"MF\",\r\n \"numeric_code\": \"663\",\r\n \"phone_code\": 590,\r\n \"capital\": \"Marigot\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".mf\",\r\n \"native\": \"Saint-Martin\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.08333333\",\r\n \"longitude\": \"-63.95000000\",\r\n \"emoji\": \"🇲🇫\"\r\n },\r\n {\r\n \"id\": 191,\r\n \"name\": \"Samoa\",\r\n \"iso3\": \"WSM\",\r\n \"iso2\": \"WS\",\r\n \"numeric_code\": \"882\",\r\n \"phone_code\": 685,\r\n \"capital\": \"Apia\",\r\n \"currency\": \"WST\",\r\n \"currency_name\": \"Samoan tālā\",\r\n \"currency_symbol\": \"SAT\",\r\n \"tld\": \".ws\",\r\n \"native\": \"Samoa\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-13.58333333\",\r\n \"longitude\": \"-172.33333333\",\r\n \"emoji\": \"🇼🇸\"\r\n },\r\n {\r\n \"id\": 192,\r\n \"name\": \"San Marino\",\r\n \"iso3\": \"SMR\",\r\n \"iso2\": \"SM\",\r\n \"numeric_code\": \"674\",\r\n \"phone_code\": 378,\r\n \"capital\": \"San Marino\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".sm\",\r\n \"native\": \"San Marino\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"43.76666666\",\r\n \"longitude\": \"12.41666666\",\r\n \"emoji\": \"🇸🇲\"\r\n },\r\n {\r\n \"id\": 193,\r\n \"name\": \"Sao Tome and Principe\",\r\n \"iso3\": \"STP\",\r\n \"iso2\": \"ST\",\r\n \"numeric_code\": \"678\",\r\n \"phone_code\": 239,\r\n \"capital\": \"Sao Tome\",\r\n \"currency\": \"STD\",\r\n \"currency_name\": \"Dobra\",\r\n \"currency_symbol\": \"Db\",\r\n \"tld\": \".st\",\r\n \"native\": \"São Tomé e Príncipe\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"1.00000000\",\r\n \"longitude\": \"7.00000000\",\r\n \"emoji\": \"🇸🇹\"\r\n },\r\n {\r\n \"id\": 194,\r\n \"name\": \"Saudi Arabia\",\r\n \"iso3\": \"SAU\",\r\n \"iso2\": \"SA\",\r\n \"numeric_code\": \"682\",\r\n \"phone_code\": 966,\r\n \"capital\": \"Riyadh\",\r\n \"currency\": \"SAR\",\r\n \"currency_name\": \"Saudi riyal\",\r\n \"currency_symbol\": \"﷼\",\r\n \"tld\": \".sa\",\r\n \"native\": \"المملكة العربية السعودية\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"25.00000000\",\r\n \"longitude\": \"45.00000000\",\r\n \"emoji\": \"🇸🇦\"\r\n },\r\n {\r\n \"id\": 195,\r\n \"name\": \"Senegal\",\r\n \"iso3\": \"SEN\",\r\n \"iso2\": \"SN\",\r\n \"numeric_code\": \"686\",\r\n \"phone_code\": 221,\r\n \"capital\": \"Dakar\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".sn\",\r\n \"native\": \"Sénégal\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"14.00000000\",\r\n \"longitude\": \"-14.00000000\",\r\n \"emoji\": \"🇸🇳\"\r\n },\r\n {\r\n \"id\": 196,\r\n \"name\": \"Serbia\",\r\n \"iso3\": \"SRB\",\r\n \"iso2\": \"RS\",\r\n \"numeric_code\": \"688\",\r\n \"phone_code\": 381,\r\n \"capital\": \"Belgrade\",\r\n \"currency\": \"RSD\",\r\n \"currency_name\": \"Serbian dinar\",\r\n \"currency_symbol\": \"din\",\r\n \"tld\": \".rs\",\r\n \"native\": \"Србија\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"44.00000000\",\r\n \"longitude\": \"21.00000000\",\r\n \"emoji\": \"🇷🇸\"\r\n },\r\n {\r\n \"id\": 197,\r\n \"name\": \"Seychelles\",\r\n \"iso3\": \"SYC\",\r\n \"iso2\": \"SC\",\r\n \"numeric_code\": \"690\",\r\n \"phone_code\": 248,\r\n \"capital\": \"Victoria\",\r\n \"currency\": \"SCR\",\r\n \"currency_name\": \"Seychellois rupee\",\r\n \"currency_symbol\": \"SRe\",\r\n \"tld\": \".sc\",\r\n \"native\": \"Seychelles\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-4.58333333\",\r\n \"longitude\": \"55.66666666\",\r\n \"emoji\": \"🇸🇨\"\r\n },\r\n {\r\n \"id\": 198,\r\n \"name\": \"Sierra Leone\",\r\n \"iso3\": \"SLE\",\r\n \"iso2\": \"SL\",\r\n \"numeric_code\": \"694\",\r\n \"phone_code\": 232,\r\n \"capital\": \"Freetown\",\r\n \"currency\": \"SLL\",\r\n \"currency_name\": \"Sierra Leonean leone\",\r\n \"currency_symbol\": \"Le\",\r\n \"tld\": \".sl\",\r\n \"native\": \"Sierra Leone\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"8.50000000\",\r\n \"longitude\": \"-11.50000000\",\r\n \"emoji\": \"🇸🇱\"\r\n },\r\n {\r\n \"id\": 199,\r\n \"name\": \"Singapore\",\r\n \"iso3\": \"SGP\",\r\n \"iso2\": \"SG\",\r\n \"numeric_code\": \"702\",\r\n \"phone_code\": 65,\r\n \"capital\": \"Singapur\",\r\n \"currency\": \"SGD\",\r\n \"currency_name\": \"Singapore dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".sg\",\r\n \"native\": \"Singapore\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"1.36666666\",\r\n \"longitude\": \"103.80000000\",\r\n \"emoji\": \"🇸🇬\"\r\n },\r\n {\r\n \"id\": 250,\r\n \"name\": \"Sint Maarten (Dutch part)\",\r\n \"iso3\": \"SXM\",\r\n \"iso2\": \"SX\",\r\n \"numeric_code\": \"534\",\r\n \"phone_code\": 1721,\r\n \"capital\": \"Philipsburg\",\r\n \"currency\": \"ANG\",\r\n \"currency_name\": \"Netherlands Antillean guilder\",\r\n \"currency_symbol\": \"ƒ\",\r\n \"tld\": \".sx\",\r\n \"native\": \"Sint Maarten\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.03333300\",\r\n \"longitude\": \"-63.05000000\",\r\n \"emoji\": \"🇸🇽\"\r\n },\r\n {\r\n \"id\": 200,\r\n \"name\": \"Slovakia\",\r\n \"iso3\": \"SVK\",\r\n \"iso2\": \"SK\",\r\n \"numeric_code\": \"703\",\r\n \"phone_code\": 421,\r\n \"capital\": \"Bratislava\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".sk\",\r\n \"native\": \"Slovensko\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"48.66666666\",\r\n \"longitude\": \"19.50000000\",\r\n \"emoji\": \"🇸🇰\"\r\n },\r\n {\r\n \"id\": 201,\r\n \"name\": \"Slovenia\",\r\n \"iso3\": \"SVN\",\r\n \"iso2\": \"SI\",\r\n \"numeric_code\": \"705\",\r\n \"phone_code\": 386,\r\n \"capital\": \"Ljubljana\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".si\",\r\n \"native\": \"Slovenija\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"46.11666666\",\r\n \"longitude\": \"14.81666666\",\r\n \"emoji\": \"🇸🇮\"\r\n },\r\n {\r\n \"id\": 202,\r\n \"name\": \"Solomon Islands\",\r\n \"iso3\": \"SLB\",\r\n \"iso2\": \"SB\",\r\n \"numeric_code\": \"090\",\r\n \"phone_code\": 677,\r\n \"capital\": \"Honiara\",\r\n \"currency\": \"SBD\",\r\n \"currency_name\": \"Solomon Islands dollar\",\r\n \"currency_symbol\": \"Si$\",\r\n \"tld\": \".sb\",\r\n \"native\": \"Solomon Islands\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Melanesia\",\r\n \"latitude\": \"-8.00000000\",\r\n \"longitude\": \"159.00000000\",\r\n \"emoji\": \"🇸🇧\"\r\n },\r\n {\r\n \"id\": 203,\r\n \"name\": \"Somalia\",\r\n \"iso3\": \"SOM\",\r\n \"iso2\": \"SO\",\r\n \"numeric_code\": \"706\",\r\n \"phone_code\": 252,\r\n \"capital\": \"Mogadishu\",\r\n \"currency\": \"SOS\",\r\n \"currency_name\": \"Somali shilling\",\r\n \"currency_symbol\": \"Sh.so.\",\r\n \"tld\": \".so\",\r\n \"native\": \"Soomaaliya\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"10.00000000\",\r\n \"longitude\": \"49.00000000\",\r\n \"emoji\": \"🇸🇴\"\r\n },\r\n {\r\n \"id\": 204,\r\n \"name\": \"South Africa\",\r\n \"iso3\": \"ZAF\",\r\n \"iso2\": \"ZA\",\r\n \"numeric_code\": \"710\",\r\n \"phone_code\": 27,\r\n \"capital\": \"Pretoria\",\r\n \"currency\": \"ZAR\",\r\n \"currency_name\": \"South African rand\",\r\n \"currency_symbol\": \"R\",\r\n \"tld\": \".za\",\r\n \"native\": \"South Africa\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Southern Africa\",\r\n \"latitude\": \"-29.00000000\",\r\n \"longitude\": \"24.00000000\",\r\n \"emoji\": \"🇿🇦\"\r\n },\r\n {\r\n \"id\": 205,\r\n \"name\": \"South Georgia\",\r\n \"iso3\": \"SGS\",\r\n \"iso2\": \"GS\",\r\n \"numeric_code\": \"239\",\r\n \"phone_code\": 500,\r\n \"capital\": \"Grytviken\",\r\n \"currency\": \"GBP\",\r\n \"currency_name\": \"British pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".gs\",\r\n \"native\": \"South Georgia\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-54.50000000\",\r\n \"longitude\": \"-37.00000000\",\r\n \"emoji\": \"🇬🇸\"\r\n },\r\n {\r\n \"id\": 116,\r\n \"name\": \"South Korea\",\r\n \"iso3\": \"KOR\",\r\n \"iso2\": \"KR\",\r\n \"numeric_code\": \"410\",\r\n \"phone_code\": 82,\r\n \"capital\": \"Seoul\",\r\n \"currency\": \"KRW\",\r\n \"currency_name\": \"Won\",\r\n \"currency_symbol\": \"₩\",\r\n \"tld\": \".kr\",\r\n \"native\": \"대한민국\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"37.00000000\",\r\n \"longitude\": \"127.50000000\",\r\n \"emoji\": \"🇰🇷\"\r\n },\r\n {\r\n \"id\": 206,\r\n \"name\": \"South Sudan\",\r\n \"iso3\": \"SSD\",\r\n \"iso2\": \"SS\",\r\n \"numeric_code\": \"728\",\r\n \"phone_code\": 211,\r\n \"capital\": \"Juba\",\r\n \"currency\": \"SSP\",\r\n \"currency_name\": \"South Sudanese pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".ss\",\r\n \"native\": \"South Sudan\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Middle Africa\",\r\n \"latitude\": \"7.00000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇸🇸\"\r\n },\r\n {\r\n \"id\": 207,\r\n \"name\": \"Spain\",\r\n \"iso3\": \"ESP\",\r\n \"iso2\": \"ES\",\r\n \"numeric_code\": \"724\",\r\n \"phone_code\": 34,\r\n \"capital\": \"Madrid\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".es\",\r\n \"native\": \"España\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"40.00000000\",\r\n \"longitude\": \"-4.00000000\",\r\n \"emoji\": \"🇪🇸\"\r\n },\r\n {\r\n \"id\": 208,\r\n \"name\": \"Sri Lanka\",\r\n \"iso3\": \"LKA\",\r\n \"iso2\": \"LK\",\r\n \"numeric_code\": \"144\",\r\n \"phone_code\": 94,\r\n \"capital\": \"Colombo\",\r\n \"currency\": \"LKR\",\r\n \"currency_name\": \"Sri Lankan rupee\",\r\n \"currency_symbol\": \"Rs\",\r\n \"tld\": \".lk\",\r\n \"native\": \"śrī laṃkāva\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Southern Asia\",\r\n \"latitude\": \"7.00000000\",\r\n \"longitude\": \"81.00000000\",\r\n \"emoji\": \"🇱🇰\"\r\n },\r\n {\r\n \"id\": 209,\r\n \"name\": \"Sudan\",\r\n \"iso3\": \"SDN\",\r\n \"iso2\": \"SD\",\r\n \"numeric_code\": \"729\",\r\n \"phone_code\": 249,\r\n \"capital\": \"Khartoum\",\r\n \"currency\": \"SDG\",\r\n \"currency_name\": \"Sudanese pound\",\r\n \"currency_symbol\": \".س.ج\",\r\n \"tld\": \".sd\",\r\n \"native\": \"السودان\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"15.00000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇸🇩\"\r\n },\r\n {\r\n \"id\": 210,\r\n \"name\": \"Suriname\",\r\n \"iso3\": \"SUR\",\r\n \"iso2\": \"SR\",\r\n \"numeric_code\": \"740\",\r\n \"phone_code\": 597,\r\n \"capital\": \"Paramaribo\",\r\n \"currency\": \"SRD\",\r\n \"currency_name\": \"Surinamese dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".sr\",\r\n \"native\": \"Suriname\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"4.00000000\",\r\n \"longitude\": \"-56.00000000\",\r\n \"emoji\": \"🇸🇷\"\r\n },\r\n {\r\n \"id\": 211,\r\n \"name\": \"Svalbard And Jan Mayen Islands\",\r\n \"iso3\": \"SJM\",\r\n \"iso2\": \"SJ\",\r\n \"numeric_code\": \"744\",\r\n \"phone_code\": 47,\r\n \"capital\": \"Longyearbyen\",\r\n \"currency\": \"NOK\",\r\n \"currency_name\": \"Norwegian Krone\",\r\n \"currency_symbol\": \"kr\",\r\n \"tld\": \".sj\",\r\n \"native\": \"Svalbard og Jan Mayen\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"78.00000000\",\r\n \"longitude\": \"20.00000000\",\r\n \"emoji\": \"🇸🇯\"\r\n },\r\n {\r\n \"id\": 212,\r\n \"name\": \"Swaziland\",\r\n \"iso3\": \"SWZ\",\r\n \"iso2\": \"SZ\",\r\n \"numeric_code\": \"748\",\r\n \"phone_code\": 268,\r\n \"capital\": \"Mbabane\",\r\n \"currency\": \"SZL\",\r\n \"currency_name\": \"Lilangeni\",\r\n \"currency_symbol\": \"E\",\r\n \"tld\": \".sz\",\r\n \"native\": \"Swaziland\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Southern Africa\",\r\n \"latitude\": \"-26.50000000\",\r\n \"longitude\": \"31.50000000\",\r\n \"emoji\": \"🇸🇿\"\r\n },\r\n {\r\n \"id\": 213,\r\n \"name\": \"Sweden\",\r\n \"iso3\": \"SWE\",\r\n \"iso2\": \"SE\",\r\n \"numeric_code\": \"752\",\r\n \"phone_code\": 46,\r\n \"capital\": \"Stockholm\",\r\n \"currency\": \"SEK\",\r\n \"currency_name\": \"Swedish krona\",\r\n \"currency_symbol\": \"kr\",\r\n \"tld\": \".se\",\r\n \"native\": \"Sverige\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"62.00000000\",\r\n \"longitude\": \"15.00000000\",\r\n \"emoji\": \"🇸🇪\"\r\n },\r\n {\r\n \"id\": 214,\r\n \"name\": \"Switzerland\",\r\n \"iso3\": \"CHE\",\r\n \"iso2\": \"CH\",\r\n \"numeric_code\": \"756\",\r\n \"phone_code\": 41,\r\n \"capital\": \"Bern\",\r\n \"currency\": \"CHF\",\r\n \"currency_name\": \"Swiss franc\",\r\n \"currency_symbol\": \"CHf\",\r\n \"tld\": \".ch\",\r\n \"native\": \"Schweiz\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Western Europe\",\r\n \"latitude\": \"47.00000000\",\r\n \"longitude\": \"8.00000000\",\r\n \"emoji\": \"🇨🇭\"\r\n },\r\n {\r\n \"id\": 215,\r\n \"name\": \"Syria\",\r\n \"iso3\": \"SYR\",\r\n \"iso2\": \"SY\",\r\n \"numeric_code\": \"760\",\r\n \"phone_code\": 963,\r\n \"capital\": \"Damascus\",\r\n \"currency\": \"SYP\",\r\n \"currency_name\": \"Syrian pound\",\r\n \"currency_symbol\": \"LS\",\r\n \"tld\": \".sy\",\r\n \"native\": \"سوريا\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"35.00000000\",\r\n \"longitude\": \"38.00000000\",\r\n \"emoji\": \"🇸🇾\"\r\n },\r\n {\r\n \"id\": 216,\r\n \"name\": \"Taiwan\",\r\n \"iso3\": \"TWN\",\r\n \"iso2\": \"TW\",\r\n \"numeric_code\": \"158\",\r\n \"phone_code\": 886,\r\n \"capital\": \"Taipei\",\r\n \"currency\": \"TWD\",\r\n \"currency_name\": \"New Taiwan dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".tw\",\r\n \"native\": \"臺灣\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Eastern Asia\",\r\n \"latitude\": \"23.50000000\",\r\n \"longitude\": \"121.00000000\",\r\n \"emoji\": \"🇹🇼\"\r\n },\r\n {\r\n \"id\": 217,\r\n \"name\": \"Tajikistan\",\r\n \"iso3\": \"TJK\",\r\n \"iso2\": \"TJ\",\r\n \"numeric_code\": \"762\",\r\n \"phone_code\": 992,\r\n \"capital\": \"Dushanbe\",\r\n \"currency\": \"TJS\",\r\n \"currency_name\": \"Tajikistani somoni\",\r\n \"currency_symbol\": \"SM\",\r\n \"tld\": \".tj\",\r\n \"native\": \"Тоҷикистон\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Central Asia\",\r\n \"latitude\": \"39.00000000\",\r\n \"longitude\": \"71.00000000\",\r\n \"emoji\": \"🇹🇯\"\r\n },\r\n {\r\n \"id\": 218,\r\n \"name\": \"Tanzania\",\r\n \"iso3\": \"TZA\",\r\n \"iso2\": \"TZ\",\r\n \"numeric_code\": \"834\",\r\n \"phone_code\": 255,\r\n \"capital\": \"Dodoma\",\r\n \"currency\": \"TZS\",\r\n \"currency_name\": \"Tanzanian shilling\",\r\n \"currency_symbol\": \"TSh\",\r\n \"tld\": \".tz\",\r\n \"native\": \"Tanzania\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-6.00000000\",\r\n \"longitude\": \"35.00000000\",\r\n \"emoji\": \"🇹🇿\"\r\n },\r\n {\r\n \"id\": 219,\r\n \"name\": \"Thailand\",\r\n \"iso3\": \"THA\",\r\n \"iso2\": \"TH\",\r\n \"numeric_code\": \"764\",\r\n \"phone_code\": 66,\r\n \"capital\": \"Bangkok\",\r\n \"currency\": \"THB\",\r\n \"currency_name\": \"Thai baht\",\r\n \"currency_symbol\": \"฿\",\r\n \"tld\": \".th\",\r\n \"native\": \"ประเทศไทย\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"15.00000000\",\r\n \"longitude\": \"100.00000000\",\r\n \"emoji\": \"🇹🇭\"\r\n },\r\n {\r\n \"id\": 17,\r\n \"name\": \"The Bahamas\",\r\n \"iso3\": \"BHS\",\r\n \"iso2\": \"BS\",\r\n \"numeric_code\": \"044\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Nassau\",\r\n \"currency\": \"BSD\",\r\n \"currency_name\": \"Bahamian dollar\",\r\n \"currency_symbol\": \"B$\",\r\n \"tld\": \".bs\",\r\n \"native\": \"Bahamas\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"24.25000000\",\r\n \"longitude\": \"-76.00000000\",\r\n \"emoji\": \"🇧🇸\"\r\n },\r\n {\r\n \"id\": 220,\r\n \"name\": \"Togo\",\r\n \"iso3\": \"TGO\",\r\n \"iso2\": \"TG\",\r\n \"numeric_code\": \"768\",\r\n \"phone_code\": 228,\r\n \"capital\": \"Lome\",\r\n \"currency\": \"XOF\",\r\n \"currency_name\": \"West African CFA franc\",\r\n \"currency_symbol\": \"CFA\",\r\n \"tld\": \".tg\",\r\n \"native\": \"Togo\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Western Africa\",\r\n \"latitude\": \"8.00000000\",\r\n \"longitude\": \"1.16666666\",\r\n \"emoji\": \"🇹🇬\"\r\n },\r\n {\r\n \"id\": 221,\r\n \"name\": \"Tokelau\",\r\n \"iso3\": \"TKL\",\r\n \"iso2\": \"TK\",\r\n \"numeric_code\": \"772\",\r\n \"phone_code\": 690,\r\n \"capital\": \"\",\r\n \"currency\": \"NZD\",\r\n \"currency_name\": \"New Zealand dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".tk\",\r\n \"native\": \"Tokelau\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-9.00000000\",\r\n \"longitude\": \"-172.00000000\",\r\n \"emoji\": \"🇹🇰\"\r\n },\r\n {\r\n \"id\": 222,\r\n \"name\": \"Tonga\",\r\n \"iso3\": \"TON\",\r\n \"iso2\": \"TO\",\r\n \"numeric_code\": \"776\",\r\n \"phone_code\": 676,\r\n \"capital\": \"Nuku'alofa\",\r\n \"currency\": \"TOP\",\r\n \"currency_name\": \"Tongan paʻanga\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".to\",\r\n \"native\": \"Tonga\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-20.00000000\",\r\n \"longitude\": \"-175.00000000\",\r\n \"emoji\": \"🇹🇴\"\r\n },\r\n {\r\n \"id\": 223,\r\n \"name\": \"Trinidad And Tobago\",\r\n \"iso3\": \"TTO\",\r\n \"iso2\": \"TT\",\r\n \"numeric_code\": \"780\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Port of Spain\",\r\n \"currency\": \"TTD\",\r\n \"currency_name\": \"Trinidad and Tobago dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".tt\",\r\n \"native\": \"Trinidad and Tobago\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"11.00000000\",\r\n \"longitude\": \"-61.00000000\",\r\n \"emoji\": \"🇹🇹\"\r\n },\r\n {\r\n \"id\": 224,\r\n \"name\": \"Tunisia\",\r\n \"iso3\": \"TUN\",\r\n \"iso2\": \"TN\",\r\n \"numeric_code\": \"788\",\r\n \"phone_code\": 216,\r\n \"capital\": \"Tunis\",\r\n \"currency\": \"TND\",\r\n \"currency_name\": \"Tunisian dinar\",\r\n \"currency_symbol\": \"ت.د\",\r\n \"tld\": \".tn\",\r\n \"native\": \"تونس\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"34.00000000\",\r\n \"longitude\": \"9.00000000\",\r\n \"emoji\": \"🇹🇳\"\r\n },\r\n {\r\n \"id\": 225,\r\n \"name\": \"Turkey\",\r\n \"iso3\": \"TUR\",\r\n \"iso2\": \"TR\",\r\n \"numeric_code\": \"792\",\r\n \"phone_code\": 90,\r\n \"capital\": \"Ankara\",\r\n \"currency\": \"TRY\",\r\n \"currency_name\": \"Turkish lira\",\r\n \"currency_symbol\": \"₺\",\r\n \"tld\": \".tr\",\r\n \"native\": \"Türkiye\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"39.00000000\",\r\n \"longitude\": \"35.00000000\",\r\n \"emoji\": \"🇹🇷\"\r\n },\r\n {\r\n \"id\": 226,\r\n \"name\": \"Turkmenistan\",\r\n \"iso3\": \"TKM\",\r\n \"iso2\": \"TM\",\r\n \"numeric_code\": \"795\",\r\n \"phone_code\": 993,\r\n \"capital\": \"Ashgabat\",\r\n \"currency\": \"TMT\",\r\n \"currency_name\": \"Turkmenistan manat\",\r\n \"currency_symbol\": \"T\",\r\n \"tld\": \".tm\",\r\n \"native\": \"Türkmenistan\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Central Asia\",\r\n \"latitude\": \"40.00000000\",\r\n \"longitude\": \"60.00000000\",\r\n \"emoji\": \"🇹🇲\"\r\n },\r\n {\r\n \"id\": 227,\r\n \"name\": \"Turks And Caicos Islands\",\r\n \"iso3\": \"TCA\",\r\n \"iso2\": \"TC\",\r\n \"numeric_code\": \"796\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Cockburn Town\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".tc\",\r\n \"native\": \"Turks and Caicos Islands\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"21.75000000\",\r\n \"longitude\": \"-71.58333333\",\r\n \"emoji\": \"🇹🇨\"\r\n },\r\n {\r\n \"id\": 228,\r\n \"name\": \"Tuvalu\",\r\n \"iso3\": \"TUV\",\r\n \"iso2\": \"TV\",\r\n \"numeric_code\": \"798\",\r\n \"phone_code\": 688,\r\n \"capital\": \"Funafuti\",\r\n \"currency\": \"AUD\",\r\n \"currency_name\": \"Australian dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".tv\",\r\n \"native\": \"Tuvalu\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-8.00000000\",\r\n \"longitude\": \"178.00000000\",\r\n \"emoji\": \"🇹🇻\"\r\n },\r\n {\r\n \"id\": 229,\r\n \"name\": \"Uganda\",\r\n \"iso3\": \"UGA\",\r\n \"iso2\": \"UG\",\r\n \"numeric_code\": \"800\",\r\n \"phone_code\": 256,\r\n \"capital\": \"Kampala\",\r\n \"currency\": \"UGX\",\r\n \"currency_name\": \"Ugandan shilling\",\r\n \"currency_symbol\": \"USh\",\r\n \"tld\": \".ug\",\r\n \"native\": \"Uganda\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"1.00000000\",\r\n \"longitude\": \"32.00000000\",\r\n \"emoji\": \"🇺🇬\"\r\n },\r\n {\r\n \"id\": 230,\r\n \"name\": \"Ukraine\",\r\n \"iso3\": \"UKR\",\r\n \"iso2\": \"UA\",\r\n \"numeric_code\": \"804\",\r\n \"phone_code\": 380,\r\n \"capital\": \"Kiev\",\r\n \"currency\": \"UAH\",\r\n \"currency_name\": \"Ukrainian hryvnia\",\r\n \"currency_symbol\": \"₴\",\r\n \"tld\": \".ua\",\r\n \"native\": \"Україна\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Eastern Europe\",\r\n \"latitude\": \"49.00000000\",\r\n \"longitude\": \"32.00000000\",\r\n \"emoji\": \"🇺🇦\"\r\n },\r\n {\r\n \"id\": 231,\r\n \"name\": \"United Arab Emirates\",\r\n \"iso3\": \"ARE\",\r\n \"iso2\": \"AE\",\r\n \"numeric_code\": \"784\",\r\n \"phone_code\": 971,\r\n \"capital\": \"Abu Dhabi\",\r\n \"currency\": \"AED\",\r\n \"currency_name\": \"United Arab Emirates dirham\",\r\n \"currency_symbol\": \"إ.د\",\r\n \"tld\": \".ae\",\r\n \"native\": \"دولة الإمارات العربية المتحدة\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"24.00000000\",\r\n \"longitude\": \"54.00000000\",\r\n \"emoji\": \"🇦🇪\"\r\n },\r\n {\r\n \"id\": 232,\r\n \"name\": \"United Kingdom\",\r\n \"iso3\": \"GBR\",\r\n \"iso2\": \"GB\",\r\n \"numeric_code\": \"826\",\r\n \"phone_code\": 44,\r\n \"capital\": \"London\",\r\n \"currency\": \"GBP\",\r\n \"currency_name\": \"British pound\",\r\n \"currency_symbol\": \"£\",\r\n \"tld\": \".uk\",\r\n \"native\": \"United Kingdom\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Northern Europe\",\r\n \"latitude\": \"54.00000000\",\r\n \"longitude\": \"-2.00000000\",\r\n \"emoji\": \"🇬🇧\"\r\n },\r\n {\r\n \"id\": 233,\r\n \"name\": \"United States\",\r\n \"iso3\": \"USA\",\r\n \"iso2\": \"US\",\r\n \"numeric_code\": \"840\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Washington\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".us\",\r\n \"native\": \"United States\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Northern America\",\r\n \"latitude\": \"38.00000000\",\r\n \"longitude\": \"-97.00000000\",\r\n \"emoji\": \"🇺🇸\"\r\n },\r\n {\r\n \"id\": 234,\r\n \"name\": \"United States Minor Outlying Islands\",\r\n \"iso3\": \"UMI\",\r\n \"iso2\": \"UM\",\r\n \"numeric_code\": \"581\",\r\n \"phone_code\": 1,\r\n \"capital\": \"\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".us\",\r\n \"native\": \"United States Minor Outlying Islands\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Northern America\",\r\n \"latitude\": \"0.00000000\",\r\n \"longitude\": \"0.00000000\",\r\n \"emoji\": \"🇺🇲\"\r\n },\r\n {\r\n \"id\": 235,\r\n \"name\": \"Uruguay\",\r\n \"iso3\": \"URY\",\r\n \"iso2\": \"UY\",\r\n \"numeric_code\": \"858\",\r\n \"phone_code\": 598,\r\n \"capital\": \"Montevideo\",\r\n \"currency\": \"UYU\",\r\n \"currency_name\": \"Uruguayan peso\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".uy\",\r\n \"native\": \"Uruguay\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"-33.00000000\",\r\n \"longitude\": \"-56.00000000\",\r\n \"emoji\": \"🇺🇾\"\r\n },\r\n {\r\n \"id\": 236,\r\n \"name\": \"Uzbekistan\",\r\n \"iso3\": \"UZB\",\r\n \"iso2\": \"UZ\",\r\n \"numeric_code\": \"860\",\r\n \"phone_code\": 998,\r\n \"capital\": \"Tashkent\",\r\n \"currency\": \"UZS\",\r\n \"currency_name\": \"Uzbekistani soʻm\",\r\n \"currency_symbol\": \"лв\",\r\n \"tld\": \".uz\",\r\n \"native\": \"O‘zbekiston\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Central Asia\",\r\n \"latitude\": \"41.00000000\",\r\n \"longitude\": \"64.00000000\",\r\n \"emoji\": \"🇺🇿\"\r\n },\r\n {\r\n \"id\": 237,\r\n \"name\": \"Vanuatu\",\r\n \"iso3\": \"VUT\",\r\n \"iso2\": \"VU\",\r\n \"numeric_code\": \"548\",\r\n \"phone_code\": 678,\r\n \"capital\": \"Port Vila\",\r\n \"currency\": \"VUV\",\r\n \"currency_name\": \"Vanuatu vatu\",\r\n \"currency_symbol\": \"VT\",\r\n \"tld\": \".vu\",\r\n \"native\": \"Vanuatu\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Melanesia\",\r\n \"latitude\": \"-16.00000000\",\r\n \"longitude\": \"167.00000000\",\r\n \"emoji\": \"🇻🇺\"\r\n },\r\n {\r\n \"id\": 238,\r\n \"name\": \"Vatican City State (Holy See)\",\r\n \"iso3\": \"VAT\",\r\n \"iso2\": \"VA\",\r\n \"numeric_code\": \"336\",\r\n \"phone_code\": 379,\r\n \"capital\": \"Vatican City\",\r\n \"currency\": \"EUR\",\r\n \"currency_name\": \"Euro\",\r\n \"currency_symbol\": \"€\",\r\n \"tld\": \".va\",\r\n \"native\": \"Vaticano\",\r\n \"region\": \"Europe\",\r\n \"subregion\": \"Southern Europe\",\r\n \"latitude\": \"41.90000000\",\r\n \"longitude\": \"12.45000000\",\r\n \"emoji\": \"🇻🇦\"\r\n },\r\n {\r\n \"id\": 239,\r\n \"name\": \"Venezuela\",\r\n \"iso3\": \"VEN\",\r\n \"iso2\": \"VE\",\r\n \"numeric_code\": \"862\",\r\n \"phone_code\": 58,\r\n \"capital\": \"Caracas\",\r\n \"currency\": \"VEF\",\r\n \"currency_name\": \"Bolívar\",\r\n \"currency_symbol\": \"Bs\",\r\n \"tld\": \".ve\",\r\n \"native\": \"Venezuela\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"South America\",\r\n \"latitude\": \"8.00000000\",\r\n \"longitude\": \"-66.00000000\",\r\n \"emoji\": \"🇻🇪\"\r\n },\r\n {\r\n \"id\": 240,\r\n \"name\": \"Vietnam\",\r\n \"iso3\": \"VNM\",\r\n \"iso2\": \"VN\",\r\n \"numeric_code\": \"704\",\r\n \"phone_code\": 84,\r\n \"capital\": \"Hanoi\",\r\n \"currency\": \"VND\",\r\n \"currency_name\": \"Vietnamese đồng\",\r\n \"currency_symbol\": \"₫\",\r\n \"tld\": \".vn\",\r\n \"native\": \"Việt Nam\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"South-Eastern Asia\",\r\n \"latitude\": \"16.16666666\",\r\n \"longitude\": \"107.83333333\",\r\n \"emoji\": \"🇻🇳\"\r\n },\r\n {\r\n \"id\": 241,\r\n \"name\": \"Virgin Islands (British)\",\r\n \"iso3\": \"VGB\",\r\n \"iso2\": \"VG\",\r\n \"numeric_code\": \"092\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Road Town\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".vg\",\r\n \"native\": \"British Virgin Islands\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.43138300\",\r\n \"longitude\": \"-64.62305000\",\r\n \"emoji\": \"🇻🇬\"\r\n },\r\n {\r\n \"id\": 242,\r\n \"name\": \"Virgin Islands (US)\",\r\n \"iso3\": \"VIR\",\r\n \"iso2\": \"VI\",\r\n \"numeric_code\": \"850\",\r\n \"phone_code\": 1,\r\n \"capital\": \"Charlotte Amalie\",\r\n \"currency\": \"USD\",\r\n \"currency_name\": \"United States dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".vi\",\r\n \"native\": \"United States Virgin Islands\",\r\n \"region\": \"Americas\",\r\n \"subregion\": \"Caribbean\",\r\n \"latitude\": \"18.34000000\",\r\n \"longitude\": \"-64.93000000\",\r\n \"emoji\": \"🇻🇮\"\r\n },\r\n {\r\n \"id\": 243,\r\n \"name\": \"Wallis And Futuna Islands\",\r\n \"iso3\": \"WLF\",\r\n \"iso2\": \"WF\",\r\n \"numeric_code\": \"876\",\r\n \"phone_code\": 681,\r\n \"capital\": \"Mata Utu\",\r\n \"currency\": \"XPF\",\r\n \"currency_name\": \"CFP franc\",\r\n \"currency_symbol\": \"₣\",\r\n \"tld\": \".wf\",\r\n \"native\": \"Wallis et Futuna\",\r\n \"region\": \"Oceania\",\r\n \"subregion\": \"Polynesia\",\r\n \"latitude\": \"-13.30000000\",\r\n \"longitude\": \"-176.20000000\",\r\n \"emoji\": \"🇼🇫\"\r\n },\r\n {\r\n \"id\": 244,\r\n \"name\": \"Western Sahara\",\r\n \"iso3\": \"ESH\",\r\n \"iso2\": \"EH\",\r\n \"numeric_code\": \"732\",\r\n \"phone_code\": 212,\r\n \"capital\": \"El-Aaiun\",\r\n \"currency\": \"MAD\",\r\n \"currency_name\": \"Moroccan Dirham\",\r\n \"currency_symbol\": \"MAD\",\r\n \"tld\": \".eh\",\r\n \"native\": \"الصحراء الغربية\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Northern Africa\",\r\n \"latitude\": \"24.50000000\",\r\n \"longitude\": \"-13.00000000\",\r\n \"emoji\": \"🇪🇭\"\r\n },\r\n {\r\n \"id\": 245,\r\n \"name\": \"Yemen\",\r\n \"iso3\": \"YEM\",\r\n \"iso2\": \"YE\",\r\n \"numeric_code\": \"887\",\r\n \"phone_code\": 967,\r\n \"capital\": \"Sanaa\",\r\n \"currency\": \"YER\",\r\n \"currency_name\": \"Yemeni rial\",\r\n \"currency_symbol\": \"﷼\",\r\n \"tld\": \".ye\",\r\n \"native\": \"اليَمَن\",\r\n \"region\": \"Asia\",\r\n \"subregion\": \"Western Asia\",\r\n \"latitude\": \"15.00000000\",\r\n \"longitude\": \"48.00000000\",\r\n \"emoji\": \"🇾🇪\"\r\n },\r\n {\r\n \"id\": 246,\r\n \"name\": \"Zambia\",\r\n \"iso3\": \"ZMB\",\r\n \"iso2\": \"ZM\",\r\n \"numeric_code\": \"894\",\r\n \"phone_code\": 260,\r\n \"capital\": \"Lusaka\",\r\n \"currency\": \"ZMW\",\r\n \"currency_name\": \"Zambian kwacha\",\r\n \"currency_symbol\": \"ZK\",\r\n \"tld\": \".zm\",\r\n \"native\": \"Zambia\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-15.00000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇿🇲\"\r\n },\r\n {\r\n \"id\": 247,\r\n \"name\": \"Zimbabwe\",\r\n \"iso3\": \"ZWE\",\r\n \"iso2\": \"ZW\",\r\n \"numeric_code\": \"716\",\r\n \"phone_code\": 263,\r\n \"capital\": \"Harare\",\r\n \"currency\": \"ZWL\",\r\n \"currency_name\": \"Zimbabwe Dollar\",\r\n \"currency_symbol\": \"$\",\r\n \"tld\": \".zw\",\r\n \"native\": \"Zimbabwe\",\r\n \"region\": \"Africa\",\r\n \"subregion\": \"Eastern Africa\",\r\n \"latitude\": \"-20.00000000\",\r\n \"longitude\": \"30.00000000\",\r\n \"emoji\": \"🇿🇼\"\r\n }\r\n]\r\n\r\nexport default countries;","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\nimport UsStates from \"GeographicalData/UsStates\";\r\nimport Countries from \"GeographicalData/Countries\";\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 country: \"\",\r\n countries: null,\r\n countryObj: null,\r\n stateObj: null,\r\n stateId: \"\",\r\n state: \"\",\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 if (!(this.props.userInformation)) {\r\n this.setState({ anonymous: true });\r\n }\r\n\r\n // United States is default country\r\n const selectedCountry = Countries.find(country => country.id.toString() === 233);\r\n this.setState({ countryId: 233, countryObj: selectedCountry });\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 if (prevProps.formData?.country !== this.props.formData?.country) {\r\n if (this.props.formData.country !== \"United States\") {\r\n this.props.onInputChange({ target: { name: \"state\", value: \"\" } });\r\n this.setState({ stateId: \"\", stateObj: null });\r\n }\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 or Monthly Traffic 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 or Monthly Traffic 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 const dynamicQuestionsReady = this.props.dynamicQuestions?.length > 0\r\n ? this.props.dynamicQuestions.every(question => !!(this.props.formData[question.label]?.trim()))\r\n : true;\r\n\r\n const isStateValid = this.props.formData?.country === \"United States\"\r\n ? !!(this.state.stateId.trim()) && this.state.stateId !== \"0\"\r\n : true;\r\n\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?.country?.trim()) &&\r\n !!(this.props.formData?.email?.trim()) &&\r\n !!(this.props.formData?.phoneNumber?.trim()) &&\r\n !!(this.props.formData?.platform?.trim()) &&\r\n (!!(this.props.formData?.platformUsername?.trim()) || this.props.formData.platform === \"Website/Blog\") &&\r\n !!(this.props.formData?.followers?.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 dynamicQuestionsReady\r\n ) && isStateValid;\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?.country?.trim()) &&\r\n !!(this.props.formData?.email?.trim()) &&\r\n !!(this.props.formData?.phoneNumber?.trim()) &&\r\n !!(this.props.formData?.platform?.trim()) &&\r\n (!!(this.props.formData?.platformUsername?.trim()) || this.props.formData.platform === \"Website/Blog\") &&\r\n !!(this.props.formData?.followers?.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 dynamicQuestionsReady\r\n ) && isStateValid;\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 !== \"\" && this.props.formData.platform !== \"Website/Blog\") {\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 renderDynamicQuestions = () => {\r\n if (this.props.dynamicQuestions?.length > 0) {\r\n return this.props.dynamicQuestions.map((question, i) => {\r\n const title = question.title;\r\n const label = question.label;\r\n const options = question.options;\r\n\r\n return (\r\n
    \r\n
    \r\n {title}*\r\n
    \r\n \r\n this.props.onInputChange(e)}\r\n value={this.props.formData[label]}\r\n >\r\n {\r\n question.options?.length > 0 ?\r\n <>\r\n \r\n\r\n
    \r\n )\r\n })\r\n }\r\n }\r\n\r\n mapOptions = options => {\r\n if (options?.length > 0) {\r\n return options.map((option, i) => {\r\n return (\r\n \r\n );\r\n });\r\n } else {\r\n return null; // Return null or an empty fragment if there are no options\r\n }\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?.trim() !== this.props.formData.confirmedEmail?.trim() ? \"\" : \"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 {\r\n const selectedCountryId = !!(e.target.value) ? e.target.value : \"0\";\r\n let countries = [{ id: 0, name: \"\" }, ...Countries];\r\n const selectedCountry = countries.find(country => country.id.toString() === selectedCountryId);\r\n\r\n this.props.onInputChange({ target: { name: \"country\", value: !!(selectedCountry.name) ? selectedCountry.name : \"\" } });\r\n this.setState({ countryId: selectedCountryId, countryObj: selectedCountry });\r\n }}\r\n >\r\n \r\n {Countries?.map((country) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n State*\r\n
    \r\n\r\n \r\n {\r\n const selectedStateId = !!(e.target.value) ? e.target.value : \"0\";\r\n let states = [{ id: 0, name: \"\" }, ...UsStates];\r\n const selectedState = states.find(state => state.id.toString() === selectedStateId);\r\n\r\n this.props.onInputChange({ target: { name: \"state\", value: !!(selectedState.name) ? selectedState.name : \"\" } });\r\n this.setState({ stateId: selectedStateId, stateObj: selectedState });\r\n }}\r\n >\r\n \r\n {UsStates.length ? (\r\n UsStates.map((state) => (\r\n \r\n ))\r\n ) : (\r\n \r\n )}\r\n\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.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 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 or Monthly Traffic 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 {this.renderDynamicQuestions()}\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\nimport { Select } from \"@material-ui/core\";\r\nimport { result } from \"lodash\";\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 approved: 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 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 },\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 fetchCreatorApplicationDynamicDropdownQuestions = async () => {\r\n let url = `/api/CreatorApplicationAdmin/GetCreatorApplicationsDynamicDropdownQuestions`;\r\n\r\n let result = await getRequest(url);\r\n\r\n let dynamicQuestions = null;\r\n\r\n if (!!(result) && result.length > 0) {\r\n dynamicQuestions = result.map(item => ({\r\n title: item.title,\r\n label: item.label,\r\n options: JSON.parse(item.options) // Unstringify the options\r\n }));\r\n\r\n this.setState({ dynamicQuestions });\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 await this.fetchCreatorApplicationDynamicDropdownQuestions();\r\n\r\n this.setState({ formData: this.convertToFormData(this.props.loggedInUser ?? {}) });\r\n };\r\n\r\n componentDidMount = async () => {\r\n if (!!(this.props.loggedInUser) && !!(this.props.loggedInUser.proStatusId) && this.props.loggedInUser.proStatusId === 1) {\r\n this.setState({ userIsCreator: true, modalOpen: true, approved: true });\r\n } else if (!!(this.props.loggedInUser)) {\r\n if (await this.userPendingCreatorApplicationExists()) {\r\n this.setState({ userIsCreator: true, modalOpen: true, approved: false });\r\n }\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 userPendingCreatorApplicationExists = async () => {\r\n const applicationsForLoggedInUser = await this.fetchUserRoleApplicationsByUserId();\r\n\r\n if (applicationsForLoggedInUser?.length > 0) {\r\n // Sort applications by createdDate in descending order\r\n applicationsForLoggedInUser.sort((a, b) => new Date(b.createdDate) - new Date(a.createdDate));\r\n\r\n // Get the application with the latest createdDate\r\n const latestApplication = applicationsForLoggedInUser[0];\r\n\r\n // Check if latestApplication has the 'approved' property\r\n const hasApprovedProperty = latestApplication.hasOwnProperty('approved');\r\n\r\n // Return true if the 'approved' property does not exist. If it exists then it is either approved or unapproved.\r\n return !(hasApprovedProperty);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n fetchUserRoleApplicationsByUserId = async () => {\r\n const url = \"api/CreatorApplicationAdmin/GetUserApplications\";\r\n const results = await getRequest(url);\r\n\r\n return results;\r\n }\r\n\r\n convertToFormData = (user) => {\r\n let formData = {\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: \"United States\",\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 usState: \"\",\r\n learnMore: \"\",\r\n upcomingProjects: \"\",\r\n password: \"\",\r\n confirmedPassword: \"\",\r\n howWillUseRockporch: \"\",\r\n };\r\n\r\n // Add dynamic question labels\r\n if (this.state.dynamicQuestions?.length > 0) {\r\n this.state.dynamicQuestions.forEach(question => {\r\n formData[question.label] = \"\";\r\n });\r\n }\r\n\r\n return formData;\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(this.state.approved ? '/CreatorDashboard' : '/Explore')}>\r\n
    \r\n
    \r\n \"\"\r\n
    \r\n\r\n
    \r\n {\r\n this.state.approved ?\r\n

    You are already an approved Creator!

    \r\n :\r\n

    We are currently reviewing your Creator application

    \r\n }\r\n

    Click here to go to your Creator Dashboard

    \r\n
    \r\n {\r\n this.state.approved ?\r\n this.props.history.push('/CreatorDashboard')} style={{ borderRadius: \"3px\", bottom: \"5px\", width: \"292px\" }} className=\"btn btn-primary\">Creator Dashboard\r\n :\r\n this.props.history.push('/Explore')} style={{ borderRadius: \"3px\", bottom: \"5px\", width: \"292px\" }} className=\"btn btn-primary\">Explore\r\n }\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 let selectedSectorsNames = this.state.sectors.map(sector => sector.name).join(',');\r\n\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 formData.sectors = selectedSectorsNames.length > 0 ? selectedSectorsNames : null;\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/ChangeEmail';\r\n let result = await postRequest(userUrl, {email: this.state.formData.email});\r\n if (result) {\r\n this.setState({ emailMessageStyle: \"\", emailMessage: \"Email has been updated.\" });\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\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\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 const params = getQueryStringParams(window.location.search);\r\n const tab = Math.floor(params.tab);\r\n\r\n if (!isNaN(tab) && Number.isInteger(tab) && tab >= 1 && tab <= 2) {\r\n this.setState({ selectedCase: Math.floor(tab) });\r\n }\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 disabledPublishButton: false,\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 this.setState({ disabledPublishButton: this.state.locker.productItems.$values?.length < 1 || (this.state.selectedFiles?.length < 1 && this.state.locker.properties.$values.length < 1) });\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 if (prevState.locker.productItems?.$values.length !== this.state.locker.productItems?.$values.length) {\r\n this.setState({ disabledPublishButton: this.state.locker.productItems.$values?.length < 1 || (this.state.selectedFiles?.length < 1 && this.state.locker.properties.$values.length < 1) });\r\n }\r\n if (prevState.selectedFiles.length !== this.state.selectedFiles.length) {\r\n this.setState({ disabledPublishButton: this.state.locker.productItems.$values?.length < 1 || (this.state.selectedFiles?.length < 1 && this.state.locker.properties.$values.length < 1) });\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(false);\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 disabledButtonClassName = this.state.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

    {(!(this.state.bannerImage) || this.state.bannerImage === \"images/blank-banner.png\") && this.state.locker.productItems.$values.length < 1 ? \"Set Locker Image/Have at least one product\" : (!(this.state.bannerImage) || this.state.bannerImage === \"images/blank-banner.png\") ? \"Set Locker Image\" : this.state.locker.productItems.$values.length < 1 ? \"Have at least one product\" : \"\"}

    \r\n

    {(!(this.state.bannerImage) || this.state.bannerImage === \"images/blank-banner.png\") && this.state.locker.productItems.$values.length < 1 ? \"Make sure to select a single image file as well as have at least one product added before posting\" : (!(this.state.bannerImage) || this.state.bannerImage === \"images/blank-banner.png\") ? \"Make sure to select a single image file for your banner\" : this.state.locker.productItems.$values.length < 1 ? \"Have at least one product added before posting\" : \"\"}

    \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 (refreshBanner = true) => {\r\n let shareCode = this.props.match.params.shareCode;\r\n let locker = await this.fetchLocker(shareCode);\r\n this.verifyAndSetLocker(locker, refreshBanner);\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 const url = URL.createObjectURL(file);\r\n\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, refreshBanner = true) => {\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 \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: refreshBanner ? imageSrc : this.state.bannerImage,\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, disabledPublishButton: updatedLocker.productItems.$values?.length < 1 || (this.state.selectedFiles?.length < 1 && updatedLocker.properties.$values.length < 1) })\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\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 videoLoaded: true,\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 setVideoLoaded = (videoLoaded) => {\r\n this.setState({ videoLoaded });\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 this.state.videoLoaded ?\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/ManageCommissions\", title: \"Manage Commissions\", 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 { link: \"/Admin/CreatorDashboard\", title: \"Creator Dashboard\", 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 { props.synchApplication(props.application); }}>\r\n Synch\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\nimport { Form, FormGroup, Label, Input, Button } from \"reactstrap\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport LoadSpinner from \"components/LoadSpinner\";\r\n\r\nclass CreatorAppAdmin extends React.Component {\r\n state = {\r\n loading: false,\r\n savingQuestions: false,\r\n dynamicQuestions: [],\r\n optionsVisible: {} // Key: questionIndex, Value: boolean (true if visible, false otherwise)\r\n };\r\n\r\n componentDidMount = async () => {\r\n await this.fetchCreatorApplicationDynamicDropdownQuestions();\r\n };\r\n\r\n fetchCreatorApplicationDynamicDropdownQuestions = async () => {\r\n this.setState({ loading: true });\r\n let url = `/api/CreatorApplicationAdmin/GetCreatorApplicationsDynamicDropdownQuestions`;\r\n let result = await getRequest(url);\r\n\r\n if (!!(result) && result.length > 0) {\r\n let dynamicQuestions = result.map((item, index) => ({\r\n title: item.title,\r\n label: item.label,\r\n options: JSON.parse(item.options), // Unstringify the options\r\n ordinal: index + 1 // Initialize ordinal based on index + 1\r\n }));\r\n\r\n const optionsVisible = dynamicQuestions.reduce((acc, _, index) => {\r\n acc[index] = false; // Initially hide all options\r\n return acc;\r\n }, {});\r\n\r\n this.setState({ dynamicQuestions, optionsVisible, loading: false });\r\n }\r\n };\r\n\r\n handleOptionChange = (questionIndex, optionIndex, field, value) => {\r\n const updatedQuestions = [...this.state.dynamicQuestions];\r\n updatedQuestions[questionIndex].options[optionIndex][field] = value;\r\n this.setState({ dynamicQuestions: updatedQuestions });\r\n };\r\n\r\n handleQuestionChange = (questionIndex, field, value) => {\r\n const updatedQuestions = [...this.state.dynamicQuestions];\r\n updatedQuestions[questionIndex][field] = value;\r\n this.setState({ dynamicQuestions: updatedQuestions });\r\n };\r\n\r\n handleOrdinalChange = (questionIndex, value) => {\r\n const updatedQuestions = [...this.state.dynamicQuestions];\r\n updatedQuestions[questionIndex].ordinal = value;\r\n this.setState({ dynamicQuestions: updatedQuestions });\r\n };\r\n\r\n addOption = (questionIndex) => {\r\n const updatedQuestions = [...this.state.dynamicQuestions];\r\n updatedQuestions[questionIndex].options.push({ value: \"\", text: \"\" });\r\n this.setState({ dynamicQuestions: updatedQuestions });\r\n };\r\n\r\n deleteOption = (questionIndex, optionIndex) => {\r\n const updatedQuestions = [...this.state.dynamicQuestions];\r\n updatedQuestions[questionIndex].options.splice(optionIndex, 1);\r\n this.setState({ dynamicQuestions: updatedQuestions });\r\n };\r\n\r\n deleteQuestion = (questionIndex) => {\r\n const updatedQuestions = [...this.state.dynamicQuestions];\r\n updatedQuestions.splice(questionIndex, 1);\r\n // Update ordinals after a question is deleted\r\n const updatedQuestionsWithOrdinals = updatedQuestions.map((q, index) => ({\r\n ...q,\r\n ordinal: index + 1\r\n }));\r\n this.setState({ dynamicQuestions: updatedQuestionsWithOrdinals });\r\n };\r\n\r\n addQuestion = () => {\r\n const newQuestionIndex = this.state.dynamicQuestions.length;\r\n const newQuestion = {\r\n title: \"\",\r\n label: \"\",\r\n options: [{ value: \"\", text: \"\" }],\r\n ordinal: newQuestionIndex + 1 // Set ordinal based on length\r\n };\r\n this.setState(prevState => ({\r\n dynamicQuestions: [...prevState.dynamicQuestions, newQuestion],\r\n optionsVisible: {\r\n ...prevState.optionsVisible,\r\n [newQuestionIndex]: true // Show options by default for new questions\r\n }\r\n }));\r\n };\r\n\r\n toggleOptionsVisibility = (questionIndex) => {\r\n this.setState(prevState => ({\r\n optionsVisible: {\r\n ...prevState.optionsVisible,\r\n [questionIndex]: !prevState.optionsVisible[questionIndex]\r\n }\r\n }));\r\n };\r\n\r\n handleSubmit = async (e) => {\r\n e.preventDefault();\r\n this.setState({ savingQuestions: true, loading: true })\r\n\r\n // Validate questions to ensure all required fields are filled\r\n if (!this.validateQuestions()) {\r\n alert(\"Please complete all required fields.\");\r\n return;\r\n }\r\n\r\n // Remove invalid options from each question\r\n const cleanedQuestions = this.state.dynamicQuestions.map(question => ({\r\n ...question,\r\n options: question.options.filter(option => option.value && option.text) // Keep only options with both value and text\r\n }));\r\n\r\n // Sort questions by ordinal\r\n const sortedQuestions = cleanedQuestions.sort((a, b) => a.ordinal - b.ordinal);\r\n\r\n // Build the array of questions to be sent\r\n const questionsToSend = sortedQuestions.map(question => ({\r\n title: question.title,\r\n label: question.label,\r\n options: JSON.stringify(question.options) // Stringify the options array\r\n }));\r\n\r\n // Define the URL for the dummy API endpoint\r\n const url = '/api/CreatorApplicationAdmin/SaveCreatorApplicationsDynamicQuestions';\r\n\r\n try {\r\n // Send the data using postRequest\r\n await postRequest(url, questionsToSend);\r\n } catch (error) {\r\n console.error(\"Failed to submit questions:\", error);\r\n }\r\n await this.fetchCreatorApplicationDynamicDropdownQuestions();\r\n this.setState({ savingQuestions: false, loading: false})\r\n };\r\n\r\n\r\n validateQuestions = () => {\r\n const { dynamicQuestions } = this.state;\r\n if (!(dynamicQuestions) || dynamicQuestions?.length === 0) {\r\n return;\r\n }\r\n // Check if each question has a title, label, and at least one valid option\r\n for (const question of dynamicQuestions) {\r\n if (!question.title.trim() || !question.label.trim()) {\r\n return false; // Title or label is missing\r\n }\r\n\r\n const hasValidOption = question.options.some(option => option.value.trim() && option.text.trim());\r\n if (!hasValidOption) {\r\n return false; // No valid options found\r\n }\r\n }\r\n\r\n return true; // All questions are valid\r\n };\r\n\r\n\r\n renderDynamicQuestions = () => {\r\n return this.state.dynamicQuestions.map((question, questionIndex) => (\r\n
    \r\n

    Question {question.ordinal}

    \r\n \r\n \r\n this.handleOrdinalChange(questionIndex, e.target.value)}\r\n />\r\n \r\n \r\n \r\n this.handleQuestionChange(questionIndex, 'title', e.target.value)}\r\n />\r\n \r\n \r\n \r\n this.handleQuestionChange(questionIndex, 'label', e.target.value)}\r\n />\r\n \r\n
    \r\n
    Options:
    \r\n this.toggleOptionsVisibility(questionIndex)}\r\n >\r\n {this.state.optionsVisible[questionIndex] ? \"Hide Options\" : \"Show Options\"}\r\n

    \r\n {this.state.optionsVisible[questionIndex] && (\r\n
    \r\n {question.options.map((option, optionIndex) => (\r\n \r\n \r\n this.handleOptionChange(questionIndex, optionIndex, 'value', e.target.value)}\r\n />\r\n \r\n this.handleOptionChange(questionIndex, optionIndex, 'text', e.target.value)}\r\n />\r\n

    this.deleteOption(questionIndex, optionIndex)}>Delete Option

    \r\n
    \r\n ))}\r\n

    this.addOption(questionIndex)}>Add Additional Option

    \r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n ));\r\n };\r\n\r\n handleReset = () => {\r\n // Show confirmation alert\r\n const confirmation = window.confirm(\"All changes will be lost. Are you sure you want to reset?\");\r\n\r\n if (confirmation) {\r\n // Clear dynamicQuestions and refetch data\r\n this.setState({ dynamicQuestions: [] }, this.fetchCreatorApplicationDynamicDropdownQuestions);\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
    \r\n
    \r\n
    Creator App Dynamic Question Administration
    \r\n {this.renderDynamicQuestions()}\r\n \r\n \r\n Save Questions\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\nexport default CreatorAppAdmin;\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 CreatorAppAdmin from \"./CreatorAppAdmin\";\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 synchApplication = async (application) => {\r\n let url = `api/Account/SynchApplicationToHubspot`;\r\n await postRequest(url, application);\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 name: \"Creator App Admin\",\r\n case: 4,\r\n action: async () => { \r\n 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 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 this.state.selectedCase === 4 ?\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\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 selectedCase: 1,\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 affiliateNetworkPaidDate: \"\",\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 onAffiliateNetworkPaidDateInputChange = (e) => {\r\n this.setState({ affiliateNetworkPaidDate: 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 affiliateNetworkPaidDate = this.state.affiliateNetworkPaidDate.length > 0 ? this.state.affiliateNetworkPaidDate : 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 affiliateNetworkPaidDate,\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
    \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 \r\n this.onAffiliateNetworkPaidDateInputChange(e)}\r\n value={this.state.affilateNetworkPaidDate}\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 { 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\nimport { convertToNumericMonthAndDayAndYearAndTime, convertToNumericMonthAndDayAndYear } from \"sharedUtils/timeUtils\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { Select } from \"@material-ui/core\";\r\nimport { set } from \"lodash\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass UpdateAffiliateNetworkPaidDate extends React.Component {\r\n state = {\r\n id: 0,\r\n isFetching: false,\r\n commissions: [],\r\n affiliateNetworkPaidDate: DateTime.utc().startOf('day'),\r\n startDate: DateTime.utc().minus({ months: 1 }).startOf('day'),\r\n endDate: DateTime.utc().startOf('day'),\r\n CommissionsTable: {\r\n title: \"Commissions Without AffiliateNetworkPaidDate\",\r\n columns: [\r\n {\r\n name: \"commissionId\",\r\n label: \"Commission 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: \"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 convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\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 display: true,\r\n }\r\n },\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,\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 customBodyRender: (value, tableMeta, updateValue) => {\r\n return !!(value) ? \"$\" + value.toFixed(2) : \"$0\";\r\n },\r\n\r\n }\r\n },\r\n {\r\n name: \"commissionAmount\",\r\n label: \"Est. Commission\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return !!(value) ? \"$\" + value.toFixed(2) : \"$0\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"returns\",\r\n label: \"Returns\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return !!(value) ? \"$\" + value.toFixed(2) : \"$0\";\r\n },\r\n }\r\n },\r\n {\r\n name: \"estimatedAffiliateNetworkPaidDate\",\r\n label: \"Estimated Paid Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n return !!(value) ? convertToNumericMonthAndDayAndYear(value, false).replace(',', '') : \"null\";\r\n }\r\n },\r\n },\r\n {\r\n name: \"commissionStatus\",\r\n label: \"Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false,\r\n }\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\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: \"affiliateProgramManagerName\",\r\n label: \"Affiliate Program Manager Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: true,\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 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.fetchCommissionWithNoAffiliateNetworkPaidDate();\r\n\r\n this.setState({ isFetching: false });\r\n }\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n if (!!(prevState.startDate) && prevState.startDate !== this.state.startDate) {\r\n await this.fetchCommissionWithNoAffiliateNetworkPaidDate();\r\n }\r\n if (!!(prevState.endDate) && prevState.endDate !== this.state.endDate) {\r\n await this.fetchCommissionWithNoAffiliateNetworkPaidDate();\r\n }\r\n }\r\n\r\n fetchCommissionWithNoAffiliateNetworkPaidDate = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n \r\n let getUrl = \"api/Merchant/GetCommissionWithNoAffiliateNetworkPaidDate\";\r\n\r\n if (startDate) {\r\n getUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getUrl += getUrl.includes('?') ? `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getUrl += `&offset=${offset}`\r\n const commissions = await getRequest(getUrl);\r\n this.setState({ commissions });\r\n }\r\n\r\n handleAffilateNetworkPaidDateChange = (event) => {\r\n const affiliateNetworkPaidDate = DateTime.fromISO(event.target.value).toUTC().startOf('day');\r\n this.setState({\r\n affiliateNetworkPaidDate\r\n });\r\n };\r\n\r\n confirmPublishSelected = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(`SELECTED COMMISSIONS will be SAVED with ${this.state.affiliateNetworkPaidDate.toFormat('MM-dd-yyyy')} as AffiliateNetworkPaidDate ...`);\r\n if (confirmDelete) {\r\n this.handlePublish(selectedRows, displayData);\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 handlePublish = async (selectedRows = null, displayData = null) => {\r\n this.setState({ loading: true });\r\n let commissionIds = [];\r\n if (!!(selectedRows) && !!(selectedRows.data) && selectedRows.data.length > 0) {\r\n const selectedRowsData = selectedRows.data;\r\n commissionIds = selectedRowsData.length > 0 ? selectedRowsData.map(row => displayData[row.index].data[0]) : [];\r\n }\r\n const publishUrl = \"api/Merchant/UpdateCommissionsWithAffiliateNetworkPaidDate\";\r\n\r\n const payload = {\r\n commissionIds,\r\n affiliateNetworkPaidDate: this.state.affiliateNetworkPaidDate.toFormat(\"MM/dd/yyyy\")\r\n }\r\n\r\n var published = await postRequest(publishUrl, payload);\r\n if (!!(published)) {\r\n this.setState({ publishError: false });\r\n } else {\r\n this.setState({ publishError: true });\r\n }\r\n\r\n await this.fetchCommissionWithNoAffiliateNetworkPaidDate();\r\n\r\n this.setState({ loading: false });\r\n };\r\n\r\n\r\n render() {\r\n if (!this.props.display) {\r\n return <>\r\n }\r\n\r\n return (\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
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \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

    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 UpdateAffiliateNetworkPaidDate;","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport CreateCommission from \"./CreateCommission\";\r\nimport UpdateAffiliateNetworkPaidDate from \"./UpdateAffiliateNetworkPaidDate\"\r\n\r\nclass CommissionAdmin 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/ManageCommissions', text: 'Manage Commissions' }];\r\n createCommissionBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ManageCommissions', text: 'Create Commission', active: true }\r\n ];\r\n createAffiliateNetworkPaidDateBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/ManageCommissions', text: 'Update Affiliate Network Paid Date', 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 \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: \"Create Commission\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Update Affiliate Network Paid Date\",\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 return (\r\n <>\r\n
    \r\n \r\n

    Manage Commissions

    \r\n

    Create and manage 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\nexport default CommissionAdmin;","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 fetchingExcel: 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 exportMerchants = async () => {\r\n this.setState({ fetchingExcel: true });\r\n const url = `api/Merchant/GetMerchantPartnerExports`;\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 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 {!!(partner.deepLinkOnly) ? : \"\"}\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\", \"Deep Link Only\", \"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 displayTableFooter = () => {\r\n const totalBrands = this.state.partners?.length;\r\n const totalIntegrated = this.state.partners?.filter(p => p.integrated)?.length;\r\n const totalDeepLinked = this.state.partners?.filter(p => !!(p.deepLinkOnly))?.length;\r\n if (totalIntegrated || totalDeepLinked) {\r\n return (\r\n \r\n \r\n
    TOTALS:
    \r\n
    \r\n
    Brands
    \r\n
    {totalBrands}
    \r\n
    \r\n
     
    \r\n \r\n {/* Empty cells for Name, Preferred Order, Estimated Commission */}\r\n \r\n
    \r\n
    Integrated
    \r\n
    {totalIntegrated}
    \r\n
    \r\n \r\n \r\n
    \r\n
    Deep Link
    \r\n
    {totalDeepLinked}
    \r\n
    \r\n \r\n {/* Empty cell for Edit */}\r\n \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
    \r\n
    \r\n { this.showModal(e) }}\r\n >\r\n Refresh\r\n \r\n \r\n Export\r\n \r\n
    \r\n

    There was an error downloading the spreadsheet. 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 {this.displayTableHeader()}\r\n \r\n \r\n\r\n \r\n {this.displayTableRows()}\r\n \r\n \r\n {this.displayTableFooter()}\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 settlementPeriodChange: 0,\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 settlementPeriodChange: affiliateProgramManager?.settlementPeriod,\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 settlementPeriodChange: this.state.affiliateProgramManager.settlementPeriod\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, settlementPeriod: this.state.settlementPeriodChange }\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 this.setState({ settlementPeriodChange: Number(e.target.value) })}\r\n inputStyle={{ width: \"185px\" }}\r\n inputType=\"number\"\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 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 const result = await getRequest(url);\r\n\r\n if (result) {\r\n this.setState({ newPassword: \"\", newPasswordConfirmed: \"\", passwordsMatch: false });\r\n this.props.resetPasswordSuccess();\r\n this.props.toggleResetPasswordModal();\r\n } else {\r\n this.props.resetPasswordError();\r\n }\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 ReactModal from 'react-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\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nconst { DateTime } = require(\"luxon\");\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 show: 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 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 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 toggleResetPasswordModal = () => {\r\n this.setState({ showChangePasswordForm: !this.state.showChangePasswordForm });\r\n }\r\n\r\n resetPasswordError = () => {\r\n toast.error(\r\n
    \r\n

    Password reset error. 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 resetPasswordSuccess = () => {\r\n toast.success(\r\n
    \r\n

    Password successfully updated

    \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 displayChangePasswordForm = () => {\r\n return (\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 handleImpersonateClick = () => {\r\n // Construct the impersonation URL with the userId as a query parameter\r\n const impersonateUrl = `/api/Account/ImpersonateUser?creatorUserId=${this.state.selected[0].id}`;\r\n\r\n // Open a new tab for the impersonation\r\n window.open(impersonateUrl, '_blank');\r\n window.close(); // This will close the tab if opened by script\r\n\r\n };\r\n\r\n displayImpersonateButton = () => {\r\n let buttonClasses = \"btn btn-secondary mt-3 mx-1\";\r\n\r\n if (this.state.selected.length > 0) {\r\n return (\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 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.trim().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.trim()}`;\r\n const subaffiliateObject = {\r\n subaffiliateID: this.state.amazonSubaffiliate.trim(),\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 await this.createUserMerchantCommissionOverride();\r\n this.setState({ savingAmazonSub: false }); \r\n }\r\n }\r\n\r\n createUserMerchantCommissionOverride = async () => {\r\n let amazonMapmArray = await getRequest(`api/AffiliateProgramManager/GetMerchantAffiliateProgamManagersByHostname?hostname=www.amazon.com`);\r\n let amazonMapm = amazonMapmArray[0];\r\n let request = {\r\n merchantAffiliateProgramManagerId: amazonMapm.merchantAffiliateProgramManagerId,\r\n userId: this.state.formData.id,\r\n userShare: 0.75,\r\n effectiveDate: DateTime.fromISO(`${DateTime.now().toFormat('yyyy-MM-dd')}T00:00`),\r\n offset: DateTime.now().offset\r\n };\r\n\r\n let addUserMerchantCommissionOverrideUrl = '/api/Merchant/AddUserMerchantCommissionOverride';\r\n await postRequest(addUserMerchantCommissionOverrideUrl, request);\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 \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 Impersonate this user?\r\n

    \r\n

    \r\n This will log you out as you, log you in as this user, and open the browser to that user's default primary page.\r\n

    \r\n

    \r\n To return you will have to logout, log back in as yourself, and navigate back this page.\r\n

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \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 {\r\n this.displayImpersonateButton()\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, { Component } from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport ReactQuill, { Quill } from 'react-quill';\r\nimport * as Emoji from 'quill-emoji';\r\nimport quillEmoji from 'quill-emoji';\r\nimport Marquee from \"react-fast-marquee\";\r\nimport { Parser } from 'html-to-react';\r\n\r\nimport 'react-quill/dist/quill.snow.css';\r\nimport 'quill-emoji/dist/quill-emoji.css';\r\n\r\nconst { EmojiBlot, ShortNameEmoji, ToolbarEmoji, TextAreaEmoji } = quillEmoji;\r\n\r\nQuill.register({\r\n 'formats/emoji': EmojiBlot,\r\n 'modules/emoji-shortname': ShortNameEmoji,\r\n 'modules/emoji-toolbar': ToolbarEmoji,\r\n 'modules/emoji-textarea': TextAreaEmoji\r\n}, true);\r\n\r\nclass CreatorDashboard extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: \"\",\r\n backgroundColor: null,\r\n divHeight: \"40px\",\r\n uiHtml: \"\",\r\n creatorDashboardMarqueeId: 0,\r\n loading: false,\r\n };\r\n this.parser = new Parser();\r\n }\r\n\r\n componentDidMount = () => {\r\n this.fetchCreatorDashboardMarquee();\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevState.value !== this.state.value) {\r\n this.htmlToState(this.renderTranslatedHTML());\r\n }\r\n }\r\n\r\n fetchCreatorDashboardMarquee = async () => {\r\n let url = `/api/Creator/GetCreatorDashboardMarquee`;\r\n let creatorDashboardMarquee = await getRequest(url);\r\n if (!!(creatorDashboardMarquee) && creatorDashboardMarquee.adminHtml?.trim().length > 0) {\r\n this.setState({ value: creatorDashboardMarquee.adminHtml, creatorDashboardMarqueeId: creatorDashboardMarquee.id });\r\n }\r\n }\r\n\r\n saveCreatorDashboardMarquee = async () => {\r\n let cdm = {\r\n id: this.state.creatorDashboardMarqueeId,\r\n uiHtml: this.state.uiHtml,\r\n adminHtml: this.convertSpacesAndTabs(this.state.value),\r\n backgroundColor: this.state.backgroundColor,\r\n redirectUrl: this.state.redirectUrl,\r\n };\r\n\r\n if (cdm.id > 0) {\r\n this.setState({ loading: true });\r\n let url = `/api/Creator/UpdateCreatorDashboardMarquee`;\r\n await postRequest(url, cdm);\r\n this.setState({ loading: false });\r\n } else {\r\n this.setState({ loading: true });\r\n let url = `/api/Creator/PostCreatorDashboardMarquee`;\r\n const newCdm = await postRequest(url, cdm);\r\n this.setState({ loading: false, creatorDashboardMarqueeId: newCdm.id });\r\n }\r\n }\r\n\r\n deleteCreatorDashboardMarquee = async () => {\r\n if (this.state.creatorDashboardMarqueeId > 0) {\r\n this.setState({ loading: true });\r\n\r\n let url = `/api/Creator/DeleteCreatorDashboardMarquee?id=` + this.state.creatorDashboardMarqueeId;\r\n await postRequest(url);\r\n\r\n this.setState({ loading: false, value: \"\", uiHtml: \"\", creatorDashboardMarqueeId: 0 });\r\n } else {\r\n this.setState({ value: \"\", uiHtml: \"\" });\r\n }\r\n }\r\n\r\n handleChange = (value) => {\r\n this.setState({ value });\r\n this.extractBackgroundColor(value);\r\n this.extractRedirectUrl(value);\r\n }\r\n\r\n extractBackgroundColor = (html) => {\r\n const regex = /background-color:\\s*(rgba?\\([^)]+\\));/i;\r\n const match = html.match(regex);\r\n\r\n if (match) {\r\n const color = match[1];\r\n this.setState({ backgroundColor: color });\r\n } else {\r\n this.setState({ backgroundColor: null });\r\n }\r\n }\r\n\r\n extractRedirectUrl = (html) => {\r\n const regex = / {\r\n return html.replace(/style=\"([^\"]*)\"/g, (match, style) => {\r\n const cleanedStyle = style.replace(/\\\\/g, '');\r\n return `style=\"${cleanedStyle}; margin: 0;\"`;\r\n });\r\n }\r\n\r\n convertSpacesAndTabs = (html) => {\r\n return html.replace(/>([^<]+) {\r\n return `>${text.replace(/ /g, ' ').replace(/\\t/g, '    ')}<`;\r\n });\r\n }\r\n\r\n convertTextSize = (html) => {\r\n // Replace ql-size-large with font-large\r\n let convertedHTML = html.replace(/ql-size-large/g, 'font-large');\r\n\r\n // Replace ql-size-small with font-small\r\n convertedHTML = convertedHTML.replace(/ql-size-small/g, 'font-small');\r\n\r\n // Replace ql-size-small with font-small\r\n convertedHTML = convertedHTML.replace(/ql-size-huge/g, 'font-huge');\r\n\r\n return convertedHTML;\r\n }\r\n\r\n htmlToState = (html) => {\r\n const htmlString = html && html.__html ? html.__html : \"\";\r\n this.setState({ uiHtml: htmlString });\r\n }\r\n\r\n\r\n renderTranslatedHTML = () => {\r\n const { value, divHeight } = this.state;\r\n let cleanedHTML = this.removeBackslashesFromStyle(value);\r\n cleanedHTML = this.convertSpacesAndTabs(cleanedHTML);\r\n cleanedHTML = this.convertTextSize(cleanedHTML);\r\n const hasStyle = cleanedHTML.includes('

    \r\n

    \r\n \r\n

    Creator Dashboard

    \r\n

    Manage Creator Dashboard marquee banner

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Save\r\n Delete\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CreatorDashboard;\r\n","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 loadingApply: false, \r\n commissionsApplied: 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 handleApplyReferralCommissions = async (e) => {\r\n e.preventDefault();\r\n\r\n if (window.confirm('Are you sure you wish to apply referral commissions?')) {\r\n\r\n this.setState({\r\n loadingApply: true\r\n });\r\n\r\n let url = 'api/Account/ApplyReferralCommissions';\r\n await getRequest(url);\r\n\r\n toast.success(\r\n
    \r\n

    Success

    \r\n
    ,\r\n {\r\n duration: 4000,\r\n position: 'top-center'\r\n }\r\n );\r\n\r\n this.setState({ commissionsApplied: true });\r\n }\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 this.state.commissionsApplied ?\r\n\r\n
    \r\n \r\n
    \r\n : this.state.loadingApply ?\r\n
    \r\n \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.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, convertToNumericMonthAndDayAndYear, 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 convertToNumericMonthAndDayAndYear(new Date(value), false);\r\n }\r\n }\r\n },\r\n {\r\n name: \"productClicks\",\r\n label: \"Clicks\",\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 TextField from '@material-ui/core/TextField';\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.state = { \r\n series: [ \r\n {\r\n name: 'Clicks',\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: 'Clicks',\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: 'Clicks',\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.props.getAnalytics();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\r\n if (this.props.startDate <= this.props.endDate) {\r\n this.setState({ dateError: false });\r\n this.props.getAnalytics();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.props.getAnalytics();\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.props.getAnalytics();\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display){\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.browseChanged !== this.props.browseChanged) {\r\n this.props.getAnalytics();\r\n }\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 {convertToNumericMonthAndDayAndYear(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 {convertToNumericMonthAndDayAndYear(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\", \"Clicks\", \"Sales Count\", \"Estimated Commission\", \"Username\"] : [\"Date\", \"Clicks\", \"Sales Count\", \"Estimated Commission\"];\r\n let infoIcon = [\"\", \"A User has clicked a Buy Now link that redirected them to a retailer's site\", \"A User placed an order with a retailer 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.fromISO(start, { zone: 'utc' }); dt < end; dt = dt.plus({ days: 1 })) {\r\n const date = dt.toJSDate();\r\n const offset = date.getTimezoneOffset();\r\n\r\n const utcDate = new Date(date.getTime() + (!!(offset) ? offset : 0) * 60000);\r\n arr.push(utcDate);\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 = {\r\n startDate: this.props.startDate ?? DateTime.utc().minus({ months: 1 }).startOf('day'),\r\n endDate: this.props.endDate ?? DateTime.utc().startOf('day'),\r\n }\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 this.props.analyticsLoading ?\r\n :\r\n <>\r\n {this.displayChart()}\r\n {this.props.aggregateChanged ?\r\n \r\n new Date(b.date) - new Date(a.date))}\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 { 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 TextField from '@material-ui/core/TextField';\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.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 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.props.getCommissions(this.props.startDate, this.props.endDate);\r\n } \r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\r\n if (this.props.startDate <= this.props.endDate) {\r\n this.setState({ dateError: false });\r\n this.props.getCommissions(this.props.startDate, this.props.endDate);\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\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.props.getCommissions(this.props.startDate, this.props.endDate);\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.props.getCommissions(this.props.startDate, this.props.endDate);\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n this.props.getCommissions(this.props.startDate, this.props.endDate);\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.props.getCommissions(this.props.startDate, this.props.endDate);\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 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 + \"/prdlink/\" + 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 {convertToNumericMonthAndDayAndYear(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 {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 {convertToNumericMonthAndDayAndYear(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 \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: {convertToNumericMonthAndDayAndYear(new Date(data.createdDate), 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\", \"Brand\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", \"Status\", \"Username\"] : this.props.deviceSize === \"sm\" ? [\"Date\", \"Brand\", \"Sales Amount\", \"Returns\", \"Est. Comm.\", \"Status\"] : [\"Date\", \"Brand\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", \"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.\",\r\n\r\n [\"Qualified - The commission was generated by a Qualified Purchase and is held by the brand 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 != \"Status\"))\r\n return (\r\n \r\n {header}\r\n {i > 1 && header !== \"Username\" ?\r\n <>\r\n \r\n \r\n \r\n \r\n {i !== 5 ? \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.fromISO(start, { zone: 'utc' }); dt < end; dt = dt.plus({ days: 1 })) {\r\n const date = dt.toJSDate();\r\n const offset = date.getTimezoneOffset();\r\n\r\n const utcDate = new Date(date.getTime() + (!!(offset) ? offset : 0) * 60000);\r\n\r\n arr.push(utcDate);\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 = {\r\n startDate: this.props.startDate,\r\n endDate: this.props.endDate\r\n };\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 brand 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
    \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 {\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 {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 TextField from '@material-ui/core/TextField';\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.state = {\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.props.getTransactions(this.props.startDate, this.props.endDate);\r\n };\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\r\n if (this.props.startDate <= this.props.endDate) {\r\n this.setState({ dateError: false });\r\n this.props.getTransactions();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.props.getTransactions();\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.props.getTransactions();\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n this.props.getTransactions();\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\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDayAndYear(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\r\n return (\r\n \r\n \r\n {convertToNumericMonthAndDayAndYear(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 render() {\r\n return (\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 let getLinkUrl = \"https://\";\r\n\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 if (!!(product.logoUrl)) {\r\n getLinkUrl = getLinkUrl + \"/mlink/\" + product.merchantId + \"?userId=\" + props.loggedInUser?.id + \"&redirectUrl=\" + encodeURIComponent(product.referralUrl);\r\n } else {\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 getLinkUrl = getLinkUrl + \"/prdlink/\" + product.shareCode;\r\n }\r\n \r\n props.handleGetLink(getLinkUrl);\r\n }\r\n\r\n const clicksZero = product.clicks === 0;\r\n const salesZero = product.sales === 0;\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 Link \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 ?? product.referralUrl}\r\n

    \r\n\r\n

    \r\n Price: 0\r\n

    \r\n\r\n

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

    \r\n\r\n

    \r\n Sales: $0\r\n

    \r\n\r\n

    \r\n Commissions: $0\r\n

    \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 ?? product.referralUrl}\r\n

    \r\n\r\n

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

    \r\n\r\n

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

    \r\n\r\n

    \r\n Sales: ${product.salesAmount.toFixed(2)}\r\n

    \r\n\r\n

    \r\n Comm. : ${product.commission.toFixed(2)}\r\n

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

    {product.clicks}

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

    {!product.sourceDataAvailable ? \"N/A*\" : 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 showSales: 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 showSalesModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ showSales: !this.state.showSales });\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 hideSalesModal = () => {\r\n this.setState({ showSales: false, salesClicked: null });\r\n this.props.clearPerformance();\r\n this.props.clearSalesSourceSort();\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 getAnalyticsPerformanceSourceByLink={this.props.getAnalyticsPerformanceSourceByLink}\r\n handleClicksClick={this.handleClicksClick}\r\n handleSalesClicksClick={this.handleSalesClicksClick}\r\n handleLinkSalesClicksClick={this.handleLinkSalesClicksClick}\r\n loggedInUser={this.props.loggedInUser}\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 = [\"Link\", \"Brand\", \"Price\", \"Clicks\", \"Sales Count\", \"Sales\", \"Commissions\", \"Conv.\"];\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 { label: \"Sale Amt\", value: 7 },\r\n { label: \"Commission\", value: 8 },\r\n ]\r\n\r\n if (header === \"Link\") {\r\n return (\r\n this.props.handleSortSelect(options[0])} style={{ verticalAlign: \"baseline\", 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={{ padding: 0, verticalAlign: \"baseline\", lineHeight: \"inherit\", 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 Count\") {\r\n return (\r\n this.props.handleSortSelect(options[2])} style={{ position: \"relative\", left: \"10px\", padding: 0, verticalAlign: \"baseline\", width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\", padding: 0 }}>\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 === \"Conv.\") {\r\n return (\r\n this.props.handleSortSelect(options[3])} style={{ textAlign: \"center\", padding: 0, verticalAlign: \"baseline\", 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 === \"Brand\") {\r\n return (\r\n this.props.handleSortSelect(options[4])} style={{ position: \"relative\", left: \"10px\", padding: 0, verticalAlign: \"baseline\", 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={{ position: \"relative\", left: \"10px\", padding: 0, verticalAlign: \"baseline\", 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[6])} style={{ position: \"relative\", left: \"6px\", textAlign: \"center\", maxWidth: \"50px\",padding: 0, verticalAlign: \"baseline\", 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 === \"Commissions\") {\r\n return (\r\n this.props.handleSortSelect(options[7])} style={{ position: \"relative\", left: \"10px\", padding: 0, verticalAlign: \"baseline\", 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, clicksZero) => {\r\n if (clicksZero) {\r\n return;\r\n }\r\n e.stopPropagation();\r\n if (!!(product.logoUrl)) {\r\n this.props.getAnalyticsPerformanceSourceByLink(this.props.startDate, this.props.endDate, product.referralUrl);\r\n } else {\r\n if (this.props.aggregateChanged) {\r\n this.props.getAnalyticsPerformanceSourceByUserMerchantProductAggregate(this.props.startDate, this.props.endDate, product.merchantProductId ?? product.merchantLinkId);\r\n } else {\r\n this.props.getAnalyticsPerformanceSourceByUserMerchantProduct(this.props.startDate, this.props.endDate, product.userMerchantProductId ?? product.merchantLinkId);\r\n }\r\n }\r\n this.setState({ clicked: product });\r\n this.showModal(e);\r\n }\r\n\r\n handleSalesClicksClick = (e, product, salesZero) => {\r\n if (salesZero || !product.sourceDataAvailable) {\r\n return;\r\n }\r\n e.stopPropagation();\r\n if (!!(product.logoUrl)) {\r\n this.props.getAnalyticsPerformanceSalesSourceByLink(this.props.startDate, this.props.endDate, product.referralUrl);\r\n } else {\r\n if (this.props.aggregateChanged) {\r\n this.props.getAnalyticsPerformanceSalesSourceByUserMerchantProductAggregate(this.props.startDate, this.props.endDate, product.merchantProductId);\r\n } else {\r\n this.props.getAnalyticsPerformanceSalesSourceByUserMerchantProduct(this.props.startDate, this.props.endDate, product.userMerchantProductId);\r\n }\r\n }\r\n this.setState({ salesClicked: product });\r\n this.showSalesModal(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 if (!!(product.logoUrl)) {\r\n getLinkUrl = getLinkUrl + \"/mlink/\" + product.merchantId + \"?userId=\" + this.props.loggedInUser?.id + \"&redirectUrl=\" + encodeURIComponent(product.referralUrl);\r\n } else {\r\n getLinkUrl = getLinkUrl + \"/prdlink/\" + product.shareCode;\r\n }\r\n\r\n const url = \"/Product/ProductPage/\" + product.shareCode;\r\n\r\n const clicksZero = product.clicks === 0;\r\n const salesZero = product.sales < 1;\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
    {!!(product.name) ? titleCase(product.name) : !!(product.referralUrl) ? product.referralUrl : \"\"}
    \r\n
    \r\n \r\n\r\n \r\n {product.merchant}\r\n \r\n\r\n \r\n {!!(product.price) ? currencyFormat(product.price) : \"\"}\r\n \r\n\r\n this.handleClicksClick(e, product, clicksZero) } style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {product.clicks}\r\n \r\n\r\n this.handleSalesClicksClick(e, product, salesZero)} style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {!product.sourceDataAvailable ? \"N/A*\" : product.sales}\r\n \r\n\r\n \r\n ${product.salesAmount.toFixed(2)}\r\n \r\n\r\n \r\n ${product.commission.toFixed(2)}\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, this.props.sourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSalesSourceClicksSort = async () => {\r\n await this.props.handleSalesSourceReferrerClick(false, this.props.salesSourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSourceReferrerSort = async () => {\r\n await this.props.handleSourceReferrerClick(true, this.props.sourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSalesSourceReferrerSort = async () => {\r\n await this.props.handleSalesSourceReferrerClick(true, this.props.salesSourceSortAscending);\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 displayProductSalesClicksTable = () => {\r\n if (this.props.performanceSalesSourceUserMerchantProduct?.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.displayProductsSalesClickRows()}\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
    Sales Count
    \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 displayProductsSalesClickRows = () => {\r\n return this.props.performanceSalesSourceUserMerchantProduct.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
    \r\n
    \r\n \r\n
    {titleCase(this.state.salesClicked?.name ?? this.state.salesClicked?.referralUrl ?? \"Product\")}
    \r\n
    \r\n {\r\n this.props.analyticsPerformanceSalesSourceByUserMerchantProductLoading ? \r\n :\r\n <>\r\n {this.displayProductSalesClicksTable()}\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\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 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 const clicksZero = merchant.clicks === 0;\r\n const salesZero = merchant.sales === 0;\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 Brand\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}\r\n

    \r\n\r\n

    \r\n Sales: ${merchant.salesAmount.toFixed(2)}\r\n

    \r\n\r\n

    \r\n Comm.: ${merchant.commission.toFixed(2)}\r\n

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

    {merchant.clicks}

    \r\n
    \r\n\r\n
    props.handleSalesClicksClick(e, merchant, salesZero)} style={{ ...fixedWidthStyle, top: \"6px\" }} >\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 showSales: false,\r\n clicked: null,\r\n salesClicked: 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 showSalesModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ showSales: !this.state.showSales });\r\n };\r\n\r\n hideSalesModal = () => {\r\n this.setState({ showSales: false, salesClicked: null });\r\n this.props.clearPerformance();\r\n this.props.clearSalesSourceSort();\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 handleSalesClicksClick={this.handleSalesClicksClick}\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 = [\"Brand\", \"Clicks\", \"Sales Count\", \"Sales\", \"Commissions\", \"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 { label: \"Sales Amt\", value: 5 },\r\n { label: \"Commission\", value: 6 },\r\n ]\r\n\r\n if (header === \"Brand\") {\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 Count\") {\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\", textAlign: \"center\" }}>\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[4])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\", textAlign: \"center\" }}>\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 === \"Commissions\") {\r\n return (\r\n this.props.handleMerchantSortSelect(options[5])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\", textAlign: \"center\" }}>\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, clicksZero) => {\r\n if (clicksZero) {\r\n return;\r\n }\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 handleSalesClicksClick = (e, merchant, salesZero) => {\r\n if (salesZero) {\r\n return;\r\n }\r\n e.stopPropagation();\r\n this.props.getAnalyticsPerformanceSalesSourceByMerchant(this.props.startDate, this.props.endDate, merchant.merchantId);\r\n this.setState({ salesClicked: merchant });\r\n this.showSalesModal(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 const clicksZero = merchant.clicks === 0;\r\n const salesZero = merchant.sales === 0;\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, clicksZero)} style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {merchant.clicks}\r\n \r\n\r\n this.handleSalesClicksClick(e, merchant, salesZero)} style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {merchant.sales}\r\n \r\n\r\n \r\n ${merchant.salesAmount?.toFixed(2)}\r\n \r\n\r\n \r\n ${merchant.commission?.toFixed(2)}\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, this.props.sourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSalesSourceClicksSort = async () => {\r\n await this.props.handleSalesSourceReferrerClick(false, this.props.salesSourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSourceReferrerSort = async () => {\r\n await this.props.handleSourceReferrerClick(true, this.props.sourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSalesSourceReferrerSort = async () => {\r\n await this.props.handleSalesSourceReferrerClick(true, this.props.salesSourceSortAscending);\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 displayMerchantSalesClicksTable = () => {\r\n if (this.props.performanceSalesSourceMerchant?.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.displayMerchantsSalesClickRows()}\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 displayMerchantsSalesClickRows = () => {\r\n return this.props.performanceSalesSourceMerchant.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
    \r\n
    \r\n \r\n
    {titleCase(this.state.salesClicked?.merchant ?? \"Product\")}
    \r\n
    \r\n {\r\n this.props.analyticsPerformanceSalesSourceByMerchantLoading ?\r\n :\r\n <>\r\n {this.displayMerchantSalesClicksTable()}\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 from \"react\"\r\n\r\nconst PriceTageIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default PriceTageIcon;","import React, { useState } from \"react\";\r\nimport ImageWrapper from \"components/ImageWrapper\";\r\nimport PriceTagIcon from \"components/icons/PriceTagIcon\";\r\nimport toast from 'react-hot-toast';\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 CommissionDetailItemRowMobile = (props) => {\r\n let [isLoadingShareCode, setIsLoadingShareCode] = useState(false);\r\n let { item } = props;\r\n let pstyle = { fontFamily: \"Archivo\", fontSize: \"14px\", width: \"96%\" }\r\n\r\n const fixedWidthStyle = { width: \"80px\", textAlign: \"center\", fontFamily: \"Archivo\", fontSize: \"12px\", position: \"relative\" }; // Fixed width style\r\n const salesZero = item.sales === 0;\r\n\r\n return (\r\n
    \r\n {\r\n item.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 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: 4, 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: 5, label: \"Estimated Commission\" })}>\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
    props.addUserMerchantProductIfNotAddedAlreadyAndGetLink(item.merchantProductId) } style={{ cursor: \"pointer\" }}>\r\n \r\n\r\n
    \r\n\r\n

    \r\n {item.name}\r\n

    \r\n\r\n

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

    \r\n\r\n

    \r\n Price: ${item.price.toFixed(2)}\r\n

    \r\n\r\n
    \r\n\r\n
    props.handleSalesClicksClick(e, item, salesZero)} style={{ ...fixedWidthStyle, width: \"25px\", top: \"6px\" }} >\r\n

    {item.sales}

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

    ${item.estimatedCommission.toFixed(2)}

    \r\n
    \r\n\r\n
    \r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default CommissionDetailItemRowMobile;\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 CommissionDetailItemRowMobile from \"views/Account/AnalyticsByCommissionDetailItemRowMobile\";\r\nimport NoResults from \"components/NoResults\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\"; \r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport Modal from 'react-modal';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\n\r\nclass AnalyticsByCommissionDetailItemTable 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 showSales: false,\r\n clicked: null,\r\n salesClicked: null,\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n await this.props.resetPerformanceTabs();\r\n await this.props.getCommissionDetailItemsAnalytics(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.getCommissionDetailItemsAnalytics(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.getCommissionDetailItemsAnalytics(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.getCommissionDetailItemsAnalytics(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 showSalesModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ showSales: !this.state.showSales });\r\n };\r\n\r\n hideSalesModal = () => {\r\n this.setState({ showSales: false, salesClicked: null });\r\n this.props.clearPerformance();\r\n this.props.clearSalesSourceSort();\r\n }\r\n\r\n handleSalesClicksClick = (e, item, salesZero) => {\r\n if (salesZero) {\r\n return;\r\n }\r\n e.stopPropagation();\r\n\r\n this.props.getAnalyticsPerformanceSalesSourceByCommissionDetailItem(this.props.startDate, this.props.endDate, item.merchantProductId);\r\n console.log(\"yes\")\r\n this.setState({ salesClicked: item });\r\n this.showSalesModal(e);\r\n }\r\n\r\n displayMerchantMobile = () => {\r\n if (this.props.commissionDetailItemsAnalytics?.length === 0) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n const cdiData = {\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.commissionDetailItemsAnalytics?.length > 0) {\r\n const analytics = [cdiData, ...this.props.commissionDetailItemsAnalytics];\r\n return analytics?.map((item, 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.handleCommissionDetailItemsSortSelect}\r\n sortDescending={this.props.commissionDetailItemsSortDescending}\r\n selectOptions={this.props.commissionDetailItemsSelectOptions}\r\n startDate={this.state.startDate}\r\n endDate={this.state.endDate}\r\n addUserMerchantProductIfNotAddedAlreadyAndGetLink={this.addUserMerchantProductIfNotAddedAlreadyAndGetLink}\r\n handleSalesClicksClick={this.handleSalesClicksClick}\r\n />\r\n
    \r\n )\r\n\r\n })\r\n }\r\n return <>;\r\n }\r\n\r\n addUserMerchantProductIfNotAddedAlreadyAndGetLink = async (merchantProductId) => {\r\n const url = 'Products/AddUserMerchantProductForAnalyticsCommissionDetailItem?merchantProductId=' + merchantProductId + '&userId=' + this.props.userId ?? this.props.loggedInUser.id;\r\n\r\n let result = await getRequest(url);\r\n if (!(result)) {\r\n this.getLinkError();\r\n }\r\n\r\n this.handleGetLink(\"https://\" + window.location.host + \"/prdlink/\" + result.shareCode);\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 handleSalesSourceClicksSort = async () => {\r\n await this.props.handleSalesSourceReferrerClick(false, this.props.salesSourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n handleSalesSourceReferrerSort = async () => {\r\n await this.props.handleSalesSourceReferrerClick(true, this.props.salesSourceSortAscending);\r\n this.props.handleSourceClicksSort();\r\n }\r\n\r\n displayProductSalesClicksTable = () => {\r\n if (this.props.performanceSalesSourceCommissionDetailItem?.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.displayProductsSalesClickRows()}\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
    Sales Count
    \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 displayProductsSalesClickRows = () => {\r\n return this.props.performanceSalesSourceCommissionDetailItem.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 displayTableHeader = () => {\r\n let headers = [\"Product\", \"Merchant\", \"Sales Count\", \"Estimated Commission\", \"Price\"];\r\n\r\n return headers.map((header, i) => {\r\n const options = [\r\n { label: \"Name\", value: 1 },\r\n { label: \"Merchant\", value: 2 },\r\n { label: \"Sales\", value: 3 },\r\n { label: \"Estimated Commission\", value: 4 },\r\n { label: \"Price\", value: 5 },\r\n ]\r\n\r\n if (header === \"Product\") {\r\n return (\r\n this.props.handleCommissionDetailItemsSortSelect(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 === \"Merchant\") {\r\n return (\r\n this.props.handleCommissionDetailItemsSortSelect(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 Count\") {\r\n return (\r\n this.props.handleCommissionDetailItemsSortSelect(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.handleCommissionDetailItemsSortSelect(options[3])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\", textAlign: \"center\" }}>\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.handleCommissionDetailItemsSortSelect(options[4])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\", textAlign: \"center\" }}>\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 === \"Estimated Commission\") {\r\n return (\r\n this.props.handleCommissionDetailItemsSortSelect(options[3])} style={{ width: header === \"Retail Price\" ? \"150px\" : \"\", maxWidth: i === 0 ? \"230px\" : i === 1 || i === 2 ? \"120px\" : \"\", wordWrap: \"break-word\", cursor: \"pointer\", border: \"none\", textAlign: \"center\" }}>\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 displayTableRows = () => {\r\n if (this.props.commissionDetailItemsAnalytics?.length > 0) {\r\n return this.props.commissionDetailItemsAnalytics.map((item, i) => { \r\n const salesZero = item.sales < 1;\r\n\r\n return (\r\n { this.addUserMerchantProductIfNotAddedAlreadyAndGetLink(item.merchantProductId) }}\r\n >\r\n \r\n
    \r\n \r\n
    {titleCase(item.name.trim())}
    \r\n
    \r\n \r\n\r\n { } } style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {item.merchant}\r\n \r\n\r\n\r\n this.handleSalesClicksClick(e, item, salesZero)} style={{ textAlign: \"center\", maxWidth: \"120px\", wordWrap: \"break-word\", border: \"none\" }}>\r\n {item.sales}\r\n \r\n\r\n \r\n ${item.estimatedCommission.toFixed(2)}\r\n \r\n\r\n \r\n ${item.price.toFixed(2)}\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 this.props.analyticsByCommissionDetailItemLoading ?\r\n :\r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {titleCase(this.state.salesClicked?.name ?? this.state.salesClicked?.referralUrl ?? \"Product\")}
    \r\n
    \r\n {\r\n this.props.analyticsPerformanceSalesSourceByUserMerchantProductLoading ?\r\n :\r\n <>\r\n {this.displayProductSalesClicksTable()}\r\n \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.commissionDetailItemsAnalytics?.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 AnalyticsByCommissionDetailItemTable;","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 TextField from '@material-ui/core/TextField';\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 AnalyticsPerformanceByHour extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n series: [\r\n {\r\n name: 'Clicks',\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 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: 'int'\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Clicks',\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: 'Clicks',\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 },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.props.getAnalytics();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\r\n if (this.props.startDate <= this.props.endDate) {\r\n this.setState({ dateError: false });\r\n this.props.getAnalytics();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged)\r\n if (this.props.userIdSelected) {\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.browseChanged !== this.props.browseChanged) {\r\n this.props.getAnalytics();\r\n }\r\n }\r\n\r\n convertTo12HourFormat = (hour) => {\r\n // Determine AM or PM\r\n const period = hour >= 12 ? 'PM' : 'AM';\r\n\r\n // Convert hour to 12-hour format\r\n const hour12 = hour % 12 || 12;\r\n\r\n // Combine hour and period\r\n return `${hour12} ${period}`;\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 return this.props.analytics.map((data, i) => {\r\n return (\r\n \r\n \r\n {this.convertTo12HourFormat(data.hour)}\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 });\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 }\r\n }\r\n\r\n displayTableHeader = () => {\r\n console.log(\"here\")\r\n let headers = [\"Hour\", \"Clicks\", \"Sales Count\"];\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 // Initialize data array for each hour of the day (0-23)\r\n for (let hour = 0; hour < 24; hour++) {\r\n data.push({\r\n hour: hour,\r\n postViews: 0,\r\n productViews: 0,\r\n productClicks: 0,\r\n salesCount: 0,\r\n commissionsEarned: 0\r\n });\r\n labels.push(this.convertTo12HourFormat(hour)); // Label format for hours\r\n }\r\n\r\n // Process analytics data\r\n this.props.analytics.forEach(analytic => {\r\n const hour = analytic.hour; // Assuming the hour field is directly available\r\n const item = data.find(item => item.hour === hour);\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 options.xaxis = {\r\n categories: labels,\r\n labels: {\r\n show: true,\r\n rotate: -45,\r\n rotateAlways: true,\r\n formatter: (val) => {\r\n // Check device size\r\n if ([\"sm\", \"md\"].includes(this.props.deviceSize)) {\r\n if (val) {\r\n const hour = parseInt(val.split(' ')[0]); // assuming label format is 'hour am/pm'\r\n return hour % 3 === 0 ? val : ''; // show only every 3rd hour\r\n }\r\n return '';\r\n }\r\n // Return val as is for other device sizes\r\n return val;\r\n }\r\n }\r\n };\r\n\r\n options.tooltip = {\r\n x: {\r\n formatter: (val, opts) => {\r\n return labels[opts.dataPointIndex]; // Show all times in tooltip\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 render() {\r\n return (\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.displayTotalRow()}\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 AnalyticsPerformanceByHour;","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 TextField from '@material-ui/core/TextField';\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 AnalyticsPerformanceByDay extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n series: [\r\n {\r\n name: 'Clicks',\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 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: 'int'\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Clicks',\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: 'Clicks',\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 },\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n this.props.getAnalytics();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\r\n if (this.props.startDate <= this.props.endDate) {\r\n this.setState({ dateError: false });\r\n this.props.getAnalytics();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n if (prevProps.display != this.props.display && this.props.display) {\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.userChanged != null && prevProps.userChanged != this.props.userChanged && this.props.userChanged)\r\n if (this.props.userIdSelected) {\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.aggregateChanged != null && prevProps.aggregateChanged !== this.props.aggregateChanged && this.props.display) {\r\n this.props.getAnalytics();\r\n }\r\n if (prevProps.browseChanged !== this.props.browseChanged) {\r\n this.props.getAnalytics();\r\n }\r\n }\r\n\r\n convertTo12HourFormat = (hour) => {\r\n // Determine AM or PM\r\n const period = hour >= 12 ? 'PM' : 'AM';\r\n\r\n // Convert hour to 12-hour format\r\n const hour12 = hour % 12 || 12;\r\n\r\n // Combine hour and period\r\n return `${hour12} ${period}`;\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 return this.props.analytics.map((data, i) => {\r\n return (\r\n \r\n \r\n {data.day}\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 });\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 }\r\n }\r\n\r\n displayTableHeader = () => {\r\n let headers = [\"Day\", \"Clicks\", \"Sales Count\"];\r\n let infoIcon = [\"\", \"A User has clicked a Buy Now link that redirected them to a Brands's site\", \"A User placed an order with a Brand 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 // Process analytics data\r\n this.props.analytics.forEach(analytic => {\r\n const day = analytic.day; // Assuming the hour field is directly available\r\n data.push({\r\n day,\r\n productClicks: analytic.productClicks,\r\n salesCount: analytic.salesCount\r\n });\r\n labels.push(day);\r\n });\r\n\r\n const { options } = this.state;\r\n const series = [\r\n {\r\n name: 'Clicks',\r\n type: 'line',\r\n data: data.map((item) => item.productClicks)\r\n },\r\n {\r\n name: 'Sales Count',\r\n type: 'line',\r\n data: data.map((item) => item.salesCount)\r\n }\r\n ];\r\n\r\n options.xaxis = {\r\n categories: labels,\r\n labels: {\r\n show: true,\r\n rotate: -45,\r\n rotateAlways: true,\r\n }\r\n };\r\n\r\n options.tooltip = {\r\n x: {\r\n formatter: (val, opts) => {\r\n return labels[opts.dataPointIndex]; // Show all times in tooltip\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 render() {\r\n return (\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.displayTotalRow()}\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 AnalyticsPerformanceByDay;","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 AnalyticsByCommissionDetailItemTable from \"components/AnalyticsByCommissionDetailItemTable\";\r\nimport AnalyticsPerformanceByHour from \"components/AnalyticsPerformanceByHour\";\r\nimport AnalyticsPerformanceByDay from \"components/AnalyticsPerformanceByDay\";\r\n\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 Link\",\r\n },\r\n commissionDetailItem: {\r\n value: 2,\r\n label: \"Performance by Product\"\r\n },\r\n merchant: {\r\n value: 3,\r\n label: \"Performance by Brand\"\r\n },\r\n hour: {\r\n value: 4,\r\n label: \"Performance by Hour\"\r\n },\r\n day: {\r\n value: 5,\r\n label: \"Performance by Day\"\r\n },\r\n } \r\n\r\n this.state = {\r\n tab: 1,\r\n tabSelectOptions: {\r\n options: [\r\n this.tabSelectOptions.product,\r\n this.tabSelectOptions.commissionDetailItem,\r\n this.tabSelectOptions.merchant,\r\n this.tabSelectOptions.hour,\r\n this.tabSelectOptions.day,\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.props.startDate, this.props.endDate);\r\n await this.props.clearPerformance();\r\n }\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n if (prevProps.startDate !== this.props.startDate || prevProps.endDate !== this.props.endDate) {\r\n if (this.props.startDate <= this.props.endDate) {\r\n this.setState({ dateError: false });\r\n if (this.state.tab === 1) {\r\n this.props.getAnalytics();\r\n } else if (this.state.tab === 2) {\r\n this.props.getCommissionDetailItemsAnalytics();\r\n } else {\r\n this.props.getMerchantAnalytics();\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.props.startDate, this.props.endDate);\r\n } else {\r\n this.props.getMerchantAnalytics(this.props.startDate, this.props.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 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 let showNA = this.props.analytics?.some(obj => obj.sourceDataAvailable === false);\r\n\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 {\r\n this.state.tab === 1 ?\r\n <>\r\n
    Learn which links perform well for you by Clicks, Sales, and Conversions
    \r\n

    * Source data not available for this brand. Check Performance by brand for specific data available for this brand.

    \r\n \r\n :\r\n this.state.tab === 2 ?\r\n
    Learn which products are your best sellers
    \r\n :\r\n this.state.tab === 3 ?\r\n
    Learn which brands perform well for you by Clicks, Sales, and Conversions
    \r\n :\r\n this.state.tab === 4 ?\r\n
    Learn which hours of the day perform well for you by Clicks and Sales
    \r\n :\r\n this.state.tab === 5 ?\r\n
    Learn which days of the week perform well for you by Clicks and Sales
    \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 this.state.tab === 3 ?\r\n \r\n :\r\n this.state.tab === 4 ?\r\n \r\n :\r\n this.state.tab === 5 ?\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 AnalyticsPerformanceByHour from \"../../../components/AnalyticsPerformanceByHour\";\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\nimport TextField from '@material-ui/core/TextField';\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\nimport { Select } from \"@material-ui/core\";\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 salesAmount: {\r\n value: 7,\r\n label: \"Sale Amt\",\r\n },\r\n commission: {\r\n value: 8,\r\n label: \"Commission\",\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 salesAmount: {\r\n value: 5,\r\n label: \"Sale Amt\",\r\n },\r\n commission: {\r\n value: 6,\r\n label: \"Commission\",\r\n }\r\n } \r\n\r\n this.commissionDetailItemsSelectOptions = {\r\n commission: {\r\n value: 1,\r\n label: \"Name\",\r\n },\r\n merchant: {\r\n value: 2,\r\n label: \"Merchant\",\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: \"Estimated Commission\"\r\n },\r\n salesAmount: {\r\n value: 5,\r\n label: \"Price\",\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 minDate: \"1753-01-01\", \r\n maxDate: \"9999-12-31\",\r\n selectedCase: 1,\r\n filter: \"\",\r\n hourlyUserChanged: false,\r\n dailyUserChanged: false,\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 analyticsHourly: [],\r\n analyticsDaily: [],\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 commissionDetailItemUserChanged: 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 analyticsByCommissionDetailItemLoading: false,\r\n analyticsHourlyLoading: false,\r\n analyticsDailyLoading: false,\r\n analyticsByMerchantLoading: false,\r\n analyticsByProductDatas: [],\r\n analyticsByMerchant: [],\r\n analyticsByCommissionDetailItems: [],\r\n sortDescending: true,\r\n merchantSortDescending: true,\r\n commissionDetailItemsSortDescending: true,\r\n analyticsPerformanceSourceByMerchantLoading: false,\r\n analyticsPerformanceSourceByUserMerchantProductLoading: false,\r\n analyticsPerformanceSalesSourceByUserMerchantProductLoading: false,\r\n analyticsPerformanceSalesSourceByMerchantLoading: false,\r\n performanceSourceUserMerchantProduct: [],\r\n performanceSalesSourceUserMerchantProduct: [],\r\n performanceSalesSourceMerchant: [],\r\n performanceSalesSourceCommissionDetailItem: [],\r\n performanceSourceMerchant: [],\r\n sourceSortReferrer: false,\r\n sourceSortAscending: false,\r\n salesSourceSortReferrer: false,\r\n salesSourceSortAscending: 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 this.selectOptions.salesAmount,\r\n this.selectOptions.commission,\r\n ],\r\n defaultValue: this.merchantSelectOptions.clicks,\r\n currentValue: this.merchantSelectOptions.clicks,\r\n },\r\n commissionDetailItemsSelectOptions: {\r\n options: [\r\n this.selectOptions.name,\r\n this.selectOptions.merchant,\r\n this.selectOptions.sales,\r\n this.selectOptions.estimatedCommission,\r\n this.selectOptions.price\r\n ],\r\n defaultValue: this.selectOptions.sales,\r\n currentValue: this.selectOptions.sales,\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 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n\r\n if (startDateRaw.length === 0) {\r\n return;\r\n }\r\n\r\n const min = this.state.minDate; \r\n const max = this.state.maxDate;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isLuxonDateTime && startDateRaw >= min && startDateRaw <= max) {\r\n this.setState({\r\n startDate\r\n });\r\n } else {\r\n console.error(\"Invalid date entered:\", startDateRaw, startDate, startDate.isLuxonDateTime); // Log error if invalid\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n\r\n if (endDateRaw.length === 0) {\r\n return;\r\n }\r\n\r\n const min = this.state.minDate; \r\n const max = this.state.maxDate;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().startOf('day');\r\n if (endDate.isLuxonDateTime && endDateRaw >= min && endDateRaw <= max) {\r\n this.setState({\r\n endDate\r\n });\r\n } else {\r\n console.error(\"Invalid date entered:\", endDateRaw, endDate); // Log error if invalid\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 resetPerformanceTabs = () => {\r\n let merchantSelectOptions = { ...this.state.merchantSelectOptions };\r\n let selectOptions = { ...this.state.selectOptions };\r\n let commissionDetailItemsSelectOptions = { ...this.state.commissionDetailItemsSelectOptions };\r\n\r\n merchantSelectOptions.currentValue = this.merchantSelectOptions.clicks;\r\n selectOptions.currentValue = this.selectOptions.clicks\r\n commissionDetailItemsSelectOptions.currentValue = this.commissionDetailItemsSelectOptions.sales;\r\n this.setState({ merchantSelectOptions, selectOptions, commissionDetailItemsSelectOptions, sortDescending: true, merchantSortDescending: true, commissionDetailItemsSortDescending: 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 { column: 'Sale Amt', comparison: this.getComparisonValue(a, b, { value: parseFloat(7) }), sortDescending },\r\n { column: 'Commission', comparison: this.getComparisonValue(a, b, { value: parseFloat(8) }), 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\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, performanceSalesSourceUserMerchantProduct = null, performanceSalesSourceMerchant = null, performanceSalesSourceCommissionDetailItem = 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\r\n if (!(performanceSalesSourceUserMerchantProduct)) {\r\n performanceSalesSourceUserMerchantProduct = [...this.state.performanceSalesSourceUserMerchantProduct];\r\n }\r\n\r\n if (!(performanceSalesSourceMerchant)) {\r\n performanceSalesSourceMerchant = [...this.state.performanceSalesSourceMerchant];\r\n }\r\n\r\n if (!(performanceSalesSourceCommissionDetailItem)) {\r\n performanceSalesSourceCommissionDetailItem = [...this.state.performanceSalesSourceCommissionDetailItem]\r\n }\r\n\r\n let sourceSortAscending = this.state.sourceSortAscending;\r\n let sourceSortReferrer = this.state.sourceSortReferrer;\r\n\r\n let salesSourceSortAscending = this.state.salesSourceSortAscending;\r\n let salesSourceSortReferrer = this.state.salesSourceSortReferrer;\r\n\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 } else if (performanceSalesSourceUserMerchantProduct?.length > 0) {\r\n performanceSalesSourceUserMerchantProduct.sort((a, b) => {\r\n if (salesSourceSortReferrer) {\r\n return salesSourceSortAscending ? 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 salesSourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return salesSourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSalesSourceUserMerchantProduct, salesSourceSortAscending: !this.state.salesSourceSortAscending });\r\n } else if (performanceSalesSourceMerchant?.length > 0) {\r\n performanceSalesSourceMerchant.sort((a, b) => {\r\n if (salesSourceSortReferrer) {\r\n return salesSourceSortAscending ? 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 salesSourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return salesSourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSalesSourceMerchant, salesSourceSortAscending: !this.state.salesSourceSortAscending });\r\n } else if (performanceSalesSourceCommissionDetailItem?.length > 0) {\r\n performanceSalesSourceCommissionDetailItem.sort((a, b) => {\r\n if (salesSourceSortReferrer) {\r\n return salesSourceSortAscending ? 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 salesSourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return salesSourceSortAscending ? a.count - b.count : b.count - a.count;\r\n } \r\n });\r\n this.setState({ performanceSalesSourceCommissionDetailItem, salesSourceSortAscending: !this.state.salesSourceSortAscending });\r\n } \r\n }\r\n\r\n handleSourceReferrerClick = (sourceSortReferrer = !this.state.sourceSortReferrer, sourceSortAscending = this.state.sourceSortAscending) => {\r\n this.setState({ sourceSortReferrer, sourceSortAscending: sourceSortReferrer !== this.state.sourceSortReferrer ? false : sourceSortAscending });\r\n }\r\n\r\n handleSalesSourceReferrerClick = (salesSourceSortReferrer = !this.state.salesSourceSortReferrer, salesSourceSortAscending = this.state.salesSourceSortAscending) => {\r\n this.setState({ salesSourceSortReferrer, salesSourceSortAscending: salesSourceSortReferrer !== this.state.salesSourceSortReferrer ? false : salesSourceSortAscending });\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 { column: 'Sale Amt', comparison: this.getComparisonValue(a, b, { value: parseFloat(5) }), sortDescending },\r\n { column: 'Commission', comparison: this.getComparisonValue(a, b, { value: parseFloat(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({ analyticsByMerchant: sortedAnalytics, merchantSelectOptions: selectOptions });\r\n };\r\n\r\n handleCommissionDetailItemsSortSelect = async (e, data = null) => {\r\n let selectOptions = { ...this.state.commissionDetailItemsSelectOptions };\r\n const sortDescending = !!(e) && !!(e.label) && e.label === this.state.commissionDetailItemsSelectOptions.currentValue.label ? !this.state.commissionDetailItemsSortDescending : 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 analyticsByCommissionDetailItems = !!(data) && data.length > 0 ? data : this.state.analyticsByCommissionDetailItems;\r\n\r\n let sortedAnalytics = [...analyticsByCommissionDetailItems];\r\n\r\n this.setState({ commissionDetailItemsSortDescending: sortDescending });\r\n\r\n const compareFunction = (a, b) => {\r\n const comparison = this.getCommissionDetailItemsComparisonValue(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: 'Name', comparison: this.getMerchantComparisonValue(a, b, { value: 1 }), sortDescending },\r\n { column: 'Merchant', comparison: this.getMerchantComparisonValue(a, b, { value: 2 }), sortDescending },\r\n { column: 'Sales', comparison: this.getMerchantComparisonValue(a, b, { value: 3 }), sortDescending },\r\n { column: 'Estimated Commission', comparison: this.getMerchantComparisonValue(a, b, { value: 4 }), sortDescending },\r\n { column: 'Price', comparison: this.getComparisonValue(a, b, { value: parseFloat(5) }), 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({ analyticsByCommissionDetailItems: sortedAnalytics, commissionDetailItemsSelectOptions: 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 const getStringValue = (obj, key) => (obj[key] !== undefined ? obj[key] : obj.referralUrl);\r\n const getNumericValue = (obj, key) => (obj[key] !== undefined ? obj[key] : 0);\r\n\r\n if (e.value === 1) {\r\n const aName = getStringValue(a, 'name');\r\n const bName = getStringValue(b, 'name');\r\n return sortDescending ? aName.localeCompare(bName) : bName.localeCompare(aName);\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 const aMerchant = getStringValue(a, 'merchant');\r\n const bMerchant = getStringValue(b, 'merchant');\r\n return sortDescending ? aMerchant.localeCompare(bMerchant) : bMerchant.localeCompare(aMerchant);\r\n } else if (e.value === 6) {\r\n const aPrice = getNumericValue(a, 'price');\r\n const bPrice = getNumericValue(b, 'price');\r\n return sortDescending ? aPrice - bPrice : bPrice - aPrice;\r\n } else if (e.value === 7) {\r\n return sortDescending ? a.salesAmount - b.salesAmount : b.salesAmount - a.salesAmount;\r\n } else if (e.value === 8) {\r\n return sortDescending ? a.commission - b.commission : b.commission - a.commission;\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 // 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 if (e.value === 5) {\r\n return sortDescending ? a.salesAmount - b.salesAmount : b.salesAmount - a.salesAmount;\r\n } else if (e.value === 6) {\r\n return sortDescending ? a.commission - b.commission : b.commission - a.commission;\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 getCommissionDetailItemsComparisonValue = (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.merchant.localeCompare(b.merchant) : b.merchant.localeCompare(a.merchant);\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.estimatedCommission - b.estimatedCommission : b.estimatedCommission - a.estimatedCommission;\r\n } else if (e.value === 5) {\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\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 getAnalyticsHourly = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsWithHourly';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n getAnalyticsUrl += `&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n this.setState({ analyticsHourlyLoading: 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({ analyticsHourly: analytics, loading: false, analyticsHourlyLoading: false, hourlyUserChanged: false });\r\n };\r\n\r\n getAnalyticsDaily = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsWithDaily';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n getAnalyticsUrl += `&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n this.setState({ analyticsDailyLoading: 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({ analyticsDaily: analytics, loading: false, analyticsDailyLoading: false, dailyUserChanged: false });\r\n };\r\n\r\n getCommissions = async (startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsByProduct';\r\n let getAnalyticsLinkUrl = '/Products/GetAnalyticsByLink';\r\n\r\n let now = DateTime.now();\r\n\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`;\r\n getAnalyticsLinkUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n getAnalyticsLinkUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\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=${this.state.aggregateCheck}`\r\n getAnalyticsLinkUrl += `&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=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ analyticsByProductLoading: true });\r\n\r\n let products = await getRequest(getAnalyticsUrl) ?? [];\r\n let links = await getRequest(getAnalyticsLinkUrl) ?? [];\r\n let analytics = [...products, ...links];\r\n\r\n if (analytics.length > 0) {\r\n const convertedAnalytics = analytics.map(a =>\r\n !(a.sourceDataAvailable) ? { ...a, sales: -1 } : a\r\n );\r\n await this.handleSortSelect(null, convertedAnalytics);\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 getAnalyticsByCommissionDetailItem = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsByCommissionDetailItem';\r\n\r\n let now = DateTime.now();\r\n\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\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=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ analyticsByCommissionDetailItemLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n if (analytics.length > 0) {\r\n await this.handleCommissionDetailItemsSortSelect(null, analytics);\r\n } else {\r\n this.setState({ analyticsByCommissionDetailItems: analytics })\r\n }\r\n\r\n this.setState({ loading: false, analyticsByCommissionDetailItemLoading: false, commissionDetailItemUserChanged: false });\r\n };\r\n\r\n getAnalyticsPerformanceSourceByMerchant = async (startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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}&aggregate=${this.state.aggregateCheck}`\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 getAnalyticsPerformanceSalesSourceByMerchant = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantId) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsPerformanceSalesSourceByMerchant';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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}&aggregate=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByMerchantLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(null, null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByMerchantLoading: false });\r\n };\r\n\r\n\r\n getAnalyticsPerformanceSourceByUserMerchantProduct = async(startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 getAnalyticsPerformanceSourceByUserMerchantProductAggregate = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSourceByUserMerchantProductAggregate';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantProductId=${merchantProductId}&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 getAnalyticsPerformanceSourceByLink = async (startDate = this.state.startDate, endDate = this.state.endDate, referralUrl) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSourceByLink';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&referralUrl=${encodeURIComponent(referralUrl)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n this.setState({ analyticsPerformanceSourceByUserMerchantProductLoading: true });\r\n\r\n let performanceSourceLink = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(null, performanceSourceLink);\r\n\r\n\r\n this.setState({ analyticsPerformanceSourceByUserMerchantProductLoading: false })\r\n };\r\n\r\n clearPerformance = () => {\r\n this.setState({ performanceSourceMerchant: [], performanceSourceUserMerchantProduct: [], performanceSalesSourceUserMerchantProduct: [], performanceSalesSourceMerchant: [], performanceSalesSourceCommissionDetailItem: [] })\r\n }\r\n\r\n clearSourceSort = () => {\r\n this.setState({ sourceSortReferrer: false, sourceSortAscending: false });\r\n }\r\n\r\n clearSalesSourceSort = () => {\r\n this.setState({ salesSourceSortReferrer: false, salesSourceSortAscending: false });\r\n }\r\n\r\n getAnalyticsPerformanceSalesSourceByCommissionDetailItem = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByCommissionDetailItem';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantProductId=${encodeURIComponent(merchantProductId)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n\r\n getAnalyticsByMerchant = async (startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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=${this.state.aggregateCheck}`\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 = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 if (selected.length > 0) {\r\n this.setState({ hourlyUserChanged: true, dailyUserChanged: true });\r\n }\r\n this.setState({ userId, userChanged: true, productUserChanged: true, commissionDetailItemUserChanged: 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 getAnalyticsPerformanceSalesSourceByLink = async (startDate = this.state.startDate, endDate = this.state.endDate, referralUrl) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByLink';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&referralUrl=${encodeURIComponent(referralUrl)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n getAnalyticsPerformanceSalesSourceByCommissionDetailItem = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantProductId) => {\r\n console.log(\"hi\")\r\n\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByCommissionDetailItem';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantProductId=${encodeURIComponent(merchantProductId)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n getAnalyticsPerformanceSalesSourceByUserMerchantProduct = async (startDate = this.state.startDate, endDate = this.state.endDate, userMerchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByUserMerchantProduct';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n getAnalyticsPerformanceSalesSourceByUserMerchantProductAggregate = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByUserMerchantProductAggregate';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantProductId=${merchantProductId}&offset=${offset}&id=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: 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 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 ![\"sm\"].includes(this.props.deviceSize) ?\r\n <>\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

    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 [\"sm\"].includes(this.props.deviceSize) ?\r\n <>\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 \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 AnalyticsPerformanceByHour from \"../../components/AnalyticsPerformanceByHour\";\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\nimport TextField from '@material-ui/core/TextField';\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 salesAmount: {\r\n value: 7,\r\n label: \"Sale Amt\",\r\n },\r\n commission: {\r\n value: 8,\r\n label: \"Commission\",\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 salesAmount: {\r\n value: 5,\r\n label: \"Sale Amt\",\r\n },\r\n commission: {\r\n value: 6,\r\n label: \"Commission\",\r\n }\r\n } \r\n\r\n this.commissionDetailItemsSelectOptions = {\r\n commission: {\r\n value: 1,\r\n label: \"Name\",\r\n },\r\n merchant: {\r\n value: 2,\r\n label: \"Merchant\",\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: \"Estimated Commission\"\r\n },\r\n salesAmount: {\r\n value: 5,\r\n label: \"Price\",\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 minDate: \"1753-01-01\", \r\n maxDate: \"9999-12-31\",\r\n selectedCase: 1,\r\n filter: \"\",\r\n filteredPartners: [],\r\n partners: [],\r\n loading: false,\r\n analyticsLoading: false,\r\n analyticsHourlyLoading: false,\r\n analyticsDailyLoading: false,\r\n commissionsLoading: false,\r\n transactionsLoading: false,\r\n analyticsByProductLoading: false,\r\n analyticsByMerchantLoading: false,\r\n analyticsByCommissionDetailItemLoading: false,\r\n analyticsByProductDatas: [],\r\n analyticsByMerchant: [],\r\n analyticsByCommissionDetailItems: [],\r\n performanceSalesSourceCommissionDetailItem: [],\r\n sectors: [],\r\n partnerSectors: [],\r\n selectedSectors: [],\r\n analytics: [],\r\n analyticsHourly: [],\r\n analyticsDaily: [],\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 commissionDetailItemsSortDescending: true,\r\n analyticsPerformanceSourceByMerchantLoading: false,\r\n analyticsPerformanceSourceByUserMerchantProductLoading: false,\r\n analyticsPerformanceSalesSourceByUserMerchantProductLoading: false,\r\n analyticsPerformanceSalesSourceByMerchantLoading: false,\r\n performanceSourceUserMerchantProduct: [],\r\n performanceSalesSourceUserMerchantProduct: [],\r\n performanceSalesSourceMerchant: [],\r\n performanceSourceMerchant: [],\r\n salesSourceSortReferrer: false,\r\n salesSourceSortAscending: false,\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 this.selectOptions.salesAmount,\r\n this.selectOptions.commission,\r\n ],\r\n defaultValue: this.merchantSelectOptions.clicks,\r\n currentValue: this.merchantSelectOptions.clicks,\r\n\r\n },\r\n commissionDetailItemsSelectOptions: {\r\n options: [\r\n this.selectOptions.name,\r\n this.selectOptions.merchant,\r\n this.selectOptions.sales,\r\n this.selectOptions.estimatedCommission,\r\n this.selectOptions.price\r\n ],\r\n defaultValue: this.selectOptions.sales,\r\n currentValue: this.selectOptions.sales,\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 let commissionDetailItemsSelectOptions = { ...this.state.commissionDetailItemsSelectOptions };\r\n\r\n merchantSelectOptions.currentValue = this.merchantSelectOptions.clicks;\r\n selectOptions.currentValue = this.selectOptions.clicks;\r\n commissionDetailItemsSelectOptions.currentValue = this.commissionDetailItemsSelectOptions.sales;\r\n\r\n this.setState({ merchantSelectOptions, commissionDetailItemsSelectOptions, selectOptions, sortDescending: true, merchantSortDescending: true, commissionDetailItemsSortDescending: 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 handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n\r\n if (startDateRaw.length === 0) {\r\n return;\r\n }\r\n\r\n const min = this.state.minDate;\r\n const max = this.state.maxDate;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isLuxonDateTime && startDateRaw >= min && startDateRaw <= max) {\r\n this.setState({\r\n startDate\r\n });\r\n } else {\r\n console.error(\"Invalid date entered:\", startDateRaw, startDate, startDate.isLuxonDateTime); // Log error if invalid\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n\r\n if (endDateRaw.length === 0) {\r\n return;\r\n }\r\n\r\n const min = this.state.minDate;\r\n const max = this.state.maxDate;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().startOf('day');\r\n if (endDate.isLuxonDateTime && endDateRaw >= min && endDateRaw <= max) {\r\n this.setState({\r\n endDate\r\n });\r\n } else {\r\n console.error(\"Invalid date entered:\", endDateRaw, endDate); // Log error if invalid\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 clearPerformance = () => {\r\n this.setState({ performanceSourceMerchant: [], performanceSourceUserMerchantProduct: [], performanceSalesSourceUserMerchantProduct: [], performanceSalesSourceMerchant: [], performanceSalesSourceCommissionDetailItem: [] })\r\n }\r\n\r\n clearSourceSort = () => {\r\n this.setState({ sourceSortReferrer: false, sourceSortAscending: false });\r\n }\r\n\r\n clearSalesSourceSort = () => {\r\n this.setState({ salesSourceSortReferrer: false, salesSourceSortAscending: 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, performanceSalesSourceUserMerchantProduct = null, performanceSalesSourceMerchant = null, performanceSalesSourceCommissionDetailItem = 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\r\n if (!(performanceSalesSourceUserMerchantProduct)) {\r\n performanceSalesSourceUserMerchantProduct = [...this.state.performanceSalesSourceUserMerchantProduct];\r\n }\r\n\r\n if (!(performanceSalesSourceMerchant)) {\r\n performanceSalesSourceMerchant = [...this.state.performanceSalesSourceMerchant];\r\n }\r\n\r\n if (!(performanceSalesSourceCommissionDetailItem)) {\r\n performanceSalesSourceCommissionDetailItem = [...this.state.performanceSalesSourceCommissionDetailItem]\r\n }\r\n\r\n let sourceSortAscending = this.state.sourceSortAscending;\r\n let sourceSortReferrer = this.state.sourceSortReferrer;\r\n\r\n let salesSourceSortAscending = this.state.salesSourceSortAscending;\r\n let salesSourceSortReferrer = this.state.salesSourceSortReferrer;\r\n\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 } else if (performanceSalesSourceUserMerchantProduct?.length > 0) {\r\n performanceSalesSourceUserMerchantProduct.sort((a, b) => {\r\n if (salesSourceSortReferrer) {\r\n return salesSourceSortAscending ? 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 salesSourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return salesSourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSalesSourceUserMerchantProduct, salesSourceSortAscending: !this.state.salesSourceSortAscending });\r\n } else if (performanceSalesSourceMerchant?.length > 0) {\r\n performanceSalesSourceMerchant.sort((a, b) => {\r\n if (salesSourceSortReferrer) {\r\n return salesSourceSortAscending ? 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 salesSourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return salesSourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSalesSourceMerchant, salesSourceSortAscending: !this.state.salesSourceSortAscending });\r\n } else if (performanceSalesSourceCommissionDetailItem?.length > 0) {\r\n performanceSalesSourceCommissionDetailItem.sort((a, b) => {\r\n if (salesSourceSortReferrer) {\r\n return salesSourceSortAscending ? 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 salesSourceSortAscending ? a.referrer.localeCompare(b.referrer) : b.referrer.localeCompare(a.referrer);\r\n }\r\n return salesSourceSortAscending ? a.count - b.count : b.count - a.count;\r\n }\r\n });\r\n this.setState({ performanceSalesSourceCommissionDetailItem, salesSourceSortAscending: !this.state.salesSourceSortAscending });\r\n } \r\n }\r\n\r\n handleCommissionDetailItemsSortSelect = async (e, data = null) => {\r\n let selectOptions = { ...this.state.commissionDetailItemsSelectOptions };\r\n const sortDescending = !!(e) && !!(e.label) && e.label === this.state.commissionDetailItemsSelectOptions.currentValue.label ? !this.state.commissionDetailItemsSortDescending : 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 analyticsByCommissionDetailItems = !!(data) && data.length > 0 ? data : this.state.analyticsByCommissionDetailItems;\r\n\r\n let sortedAnalytics = [...analyticsByCommissionDetailItems];\r\n\r\n this.setState({ commissionDetailItemsSortDescending: sortDescending });\r\n\r\n const compareFunction = (a, b) => {\r\n const comparison = this.getCommissionDetailItemsComparisonValue(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: 'Name', comparison: this.getMerchantComparisonValue(a, b, { value: 1 }), sortDescending },\r\n { column: 'Merchant', comparison: this.getMerchantComparisonValue(a, b, { value: 2 }), sortDescending },\r\n { column: 'Sales', comparison: this.getMerchantComparisonValue(a, b, { value: 3 }), sortDescending },\r\n { column: 'Estimated Commission', comparison: this.getMerchantComparisonValue(a, b, { value: 4 }), sortDescending },\r\n { column: 'Price', comparison: this.getComparisonValue(a, b, { value: parseFloat(5) }), 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({ analyticsByCommissionDetailItems: sortedAnalytics, commissionDetailItemsSelectOptions: selectOptions });\r\n };\r\n\r\n\r\n getCommissions = async (startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 getAnalyticsPerformanceSalesSourceByMerchant = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantId) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsPerformanceSalesSourceByMerchant';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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({ AnalyticsPerformanceSalesSourceByMerchantLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(null, null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByMerchantLoading: false });\r\n };\r\n\r\n getAnalyticsPerformanceSourceByUserMerchantProduct = async (startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 getAnalyticsPerformanceSourceByLink = async (startDate = this.state.startDate, endDate = this.state.endDate, referralUrl) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSourceByLink';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&referralUrl=${encodeURIComponent(referralUrl)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n this.setState({ analyticsPerformanceSourceByUserMerchantProductLoading: true });\r\n\r\n let performanceSourceLink = await getRequest(getAnalyticsUrl) ?? [];\r\n await this.handleSourceClicksSort(null, performanceSourceLink);\r\n\r\n\r\n this.setState({ analyticsPerformanceSourceByUserMerchantProductLoading: false })\r\n };\r\n\r\n getAnalyticsPerformanceSalesSourceByUserMerchantProduct = async (startDate = this.state.startDate, endDate = this.state.endDate, userMerchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByUserMerchantProduct';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n getAnalyticsByProductData = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsByProduct';\r\n let getAnalyticsLinkUrl = '/Products/GetAnalyticsByLink';\r\n\r\n let now = DateTime.now();\r\n\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n getAnalyticsUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`;\r\n getAnalyticsLinkUrl += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n getAnalyticsUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n getAnalyticsLinkUrl += getAnalyticsUrl.includes('?') ? `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n\r\n getAnalyticsUrl += `&offset=${offset}&id=${this.props.loggedInUser.id}`\r\n getAnalyticsLinkUrl += `&offset=${offset}&id=${this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ analyticsByProductLoading: true });\r\n\r\n let products = await getRequest(getAnalyticsUrl) ?? [];\r\n let links = await getRequest(getAnalyticsLinkUrl) ?? [];\r\n let analytics = [...products, ...links];\r\n\r\n if (analytics.length > 0) {\r\n const convertedAnalytics = analytics.map(a =>\r\n !(a.sourceDataAvailable) ? { ...a, sales: -1 } : a\r\n );\r\n await this.handleSortSelect(null, convertedAnalytics);\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 getAnalyticsByMerchant = async (startDate = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 = this.state.startDate, endDate = this.state.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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').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 getAnalyticsHourly = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsWithHourly';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n this.setState({ analyticsHourlyLoading: 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({ analyticsHourly: analytics, loading: false, analyticsHourlyLoading: false });\r\n };\r\n\r\n getAnalyticsDaily = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/api/Merchant/GetAnalyticsWithDaily';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&offset=${offset}`\r\n\r\n this.setState({ analyticsDailyLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n this.setState({ analyticsDaily: analytics, loading: false, analyticsDailyLoading: false, dailyUserChanged: false });\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 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 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 { column: 'Sale Amt', comparison: this.getComparisonValue(a, b, { value: parseFloat(7) }), sortDescending },\r\n { column: 'Commission', comparison: this.getComparisonValue(a, b, { value: parseFloat(8) }), 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 { column: 'Sale Amt', comparison: this.getComparisonValue(a, b, { value: parseFloat(5) }), sortDescending },\r\n { column: 'Commission', comparison: this.getComparisonValue(a, b, { value: parseFloat(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({ analyticsByMerchant: sortedAnalytics, merchantSelectOptions: selectOptions });\r\n };\r\n\r\n // Helper function to get the comparison value based on the column\r\n getCommissionDetailItemsComparisonValue = (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.merchant.localeCompare(b.merchant) : b.merchant.localeCompare(a.merchant);\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.estimatedCommission - b.estimatedCommission : b.estimatedCommission - a.estimatedCommission;\r\n } else if (e.value === 5) {\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 getAnalyticsByCommissionDetailItem = async (startDate = this.state.startDate, endDate = this.state.endDate) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsByCommissionDetailItem';\r\n\r\n let now = DateTime.now();\r\n\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\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({ analyticsByCommissionDetailItemLoading: true });\r\n\r\n let analytics = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n if (analytics.length > 0) {\r\n await this.handleCommissionDetailItemsSortSelect(null, analytics);\r\n } else {\r\n this.setState({ analyticsByCommissionDetailItems: analytics })\r\n }\r\n\r\n this.setState({ loading: false, analyticsByCommissionDetailItemLoading: false, commissionDetailItemUserChanged: false });\r\n };\r\n\r\n getAnalyticsPerformanceSalesSourceByCommissionDetailItem = async (startDate = this.state.startDate, endDate = this.state.endDate, merchantProductId) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByCommissionDetailItem';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&merchantProductId=${encodeURIComponent(merchantProductId)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}&aggregate=${this.state.aggregateCheck}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\r\n };\r\n\r\n\r\n\r\n getAnalyticsPerformanceSalesSourceByLink = async (startDate = this.state.startDate, endDate = this.state.endDate, referralUrl) => {\r\n let getAnalyticsUrl = '/Products/GetAnalyticsPerformanceSalesSourceByLink';\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.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}` : `?endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n getAnalyticsUrl += `&referralUrl=${encodeURIComponent(referralUrl)}&offset=${offset}&userId=${this.state.userId?.id > 0 ? this.state.userId?.id : this.props.loggedInUser.id}`\r\n\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: true });\r\n\r\n let response = await getRequest(getAnalyticsUrl) ?? [];\r\n\r\n await this.handleSourceClicksSort(null, null, response);\r\n\r\n this.setState({ AnalyticsPerformanceSalesSourceByUserMerchantProductLoading: false });\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 const getStringValue = (obj, key) => (obj[key] !== undefined ? obj[key] : obj.referralUrl);\r\n const getNumericValue = (obj, key) => (obj[key] !== undefined ? obj[key] : 0);\r\n\r\n if (e.value === 1) {\r\n const aName = getStringValue(a, 'name');\r\n const bName = getStringValue(b, 'name');\r\n return sortDescending ? aName.localeCompare(bName) : bName.localeCompare(aName);\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 const aMerchant = getStringValue(a, 'merchant');\r\n const bMerchant = getStringValue(b, 'merchant');\r\n return sortDescending ? aMerchant.localeCompare(bMerchant) : bMerchant.localeCompare(aMerchant);\r\n } else if (e.value === 6) {\r\n const aPrice = getNumericValue(a, 'price');\r\n const bPrice = getNumericValue(b, 'price');\r\n return sortDescending ? aPrice - bPrice : bPrice - aPrice;\r\n } else if (e.value === 7) {\r\n return sortDescending ? a.salesAmount - b.salesAmount : b.salesAmount - a.salesAmount;\r\n } else if (e.value === 8) {\r\n return sortDescending ? a.commission - b.commission : b.commission - a.commission;\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 if (e.value === 5) {\r\n return sortDescending ? a.salesAmount - b.salesAmount : b.salesAmount - a.salesAmount;\r\n } else if (e.value === 6) {\r\n return sortDescending ? a.commission - b.commission : b.commission - a.commission;\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, sourceSortAscending = this.state.sourceSortAscending ) => {\r\n this.setState({ sourceSortReferrer, sourceSortAscending: sourceSortReferrer !== this.state.sourceSortReferrer ? false : sourceSortAscending });\r\n }\r\n\r\n handleSalesSourceReferrerClick = (salesSourceSortReferrer = !this.state.salesSourceSortReferrer, salesSourceSortAscending = this.state.salesSourceSortAscending) => {\r\n this.setState({ salesSourceSortReferrer, salesSourceSortAscending: salesSourceSortReferrer !== this.state.salesSourceSortReferrer ? false : salesSourceSortAscending });\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 ![\"sm\"].includes(this.props.deviceSize) ?\r\n <>\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

    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 [\"sm\"].includes(this.props.deviceSize) ?\r\n <>\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 \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\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 ManageCommissions from \"views/Admin/CommissionAdmin\";\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 CreatorDashboardAdmin from \"views/Admin/CreatorDashboard\";\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, postRequest } 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 // LOGIC TO ADD LastLogin TO USER GOES HERE\r\n postRequest(\"/api/Account/UpdateLastLogin\");\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=20240814`;\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 }\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\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","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 = 350;","\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}"],"sourceRoot":""}